1¡¢OpenStack
Telemetry¼ò½é
OpenStack TelemetryÏîÄ¿ÊÇOpenStack big tentϸºÔð¼ÆÁ¿Í³¼ÆµÄ×é¼þ£¬Ä¿Ç°TelemetryÊǰüº¬ÁËËĸö×ÓÏîÄ¿£¬Ceilometer¡¢
Aodh¡¢GnocchiºÍPanko¡£ÆäÖеÄCeilometerÏîÄ¿ÊÇ×îÔçOpenStackÏîÄ¿ÖиºÔð¼ÆÁ¿Í³¼ÆµÄ·þÎñ£¬µ«ÊÇÓÉÓÚÔÆÆ½Ì¨Êý¾ÝÊÕ¼¯Ô½À´Ô½¶àÔì³ÉCCCeilometerÔ½À´Ô½¸´ÔÓ£¬Òò´ËÔÚMitaka°æ±¾¿ªÊ¼ceilometerÏîÄ¿¿ªÊ¼·Ö½âΪ²»Í¬ÏîÄ¿£¬²¢Í³³ÆÎªOpenStack
Telemetry¡£
ÔÆ¼à¿Ø¸æ¾¯·þÎñ£¬Ö÷Òª°üÀ¨Èý¸ö²¿·Ö: ¼ÆÁ¿Êý¾ÝÊÕ¼¯¡¢¼ÆÁ¿Êý¾Ý´æ´¢¡¢¸æ¾¯·þÎñ¡£
OpenStack TelemetryµÄ¼Ü¹¹ÈçͼËùʾ£¨Mitaka°æ±¾£©£¬ÆäÖÐCeilometerÊǸºÔðÊý¾ÝÊÕ¼¯£¬GnocchiÔò¸ºÔðmeterÊý¾Ý´æ´¢£¬AodhÏîÄ¿¸ºÔð¸æ¾¯·þÎñ£¬Panko¸ºÔðEventÊý¾Ý´æ´¢¡£ÓÉÓÚEventºÍMeterÁ½ÖÖÊý¾ÝÀàÐͲ»Í¬£¬CCCeilometerÉçÇø½«Á½ÖÖÊý¾Ý·Ö¿ª´¦Àí¡£ÓÉÓÚPankoÏîÄ¿µ½newton²ÅÓÐrelease£¬¶ø±ÊÕß²ÉÓõÄmitakaÑéÖ¤»·¾³£¬±¾ÎÄÖв»Éæ¼°Panko¡£

ͼ 1 TelemetryÂß¼¼Ü¹¹
2¡¢Êý¾ÝÊÕ¼¯·þÎñ
Ceilometer·þÎñÖ÷ÒªÓÃÓÚÊý¾ÝÊÕ¼¯£¬²¢ÌṩÁ½ÀàÊý¾ÝµÄÊÕ¼¯meterºÍEvent¡£
MeterÊý¾ÝÓÉCeilometerµÄpolling agentÖ÷¶¯»ñÈ¡¡£
EventÊý¾ÝÀ´Ô´ÊÇOpenStack service µÄnotification£¬ÀýÈçinstance/volume/network
µÈ´´½¨¸üÐÂɾ³ýµÈµÈ¡£
Ceilometer ·þÎñÖ÷Òª°üº¬:
a) polling agent£º¶¨ÆÚÂÖѯ»ñÈ¡¼à¿ØÊý¾Ý²¢½«Êý¾Ý·¢Ë͸øCCCeilometer notification
agent×ö½øÒ»²½´¦Àí£¬Í¨¹ýlibvirt½Ó¿Ú»òÕßsnmp»òÕßOpenStack service API¡£
Polling agentÓÖ¸ù¾Ýnamespace×öÁËmeteringµÄÇø·Ö£¬·Ö±ð¶ÔÓ¦²»Í¬µÄagent
Central polling agent£¬Ö÷ÒªÊÇͨ¹ýOpenStack API ½øÐÐÔÆÆ½Ì¨µÄÊý¾ÝÊÕ¼¯
Compute polling agentÔòÊÇͨ¹ýÓëhypervisorµÄ½Ó¿Úµ÷Óö¨ÆÚ»ñȡͳ¼ÆÊý¾Ý
Impi polling agentÔòÊÇͨ¹ýipmiÐÒéÊÕ¼¯Êý¾Ý

ͼ 2 central polling
agent»ñÈ¡¼à¿ØÊý¾Ý

ͼ3 OpenStack services
notification Êý¾ÝÊÕ¼¯
b) notification agent£ºÔÚMitaka°æ±¾ÖУ¬notification agentͨ¹ý¼àÌýmessage
queue£¬½«message ת»¯ÎªeventºÍsample²¢ÇÒÖ´ÐÐpipeline´¦Àí£¬ÈçͼËùʾ¡£ÀýÈçÐéÄâ»úµÄCPUÀûÓÃÂÊ£¬libvirtĿǰֻÌṩCPUTIMEµÄ²éѯ£¬Èç¹ûΪÓû§Õ¹Ê¾CPUÀûÓÃÂÊÒª×öÊý¾Ýת»»£¬notification
agent¾Í»á¸ù¾ÝpipelineÖе͍ÒåÖ´ÐÐÊý¾Ýת»»£¬²¢½«´¦ÀíºóµÄÊý¾Ý£¬Í¨¹ýmessage queue·¢Ë͸øCCCeilometer
collector

ͼ4 pipeline ManagerÊý¾Ý´¦Àí
c£©Ceilometer collector£ºceilometer collectorµÄ×÷ÓþÍÊǽ«ÊÕ¼¯µ½Êý¾Ý´æ´¢µ½´æ´¢ÏµÍ³ÖУ¬CCCeilometerÖ§³Ö¶àÖÖ´æ´¢ºó¶Ë£º
Îļþϵͳ
Êý¾Ý¿â

Gnocchi
HTTP
¶ÔÓë´æ´¢ÏµÍ³µÄÑ¡ÔñÊǷdz£¹Ø¼üµÄ£¬¹«ÓÐÔÆ»·¾³ÖлáËæ×ÅÓû§ºÍ×ÊÔ´µÄÔö³¤Êý¾ÝÒ²»á³ÖÐøÔö³¤£¬ÕâÊǶÔÔÆ¼à¿Ø·þÎñÀ´ËµÊÇÒ»¸ö·Ç³£´óµÄÌôÕ½¡£ÏÂС½Ú£¬½«ÎªÃèÊö£¬ÎÒÃÇÊÇÈçºÎ¿¼Á¿´æ´¢ÏµÍ³µÄ¡£
3¡¢¼à¿ØÊý¾Ý´æ´¢ÏµÍ³¾ñÔñ
¶ÔÓÚ¼ÆÁ¿Í³¼Æ·þÎñÀ´Ëµ£¬´æ´¢·þÎñµÄÐÔÄÜÊǷdz£¹Ø¼üµÄ£¬ÆäÖÐÒ»¸öÒªÇó¾ÍÊǶÔËüµÄ´æ´¢Á¿ÓкܴóµÄÒªÇ󣬹«ÓÐÔÆÆ½Ì¨ÊýÁ¿ºÜ´ó£¬Ã¿Ê±Ã¿¿Ì²»¶ÏµÄÓÐÊý¾ÝÍùϵͳÀïÃæÈû¡£¶ÔÊý¾Ý¿âµÄÍÌÍÂÄÜÁ¦ÒªÇóºÜ¸ß£¬È»ºó¾ÍÊǶԲéѯÐÔÄÜÒªÇóºÜ¸ß¡£CERN×÷ΪOpenStack×î´óµÄ¹æÄ£µÄʵ¼ù£¬Ò²²ÉÓÃÁËMongoDBÈ¥×ömeterÊý¾Ý´æ´¢£¬µ«ÊÇÒ»Ö±ÒÔÀ´MongoDBµÄÒ²Ò»Ö±±»Ú¸²¡£¬Ò»¸ö´æ´¢¿Õ¼äÕ¼Óã¬Ò»¸öËæÖ®Êý¾ÝÁ¿Ôö¶àÏìӦʱ¼ä±ä´óµÄÎÊÌâ¡£
3.1 Gnocchi¼ò½é
GnocchiÊÇOpenStack TelemtryµÄMetric serivce£¬¿ªÊ¼Óë2015Ä꣬ĿµÄÔÚÓë½â¾öCCCeilometerµÄ¼à¿ØÊý¾Ý´æ´¢µÄÐÔÄÜÎÊÌâ¡£GnocchiÖ§³ÖµÄ´æ´¢driverÓÐÎļþϵͳ¡¢Swift¡¢s3¡¢Ceph
¹Ù·½½¨ÒéʹÓÃceph£¬gnocchi¶ÔcephµÄÊý¾Ý´æ´¢×öÁ˺ܶàÓÅ»¯¡£
Gnocchi¼Ü¹¹ÈçͼËùʾ£¬°üº¬Á½²¿·ÖindexºÍstorage¡£Gnocchi APIÌṩrestful
API½Ó¿Ú£¬½ÓÊܵ½Êý¾Ý´æ´¢ÇëÇóʱ£¬»á´´½¨indexÔÚÊý¾Ý¿âÖУ¬²¢°ÑÊý¾ÝдÈëÁÙʱ´ý´¦ÀíÇø£¬²¢¼ÓÈëʱ¼ä´Á¡£
Metricd·þÎñÔò´Ó´ý´¦ÀíÊý¾ÝÇø»ñÈ¡´øÓÐʱ¼ä´ÁµÄÊý¾Ý£¬½«Êý¾Ý×·¼Óµ½Í³¼ÆÊý¾ÝÎļþÖС£gnocchiΪÁ˽ÚÊ¡´æ´¢¿Õ¼äÔÚ×îа汾ÖмÓÈëÁËѹËõËã·¨Ö§³Ö¡£

¶ÔÓÚMongoDB ºÍGnocchiµÄÑ¡Ôñ£¬ÎÒÃÇ×öÁËʵ¼ÊµÄ²âÊÔ£¬Ö÷Òª¹Ø×¢Á½ÏîÖ¸±ê´æ´¢¿Õ¼äÐèÇóºÍ²éѯÊý¾ÝÏìӦʱ¼ä¡£
3.2 Á½ÖÖ·½°¸µÄ²âÊÔ¼°·ÖÎö
·½°¸Ò»£ºGocchi + Ceph vs. MonogDB
a) ²âÊÔ·½·¨
CeilometerÖ§³ÖÅäÖöà¸ö´æ´¢ºó¶Ë£¬ÐÞ¸Äceilometer.conf
meter_dispatchers=gnocchi meter_dispatchers=database |
Êý¾ÝÊÕ¼¯Ê±¼ä£º5.5Сʱ
Êý¾ÝÊÕ¼¯Á¿£º1¸öcompute½Úµã
Êý¾ÝÊÕ¼¯ÆµÂÊ£º1Ãë
×ÊÔ´£º2¸övm£¬1¸öloadbalancer£¬1¸örouter
²âÊÔ»·¾³£º all-in-one
Step1£ºÍ£µôËùÓеÄCCCeilometer
Step2£ºgnocchiÇå³ýËùÓеÄresource
Step3: ´Óceph poolÖÐɾ³ýËùÓеÄgnocchiÏà¹ØµÄobjects
Step4: ´ÓMMMongoDBDBDBÖÐÇå³ýCCCeilometerµÄcollection
mongodb > use ceilometer > db.meter.drop() > db.resource.drop() |
Step 5: ÐÞ¸ÄceilomterÅäÖÃÎļþceilometer.conf
[default] meter_dispatchers=database Meter_dispatchers=gnocchi [database] metering_connection = mongodb://ceilometer:ceilometer@127.0.0.1:27017/ceilometer |
Step 6: ÉèÖÃÊý¾Ý²É¼¯ÖÜÆÚΪ1Ãë
Pipeline.yamlÖÐÉèÖÃinterval²ÎÊýΪ1 /etc/neutron/metering-agent.ini # Interval between two metering measures (integer value) measure_interval = 1 # Interval between two metering reports (integer value) report_interval = 1 |
Step 7: ´´½¨´æ´¢Êý¾ÝµÄArchive policy£¬²¢ÉèÖÃÁ£¶ÈΪ1s
gnocchi archive-policy create -d granularity:1s,points:86400 1days_per_sec +---------------------+--------------------------------------------+ | Field | Value | +---------------------+-------------------------------------+ | aggregation_methods | count, max, sum, min, mean | | back_window | 0 | | definition | - points: 86400, granularity: 0:00:01, timespan: 1 day, 0:00:00 | | name | 1days_per_sec | +---------------------+-------------------------------------+ |
b£©²âÊÔ½á¹û·ÖÎö
Ceilometer sample ²éѯʱ¼ä£¬¸ú»ñÈ¡µÄÊý¾ÝÁ¿³ÉÕý±È£¬µ±ÐèÒª²éѯ½Ï¶àµÄÀúÊ·Êý¾Ýʱ£¬MongoDBµÄ¼ìË÷ʱ¼ä»á±äµÃ¸ü³¤¡£
¶øGnocchi ¼ìË÷ʱ¼äÎȶ¨ÔÚ3~4s£¬ÒòΪGnocchiµÄ¼ìË÷ʱ¼äÖ÷ÒªÊǶÁÈ¡ceph obj£¬ÒÔ¼°½âÎöobj¸ñʽ
[root@server-31 ~]# time ceilometer sample-list --meter cpu_util -q 'resource_id =0fd02865-c5af-4b86-958c-10fe0ba6f8d5' -l 1000 real 0m2.157s user 0m1.166s sys 0m0.102s [root@server-31 ~]# time ceilometer sample-list --meter cpu_util -q 'resource_id= 0fd02865-c5af-4b86-958c-10fe0ba6f8d5' -l 10000 |wc -l 9127 real 0m16.168s user 0m3.455s sys 0m0.272s
[root@server-31 ~]# time gnocchi measures show
1dbba325-84cf-4af2-98b8-19e1b8033dd2 |wc -l
9070
real 0m3.202s
user 0m2.169s
sys 0m0.128s
Gnocchi Êý¾Ý´æ´¢Á¿ 40MB+ |

CeilometerÊý¾Ý´æ´¢Á¿3GB+

ÕâÊÇÒ»¸ö·Ç³£´óµÄÊý¾Ý²î¾à£¬MongoDBbµÄÊý¾Ý´æ´¢²ÉÓõÄÔ¤·ÖÅäµÄ·½Ê½£¬³õʼÇé¿öÏÂMongoDBµÄÊý¾Ý¿Õ¼äÊÇ128M£¬µ±Êý¾ÝÁ¿Ôö´óʱ£¬¾Í»áÉêÇë256MB¿Õ¼ä£¬ÒÔ´ËÀàÍÆ¡£
¶øGGGnocchi²»Í¬£¬GGGnocchi¶ÔCCCeilometer´æ´¢Êý¾Ý×öÁËÓÅ»¯¡£ÎÒÃǶԱÈÁËCeilometer
MongoDB´æ´¢ºÍGnocchi´æ´¢Êý¾Ý¡£MongoDBÖн«CCCeilometerµÄsample×÷Ϊvalue´æ´¢ÔÚdbÖС£¶øGnocchiÔò²ÉÓÃÁ˲»Í¬µÄ·½·¨£¬½ö´æ´¢¹Ø¼üµÄÊý¾Ý£ºÊ±¼ä´ÁºÍsampleµÄvalue£¬¶ø¶ÔÓÚmeterµÄprojectid£¬userid£¬start
time end timeµÈµÈ£¬×÷Ϊindex´æ´¢ÔÚindexÊý¾Ý¿âÖС£Õâ¾Í´óÁ¿µÄ½ÚÊ¡ÁË´æ´¢¿Õ¼ä¡£ÔÚ´æ´¢¿Õ¼ägnocchi±íÏÖ³öÀ´Á˷dz£´óµÄÓÅÊÆ¡£
µ«ÊǷdz£²»ÐÒµÄÊÂÇé·¢ÉúÁË£¬ÎÒÃÇ·¢ÏÖCephµÄ¶ÁдÇëÇó±äµÃÑӳٷdz£´ó¡£Í¨¹ýÎÒÃǵķÖÎö·¢ÏÖ£¬cephϵͳ´æÔÚ´óÁ¿µÄСÎļþ¶Áд£¬Ó°ÏìÁËcephϵͳµÄÐÔÄÜ¡£CephÊÇ»ùÓÚ¶ÔÏóµÄ´æ´¢ÏµÍ³£¬²¢²»Éó¤Ð¡Îļþ´æ´¢£»¶øgnocchiµÄÊý¾Ý´æ´¢ÕýÊDzúÉúÁË´óÁ¿µÄСÎļþ¡£
ÓÚÊÇÎÒÃÇÓÖ½øÐÐÁËÐÂÒ»ÂֵIJâÊÔ£¬¼´Gnocchi²ÉÓñ¾µØÎļþϵͳ¡£
·½°¸¶þ£ºGocchi + filesystem vs. Monogdb
a) ²âÊÔ·½·¨
Step1: Í£Ö¹ËùÓÐceilometer·þÎñ
for i in notification collector polling;do systemctl stop openstack-ceilometer-$i;done |
Step2: Çå³ýceilometer database
>use ceilometer >db.dropDatabase() |
Step3:ɾ³ýËùÓÐgnocchi´æ´¢µÄÊý¾Ý
for i in `gnocchi resource list | awk '{print $2}'`;do gnocchi resource delete $i;done |
Step4: Í£Ö¹gnocchi·þÎñ
systemctl stop openstack-gnocchi-metricd |
Step5: ÐÞ¸Ägnocchi.confʹÓñ¾µØ´æ´¢
mkdir /tmp/gnocchi-datapath Chown gnocchi:gnocchi -R /tmp/gnocchi-datapath [storage] driver=file file_basepath=/tmp/gnocchi-datapath |
Step6: ÖØÆôCCCeilometerºÍ GGGnocchi ·þÎñ
Êý¾ÝÊÕ¼¯Ê±¼ä2Сʱ44·ÖÖÓ
Êý¾ÝÊÕ¼¯Á¿£º1¸öcompute½Úµã
Êý¾ÝÊÕ¼¯ÆµÂÊ£º1Ãë
×ÊÔ´£º2¸övm£¬1¸öloadbalancer£¬1¸örouter
b) ²âÊÔ½á¹û
²éѯÏìӦʱ¼äÓëÉϴβâÊÔ½á¹û½Ó½ü£¬gnocchi¶ÔÓë´óÁ¿Êý¾Ý²éѯ¾ßÓкÜÇ¿µÄÓÅÊÆ£¬ÔÚÕâÀïûÓÐÔÙÁгöÀ´¡£
Mongo db Õ¼ÓÃ×ܿռäÔ¼2GB£¨Í¼ÖÐfilesizeµÄÖµ£©

gnocchi Õ¼Óÿռä19MB+

¶ÔÓë´æ´¢¿Õ¼äÕ¼Óã¬gnocchiÎļþϵͳ´æ´¢²ÉÓÃÓëceph object´æ´¢Ò»ÑùµÄ´æ´¢·½Ê½Òò´ËÔÚ´æ´¢¿Õ¼äÒ²·Ç³£ÓÐÓÅÊÆ¡£
3.3 Ñ¡ÐÍ×ܽá
Gnocchi²»ÂÛÊÇÇëÇóÏìӦʱ¼ä»¹ÊÇ´æ´¢¿Õ¼äÏà½ÏÓÚmogodb¶¼ÓкܴóµÄÓÅÊÆ£¬²âÊÔ½á¹û¶Ô±È¼û±í¸ñ¡£

¸ù¾ÝGnocchi¹Ù·½ÎĵµËµÃ÷£¬GnocchiµÄͳ¼ÆÊýÁ¿ÊǸù¾ÝÔÆÆ½Ì¨ÒªÇó¹ÀËã³öÀ´µÄ¡£
Ŀǰ¿ª·ÅÔÆÆ½Ì¨ÖÐ×îµÍÊý¾ÝÊÕ¼¯ÆµÂÊΪ1·ÖÖÓ£¬Ìṩ30ÌìµÄÊý¾Ý²éѯ¸ù¾Ý¹Ù·½Ëã·¨£º
Á£¶È: 1·ÖÖÓ
1Ììpoints: 60*24
30Ìì: 60*24*30 = 43200points
ÿ¸öpointsÊÇ8¸ö×Ö½Ú¼´ 43200 * 8 = 345600 B ԼΪ337KB Ò»¸ömetricÊý¾Ý£¨Ò²¾ÍÊÇÊÕ¼¯30ÌìÖ®ºó²ÅÄÜ´ïµ½µÄ£©£¬¶ø¶ÔÓëCephµÈ¶ÔÏó´æ´¢·þÎñÀ´½²£¬²¢²»ÊǺܺõÄÑ¡Ôñ£¬¾¡¹ÜgnocchiÏîÄ¿ÒѾÕë¶ÔCeph×öÁ˺ܶàµÄÓÅ»¯¡£Òò´Ë£¬ÎļþϵͳģʽµÄ´æ´¢ÊDZȽϺÏÊʵ쬶ÔÓÚÊý¾Ý´æ´¢¿ÉÒÔ²ÉÓö¨ÆÚ±¸·ÝµÄ·½Ê½¡£
4¡¢ Óöµ½µÄ¡°¿Ó¡±
ÓÉÓÚÊý¾ÝÊÕ¼¯·þÎñÔÚÔÆÆ½Ì¨ÉÏËæ×ÅÓû§Á¿¼°×ÊÔ´µÄÔö¶à¶øÔì³É±È½Ï´óµÄ·þÎñѹÁ¦£¬Òò´ËOpenStack telemetry±ØÐëÄÜÂú×ãÐÔÄÜÐèÇó¡£Èç¹ûÓëOpenStackÆäËû·þÎñ²ÉÓÃÏàͬµÄmessage
queueºÍdbµÈ·þÎñ£¬½«ÓпÉÄÜ»áÓ°Ïìµ½OpenStack¹Ø¼ü·þÎñµÄÐÔÄÜ¡£
Òò´Ë²ÉÓÃÁ˶ÀÁ¢µÄmessage queueÓÃÓÚOpenStack telemetryÏûϢͨѶ¡£
È»ºó£¬ÎÒÃDzÉÓÃÁ˲ÉÓÃѹÁ¦²âÊÔ£¬¼à¿ØtelemetryÊý¾ÝÊÕ¼¯·þÎñ״̬¼°message queueµÄ״̬¡£¾¹ýѹÁ¦²âÊÔ·¢ÏÖgnocchi·þÎñÊÇCPUÏûºÄÐÍ£¬ÔÚѹÁ¦²âÊÔµÄÇé¿öÏ£¬gnocchi
metricd½ø³Ì»á´ïµ½µ¥¸öcpu100%+£¬µ¥½ÚµãCPU´ïµ½80%+¡£
Ϊ±£Ö¤¹²ÓÐÔÆÆ½Ì¨·þÎñµÄÖÊÁ¿µÄÎȶ¨ÐÔ£¬²ÉÈ¡Á˶ÀÁ¢½Úµã²¿Êðgnocchi·þÎñ¡£
²¢¶ÔCCCeilometerºÍGGGnocchi·þÎñ×öÁ˲ÎÊýµ÷Õû£¬
ccceilometer.confÏÂÁвÎÊý±ÜÃâceilometer polling agentÔÚͬһʱ¼ä±¬·¢Ê½·¢ËÍͳ¼ÆÊý¾Ýµ½ÏûÏ¢¶ÓÁÐÔì³É¶ÓÁÐ×èÈû¡£
[DEFAULT] shuffle_time_before_polling_task = 100 |
Gnocchi.conf ÏÂÁвÎÊý¿ÉÒÔʹµÃmetricd½ø³Ì²»»á³Ö¾ÃÕ¼ÓÃCPU¡£
[storage] metric_processing_delay = 60 metric_reporting_delay = 120 |
¸ù¾Ý¹Ù·½ÎĵµËµÃ÷£¬ceilometer notification agentÈç¹ûÏëÒªÊǶà½ÚµãµÄHAģʽ£¬ÐèÒª²ÉÓÃtooz×ö·Ö²¼Ê½Ðͬ£¬±ÊÕß»ùÓÚÏîĿά»¤¸´ÔÓ¶È¿¼ÂDz¢Î´¼ÓÈëtooz×÷Ϊ·Ö²¼Ê½Ðͬ´¦Àí£¬¶øÊDzÉÓÃÁ˵¥½ÚµãµÄģʽ²¢ÓÉpacemaker/corosync×öresource¹ÜÀí£¬CCCeilometerÌṩÁËbatch
message´¦ÀíµÄ·½Ê½£¬ÄÇô¿ÉÒÔ´óÁ¿¼õÉÙÏûÏ¢´¦Àí´øÀ´µÄÐÔÄÜÎÊÌ⡣ͨ¹ý¼ì²âmessage queueÖеÄ×èÈûÊý¾Ý£¬ÔÚ1ÃëµÄÊý¾Ý²É¼¯¼ä¸ôÖлù±¾É϶¼±£ÁôÔÚ500ÒÔÄÚ¡£
µ«ÊÇÒ»Çв¢²»ÈçÏëÏóÖÐÄÇô˳Àû£¬ºÜ¿ìÓöµ½ÁËеÄÎÊÌ⣬¼´Ê¹notification agent²ÉÓÃÁ˵¥½Úµãģʽ£¬ÔÚ×öVM
CPUѹÁ¦²âÊÔʱ·¢ÏÖ£¬ÊÕ¼¯µ½Êý¾Ý²¢²»ÕýÈ·¡£Í¨¹ý·ÖÎöceilometer notification agent
code·¢ÏÖ¡£ccceilometer notification µÄdata transform£¬ÊDzÉÓõĽø³ÌÄÚ´æ×öÀúÊ·Êý¾Ý´æ´¢£¬Ò²¾ÍÊÇ˵¼´Ê¹Êǵ¥½Úµã¶à½ø³ÌµÄÇé¿ö£¬ÀúÊ·Êý¾ÝÒ²ÊÇ·Ö±ð´¦ÀíµÄ£¬ÔÚÕâÀï¼òµ¥½éÉÜÒ»ÏÂCPUÀûÓÃÂʼÆËã·½·¨¡£libvirt²»Ö§³ÖCPUÀûÓÃÂʵÄÖ±½Ó»ñÈ¡£¬Ö»ÄÜ»ñÈ¡CPU
timeÀ´¼ÆËã³öʵ¼ÊʹÓÃÂÊ¡£¼ÆËãµÄ¹«Ê½Îª£º
Ê×Ïȵõ½Ò»¸öÖÜÆÚ²î£ºCPU_time_diff = cpuTimenow ¡ª cpuTimet seconds
ago
È»ºó¸ù¾ÝÕâ¸ö²îÖµ¼ÆËãʵ¼ÊʹÓÃÂÊ£º%CPU = 100 ¡Á CPU_time_diff / (t ¡Á nr_cores
¡Á 109)
Õâ¾ÍÒâζ׿ä¸ô1ÃëµÄÊý¾Ý²¢Î´ÄÜÕýÈ·±»¶ÔÓ¦µÄnotification agent»ñÈ¡µ½²¢×ª»¯³öCPUÀûÓÃÂÊ¡£ËùÒÔ¹ØÓÚnotification
agentÔÚ²»ÆôÓÃÐͬtoozµÄÇé¿öÏÂÖ»²ÉÓõ¥½ø³ÌµÄ·½Ê½¹¤×÷£¬ÒªÃ´¾ÍÒª·ÅÆúËùÓеÄÊý¾Ýת»¯²¿·Ö£¬Ö»Ê¹ÓÃCCCeilometerµÄÊÕ¼¯ºÍ´æ´¢ÄÜÁ¦¡£


5¡¢¸æ¾¯·þÎñ
aodhÊÇ´ÓCCCeilometerÖжÀÁ¢³öÀ´µÄ½ö¸ºÔðÓÃÓڸ澯·þÎñ¡£AodhÒ²Ö§³ÖÁË»ùÓÚgnocchiͳ¼ÆÊý¾ÝµÄ¸æ¾¯ÉèÖá£
AodhÖ§³ÖÈçÏÂÀàÐ͵ĸ澯´¥·¢ÐÒéÀàÐÍ£º
HTTP: ·¢ËÍhttp requestµ½Ö¸¶¨µÄURL
HTTPS: ·¢ËÍhttps requestµ½Ö¸¶¨µÄURL
LOG£ºnotificationÈÕÖ¾
TEST£º²âÊÔÓô¦
Trust + HTTP/HTTPS£º¼ÓÈëÁËkeystoneÉí·ÝÈÏÖ¤
¸æ¾¯Í¨Öª¿ÉÒÔ²ÉÓÃWebhookȥʵÏÖ£¬´Ó¶ø´ïµ½¿ÉÒÔ·¢ËÍÓʼþ£¬¶ÌÐÅ£¬Î¢Ðŵȷ½Ê½µÄÓû§ÊµÊ±¸æ¾¯¡£
6¡¢ÎÒÃǵĸĽø
×÷Ϊ¹«ÓÐÔÆÆ½Ì¨·þÎñ£¬µ¥µ¥¹¦ÄÜʵÏÖÊDz»×ãÒÔÂú×ãÐèÇóµÄ£¬ÐèÒª¿¼Âǵ½Ó¦¶Ô¹«ÓÐÔÆ´ó¹æÄ£³¡¾°µÄÐÔÄÜÎÊÌâ¡£¶Ô´Ë£¬ÔƼ«ÐÇ´´Õë¶ÔOpenStack
Telemetry×ö¸ö²¿·Ö¶¨Öƹ¦ÄÜ¡£
Ê×ÏÈ£¬ÎÒÃǶÔÊý¾ÝÁ¿×öÁËÓÅ»¯£¬ÔÆ¼à¿ØµÄÄ¿±êÊÇÎªÔÆÆ½Ì¨Óû§Ìṩ¶ÔÓû§×ÊÔ´¼à¿ØºÍ¸æ¾¯¡£Òò´ËÎÒÃÇͨ¹ý¶¨ÖÆpolling
agentµÄpollster list£¬¼õÉÙÊý¾ÝÁ¿´¦ÀíºÍ´«Êä¡£
Message QueueºÍDatabaseÊÇÔÆÆ½Ì¨ºËÐĵÄÖ§³Å×é¼þ£¬ÎªÁ˱ÜÃâ´óÁ¿Êý¾Ý¼ÆÁ¿·þÎñÓ°Ïìµ½ÔÆÆ½Ì¨ºËÐÄÒµÎñÐÔÄÜ£¬ÎÒÃDzÉÓÃÁ˵¥¶ÀµÄMessage
QueueºÍDatabaseÓÃÓÚÔÆ¼à¿Ø·þÎñ¡£
ΪÁ˱£Ö¤ÔÆ¼à¿Ø·þÎñÔËÐУ¬ÎÒÃÇ´ÓÔËά²ãÃæÒ²×öÁË¼à¿Ø£¬ÀýÈç¶ÔÔÆ¼à¿Ø·þÎñ½¡¿µ×´Ì¬¡¢·þÎñÏìӦʱ¼ä¡¢ÏûÏ¢¶ÓÁÐ״̬¡¢Êý¾Ý¿âÂý²éѯ¡¢·þÎñ½ÚµãCPU¡¢ÄÚ´æ¡¢´ÅÅÌ¡¢ÍøÂçÁ÷Á¿µÈ½øÐÐ¼à¿Ø¡£
Gnocchi·þÎñ¿ª·¢Ê±¼äÉжÌĿǰλÖÃûÓдó¹æÄ£Ê¹ÓõÄÓÃÀý£¬ÎÒÃÇÔÚÔÆ¼à¿ØÆ½Ì¨¿ª·¢ÖÐÒ²Óöµ½¹¦Äܲ»Âú×ãÐèÇóµÄÇé¿ö£¬ÀýÈ磬¼à¿ØÊý¾Ý»ñÈ¡gnocchiĿǰ½öÖ§³ÖÕë¶Ôµ¥¸ömetricµÄÊý¾Ý»ñÈ¡£¬Ò²¾ÍÊÇ˵Èç¹ûÏëÒª×ö³ÉÃæ°åģʽµÄչʾÒâζ×ÅҪͬʱ·¢ËͶà¸öAPIÇëÇóÈ¥»ñÈ¡Êý¾Ý£¬Õâ¶ÔÓÚUIÊÇÓÐÐÔÄÜÓ°ÏìµÄ¡£ÔƼ«ÐÇ´´¶ÔÕâЩÎÊÌâ×öÁ˶þ´Î¿ª·¢£¬Ò²»á¼Æ»®°Ñ´úÂë»ØÀ¡¸øÉçÇø¡£
7¡¢Ð´ÔÚ×îºó
ÔÆ¼«ÐÇ´´Í¨¹ýOpenstack TelemetryÏîĿʵÏÖÔÆ¼à¿ØÆ½Ì¨¹ý³ÌÖÐÓöµ½µÄ¸÷ÖÖ¡°¿Ó¡±£¬Ô½·¢¾õµÃ¼´Ê¹ÊÇOpenstack×÷Ϊ×î»îÔ¾ÔÆ¼ÆË㿪ԴÉçÇøÒÀÈ»¾àÀëÉÌÒµ»¯Â·Í¾ÒÀÈ»ÉÐÔ¶¡£Òò´Ë£¬ÎÒÃÇ»áÔÚÔöÇ¿·þÎñÎȶ¨ÐԺ͸ßÐÔÄÜ·½Ãæ×ö³ö¸ü¶àµÄŬÁ¦ºÍ³¢ÊÔ£¬²¢ÀÖÓÚ·ÖÏíºÍ¹±Ï×µ½¿ªÔ´ÉçÇø¡£ |