Improve the ceilometer-compute-agent to decrease the load of Nova API
ceilometer-
The basic idea to improve the ceilometer-
1. don't polling instance every polling period, instead, compute-agent use the notification info of instance have received by ceilometer notification-agent to get instances's basic info of Nova, and then use instance name to inspect in libvirt.
2. a alternative, use central-agent to listing all instance by call nova API and compute agent use the instance info (filter by instance['host']) and inspect instance's libvirt info.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- Liusheng
- Direction:
- Needs approval
- Assignee:
- Liusheng
- Definition:
- Superseded
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
- gordon chung
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Specs for improve-
we can open alternative to maybe poll ceilometer based on events -- gordc (10.07.15)
I have read the resource-
what is the nova issue. the api load or the backend query load? the changes-since call doesn't minimise the number of api requests but it does limit the amount of calculations each request makes... regarding api load, if there is too many requests on api made by ceilometer, most deployers have a read-only nova api just for ceilometer to poll and allow normal access via other api.
the problem with the proposed solution is that there are synchronisation
Hi gordon, sorry for reply late. yes, the the change-since only minmise the amount of api query result. I have discussed with others people, in common deployments, the amount of instance in a host will not be large, it's not usually more than hundreds. so I personally think the main difference in load of Nova API may not between querying 100 servers and 10 servers , but between 1 API request and 100 API requests. Because we may have hundreds hosts and deployed ceilometer-
Yes, The first solution is unreasonable as you explained. I have a proposal based on second solution and combined with the change-since approach. we can query all instances info by collector (maybe central-agent is unreasonable) and with *change-since* filter parameter, that will reduce the amount of result. The compute-agent will only collect instance info from virt layer and then push the info to collector. collector will assemble the instance info from Nova API and info from virt layer, the orphan instance info will be filtered and dropped. what do you think of this idea ?
I can write a spec about this propsal. -- liusheng(2015.7.23)