1.概述
Ceilometer是OpenStack中的一个子项目,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。Ceilometer的核心架构图如下:
图1 Ceilometer的核心架构图
图2 Ceilometer架构模型
2.安装
2.1安装服务
apt-get install ceilometer-api
ceilometer-collector ceilometer-agent-central python-ceilometerclient
2.2配置
/etc/ceilometer/ceilometer.conf
[DEFAULT]
#rabbitMQ
rabbit_host = client
rabbit_password = 12345
rabbit_hosts = client:5672
rabbit_userid = guest
[database]
connection = mysql://ceilometer:12345@client/ceilometer
[publisher_rpc]
metering_secret = ADMIN
[keystone_authtoken]
auth_host = client
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = ceilometer
admin_password = ceilometers
2.3在keystone中创建ceilometer用户和服务endpoint
keystone user-create –name=ceilometer
–pass=CEILOMETER_PASS –email=ceilometer@example.com
keystone user-role-add –user=ceilometer
–tenant=service –role=admin
keystone service-create –name=ceilometer
–type=metering –description=”Ceilometer Telemetry Service”
keystone endpoint-create
–service-id=the_service_id_above
–publicurl=http://controller:8777/
–internalurl=http://controller:8777/
–adminurl=http://controller:8777/
2.4创建ceilometer的mysql数据表
ceilometer-dbsync
2.5重启服务
service ceilometer-agent-central restart
service ceilometer-api restart
service ceilometer-collector restart
3.API
3.1 Resources资源
获取资源的信息。
GET http://HOST:8777/v2/resources
列出所有资源的定义。
GET http://HOST:8777/v2/resources/{resource_id}
获取指定的资源的详细信息。
3.2 Meters计量
获取计量信息。
GET http://HOST:8777/v2/meters
到目前为止的计量数据列表。
GET http://HOST:8777/v2/meters/{meter_id}
获取指定ID的计量信息。
POST http://HOST:8777/v2/meters/{meter_id}
更新指定ID的计量信息列表。
GET http://HOST:8777/v2/meters/{meter_id}/statistics
计算在指定的时间范围内的样本的统计信息。
3.3 Alarms告警
列表,创建,获取详细信息,更新和删除报警。
GET http://HOST:8777/v2/alarms
根据指定查询,列出了警报。
POST http://HOST:8777/v2/alarms
创建一个报警。
GET http://HOST:8777/v2/alarms/{alarm_id}
获取指定ID的报警信息。
PUT http://HOST:8777/v2/alarms/{alarm_id}
更新指定ID的报警。
PUT http://HOST:8777/v2/alarms/{alarm_id}/state
设置一个指定ID的报警状态。
GET http://HOST:8777/v2/alarms/{alarm_id}/state
获取指定ID的报警状态。
GET http://HOST:8777/v2/alarms/{alarm_id}/history
组装指定ID的报警历史记录。
4.OpenStack服务的监控
4.1Compute (Nova)
所有计量来自实例,不宿主机.
名称
| 类型
| 单位
| 资源
| Origin
| 说明
| instance
| Gauge
| instance
| inst ID
| both
| Duration of instance
| instance:
| Gauge
| instance
| inst ID
| both
| Duration of instance
(openstack types)
| memory
| Gauge
| MB
| inst ID
| notification
| Volume of RAM in MB
| cpu
| Cumulative
| ns
| inst ID
| pollster
| CPU time used
| cpu_util
| Gauge
| %
| inst ID
| pollster
| Average CPU utilisation
| vcpus
| Gauge
| vcpu
| inst ID
| notification
| Number of VCPUs
| disk.read.requests
| Cumulative
| request
| inst ID
| pollster
| Number of read requests
| disk.write.requests
| Cumulative
| request
| inst ID
| pollster
| Number of write requests
| disk.read.bytes
| Cumulative
| B
| inst ID
| pollster
| Volume of read in B
| disk.write.bytes
| Cumulative
| B
| inst ID
| pollster
| Volume of write in B
| disk.root.size
| Gauge
| GB
| inst ID
| notification
| Size of root disk in GB
| disk.ephemeral.size
| Gauge
| GB
| inst ID
| notification
| Size of ephemeral disk in GB
| network.incoming.bytes
| Cumulative
| B
| iface ID
| pollster
| number of incoming bytes on the network
for a VM interface
| network.outgoing.bytes
| Cumulative
| B
| iface ID
| pollster
| number of outgoing bytes on the network
for a VM interface
| network.incoming.packets
| Cumulative
| packet
| iface ID
| pollster
| number of incoming packets for a VM
interface
| network.outgoing.packets
| Cumulative
| packet
| iface ID
| pollster
| number of outgoing packets for a VM
interface
|
At present, most of the Nova meters will
only work with libvirt front-end hypervisors while test coverage was mostly
done based on KVM. Contributors are welcome to implement other virtualization
backends’ meters or complete the existing ones.
4.2 Network (Neutron)
名称
| 类型
| 单位
| 资源
| Origin
| 说明
| network
| Gauge
| network
| netw ID
| notification
| Duration of network
| network.create
| Delta
| network
| netw ID
| notification
| Creation requests for this network
| network.update
| Delta
| network
| netw ID
| notification
| Update requests for this network
| subnet
| Gauge
| subnet
| subnt ID
| notification
| Duration of subnet
| subnet.create
| Delta
| subnet
| subnt ID
| notification
| Creation requests for this subnet
| subnet.update
| Delta
| subnet
| subnt ID
| notification
| Update requests for this subnet
| port
| Gauge
| port
| port ID
| notification
| Duration of port
| port.create
| Delta
| port
| port ID
| notification
| Creation requests for this port
| port.update
| Delta
| port
| port ID
| notification
| Update requests for this port
| router
| Gauge
| router
| rtr ID
| notification
| Duration of router
| router.create
| Delta
| router
| rtr ID
| notification
| Creation requests for this router
| router.update
| Delta
| router
| rtr ID
| notification
| Update requests for this router
| ip.floating
| Gauge
| ip
| ip ID
| both
| Duration of floating ip
| ip.floating.create
| Delta
| ip
| ip ID
| notification
| Creation requests for this floating ip
| ip.floating.update
| Delta
| ip
| ip ID
| notification
| Update requests for this floating ip
|
4.3Image (Glance)
名称
| 类型
| 单位
| 资源
| Origin
| 说明
| image
| Gauge
| image
| image ID
| both
| Image polling -> it (still) exists
| image.size
| Gauge
| B
| image ID
| both
| Uploaded image size
| image.update
| Delta
| image
| image ID
| notification
| Number of update on the image
| image.upload
| Delta
| image
| image ID
| notification
| Number of upload of the image
| image.delete
| Delta
| image
| image ID
| notification
| Number of delete on the image
| image.download
| Delta
| B
| image ID
| notification
| Image is downloaded
| image.serve
| Delta
| B
| image ID
| notification
| Image is served out
|
4.4Volume (Cinder)
名称
| 类型
| 单位
| 资源
| Origin
| 说明
| volume
| Gauge
| volume
| vol ID
| notification
| Duration of volume
| volume.size
| Gauge
| GB
| vol ID
| notification
| Size of volume
|
4.5Object Storage (Swift)
名称
| 类型
| 单位
| 资源
| Origin
| 说明
| storage.objects
| Gauge
| object
| store ID
| pollster
| Number of objects
| storage.objects.size
| Gauge
| B
| store ID
| pollster
| Total size of stored objects
| storage.objects.containers
| Gauge
| container
| store ID
| pollster
| Number of containers
| storage.objects.incoming.bytes
| Delta
| B
| store ID
| notification
| Number of incoming bytes
| storage.objects.outgoing.bytes
| Delta
| B
| store ID
| notification
| Number of outgoing bytes
| storage.api.request
| Delta
| request
| store ID
| notification
| Number of API requests against swift
| storage.containers.objects
| Gauge
| object
| str ID/cont
| pollster
| Number of objects in container
| storage.containers.objects.size
| Gauge
| B
| str ID/cont
| pollster
| Total size of stored objects in container
|
4.6Energy (Kwapi)
名称
| 类型
| 单位
| 资源
| Origin
| 说明
| energy
| Cumulative
| kWh
| probe ID
| pollster
| Amount of energy
| power
| Gauge
| W
| probe ID
| pollster
| Power consumption
|
|