Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎ»ùÓÚOpenstack telemetryÏîĿʵÏÖÔÆ¼à¿Ø±¨¾¯·þÎñ
 
×÷ÕߣºÈÎÃôÃô   À´Ô´£ºinfoq   ·¢²¼ÓÚ 2017-4-25
  3777  次浏览      27
 

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

rados -p gnocchi rm *!

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×÷Ϊ×î»îÔ¾ÔÆ¼ÆË㿪ԴÉçÇøÒÀÈ»¾àÀëÉÌÒµ»¯Â·Í¾ÒÀÈ»ÉÐÔ¶¡£Òò´Ë£¬ÎÒÃÇ»áÔÚÔöÇ¿·þÎñÎȶ¨ÐԺ͸ßÐÔÄÜ·½Ãæ×ö³ö¸ü¶àµÄŬÁ¦ºÍ³¢ÊÔ£¬²¢ÀÖÓÚ·ÖÏíºÍ¹±Ï×µ½¿ªÔ´ÉçÇø¡£

   
3777 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ