OpenStack Pike版本Ceilometer报错及自动扩缩容指标获取问题求助
针对OpenStack Pike环境下Ceilometer/Aodh告警与Gnocchi指标问题的解决方法
让我结合你使用的OpenStack Pike、Ceilometer 2.9.0和Keystone v3环境,一步步拆解和解决这些问题——本质上这些问题都是Pike版本中Ceilometer向Gnocchi迁移计量存储后的配置、权限及服务适配问题。
先理清三个命令的差异原因
ceilometer meter-list返回404:Pike版本已经完成了Ceilometer计量数据向Gnocchi的迁移,旧的Ceilometer v2 API默认已被禁用,直接调用旧命令找不到对应的端点是正常现象。gnocchi metric list返回401:这是权限认证问题,要么你的用户没有Gnocchi的操作权限,要么环境变量里的Keystone v3认证参数(比如域、项目信息)没配置正确,导致Gnocchi客户端无法通过Keystone校验。openstack metric list正常:OpenStack CLI已经原生适配了Gnocchi的API,且你的认证上下文(环境变量或clouds.yaml)配置正确,能通过Keystone v3拿到合法的访问权限。
核心问题:自动扩缩容YAML中OS:Ceilometer::Alarm无法获取指标的解决
Pike版本中,Ceilometer的告警服务已经独立为Aodh,且告警必须基于Gnocchi的指标创建,旧的OS:Ceilometer::Alarm类型已经过时,需要调整配置并适配新的告警类型:
1. 确保Ceilometer和Aodh正确指向Gnocchi后端
编辑配置文件并重启相关服务:
- Ceilometer配置(
/etc/ceilometer/ceilometer.conf):[dispatcher_gnocchi] dispatcher_gnocchi = True url = http://<gnocchi-host>:8041 auth_url = http://<keystone-host>:5000/v3 project_name = service username = ceilometer password = <你的ceilometer服务密码> user_domain_name = Default project_domain_name = Default - Aodh配置(
/etc/aodh/aodh.conf):[service_credentials] auth_url = http://<keystone-host>:5000/v3 project_name = service username = aodh password = <你的aodh服务密码> user_domain_name = Default project_domain_name = Default [gnocchi] url = http://<gnocchi-host>:8041 - 重启服务:
systemctl restart ceilometer-agent-central ceilometer-agent-notification aodh-api aodh-evaluator aodh-notifier aodh-listener
2. 替换自动扩缩容YAML中的告警类型
把过时的OS:Ceilometer::Alarm替换为Aodh针对Gnocchi的告警类型,以下是两种常见场景的示例:
场景1:基于单个Gnocchi指标的告警
resources: cpu_scale_alarm: type: OS:Aodh::Alarm::Gnocchi::AggregationByMetrics properties: metric: metric_name: cpu_util resource_id: <你的实例ID> aggregation_method: mean granularity: 60 evaluation_periods: 3 threshold: 80 alarm_actions: ['http://<你的自动扩缩容服务地址>/scale-up'] ok_actions: ['http://<你的自动扩缩容服务地址>/scale-down'] auth_url: http://<keystone-host>:5000/v3 project_id: <你的项目ID> domain_id: default
场景2:基于一组资源的聚合指标告警(比如同一个栈下的所有实例)
resources: stack_cpu_scale_alarm: type: OS:Aodh::Alarm::Gnocchi::AggregationByResources properties: resource_type: instance query: {'=': {'metadata.stack': '<你的栈名称>'}} metric: cpu_util aggregation_method: mean granularity: 60 evaluation_periods: 3 threshold: 80 alarm_actions: ['http://<你的自动扩缩容服务地址>/scale-up'] ok_actions: ['http://<你的自动扩缩容服务地址>/scale-down']
3. 辅助解决gnocchi metric list的401问题(用于排查验证)
- 配置正确的Keystone v3环境变量:
export OS_AUTH_URL=http://<keystone-host>:5000/v3 export OS_PROJECT_NAME=<你的项目名> export OS_USERNAME=<你的用户名> export OS_PASSWORD=<你的密码> export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_IDENTITY_API_VERSION=3 - 给用户添加Gnocchi的访问角色:
openstack role add --user <你的用户名> --project <你的项目名> metric_reader
临时规避方案(不推荐长期使用)
如果暂时无法修改告警类型,可尝试重新启用Ceilometer v2 API并保留旧存储后端,但这不符合Pike版本的演进方向,后续会被彻底淘汰:
- 在Ceilometer配置中启用
dispatcher_file或配置MongoDB作为后端 - 确保Ceilometer的v2 API服务(
ceilometer-api)处于运行状态 - 在告警配置中明确指定使用Ceilometer v2 API的端点
内容的提问来源于stack exchange,提问作者scorp
相关产品推荐
相关产品推荐

