GNU/Linux >> Tutoriels Linux >  >> Linux

Comment surveiller le "https" distant avec Icinga version 2 ?

Votre hôte définit l'attribut personnalisé "http_vhosts" comme dictionnaire mais il n'est jamais utilisé (il n'y a pas d'application pour la règle définie itérant sur ce dictionnaire et générant des objets de service).

Au lieu de cela, la règle d'application du service (sans boucle for) applique simplement le service "httpS". Par accident, l'attribut personnalisé de l'hôte "http_ssl" est défini - il doit indiquer true comme booléen au lieu d'un nombre comme chaîne (c'est toujours vrai).

Vous voulez probablement vérifier plusieurs URI, pas seulement /.

Ma proposition (2 solutions) :

1) Corrigez votre règle d'application de service et supprimez les attributs personnalisés http_* de votre définition d'objet hôte. Ajoutez-les plutôt à la règle d'application du service :

apply Service "httpS" {
  import "generic-service"
  check_command = "http"
  vars.http_uri = "/"
  vars.http_ssl = true
  assign where host.name == "mailserver-01"
}

Vous pouvez trouver tous les attributs personnalisés utilisés comme paramètres de commande pour le http CheckCommand dans la documentation :http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check-command-http

2) Utilisez plutôt un service d'application de règle et bouclez sur le dictionnaire http_vhosts défini sur l'hôte.

vars.http_vhosts["https /"] = {
  http_ssl = true
  http_uri = "/"
}

Notez le nom ici :"https /" sera le nom du service généré. http_ssl et http_uri sont exactement les mêmes noms que les attributs personnalisés requis par http CheckCommand.

La magie opère à l'intérieur de la règle de demande :la clé du dictionnaire sera le nom du service. La valeur du dictionnaire est un dictionnaire imbriqué et contient http_uri et http_ssl comme clés. Dans l'exemple qui s'appelle "config". Ce dictionnaire de configuration a exactement la même structure que l'attribut "vars", c'est pourquoi nous pouvons simplement l'ajouter dans le service d'application pour la définition.

apply Service for (servicename => config in host.vars.http_vhosts) {
  import "generic-service"
  check_command = "http"
  vars += config
}

Vérifiez la configuration à l'aide du démon icinga2 -C puis examinez les objets de service générés pour voir quels attributs personnalisés sont générés (liste d'objets icinga2).

Une bonne chose - tous les hôtes qui ont l'attribut personnalisé http_vhosts défini généreront ces objets de service, il n'y a pas besoin d'une expression extea "assigner où" (peut-être plutôt ajouter ignorer où pour les exceptions). Avec la bonne stratégie, vous écrirez une seule application pour les règles et n'ajouterez de nouveaux hôtes avec le dictionnaire d'attributs personnalisés correspondant qu'à l'avenir :-)

http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for

Bien que la solution 2) nécessite des connaissances avancées sur le langage de configuration icinga 2 et ses mots-clés, types de valeurs et tours de magie. Pourtant, nous pensons que ces méthodes et meilleures pratiques aident à réduire la maintenance à long terme avec l'adoption et la modification de fichiers.

Vous pouvez également aller plus loin et utiliser des conditions if-else pour différents seuils en fonction du nom d'hôte. Ou utilisez des fonctions pour définir des seuils dynamiques basés sur des périodes de temps par exemple.


J'ai cherché sur Google et j'ai trouvé la commande http dans

/usr/share/icinga2/include/command-plugins.conf

Dans cet exemple, j'ai essayé de surveiller https://mail.google.comBelow est /etc/icinga2/conf.d/hosts.conf

object Host "www.google.com" {
address = "74.125.136.84"
check_command = "http"
vars.http_vhost = "mail.google.com"
vars.http_ssl = "1"
}

Voici à quoi cela ressemble sur le tableau de bord icingaweb2

Exemple2

object Host "secure.example.com" {
    address = "14.28.83.22"
    check_command = "http"
    vars.http_vhosts["secure.example.com"] = {
    http_uri = "/merchant/login.aspx"    
    }
        vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
        }
    vars.http_ssl="1"
}

Linux
  1. Comment gérer les services Systemd avec Systemctl sous Linux

  2. Commande SCP sous Linux :comment l'utiliser, avec des exemples

  3. Comment surveiller les performances du système Linux avec Sysstat

  4. Comment configurer des serveurs de journalisation distants avec rsyslog ?

  5. Comment surveiller la sécurité du serveur Linux avec Osquery

Comment vérifier la version du système d'exploitation avec la ligne de commande Linux

Comment installer Icinga 2 sur Debian 8

Comment installer Icinga 2 sur CentOS 7

Comment surveiller vos serveurs Linux avec Checkmk

Comment cloner un référentiel Git avec Ansible

Comment surveiller les hôtes avec l'outil de surveillance Linux Icinga