| Scroll Ignore | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
Description
Le module Livestatus permet d'ouvrir une API (via TCP) sur le Broker. Les outils externes comme Thruk ou Nagvis (URIs 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.
Activation du module
La module Livestatus est un module qui peut être activé seulement sur le démon Broker.
- L'activation de la source s'effectue en ajoutant le nom de cette source dans le fichier de configuration du démon Broker.
- Pour ce faire, ouvrer le fichier de configuration à l'emplacement /etc/shinken/brokers/, et ajouter le nom de votre module "
Livestatus".
Exemple: par défaut, nous livrons un module dont le nom est "Livestatus"
| Code Block | ||
|---|---|---|
| ||
define broker {
...
modules Module 1, Module 2, Module 3, Livestatus
...
} |
Pour prendre en compte le changement de configuration, redémarrer l'Arbiter:
| Code Block |
|---|
service shinken-arbiter restart |
Configuration
La configuration du module se trouve par défaut dans le fichier /etc/shinken/modules/livestatus.cfg
Exemple de fichier de configuration
| Code Block | ||
|---|---|---|
| ||
#===============================================================================
# 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
}
|
Détails des sections composant le fichier de configuration
Identification du module
Il est possible de définir plusieurs instances de module de type "livestatus" dans votre architecture Shinken.
- Chaque instance devra avoir un nom unique.
| nom | type | Unités | défaut | commentaire | ||
|---|---|---|---|---|---|---|
| Texte | --- | Livestatus | Nous vous conseillons de choisir un nom en fonction de l'utilisation du module pour que votre configuration soit simple à maintenir. Doit être unique. | ||
| Texte | --- | livestatus | Valeur obligatoire et non modifiable ( permet au Broker de charger le code logiciel correspondant ). |
Options du module
| Code Block | ||
|---|---|---|
| ||
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. | ||
| Booléen | --- | 1 | Permets d'activer ou désactiver la sensibilité à la casse dans la recherche par nom d'utilisateur ( 1 pour activer, 0 pour désactiver ). | ||
| Path | --- | Chemin vers un fichier qui sera utilisé pour les logues de débogage. | |||
| Booléen | --- | 0 | Permets d'activer ou désactiver le logue des requêtes, ceci est très verbeux ( 1 pour activer, 0 pour désactiver ). |
Communiquer avec Livestatus - LQL
Pour cela, utiliser par exemple la commande nc
Pour installer le paquet nc :
| Code Block |
|---|
yum install nc |
Vous pouvez alors lancer la commande à destination du port 50000 du serveur hébergeant Livestatus (broker) :
| Code Block |
|---|
echo 'GET hosts' | nc 127.0.0.1 50000 |
Cette commande permettra de récupérer la liste des hôtes avec leurs infos.
| Info | ||
|---|---|---|
| ||
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 lançant :
| Code Block |
|---|
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 :
| Code Block |
|---|
nc 127.0.0.1 50000 < hosts.lql >> hosts.csv |
ou
| Code Block |
|---|
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 :
| Code Block | ||
|---|---|---|
| ||
GET services Columns: host_name description state Filter: state = 2 Filter: in_notification_period = 1 |
Voici un exemple de retour de la commande
| Code Block |
|---|
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 :
| Code Block | ||
|---|---|---|
| ||
GET services Columns: host_name description contacts AuthUser: toto |
