OpenStack Telemetry (aka Ceilometer) gives you access to a wealth of information – and a particularly interesting stat I wanted access to was outgoing bandwidth of my Neutron networks. Out of the box, Ceilometer gives you a rolled up cumulative stat for this with the following:
ceilometer sample-list --meter network.outgoing.bytes
This produces output like the following
This is fine, but when you’re trying to break down the network stats for something useful like billing since beginning of month, this makes it tricky – even though I’m sure I shouldn’t have to do this! I followed this excellent post
http://cjchand.wordpress.com/2014/01/16/transforming-cumulative-ceilometer-stats-to-gauges/ which describes this use-case brilliantly (and goes further with Logstash and Elastic Search) – where you can use Ceilometer’s Pipeline to transform data into a format that suits your use case. The key pieces of information from this article was as follows:
1. Edit the /etc/ceilometer/pipeline.yaml of your Controller and Compute hosts and add in the following lines
- name: network_stats interval: 10 meters: - "network.incoming.bytes" - "network.outgoing.bytes" transformers: - name: "rate_of_change" parameters: target: type: "gauge" scale: "1" publishers: - rpc://
2. Restart the ceilometer-agent-compute on each host
restart ceilometer-agent-compute
That’s it. We now have a “gauge” for our incoming and outgoing neutron
I wanted to see if I could answer the question with this data: how much outgoing bandwidth was used for any given network over a period of time (i.e since the start of the month).
It could be I misunderstand the cumulative stats (which tease me), but this was a useful exercise nonetheless! Now here is my ask of you – my bash fu below can be improved somewhat and would love to see it! My limited knowledge of Ceilometer, plus the lure of Bash, awk and sed, provided me with a script that outputs the following:
The (OMFG WTF has Kev wrote now) script, link below, loops through each of your Neutron networks, and outputs the number of outgoing bytes per Neutron network. Just make sure you’ve got ‘bc’ installed to calculate the floating numbers. If I’ve used and abused Ceilometer and awk too much, let me know!
–tap
giving result like that :
instance-00001535-6b1bd401-4bb8-404b-9bae-0a3da79c068b-tap844d2678-83
where :
instance-00001535 is instance_name
6b1bd401-4bb8-404b-9bae-0a3da79c068b is instance_id
844d2678-83 is 11_first_char_of_interface_id
Do you know what to change to have an resource_id that is only the interface_id and not this crappy string chain ...
原文链接:
https://openstackr.wordpress.com/2014/05/23/bandwidth-monitoring-with-neutron-and-ceilometer/