Le module Livestatus permet d'ouvrir une API (via TCP) sur le Broker. Les outils externes comme Thruk ou Nagvis (UIs tierces compatibles Nagios) peuvent alors envoyer des requêtes à cette API afin de récupérer les états des éléments supervisés.
Il est possible de modifier des paramètres (comme l'adresse d'écoute ou le port) via le fichier de configuration ci-dessous.
La module Livestatus est un module qui peut être activé seulement sur le démon Broker.
livestatus".Exemple: par défaut, nous livrons un module dont le nom est "livestatus"
define broker {
[...]
modules Module 1, Module 2, Module 3, livestatus
[...]
} |
Pour prendre en compte le changement de configuration, redémarrer l'Arbiter:
service shinken-arbiter restart |
La configuration du module se trouve par défaut dans le fichier /etc/shinken/modules/livestatus.cfg
#===============================================================================
# Livestatus
#===============================================================================
# Daemons that can load this module:
# - broker
# This module open a TCP API that can be query by external tools like Nagios
# UIs (Thruk or NagVis)
#===============================================================================
define module {
# Shinken Enterprise. Lines added by import core. Do not remove it, it's used by Shinken Enterprise to update your objects if you re-import them.
_SE_UUID core-module-6e1beab85adc11e5a4ea080027f08538
_SE_UUID_HASH bc47ca0c63c8b7cf1a3f3ca1d3c3b79f
# End of Shinken Enterprise part
#======== Module identity =========
# Module name. Must be unique
module_name Livestatus
# Module type (to load module code). Do not edit.
module_type livestatus
#======== Listening address =========
# host: IP address to listen to.
# note: * = all interfaces.
host *
# port to listen
port 50000
# socket: file path of a unix socket. If set, will listen this socket for query
#socket /var/lib/shinken/live
#======== Security =========
# The livestatus protocol allows to set AuthUser: in the query to filter results
# for a specific user (if the user is a notification contact of hosts/checks)
# The remote_user_case_sensitive parameter allows to set if the user name should
# be checked in a case sensitive mode or in case insensitive mode.
# 0 : Do not look at case when filtering by user name
# 1 : [default] Look at the case when filtering by user name
remote_user_case_sensitive 1
#====== Debug logging =======
# Enable only for debugging this module
#debug /var/log/shinken/livestatus.debug
# If set to 1, log queryes. Note: it's very verbose
#debug_queries 0
}
|
Il est possible de définir plusieurs instances de module de type livestatus dans votre architecture Shinken.
| nom | type | Unités | défaut | commentaire | |
|---|---|---|---|---|---|
| Texte | --- | Livestatus | Nom de la source affichée dans l'UI de configuration en page d'accueil. Chaîne de caractères composée de lettres, de chiffres et des caractères _ et -
| |
| Texte | --- | livestatus | Valeur obligatoire et non modifiable ( permet au Broker de charger le code logiciel correspondant ). |
define module {
[...]
host *
port 50000
remote_user_case_sensitive 1
#debug /var/log/shinken/livestatus.debug
#debug_queries 0
[...]
}
|
| nom | type | Unités | défaut | commentaire | |
|---|---|---|---|---|---|
| IP | --- | * | Adresse IP d'écoute. | |
| Entier | --- | 50000 | Port d'écoute. | |
| Path | --- | /var/log/shinken/livestatus.debug | Chemin vers un ficher d'un socket Unix. Si renseigné, est utilisé pour écouter les requêtes. | |
| Entier | --- | 1 |
| |
| Path | --- | Chemin vers un fichier qui sera utilisé pour les logues de débogage. | ||
| Entier | --- | 0 |
|
Pour cela, utiliser par exemple la commande nc
Pour installer le paquet nc :
yum install nc |
Vous pouvez alors lancer la commande à destination du port 50000 du serveur hébergeant Livestatus (broker) :
echo 'GET hosts' | nc 127.0.0.1 50000 |
Cette commande permettra de récupérer la liste des hôtes avec leurs infos.
LQL - pronounced "Liquel" as in "liquid" - is a simple language for telling Livestatus what data you want and how it should be formatted. It does much the same as SQL but does it in another, simpler way. Its syntax reflects (but is not compatible to) HTTP. Each query consists of:
All keywords including GET are case sensitive. Lines are terminated by single linefeeds (no <CR>). The current version of Livestatus implements the following tables:
Like in an SQL database all tables consist of a number of columns. If you query the table without any parameters, you retrieve all available columns in alphabetical order. The first line of the answer contains the names of the columns. Please note that the available columns will change from version to version. Thus you should not depend on a certain order of the columns! |
Vous pouvez aussi créer un fichier query contant la requête LQL GET hosts, puis en lancant :
nc 127.0.0.1 50000 < hosts.lql |
Vous pouvez également envoyer votre sortie dans un fichier CSV afin de l'ouvrir dans un tableur comme MS Excel par exemple :
nc 127.0.0.1 50000 < hosts.lql >> hosts.csv |
ou
printf 'GET hosts' | nc 127.0.0.1 50000 >> hosts.csv |
Vous obtiendrez alors :

Exemples de requêtes LQL
Récupérer tous les checks en état critique :
GET services Columns: host_name description state Filter: state = 2 Filter: in_notification_period = 1 |
Voici un exemple de retour de la commande
test [copy];check-dummy-critical;2 test [copy];check-loop-custom;2 test [copy];check-loop-simple;2 test;check-dummy-critical;2 test;check-random-py;2 |
Récupérer les checks dont le contact est toto :
GET services Columns: host_name description contacts AuthUser: toto |