Question Comment surveiller «https» à distance avec Icinga version 2?


J'ai icinga 2.3.11 sur Ubuntu 14.04.3 dans VirtualBox. J'essaie de surveiller le port "https" 443 par exemple "https://mail.google.com"here.Below est mon extrait du fichier host.conf par défaut

object Host "mailserver-01" {
import "generic-host"
address = "74.125.136.17"    /* ip for mail.google.com */ 
vars.os = "Linux"
vars.http_vhosts["http"] = {
http_uri = "/"
}
vars.http_ssl = "1"
vars.http_warn_time = "5"
vars.http_critical_time = "10"

vars.notification["mail"] = {
groups = [ "icingaadmins" ]
}
}

Ci-dessous extrait du fichier services.conf par défaut

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

Bien que le tableau de bord icingaweb2 indique OK / vert, je ne suis pas sûr qu'il soit correct


6
2017-11-02 10:33


origine




Réponses:


Votre hôte définit l'attribut personnalisé "http_vhosts" en tant que dictionnaire, mais il n'est jamais utilisé (il n'y a pas d'application pour la règle définie qui itère sur ce dictionnaire et sur les objets de service en cours de gestion).

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

Vous voudrez 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 la définition de votre 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 http CheckCommand dans la documentation: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check-command-http

2) Utilisez un service apply for rule à la place et passez en boucle 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 se passe dans la règle apply for: La clé du dictionnaire sera le nom du service. La valeur du dictionnaire est un dictionnaire imbriqué et contient les clés http_uri et http_ssl. Dans l'exemple, cela 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 qui s'applique à 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 en utilisant 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 pour lesquels l'attribut personnalisé http_vhosts a été défini généreront ces objets de service. Il n'est donc pas nécessaire d'utiliser une expression "assign where" supplémentaire (vous pouvez plutôt ajouter ignorer où pour les exceptions). Avec la bonne stratégie, vous écrivez vous appliquez les règles une seule fois et ajoutez uniquement de nouveaux hôtes avec le dictionnaire d'attributs personnalisé correspondant à l'avenir :-)

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

Bien que la solution 2) nécessite une connaissance avancée du langage de configuration icinga 2 et de ses mots-clés, types de valeur et astuces. Cependant, nous pensons que de telles méthodes et meilleures pratiques aident à réduire la maintenance à long terme lors de l’adoption et de la modification de fichiers.

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


8
2017-11-13 20:09





J'ai googlé et trouvé la commande http dans

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

Dans cet exemple, j'ai essayé de surveiller https://mail.google.com Vous trouverez ci-dessous /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 ça ressemble sur le tableau de bord icingaweb2 enter image description here

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"
}

1
2017-11-08 10:23