由于关于Monasca的中文介绍并不多,本系列文章主要介绍Monsca组件在openstack的工作流程与原理:
Openstack+Monasca简介(1)
一个具有高性能,可扩展,高可用的监控即服务的(MONaas)解决方案。
使用Rest API接口来存储、查询性能和历史数据,不同与其他监控工具使用特殊的协议和传输方法,如nagios的NSCA,Monasca只利用了http。
多租户认证,指标的提交和认证使用Keystone组件。存储关联租户ID
指标使用(key,value)的键值来定义,称作量度(dimensions)
对系统指标进行实时阈值和告警
复合告警设置使用简单的语法,由子告警表达式和逻辑操作器组成
监控代理支持内置的系统和服务的检查结果,同时也只nagios的checks和statsd
根据开源技术搭建的开源监控方案
monasca-agent:监控代理,python编写,包含了多个子组件,支持各种cpu使用率、可用内存、nagios插件、statsd、以及许多服务如mysql、rabbitMQ等监控
monasca-api: 一个用于监控的RESTful API接口,针对在以下概念和区域:
指标:对于实时的大量指标的存储和查询
统计:查询指标的统计数据
告警定义:告警定义的增删查改
告警: 查询和删除告警历史
通知方式: 创建和删除通知方式,当告警状态改变时可以只接邮件通知用户
-monasca API可以通过python或JAVA来实现manasca-persister:消息队列传送指标或告警的消费者(RPC传输中的概念consumer),并将指标和告警存入对应的数据库
monasca-transform:一个转换聚合引擎,转换指标的名字和值,生成新的指标传递给消息队列,目前不可用
Anomaly and Prediction Engine:目前还是原型阶段
monasca-thresh:对指标进行计算,当超过阈值是发布告警给消息队列,基于Apache storm项目(开源实时分布式计算系统)
monasca-notification:接受从消息队列传来的告警,并发送通知,如发送告警邮件,Notification Engine基于Python
monasca-analytics:分析引擎,接受从消息队列传来的告警,进行异常检测和告警关联,不知道为什么架构图中没有。。
消息队列:以前是支持RabbitMQ的,由于性能、规模、持续性和高可用的限制,转向了Kafka。
Metrics and Alarms Database:支持Vertica和infuxDB,对Cassandra的支持正在进行中
Config Database:配置信息数据库,目前使用Mysql,对PostgreSQL的支持正在进程中
python-monascaclient:python实现的命令行客户端,对monasca API进行操控
Monitoring UI:Horizon dashboard的可视化
Ceilometer publisher:提供给Ceilometer的multi-publisher插件,图中没有显示,用来转化和发布样本给monasca API。**这块等研究完ceilometer+monasca再来补充
除了第三方的组件,如storm这种,其他大部分组件都可以去各自源中去查看描述。
Monasca/Message Schema
基于kafka
在Monasca中各种消息通过messageQ发送或接收,具体查阅上面的消息模板
目前支持Vertica和influxDB
在Vertica中用到的表如以下:
MonMetrics.Measurements: Stores the actual measurements that are sent.
MonMetrics.DefinitionDimensions
MonMetrics.Definitions
MonMetric.Dimensions
目前使用Mysql存储Monasca的配置信息
其中使用的SQL表:
alarm
alarm_action
notification_method
sub_alarm
sub_alarm_dimension
发于:blog.bobozhu.cn
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。