0% ont trouvé ce document utile (0 vote)
50 vues17 pages

Installation et configuration de Telemetry OpenStack

Transféré par

emile lovi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
50 vues17 pages

Installation et configuration de Telemetry OpenStack

Transféré par

emile lovi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

kokou Agbedanou

Service de monitoring (Telemetry)


Telemetry (anciennement nommé Ceilometer) est un module permettant de disposer d’outils de
métrologie de la plate-forme OpenStack comme par exemple l’utilisation de la CPU, de la RAM... Les
données issues de Telemetry peuvent être exploitées par le module Heat afin d’effectuer des actions
particulières comme par exemple instancier une seconde VM Apache dans un cluster Web lorsque le pic
de charge du site web est proche de 80 % d’utilisation de CPU.

Telemetry est accessible via son API Rest. L’agent Telemetry, installé sur chaque VM de la stack, permet
de collecter les informations à envoyer au serveur Telemetry.

1. Installation et configuration sur le Controller node

Comme Telemetry enregistre de très grosses quantités de données non structurées, il est judicieux
d’utiliser une base NoSQL de type MongoDB.

Installation de la base de données MongoDB

# yum install mongodb-server mongodb

Modification du fichier de configuration /etc/mongodb.conf

Il faut renseigner l’adresse IP du Controller node dans le champ bind_ip.

...
# affectation avec l'IP du contrôleur
bind_ip = 10.0.0.11
...
# gestion de la taille des logs (128 Mo) dans
/var/lib/mongodb/journal
smallfiles = true

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -1-
kokou Agbedanou

...

Démarrage du service MongoDB

# service mongod start


# chkconfig mongod on

Vérification du fonctionnement de MongoDB

# mongo --host srv-openstack-controller


MongoDB shell version: 2.6.5
connecting to: srv-openstack-controller:27017/test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> show dbs
admin 0.031GB
local 0.031GB

Création de la base de données de collecte nommée ceilometer

# mongo --host srv-openstack-controller --eval 'db =


db.getSiblingDB("ceilometer"); db.addUser({user:
"ceilometerUser", pwd: "ceilometerPass", roles: [ "readWrite",
"dbAdmin" ]})'
WARNING: The 'addUser' shell helper is DEPRECATED. Please use
'createUser' instead
Successfully added user: { "user" : "ceilometerUser", "roles" :

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -2-
kokou Agbedanou

[ "readWrite", "dbAdmin" ] }

 ceilometerPass doit contenir le vrai mot de passe.

Affectation des credentials

# source ~/admin_creds.sh

Gestion de ceilometer avec Keystone

ˇ
Création de l’utilisateur ceilometerUser :

# keystone user-create --name ceilometerUser --pass ceilometerPass


+ ----------+----------------------------------+
| Property | Value |
+ ----------+----------------------------------+
| email | |
| enabled | True |
| id | ee4921a91ef74b229dbffa3fbc6b2521 |
| name | ceilometerUser |
| username | ceilometerUser |
+ ----------+----------------------------------+

 ceilometerPass doit contenir le vrai de mot de passe.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -3-
kokou Agbedanou

ˇ
Ajout du rôle admin et du tenant service pour l’utilisateur ceilometerUser :

# keystone user-role-add --user ceilometerUser --tenant service


--role admin

ˇ
Création du service ceilometer :

# keystone service-create --name ceilometer --type metering


--description "Telemetry"
+ -------------+----------------------------------+
| Property | Value |
+ -------------+----------------------------------+
| description | Telemetry |
| enabled | True |
| id | 78122455507945e3b5e4e1b82a9caf27 |
| name | ceilometer |
| type | metering |
+ -------------+----------------------------------+

ˇ
Création des endpoints :

# keystone endpoint-create --service-id $(keystone service-list |


awk '/ metering / {print $2}') --publicurl http://srv-openstack-
controller:8777 --internalurl http://srv-openstack-controller:8777
--adminurl http://srv-openstack-controller:8777 --region regionOne
+-------------+--------------------------------------+
| Property | Value |
+-------------+--------------------------------------+
| adminurl | http://srv-openstack-controller:8777 |
| id | 38950ce919604ea5a7b8f5f783609bd9 |
| internalurl | http://srv-openstack-controller:8777 |
| publicurl | http://srv-openstack-controller:8777 |

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -4-
kokou Agbedanou

| region | regionOne |
| service_id | 78122455507945e3b5e4e1b82a9caf27 |
+-------------+--------------------------------------+

Le port 8777 est le port utilisé par Ceilometer.

Installation des paquets Ceilometer

# yum install openstack-ceilometer-api openstack-ceilometer-


collector openstack-ceilometer-notification openstack-ceilometer-
central openstack-ceilometer-alarm python-ceilometerclient

Modification du fichier de configuration /etc/ceilometer/ceilometer.conf

...
[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = srv-openstack-controller
rabbit_password = RABBIT_PASS
...
auth_strategy = keystone

...
[keystone_authtoken]
...
auth_uri = http://srv-openstack-controller:5000/v2.0
identity_uri = http://srv-openstack-controller:35357
admin_tenant_name = service
admin_user = ceilometerUser
admin_password = ceilomterPass
...
[database]
...

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -5-
kokou Agbedanou

connection = mongodb://ceilometer:ceilometerPass@srv-openstack-
controller:27017/ceilometer
...
[service_credentials]
...
os_auth_url = http://srv-openstack-controller:5000/v2.0
os_username = ceilometerUSer
os_tenant_name = service
os_password = ceilometerPass

[publisher]
...
metering_secret = METERING_SECRET

 Il faut remplacer RABBIT_PASS, ceilometerPass et METERING_SECRET par les


vrais mots de passe.

Opérations post-installation

# systemctl enable openstack-ceilometer-api.service openstack-


ceilometer-notification.service openstack-ceilometer-
central.service openstack-ceilometer-collector.service openstack-
ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-
notifier.service
# systemctl start openstack-ceilometer-api.service openstack-
ceilometer-notification.service openstack-ceilometer-
central.service openstack-ceilometer-collector.service openstack-
ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-
notifier.service

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -6-
kokou Agbedanou

2. Installation de l’agent Telemetry sur le Compute Node

Telemetry fonctionne avec un serveur et des agents qui sont installés sur chaque host de compute.

Installation des paquets

# yum install openstack-ceilometer-compute python-


ceilometerclient pythonpecan

Modification du fichier /etc/nova/nova.conf

[DEFAULT]
...
instance_usage_audit = True
instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state
notification_driver = nova.openstack.common.notifier.rpc_notifier
notification_driver = ceilometer.compute.nova_notifier

Redémarrage du service Nova

# systemctl restart openstack-nova-compute.service

Configuration de l’agent

Il faut procéder à la modification du fichier /etc/ceilometer/ceilometer.conf :

...

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -7-
kokou Agbedanou

[DEFAULT]
rabbit_host = srv-opentack-controller
rabbit_password = RABBIT_PASS
...
[publisher]
# Secret value for signing metering messages (string value)
metering_secret = METERING_SECRET
...
[keystone_authtoken]
auth_uri = http://srv-opentack-controller:5000/v2.0
identity_uri = http://srv-opentack-controller:35357
admin_tenant_name = service
admin_user = ceilometerUser
admin_password = ceilometerPass
...
[service_credentials]
os_auth_url = http://srv-opentack-controller:5000/v2.0
os_username = ceilometerUser
os_tenant_name = service
os_password = ceilometerPass
os_endpoint_type = internalURL

 Il faut remplacer RABBIT_PASS, METERING_SECRET et ceilometer par les vrais


mots de passe.

Opérations post-installation

# systemctl enable openstack-ceilometer-compute.service


# systemctl start openstack-ceilometer-compute.service

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -8-
kokou Agbedanou

3. Configuration du service image

Sur le serveur contrôleur sur lequel est installé le service Glance et afin de pouvoir récupérer les
informations de métrologie sur les images, il faut effectuer les interventions suivantes :

Modification du fichier /etc/glance/glance-api.conf

notification_driver = messaging
rpc_backend = rabbit
rabbit_host = srv-opentack-controller
rabbit_password = RABBIT_PASS

 Il faut remplacer RABBIT_PASS par le vrai mot de passe.

Redémarrage du service Glance

# systemctl restart openstack-glance-api.service openstack-


glance-registry.service

4. Gestion du stockage bloc

De la même façon, afin de récupérer les informations de métrologie sur le stockage bloc, il faut intervenir
sur le service Cinder.

Modification du fichier /etc/cinder/cinder.conf

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -9-
kokou Agbedanou

[DEFAULT]
...
control_exchange = cinder
notification_driver =
cinder.openstack.common.notifier.rpc_notifier

Redémarrage du service Cinder

ˇ
Sur le serveur Controller, redémarrage de cinder-api et cinder scheduler :

# systemctl restart openstack-cinder-api.service openstack-


cinder-scheduler.service

ˇ
Sur le serveur storage, redémarrage de cinder-volume :

# systemctl restart openstack-cinder-volume.service

5. Gestion du stockage objet

De la même façon, afin de récupérer les informations de métrologie sur le stockage objet, il faut intervenir
sur le serveur de stockage objet en effectuant les actions suivantes :

Installation du paquet sur le serveur proxy (si différent du Controller node)

Dans l’installation de Swift (section Installation et configuration sur le Controller Node), c’est le Controller
node qui joue le rôle de proxy swift. Les manipulations suivantes sont donc à effectuer sur le Controller
node.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 10 -


kokou Agbedanou

# yum install python-ceilometerclient

Gestion de l’accès et des rôles pour accéder aux statistiques

# keystone role-create --name ResellerAdmin


+ ----------+----------------------------------+
| Property | Value |
+ ----------+----------------------------------+
| id | e71a9a40c68e43719c6d91d0d9a93055 |
| name | ResellerAdmin |
+ ----------+----------------------------------+

Gestion du rôle, tenant pour l’utilisateur ceilometerUser

# keystone user-role-add --tenant service --user ceilometerUser


--role e71a9a40c68e43719c6d91d0d9a93055

Modification du fichier /etc/swift/proxy-server.conf

[filter:ceilometer]
use = egg:ceilometer#swift
[pipeline:main]
pipeline = healthcheck cache authtoken keystoneauth ceilometer
proxyserver

Association de l’utilisateur swift au groupe ceilometer

Cela permet d’avoir accès au fichier ceilometer.conf.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 11 -


kokou Agbedanou

# usermod -a -G ceilometer swift

Modification du fichier /etc/swift/proxy-server.conf

operator_roles =
Member,admin,swiftoperator,_member_,ResellerAdmin

Redémarrage du service Swift

# systemctl restart openstack-swift-proxy.service

6. Vérification de bon fonctionnement

Accès à Telemetry (depuis le Controller node)

La commande ceilometer meter-listpermet de s’assurer que le service Telemetry fonctionne


bien.

# ceilometer meter-list
+ ------------+-------+-------+--------------------------------------
+ ---------+----------------------------------+
| Name | Type | Unit | Resource ID
| User ID | Project ID |
+ ------------+-------+-------+--------------------------------------
+ ---------+----------------------------------+
| image | gauge | image | 2cddb75f-5d3f-4cfb-b09f-
7e75a0033115 | None | 4864d3fff7f445d696e52aa77f728734 |

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 12 -


kokou Agbedanou

| image | gauge | image | ae83804d-5e9e-487e-806b-


1b0f5851900e | None | 4864d3fff7f445d696e52aa77f728734 |
| image.size | gauge | B | 2cddb75f-5d3f-4cfb-b09f-
7e75a0033115 | None | 4864d3fff7f445d696e52aa77f728734 |
| image.size | gauge | B | ae83804d-5e9e-487e-806b-
1b0f5851900e | None | 4864d3fff7f445d696e52aa77f728734 |
+ ------------+-------+-------+--------------------------------------
+ ---------+----------------------------------+

Download d’image

Dans cet exemple, une image cirros est téléchargée depuis le service Glance et poussée sur le disque dur.

# glance image-download "cirros-0.3.3-x86_64" > cirros.img

Détection du download

Telemetry doit détecter l’action de download d’image depuis Glance et afficher une entrée de log :

# ceilometer meter-list
+ ---------------------+------------+----------+--------------------
------------------+----------------------------------+-------------
---------------------+
| Name | Type | Unit | Resource ID
| User ID | Project ID
|
+ ---------------------+------------+----------+--------------------
-----------------+----------------------------------+--------------
--------------------+
| cpu | cumulative | ns | 89b45017-5f70-
4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 13 -


kokou Agbedanou

| disk.read.bytes | cumulative | B | 89b45017-5f70-


4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |
| disk.read.requests | cumulative | request | 89b45017-5f70-
4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |
| disk.write.bytes | cumulative | B | 89b45017-5f70-
4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |
| disk.write.requests | cumulative | request | 89b45017-5f70-
4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |
| image | gauge | image | 2cddb75f-5d3f-
4cfb-b09f-7e75a0033115 | None |
4864d3fff7f445d696e52aa77f728734 |
| image | gauge | image | ae83804d-5e9e-
487e-806b-1b0f5851900e | None |
4864d3fff7f445d696e52aa77f728734 |
| image.size | gauge |B | 2cddb75f-5d3f-
4cfb-b09f-7e75a0033115 | None |
4864d3fff7f445d696e52aa77f728734 |
| image.size | gauge |B | ae83804d-5e9e-
487e-806b-1b0f5851900e | None |
4864d3fff7f445d696e52aa77f728734 |
| instance | gauge | instance | 89b45017-5f70-
4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |
| instance:m1.small | gauge | instance | 89b45017-5f70-
4344-a577-91721210c0bd | df220efb4d234f958dd2b3ec76f775de |
4864d3fff7f445d696e52aa77f728734 |
+---------------------+------------+----------+--------------------
------------------+----------------------------------+-------------
---------------------+

Commande Telemetry

Telemetry dispose de nombreuses commandes.

ˇ
Affichage des statistiques de consommation CPU :

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 14 -


kokou Agbedanou

# ceilometer statistics -m cpu


+ --------+---------------------+---------------------+-----+------
+ -----+-----+-------+----------+---------------------+------------
----------+
| Period | Period Start | Period End | Max | Min
| Avg | Sum | Count | Duration | Duration Start | Duration
End |
+ --------+---------------------+---------------------+-----+------
+ -----+-----+-------+----------+---------------------+------------
----------+
|0 | 2015-03-29T20:10:32 | 2015-03-29T20:10:32 | 0.0 | 0.0 |
0.0 | 0.0 | 1 | 0.0 | 2015-03-29T20:10:32 | 2015-03-
29T20:10:32 |
+ --------+---------------------+---------------------+-----+------
+ -----+-----+-------+----------+---------------------+------------
---------+

ˇ
Affichage des alarmes telemetry :

# ceilometer alarm-list

ˇ
Affichage des métriques de la ressource ressource_id :

# ceilometer meter-list --query ressource=ressource_id

7. Configuration d’une alarme Telemetry

Outre le fait de collecter des informations sur les ressources, Telemetry permet de configurer des alarmes
afin de déclencher une action.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 15 -


kokou Agbedanou

Syntaxe de la commande ceilometer

# ceilometer alarm-threshold-create --name alarm-name


[--description alarm-text] --meter-name meter-name --threshold value

Mot-clé : alarm-threshold-create

Options :

--name : nom de l’alarme.

--meter-name: nom du métrique (mot-clé de Telemetry).

--threshold : valeur du seuil pour le déclenchement de l’alarme.

ˇ
Premier exemple : création d’une alarme de notification dans un log quand l’utilisation de la
CPU de l’instance instance_id est supérieure à 50 % pendant 600s (10 minutes) :

# ceilometer alarm-threshold-create --name cpu_high --description


'CPU usage high' --meter-name cpu_usage_high --threshold 50
--comparison-operator gt --statistic avg --period 600 --evaluation-
periods 3 --alarm-action 'log://' --query resource_id=instance_id

Deux nouvelles options sont utilisées :

--period, qui détermine la durée de mesure.

--alarm-action, qui déclenche une action post-alarme.

ˇ
Second exemple : modification de l’alarme précédente avec un seuil de 75 % au lieu de 50 %.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 16 -


kokou Agbedanou

# ceilometer alarm-threshold-update alarm_id --threshold=75

Il est nécessaire de connaître l’ID de l’alarme.

Suppression de l’alarme alarm_id :

# ceilometer alarm-delete alarm_id

 De nombreux exemples sont disponibles à l’adresse : https://access.redhat.com


/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/6/html
/Administration_Guide/sect-Using_the_Telemetry_Service.html.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 17 -

Vous aimerez peut-être aussi