Relation entres les tables de services
Convention
Le mot clé « distinct » sera utilisé dans les requêtes pour éviter les lignes en doublons
Les tables en présence
| Table | Description |
|---|---|
| service | Liste les services et templates de services |
| service_categories | Liste les catégories de services |
| service_categories_relation | Relation entre les tables service et service_categories |
| Servicegroup | Liste les groupes de services |
| servicegroup_relation | Relation entre les tables servicegroup et servicegroup_relation |
Les services
Le schéma

Compréhension de la table des services
La table des services héberge les services et les templates
Pour les distingués les champs, il y a 2 valeurs de renseignés :
- service_register :
- Valeur à 0 Pour un template
- Valeur à 1 Pour un service
- Service_activate
- Valeur à 0 Le service n’est pas pris en compte lors de l’export des pollers et le template n’est pas appliqué lors de l’application d’un template d’hôte
- Valeur à 1 Le service est exporté et le template de service est applqué
Analyse
Le schéma ci-dessus nous montre la relation entre les services et templates de service :
Comme indiqué ci-dessus il n’y a pas de table de relation entre les services et ses templates.
Requête pour tout lister
Requête
SELECT DISTINCT
SVC.service_description AS "SERVICE",
FROM centreon.service AS SVC
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
ORDER BY SVC.service_descriptionRésultat partiel
| SERVICES |
|---|
| App-DB-MySQL-Connection-Time |
| App-DB-MySQL-Connections-Number |
| App-DB-MySQL-Database-Size |
| App-DB-MySQL-Long-Queries |
| App-DB-Mysql-Process-mysqld-Status |
| App-DB-MySQL-Slowqueries |
| App-DB-MySQL-Uptime |
| App-Monitoring-Centreon-Broker-module-Stats |
| App-Monitoring-Centreon-Broker-RRD-Stats-Central |
| App-Monitoring-Centreon-Broker-SQL-Stats-Central |
Relation entre services et templates
Requête
SELECT DISTINCT
SVC.service_description AS "SERVICE",
STPL.service_description AS "TEMMPLATE"
FROM centreon.service AS SVC
LEFT JOIN centreon.service AS STPL ON STPL.service_id=SVC.service_template_model_stm_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
ORDER BY SVC.service_descriptionRésultat partiel
| SERVICE | TEMPLATE |
|---|---|
| App-DB-MySQL-Connection-Time | TS_App-DB-MySQL-Connection-Time |
| App-DB-MySQL-Connections-Number | TS_App-DB-MySQL-Connections-Number |
| App-DB-MySQL-Database-Size | TS_App-DB-MySQL-Database-Size |
| App-DB-MySQL-Long-Queries | TS_App-DB-MySQL-Long-Queries |
| App-DB-Mysql-Process-mysqld-Status | TS_App-DB-Mysql-Process-mysqld-Status-SNMP |
| App-DB-MySQL-Slowqueries | TS_App-DB-MySQL-Slowqueries |
| App-DB-MySQL-Uptime | TS_App-DB-MySQL-Uptime |
| App-Monitoring-Centreon-Broker-module-Stats | TS_App-Monitoring-Centreon-Broker-module-Stats |
| App-Monitoring-Centreon-Broker-RRD-Stats-Central | TS_App-Monitoring-Centreon-Broker-RRD-Stats-Centra |
| App-Monitoring-Centreon-Broker-SQL-Stats-Central | TS_App-Monitoring-Centreon-Broker-SQL-Stats-Central |
Requête pour filtrer un modèle de template
Nous allons lister ci-dessous tous les services actifs rattachés à un template apache
Cela correspondra au filtre dans la console pour chaque hosts


Requête
SELECT DISTINCT
STPL.service_description AS "TEMMPLATE",
SVC.service_description AS "SERVICE"
FROM centreon.service AS SVC
LEFT JOIN centreon.service AS STPL ON STPL.service_id=SVC.service_template_model_stm_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND STPL.service_description LIKE "%apache%"
ORDER BY SVC.service_descriptionRésultat
| TEMPLATE | SERVICE |
|---|---|
| TS_App-Webserver-Apache-Content-Status-HTTP | App-Webserver-Apache-Content-Status |
| TS_App-Webserver-Apache-Cpuload-HTTP | App-Webserver-Apache-Cpuload |
| TS_App-Webserver-Apache-Process-httpd-Status-SNMP | App-Webserver-Apache-Process-httpd-Stats |
| TS_App-Webserver-Apache-ResponseTime-HTTP | App-Webserver-Apache-ResponseTime |
| TS_App-Webserver-Apache-SlotStates-HTTP | App-Webserver-Apache-SlotStates |
| TS_App-Webserver-Apache-Workers-HTTP | App-Webserver-Apache-Workers |
Les servicegroups
Contexte
Personnellement j’utilise les servicegroups pour faire certaines regroupements fonctionnels ou techniques :
- Par application
- Par type d’indicateurs
- Disques
- Process
- Services Web
- Service SGBD
Tous les recoupements sont possibles du moment qu’ils sont utiles.
Imaginez les tableaux de bord dont vous auriez besoin pour vos tableaux de bord
Le schéma

Analyse
Le schéma ci-dessus nous montre la relation entre les services et les groupes de services :
- La table servicegroup_relation fait la jointure entre :
- servicegroup_relation.service_service_id = service.service_id
- servicegroup_relation.servicegreoup_sg_id = servicegroup.sg_id
Requête pour tout lister
Requête
SELECT SG.sg_name AS "SERVICEGROUP"
FROM centreon.servicegroup AS SG
ORDER BY SG.sg_name;Résultat
| SERVICEGROUP |
|---|
| SG_Apache |
| SG_Centreon |
| SG_Cluster |
| SG_DB-Mongodb |
| SG_DB-Mysql |
| SG_Linux |
| SG_Linux-Disk |
| SG_Linux-Process |
| SG_Web-Apache |
| SG_Web-Nginx |
| SG_Web-PHP |
Relation entre services et servicegroups
Nous avons 2 filtres déterminants :
- Le mot clé « distinct » pour éviter les doublons
- Et le test boolean « is not null » pour n’afficher que les services étant rattaché à un group
Requête
Vision depuis la table service
SELECT DISTINCT
SVC.service_description AS "SERVICE",
SG.sg_name AS "SERVICEGROUP"
FROM centreon.service AS SVC
LEFT JOIN centreon.servicegroup_relation AS SGR ON SGR.service_service_id=SVC.service_id
LEFT JOIN centreon.servicegroup AS SG ON SG.sg_id=SGR.servicegroup_sg_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND SG.sg_name IS NOT NULL
ORDER BY SVC.service_description, SG.sg_name;Vision depuis la table servicegroup
SELECT DISTINCT
SVC.service_description AS "SERVICE",
SG.sg_name AS "SERVICEGROUP"
FROM centreon.servicegroup AS SG
LEFT JOIN centreon.servicegroup_relation AS SGR ON SGR.servicegroup_sg_id=SG.sg_id
LEFT JOIN centreon.service AS SVC ON SVC.service_id=SGR.service_service_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
ORDER BY SG.sg_name, SVC.service_description;Résultat Tronqué
| SG_Apache | App-Cluster-Centreon-HA-Resource-http-Status |
| SG_Centreon | App-Cluster-Centreon-HA-Resource-http-Status |
| SG_Centreon | App-Cluster-Centreon-HA-Resource-ms_mysql-clone-Status |
| SG_Centreon | App-Cluster-Centreon-HA-Resource-php-clone-Status |
| SG_Centreon | App-Cluster-Centreon-HA-Resource-snmptrapd-Status |
| SG_Centreon | App-Cluster-Centreon-HA-Resource-vip_mysql-clone-Status |
| SG_Centreon | App-Cluster-Centreon-HA-Resource-vip-Status |
| SG_Centreon | App-DB-MySQL-Connections-Number |
| SG_Centreon | App-DB-MySQL-Connection-Time |
| SG_Centreon | App-DB-MySQL-Database-Size |
| SG_Centreon | App-DB-MySQL-Long-Queries |
| SG_Centreon | App-DB-Mysql-Process-mysqld-Status |
| SG_Centreon | App-DB-MySQL-Slowqueries |
| SG_Centreon | App-DB-MySQL-Uptime |
| SG_Centreon | App-Monitoring-Centreon-Broker-module-Stats |
| SG_Centreon | App-Monitoring-Centreon-Broker-RRD-Stats-Central |
| SG_Centreon | App-Monitoring-Centreon-Broker-SQL-Stats-Central |
| SG_Centreon | App-Monitoring-Centreon-Process-broker-rrd |
| SG_Centreon | App-Monitoring-Centreon-Process-broker-sql |
| SG_Centreon | App-Monitoring-Centreon-Process-cbd |
| SG_Centreon | App-Monitoring-Centreon-Process-centengine |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-gorgone-Status |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-http-Status |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-ms_mysql-clone-Status |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-php-clone-Status |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-snmptrapd-Status |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-vip_mysql-clone-Status |
| SG_Cluster | App-Cluster-Centreon-HA-Resource-vip-Status |
| SG_Linux | App-DB-Mysql-Process-mysqld-Status |
| SG_Linux | App-Monitoring-Centreon-Process-broker-rrd |
| SG_Linux | App-Monitoring-Centreon-Process-broker-sql |
| SG_Linux | App-Monitoring-Centreon-Process-cbd |
| SG_Linux-Process | App-DB-Mysql-Process-mysqld-Status |
| SG_Linux-Process | App-Monitoring-Centreon-Process-broker-rrd |
| SG_Linux-Process | App-Monitoring-Centreon-Process-broker-sql |
| SG_Linux-Process | App-Monitoring-Centreon-Process-cbd |
| SG_Linux-Process | Os-Linux-Process-sshd-Status |
| SG_Linux-Process | Os-Linux-Process-snmpd-Status |
| SG_Web-Apache | App-Cluster-Centreon-HA-Resource-http-Status |
| SG_Web-PHP | App-Cluster-Centreon-HA-Resource-php-clone-Status |
Nous pouvons remarquer qu’un même service peut être rattaché à plusieurs servicegroup
Les services categories
Schéma

Analyse
Le schéma ci-dessus nous montre la relation entre les services et les catégories de services :
- La table service_categories_relation fait la jointure entre :
- categories_relation.service_service_id = service.service_id
- service_categories_relation. sc_id = service_categories.sc_id
Requête pour tout lister
Requête
SELECT sc_name,sc_description
FROM centreon.service_categories
ORDER BY sc_name;Résultat
| sc_name | sc_description |
|---|---|
| SC_ Apache_Services | SC_Apache_Services |
| SC_Centreon_Process | SC_ Centreon_Process |
| SC_Disk | SC_Disk |
| SC_ Linux_disk_Usage | SC_ Linux_disk_Usage |
| SC_ Linux_process | SC_Linux_process |
| SC_Memory | SC_Memory |
| SC_Ping | SC_ping |
| SC_Traffic | SC_Traffic |
Lister les services et leur service categories
Requête
Vision depuis la table service
SELECT DISTINCT
SC.sc_name AS "SERVICECATEGORIES",
SVC.service_description AS "SERVICE"
FROM centreon.service AS SVC
LEFT JOIN centreon.service_categories_relation AS SCR ON SCR.service_service_id=SVC.service_id
LEFT JOIN centreon.service_categories AS SC ON SC.sc_id=SCR.sc_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND SC.sc_name IS NOT NULL
ORDER BY SC.sc_name, SVC.service_description;Vision depuis la table service_catégories
SELECT DISTINCT
SC.sc_name AS "SERVICECATEGORIES",
SVC.service_description AS "SERVICE"
FROM centreon.service_categories AS SC
LEFT JOIN centreon.service_categories_relation AS SCR ON SCR.sc_id=SC.sc_id
LEFT JOIN centreon.service AS SVC ON SVC.service_id=SCR.service_service_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND SC.sc_name IS NOT NULL
ORDER BY SC.sc_name, SVC.service_description;Résultat
| SERVICECATEGORIES | SERVICE |
|---|---|
| SC_Apache_Services | App-Webserver-Apache-Cpuload |
| SC_Apache_Services | App-Webserver-Apache-Process-httpd-Stats |
| SC_Apache_Services | App-Webserver-Apache-ResponseTime |
| SC_Apache_Services | App-Webserver-Apache-SlotStates |
| SC_Apache_Services | App-Webserver-Apache-Workers |
| SC_Centreon_Process | App-Monitoring-Centreon-Process-broker-rrd |
| SC_Centreon_Process | App-Monitoring-Centreon-Process-broker-sql |
| SC_Centreon_Process | App-Monitoring-Centreon-Process-cbd |
| SC_Centreon_Process | App-Monitoring-Centreon-Process-centengine |
| SC_Centreon_Process | App-Monitoring-Centreon-Process-gorgoned |
| SC_Linux_disk_Usage | OS-Linux-Disk-/-Usage |
| SC_Linux_disk_Usage | OS-Linux-Disk-/home-Usage |
| SC_Linux_disk_Usage | OS-Linux-Disk-/var/lib/mysql-Usage |
| SC_Linux_disk_Usage | OS-Linux-Disk-/var/lib/centreon-Usage |
| SC_Linux_disk_Usage | OS-Linux-Disk-/var/log/mysql-Usage |
| SC_Linux_process | App-DB-Mysql-Process-mysqld-Status |
| SC_Linux_process | Os-Linux-Process-sshd-Status |
| SC_Linux_process | Os-Linux-Process-snmpd-Status |
| SC_Linux_process | Os-Linux-Process-snmptrapd-Status |
Les services, servicesgroups,service_categories
Context
Nous allons voir comment de bout en bout comment faire le lien entre les 3 tables
- Depuis la bale des services
- Depuis la table des servicegroup
- Depuis la table des service catgories
Schéma

Requête
Vision depuis la table service
SELECT DISTINCT
SVC.service_description AS "SERVICE",
SG.sg_name AS "GROUP",
SC.sc_name AS CATEGORIES
FROM centreon.service AS SVC
LEFT JOIN centreon.servicegroup_relation AS SGR ON SGR.service_service_id=SVC.service_id
LEFT JOIN centreon.servicegroup AS SG ON SG.sg_id=SGR.servicegroup_sg_id
LEFT JOIN centreon.service_categories_relation AS SCR ON SCR.service_service_id=SVC.service_id
LEFT JOIN centreon.service_categories AS SC ON SC.sc_id=SCR.sc_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND SG.sg_name IS NOT NULL
ORDER BY SVC.service_description, SG.sg_name,SC.sc_name;Vision depuis la table servicegroup
SELECT DISTINCT
SVC.service_description AS "SERVICE",
SG.sg_name AS "GROUP",
SC.sc_name AS CATEGORIES
FROM centreon.servicegroup AS SG
LEFT JOIN centreon.servicegroup_relation AS SGR ON SGR.servicegroup_sg_id=SG.sg_id
LEFT JOIN centreon.service AS SVC ON SVC.service_id=SGR.service_service_id
LEFT JOIN centreon.service_categories_relation AS SCR ON SCR.service_service_id=SVC.service_id
LEFT JOIN centreon.service_categories AS SC ON SC.sc_id=SCR.sc_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND SG.sg_name IS NOT NULL
ORDER BY SVC.service_description, SG.sg_name,SC.sc_name;Vision depuis la table service_categories
SELECT DISTINCT
SVC.service_description AS "SERVICE",
SG.sg_name AS "GROUP",
SC.sc_name AS CATEGORIES
FROM centreon.service_categories AS SC
LEFT JOIN centreon.service_categories_relation AS SCR ON SCR.sc_id=SC.sc_id
LEFT JOIN centreon.service AS SVC ON SVC.service_id=SCR.service_service_id
LEFT JOIN centreon.servicegroup_relation AS SGR ON SGR.service_service_id=SVC.service_id
LEFT JOIN centreon.servicegroup AS SG ON SG.sg_id=SGR.servicegroup_sg_id
WHERE SVC.service_activate='1'
AND SVC.service_register="1"
AND SG.sg_name IS NOT NULL
ORDER BY SVC.service_description, SG.sg_name,SC.sc_name;Résultat tronqué
| SERVICE | GROUP | CATEGORIES |
|---|---|---|
| App-Cluster-Centreon-HA-Resource-cbd_central_broker-Status | SG_App-Monitoring-Centreon | SC_Cluster_Resource |
| App-Cluster-Centreon-HA-Resource-cbd_central_broker-Status | SG_App-Cluster-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Cluster-Centreon-HA-Resource-cbd_rrd-clone-Status | SG_App-Monitoring-Centreon | SC_Cluster_Resource |
| App-Cluster-Centreon-HA-Resource-cbd_rrd-clone-Status | SG_App-Cluster-Centreon | SC_App-Monitoring-Centreon_Process |
| App-DB-Mysql-Process-mysqld-Status | SG_App-DB-Mysql | SC_Linux_process |
| App-DB-Mysql-Process-mysqld-Status | SG_App-Cluster-Centreon | SC_App-Cluster_Resource |
| App-DB-Mysql-Process-mysqld-Status | SG_App-Monitoring-Centreon | SC_App-DB-Mysql |
| App-Monitoring-Centreon-Process-broker-rrd | SG_App-Monitoring-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Monitoring-Centreon-Process-broker-rrd | SG_App-Cluster-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Monitoring-Centreon-Process-broker-rrd | SG_App-Monitoring-Centreon | SC_Cluster_Resource-clone |
| App-Monitoring-Centreon-Process-broker-sql | SG_App-Monitoring-_Centreon | SC_App-DB-Mysql |
| App-Monitoring-Centreon-Process-broker-sql | SG_App-Monitoring-_Centreon | SC_Cluster_Resource-clone |
| App-Monitoring-Centreon-Process-broker-sql | SG_App-Cluster-Centreon | SC_App-DB-Mysql |
| App-Monitoring-Centreon-Process-centengine | SG_App-Monitoring-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Monitoring-Centreon-Process-centengine | SG_App-Monitoring-Centreon | SC_App-Cluster_Resource |
| App-Monitoring-Centreon-Process-centengine | SG_App-Cluster-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Monitoring-Centreon-Process-gorgoned | SG_App-Monitoring-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Monitoring-Centreon-Process-gorgoned | SG_App-Monitoring-Centreon | SC_App-Cluster_Resource |
| App-Monitoring-Centreon-Process-gorgoned | SG_App-Cluster-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Webserver-Apache-Cpuload | SG_App-WebServer-Apache | SC_App-Webserver-Apache_Services |
| App-Webserver-Apache-Cpuload | SG_App-Monitoring-Centreon | SC_App-Webserver-Apache_Status |
| App-Webserver-Apache-Cpuload | SG_App-Cluster-Centreon | SC_App-Monitoring-Centreon_Process |
| App-Webserver-Apache-Process-httpd-Stats | SG_App-WebServer-Apache | SC_App-Webserver-Apache_Services |
| App-Webserver-Apache-Process-httpd-Stats | SG_App-WebServer-Apache | SC_Web_Services |
| App-Webserver-Apache-ResponseTime | SG_App-WebServer-Apache | SC_App-Webserver-Apache_Services |
| App-Webserver-Apache-SlotStates | SG_App-WebServer-Apache | SC_App-Webserver-Apache_Services |
| App-Webserver-Apache-SlotStates | SG_App-Monitoring-Centreon | SC_App-Webserver-Apache_Status |
| OS-Linux-Disk-/var/lib/mysql-Usage | SG_App-Monitoring-Centreon | SC_OS-Linux-Disk-Usage |
| OS-Linux-Disk-/var/lib/mysql-Usage | SG_App-DB-Mysql | SC_App-DB-Mysql-Disk-Usage |
| OS-Linux-Disk-/var/lib/centreon-Usage | SG_App-Monitoring-Centreon | SC_OS-Linux-Disk-Usage |
| OS-Linux-Disk-/var/log/mysql-Usage | SG_App-DB-Mysql | SC_OS-Linux-Disk-Usage |
| OS-Linux-Disk-/var/log/mysql-Usage | SG_App-DB-Mysql | SC_App-DB-Mysql-Disk-Usage |
| OS-Linux-Process-crond-Status | SG_OS-Linux-Process-Status | SC_App-Monitoring-Centreon_Process |
| OS-Linux-Process-crond-Status | SG_App-Monitoring-Centreon | SC_OS-Linux-Process-Status |
| OS-Linux-Process-ntpd-Status | SG_OS-Linux-Process-Status | SC_OS-Linux-Process-Status |
| OS-Linux-Process-ntpd-Status | SG_App-Monitoring-Centreon | SC_OS-Linux-Process-Status |
Conclusion
Nous venons de voir différentes requêtes autour des services et leurs regroupements.
Il est important de noter que cette vision ne prend pas en compte le lien avec les hosts que vous verrons dans un prochain article.
