Linux service überwachen

  • Hallo!


    ich habe keine passende Antwort im Forum gefunden.


    ich habe einige Ubuntu Server als Endpoints mit dem Icinga2 Agent eingebunden und möchte wichtige Services überwachen.


    Mit Windows funktioniert das einwandfrei:


    im HostObject vars.win_services["Dienstname"] = { service_win_service="Dienstname" }


    und in der services.conf:


    Code
    1. apply Service for ( service_win_service => config in host.vars.win_services) {
    2. import "generic-service"
    3. check_command = "service-windows"
    4. command_endpoint = host.vars.remote_client
    5. vars += config
    6. }



    Gibt es eine Möglichkeit, das so auch für Linux Dienste zu machen? Also über den Icinga2 Agent?


    Dankeschön!

  • Genau, Procs:


  • sru

    Den Service würde ich folgendermaßen definieren:


    Code
    1. apply Service "jenkins" {
    2. import "generic-service"
    3. check_command = "procs"
    4. vars.procs_critical = 1
    5. vars.procs_user = "jenkins"
    6. vars.procs_arguments = "slave"
    7. assign where host.vars.jenkins
    8. }


    Ich würde nicht für jeden Service immer ein neues CheckCommand erstellen.

  • birkch


    genau, so habe ich das auch gemacht:


    Code
    1. object Service "snmpd-service" {
    2. import "generic-service"
    3. host_name = "cacti"
    4. check_command = "procs"
    5. vars.procs_user = "snmpd"
    6. vars.procs_argument = "slave"
    7. vars.procs_critical = "1"
    8. }


    er sagt allerdings, username not found (siehe Anhang)


    "snmpd" erscheint mir als Dienstname nach einem Aufruf von service --status-all auf der Linux Maschine.


    Oder schau ich falsch?

  • Ich würde nicht für jeden Service immer ein neues CheckCommand erstellen.

    Da hast Du recht, diesbezüglich ist das Beispiel nicht optimal - "war aber halt grad dagewesen".

  • okay danke.


    jetzt ist nur noch die große Preisfrage, wie ich den Service auf critical bekomme.


    Wenn snmp gestoppt ist, kommt der Wert 0 zurück.


    Und wie bei check_snmp ist hier wieder von threshold die Rede.


    also >


    aber wenn der Service läuft, kommt eine 1 als Wert zurück. die ist ja auch größer als 0. Dann steht ja der Service nur auf critical.


    Man müsste irgendwie ein = oder < reinbringen.


    Code
    1. vars.procs_critical = "<1"
    Code
    1. vars.procs_critical = "=0"

    funktioniert nicht.

    The post was edited 2 times, last by Axel90 ().

  • Usage:

    check_procs -w <range> -c <range> [-m metric] [-s state] [-p ppid]

    ...

    Examples:

    check_procs -w 2:2 -c 2:1024 -C portsentry

    Warning if not two processes with command name portsentry.

    Critical if < 2 or > 1024 processes


    Also bei dir wohl:

    check_procs  -c 1:1 -C snmpd


    Demzufolge:

    Code
    1. vars.procs_user = "snmp"
    2. //vars.procs_argument = ""
    3. vars.procs_command ="snmpd"
    4. vars.procs_critical = "1:1"

    The post was edited 2 times, last by sru ().

  • Sorry aber ich muss nochmal etwas fragen:


    ich habe hier nun ein Linux System, bei dem ein Dienstden ich überwachen möchte, als UserID "root" läuft. Und es gibt noch viele andere UserID "root".


    Dort habe ich vermutlich keine Chance.


    Gibt es keine Möglichkeit, direkt den Dienststatus (also service --status-all) abzufragen?