新钛云服已为您服务950天
介绍
Monasca 是一个多租户监控即服务工具,可以帮助IT团队分析日志数据并设置告警和通知。
OpenStack环境中的监控需求是巨大,多样且高度复杂的。Monasca的项目任务是提供一种多租户,高度可扩展,高性能和容错的监控即服务解决方案。
Monasca为高级监控提供了可扩展的平台,运营商和租户均可使用该平台来获取有关其基础架构和应用的运行状态。
Monasca使用REST API进行高速的日志处理和查询。它集成了流告警引擎,通知引擎和聚合引擎。
您可以使用Monasca实现的用例非常多样。Monasca遵循微服务架构,其中几个服务分布在多个存储库中。每个模块旨在为整个监控解决方案提供离散服务,并且可以根据运营商/客户的需求进行部署。
使用Rest API接口来存储、查询性能和历史数据,不同于其他监控工具使用特殊的协议和传输方法,如nagios的NSCA,Monasca只利用了http
多租户认证,指标的提交和认证使用Keystone组件。存储关联租户ID
指标使用(key,value)的键值来定义,称作量度(dimensions)
对系统指标进行实时阈值和告警
复合告警设置使用简单的语法,由子告警表达式和逻辑操作器组成
监控代理支持内置的系统和服务的检查结果,同时也只nagios的checks和statsd
根据开源技术搭建的开源监控方案
架构
下图概述了Monasca的指标管道以及所涉及组件的交互。
核心组件
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插件
除了直接向API发送请求之外,还可以使用以下工具与Monasca进行交互:
Monasca client:CLI和Python客户端
Horizon plugin:该插件将监控面板添加到Horizon
Grafana app:Grafana插件可查看和配置告警定义,告警和通知
Libraries:
monasca-common:Monasca组件中使用的通用代码
monasca-statsd:StatsD兼容的库,用于从已检测的应用程序发送指标
Grafana集成:
monasca-grafana-datasource:用于Grafana的多租户Monasca数据源
grafana:Grafana 4.1.2的分支版本,添加了Keystone身份验证
第三方技术与工具
Monasca使用多种第三方技术:
内部处理和中间件
-
Apache Kafka(http://kafka.apache.org):是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等
Apache Storm(http://storm.incubator.apache.org/):Apache Storm是一个免费的开源分布式实时计算系统。通过Storm,可以轻松可靠地处理无限数据流,从而可以进行实时处理,而Hadoop可以进行批处理
ZooKeeper(http://zookeeper.apache.org/):由Kafka和Storm使用
Apache Spark:由Monasca Transform用作聚合引擎
配置数据库:
-
MySQL:支持将MySQL作为配置数据库
PostgreSQL:通过Hibernate和SQLAlchemy支持Config数据库的POSTgres
Vagrant(http://www.vagrantup.com/):Vagrant提供了易于配置,可重复的便携式工作环境,该环境建立在行业标准技术之上,并由一个一致的工作流程控制,可帮助您最大程度地提高生产力和灵活性
Dropwizard(https://dropwizard.github.io/dropwizard/):Dropwizard将Java生态系统中稳定,成熟的库汇集到一个简单,轻巧的程序包中,使您可以专注于完成自身的工作任务中。Dropwizard对复杂的配置,应用程序指标,日志记录,操作工具等提供了开箱即用的支持,使您和您的团队可以在最短的时间内发布高质量的Web服务
时间序列数据库:
-
InfluxDB(http://influxdb.com/):一个没有外部依赖性的开源分布式时间序列数据库。Metrics数据库支持InfluxDB
Vertica(http://www.vertica.com):具有高度可扩展性的商业企业级SQL分析数据库。它提供了内置的自动高可用性功能,并且擅长数据库内分析以及压缩和存储大量数据。提供了Vertica的免费社区版本,该版本可以存储最大1 TB的数据,没有时间限制,网址为https://my.vertica.com/community/。虽然不再经常用Vertrica,但Metrics数据库支持它
Cassandra(https://cassandra.apache.org):Mestrics数据库支持Cassandra
安装
手工安装
monasca的所有组件都可以安装在一个节点上,例如openstack控制器节点上,也可以将其部署在多节点上。本文中,将在我的openstack集群中创建的新VM中安装monasca-api,该VM具有关联的浮动ip。Monasca-agent已安装在控制器节点上。代理节点通过浮动ip将指标发布到api节点。它们在同一子网中。
安装我们需要的软件包和工具
apt-get install -y git apt-get install openjdk-7-jre-headless python-pip python-dev
安装mysql数据库如果您在openstack控制器节点中安装了monasca-api,则可以跳过安装,将已安装的msyql用于openstack服务。
apt-get install -y mysql-server
创建monasca数据库架构,在此处下载mon.sql( https://raw.githubusercontent.com/stackforge/cookbook-monasca-schema/master/files/default/mysql/mon.sql)
mysql -uroot -ppassword < mon_mysql.sql
安装Zookeeper安装Zookeeper并重新启动它。我使用本地主机接口,并且只有一个Zookeeper,因此默认配置文件不需要配置。
apt-get install -y zookeeper zookeeperd zookeeper-bin
service zookeeper restart
安装和配置kafka
<