OpenStack 高性能监控工具:Monasca

安全 应用安全 OpenStack
Monasca 是一个多租户监控即服务工具,可以帮助IT团队分析日志数据并设置告警和通知。

[[378345]]

介绍

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节点。它们在同一子网中。

安装我们需要的软件包和工具

  1. apt-get install -y git 
  2. apt-get install openjdk-7-jre-headless python-pip python-dev 

安装mysql数据库如果您在openstack控制器节点中安装了monasca-api,则可以跳过安装,将已安装的msyql用于openstack服务。

  1. apt-get install -y mysql-server 

创建monasca数据库架构,在此处下载mon.sql( https://raw.githubusercontent.com/stackforge/cookbook-monasca-schema/master/files/default/mysql/mon.sql)

  1. mysql -uroot -ppassword < mon_mysql.sql 

安装Zookeeper安装Zookeeper并重新启动它。我使用本地主机接口,并且只有一个Zookeeper,因此默认配置文件不需要配置。

  1. apt-get install -y zookeeper zookeeperd zookeeper-bin 
  2. service zookeeper restart 

安装和配置kafka

  1. wget http://apache.mirrors.tds.net/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz 
  2. mv kafka_2.9.2-0.8.1.1.tgz /opt 
  3. cd /opt 
  4. tar zxf kafka_2.9.2-0.8.1.1.tgz 
  5. ln -s /opt/kafka_2.9.2-0.8.1.1/ /opt/kafka 
  6. ln -s /opt/kafka/config /etc/kafka 

创建kafka系统用户,kafka服务将以该用户身份启动。

  1. useradd kafka -U -r 

在/etc/init/kafka.conf中创建kafka启动脚本,将以下内容复制 到/etc/init/kafka.conf中并保存。

  1. description "Kafka" 
  2.  
  3. start on runlevel [2345] 
  4. stop on runlevel [!2345] 
  5.   
  6. respawn 
  7.  
  8. limit nofile 32768 32768 
  9.  
  10. # If zookeeper is running on this box also give it time to start up properly 
  11. pre-start script 
  12.   if [ -e /etc/init.d/zookeeper ]; then 
  13.       /etc/init.d/zookeeper restart 
  14.   fi 
  15. end script 
  16.  
  17. # Rather than using setuid/setgid sudo is used because the pre-start task must run as root 
  18. exec sudo -Hu kafka -g kafka KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" JMX_PORT=9997 /opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties 

配置kafka,vim /etc/kafka/server.properties,确保配置了以下内容:

  1. host.name=localhost 
  2. advertised.host.name=localhost 
  3. log.dirs=/var/kafka 

创建 kafka log目录

  1. mkdir /var/kafka 
  2. mkdir /var/log/kafka 
  3. chown -R kafka. /var/kafka/ 
  4. chown -R kafka. /var/log/kafka/ 

启动kafka服务

  1. service kafka start 

下一步就是创建 kafka topics

  1. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 64 --topic metrics 
  2. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic events 
  3. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic raw-events 
  4. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transformed-events 
  5. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-definitions 
  6. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transform-definitions 
  7. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-state-transitions 
  8. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-notifications 
  9. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-notifications 
  10. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic retry-notifications 

安装和配置 influxdb

  1. curl -sL https://repos.influxdata.com/influxdb.key | apt-key add - 
  2. echo "deb https://repos.influxdata.com/ubuntu trusty stable" > /etc/apt/sources.list.d/influxdb.list 
  3. apt-get update 
  4. apt-get install -y apt-transport-https 
  5. apt-get install -y influxdb 
  6.  
  7. service influxdb start 

创建 influxdb database, user, password, retention policy, 同时修改密码。

  1. influx 
  2. CREATE DATABASE mon 
  3. CREATE USER monasca WITH PASSWORD 'tyun' 
  4. CREATE RETENTION POLICY persister_all ON mon DURATION 90d REPLICATION 1 DEFAULT 
  5. exit 

安装与配置 storm

  1. wget http://apache.mirrors.tds.net/storm/apache-storm-0.9.6/apache-storm-0.9.6.tar.gz 
  2. mkdir /opt/storm 
  3. cp apache-storm-0.9.6.tar.gz /opt/storm/ 
  4. cd /opt/storm/ 
  5. tar xzf apache-storm-0.9.6.tar.gz 
  6. ln -s /opt/storm/apache-storm-0.9.6 /opt/storm/current 
  7.  
  8. useradd storm -U -r 
  9. mkdir /var/storm 
  10. mkdir /var/log/storm 
  11. chown -R storm. /var/storm/ 
  12. chown -R storm. /var/log/storm/ 

修改storm.yaml, vim current/storm/conf/storm.yaml

  1. ### base 
  2. java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib" 
  3. storm.local.dir: "/var/storm" 
  4.  
  5. ### zookeeper.* 
  6. storm.zookeeper.servers: 
  7.   - "localhost" 
  8. storm.zookeeper.port: 2181 
  9. storm.zookeeper.retry.interval: 5000 
  10. storm.zookeeper.retry.times: 29 
  11. storm.zookeeper.root: "/storm" 
  12. storm.zookeeper.session.timeout: 30000 
  13.  
  14. ### supervisor.* configs are for node supervisors 
  15. supervisor.slots.ports: 
  16.   - 6701 
  17.   - 6702 
  18.   - 6703 
  19.   - 6704 
  20. supervisor.childopts: "-Xmx1024m" 
  21.  
  22. ### worker.* configs are for task workers 
  23. worker.childopts: "-Xmx1280m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote" 
  24.  
  25. ### nimbus.* configs are for the masteri 
  26. nimbus.host: "localhost" 
  27. nimbus.thrift.port: 6627 
  28. mbus.childopts: "-Xmx1024m" 
  29.  
  30. ### ui.* configs are for the master 
  31. ui.host: 127.0.0.1 
  32. ui.port: 8078 
  33. ui.childopts: "-Xmx768m" 
  34.  
  35. ### drpc.* configs 
  36.  
  37. ### transactional.* configs 
  38. transactional.zookeeper.servers: 
  39.   - "localhost" 
  40. transactional.zookeeper.port: 2181 
  41. transactional.zookeeper.root: "/storm-transactional" 
  42.  
  43. ### topology.* configs are for specific executing storms 
  44. topology.acker.executors: 1 
  45. topology.debug: false 
  46.  
  47. logviewer.port: 8077 
  48. logviewer.childopts: "-Xmx128m" 

创建storm supervisor 启动脚本,vim /etc/init/storm-supervisor.conf

  1. # Startup script for Storm Supervisor 
  2.  
  3. description "Storm Supervisor daemon" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. kill timeout 240 
  10. respawn limit 25 5 
  11.  
  12. setgid storm 
  13. setuid storm 
  14. chdir /opt/storm/current 
  15. exec /opt/storm/current/bin/storm supervisor 

创建Storm nimbus 启动脚本。vim /etc/init/storm-nimbus.conf

  1. # Startup script for Storm Nimbus 
  2.  
  3. description "Storm Nimbus daemon" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. kill timeout 240 
  10. respawn limit 25 5 
  11.  
  12. setgid storm 
  13. setuid storm 
  14. chdir /opt/storm/current 
  15. exec /opt/storm/current/bin/storm nimbus 

启动supervisor 与 nimbus

  1. service storm-supervisor start 
  2. service storm-nimbus start 

安装monasca api python软件包

一些monasca组件同时提供python和java代码,主要是我选择python代码进行部署。

  1. pip install monasca-common 
  2. pip install gunicorn 
  3. pip install greenlet  # Required for both 
  4. pip install eventlet  # For eventlet workers 
  5. pip install gevent    # For gevent workers 
  6. pip install monasca-api 
  7. pip install influxdb 

vim /etc/monasca/api-config.ini,将主机修改为您的IP地址

  1. [DEFAULT
  2. name = monasca_api 
  3.    
  4. [pipeline:main] 
  5. Add validator in the pipeline so the metrics messages can be validated. 
  6. pipeline = auth keystonecontext api 
  7.    
  8. [app:api] 
  9. paste.app_factory = monasca_api.api.server:launch 
  10.    
  11. [filter:auth] 
  12. paste.filter_factory = keystonemiddleware.auth_token:filter_factory 
  13.    
  14. [filter:keystonecontext] 
  15. paste.filter_factory = monasca_api.middleware.keystone_context_filter:filter_factory 
  16.    
  17. [server:main] 
  18. use = egg:gunicorn#main 
  19. host = 192.168.2.23 
  20. port = 8082 
  21. workers = 1 
  22. proc_name = monasca_api 

vim /etc/monasca/api-config.conf,修改以下内容

  1. [DEFAULT
  2. # logging, make sure that the user under whom the server runs has permission 
  3. to write to the directory. 
  4. log_file = monasca-api.log 
  5. log_dir = /var/log/monasca/api/ 
  6. debug=False 
  7. region = RegionOne 
  8. [security] 
  9. # The roles that are allowed full access to the API. 
  10. default_authorized_roles = admin, user, domainuser, domainadmin, monasca-user 
  11.  
  12. # The roles that are allowed to only POST metrics to the API. This role would be used by the Monasca Agent. 
  13. agent_authorized_roles = admin 
  14.  
  15. # The roles that are allowed to only GET metrics from the API. 
  16. read_only_authorized_roles = admin 
  17.  
  18. # The roles that are allowed to access the API on behalf of another tenant. 
  19. For example, a service can POST metrics to another tenant if they are a member of the "delegate" role. 
  20. delegate_authorized_roles = admin 
  21.  
  22. [kafka] 
  23. # The endpoint to the kafka server 
  24. uri = localhost:9092 
  25.  
  26. [influxdb] 
  27. Only needed if Influxdb database is used for backend. 
  28. # The IP address of the InfluxDB service. 
  29. ip_address = localhost 
  30.  
  31. # The port number that the InfluxDB service is listening on
  32. port = 8086 
  33.  
  34. # The username to authenticate with
  35. user = monasca 
  36.  
  37. # The password to authenticate with
  38. password = tyun 
  39.  
  40. # The name of the InfluxDB database to use. 
  41. database_name = mon 
  42.  
  43. [database
  44. url = "mysql+pymysql://monasca:tyun@127.0.0.1/mon" 
  45.  
  46.  
  47. [keystone_authtoken] 
  48. identity_uri = http://192.168.1.11:35357 
  49. auth_uri = http://192.168.1.11:5000 
  50. admin_password = tyun 
  51. admin_user = monasca 
  52. admin_tenant_name = service 
  53. cafile = 
  54. certfile = 
  55. keyfile = 
  56. insecure = false 

注释掉[mysql]部分,其他部分保持默认。

创建monasca系统用户并进入目录

  1. useradd monasca -U -r 
  2. mkdir /var/log/monasca 
  3. mkdir /var/log/monasca/api 
  4. chown -R monasca. /var/log/monasca/ 

在openstack控制器节点上,创建monasca用户密码,为租户服务中的用户monasca分配管理员角色。

  1. openstack user create --domain default --password tyun monasca  
  2. openstack role add --project service --user monasca admin 
  3.  
  4. openstack service create --name monasca --description "Monasca monitoring service" monitoring 
  5.  
  6. create endpoint  
  7. openstack endpoint create --region RegionOne monasca public http://192.168.1.143:8082/v2.0 
  8. openstack endpoint create --region RegionOne monasca internal http://192.168.1.143:8082/v2.0 
  9. openstack endpoint create --region RegionOne monasca admin http://192.168.1.143:8082/v2.0 

192.168.1.143是我的api虚拟机地址的浮动IP,请将其更改为您的IP。

创建monasca api启动脚本,vim /etc/init/monasca-api.conf

  1. # Startup script for the Monasca API 
  2.  
  3. description "Monasca API Python app" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. setgid monasca 
  10. setuid monasca 
  11. exec /usr/local/bin/gunicorn -n monasca-api -k eventlet --worker-connections=2000 --backlog=1000 --paste /etc/monasca/api-config.ini 

安装monasca-persister

创建monasca-persister启动脚本

vim /etc/init/monasca-persister.conf

  1. # Startup script for the Monasca Persister 
  2.  
  3. description "Monasca Persister Python app" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. setgid monasca 
  10. setuid monasca 
  11. exec /usr/bin/java -Dfile.encoding=UTF-8 -cp /opt/monasca/monasca-persister.jar monasca.persister.PersisterApplication server /etc/monasca/persister-config.yml 

启动monasca-persister

  1. service monasca-persister start 

安装monasca-notificatoin

  1. pip install --upgrade monasca-notification 
  2. apt-get install sendmail 

将notification.yaml复制到/etc/monasca/创建启动脚本,vim /etc/init/monasca-notification.conf

  1. # Startup script for the monasca_notification 
  2.  
  3. description "Monasca Notification daemon" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. setgid monasca 
  10. setuid monasca 
  11. exec /usr/bin/python /usr/local/bin/monasca-notification 

启动通知服务

  1. service monasca-notification start 

安装monasca-thresh复制monasca-thresh到/etc/init.d/复制monasca-thresh.jar到/opt/monasca-thresh/复制thresh-config.yml到/etc/monasca /并修改主机以及数据库信息启动monasca-thresh

  1. service monasca-thresh start 

安装monasca-agent

在openstack控制器节点上安装monasca-agent,以便它可以监控openstack服务进程。

  1. sudo pip install --upgrade monasca-agent 

设置monasca-agent,将用户域ID和项目域ID更改为默认值。

  1. monasca-setup -u monasca -p tyun --user_domain_id e25e0413a70c41449d2ccc2578deb1e4 --project_domain_id e25e0413a70c41449d2ccc2578deb1e4 --user monasca \ 
  2.  --project_name service -s monitoring --keystone_url http://192.168.1.11:35357/v3 --monasca_url http://192.168.1.143:8082/v2.0 --config_dir /etc/monasca/agent --log_dir /var/log/monasca/agent --overwrite 

加载认证脚本admin-rc.sh,然后运行monasca metric-list。

DevStack安装

运行Monasca DevStack至少需要一台具有10GB RAM的主机。

可在此处找到安装和运行Devstack的说明:

  1. https://docs.openstack.org/devstack/latest/ 

要在DevStack中运行Monasca,请执行以下三个步骤。

克隆DevStack代码库。

  1. git clone https://git.openstack.org/openstack-dev/devstack 

将以下内容添加到devstack目录根目录中的DevStack local.conf文件中。如果local.conf不存在,则可能需要创建它。

  1. BEGIN DEVSTACK LOCAL.CONF CONTENTS 
  2.  
  3. [[local|localrc]] 
  4. DATABASE_PASSWORD=secretdatabase 
  5. RABBIT_PASSWORD=secretrabbit 
  6. ADMIN_PASSWORD=secretadmin 
  7. SERVICE_PASSWORD=secretservice 
  8. SERVICE_TOKEN=111222333444 
  9.  
  10. LOGFILE=$DEST/logs/stack.sh.log 
  11. LOGDIR=$DEST/logs 
  12. LOG_COLOR=False 
  13.  
  14. # The following two variables allow switching between Java and Python for the implementations 
  15. of the Monasca API and the Monasca Persister. If these variables are not setthen the 
  16. default is to install the Python implementations of both the Monasca API and the Monasca Persister. 
  17.  
  18. # Uncomment one of the following two lines to choose Java or Python for the Monasca API. 
  19. MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} 
  20. # MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} 
  21.  
  22. # Uncomment of the following two lines to choose Java or Python for the Monasca Pesister. 
  23. MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} 
  24. # MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} 
  25.  
  26. # Uncomment one of the following two lines to choose either InfluxDB or Vertica. 
  27. default "influxdb" is selected as metric DB 
  28. MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb} 
  29. # MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica} 
  30.  
  31. # This line will enable all of Monasca. 
  32. enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api 
  33.  
  34. END DEVSTACK LOCAL.CONF CONTENTS 

从devstack目录的根目录运行“ ./stack.sh”。

如果要使用最少的OpenStack组件运行Monasca,可以将以下两行添加到local.conf文件中。

  1. disable_all_services 
  2. enable_service rabbit mysql key 

如果您还希望安装Tempest测试,请添加 tempest

  1. enable_service rabbit mysql key tempest 

要启用Horizon和Monasca UI,请添加 horizon

  1. enable_service rabbit mysql key horizon tempest 

使用Vagrant

Vagrant可用于使用Vagrantfile部署运行有Devstack和Monasca的VM。安装Vagrant后,只需在../monasca-api/devstack目录中运行vagrant up命令。

要在devstack安装中使用本地代码库,请将更改提交到本地存储库的master分支,然后在配置文件中修改与要使用的本地存储库相对应的变量file://my/local/repo/location。要使用monasca-api repo的本地实例,请将更改enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api为enable_plugin monasca-api file://my/repo/is/here。这两个设置仅在重建devstack VM时生效。

1.使用Vagrant将Vertica启用为Metrics DB

Monasca支持同时使用InfluxDB和Vertica来存储指标和告警状态历史记录。默认情况下,在DevStack环境中启用InfluxDB。

Vertica是Hewlett Packard Enterprise的商业数据库。可以下载免费的Community Edition(CE)安装程序,要启用Vertica,请执行以下操作:

  • 注册并下载Vertica Debian安装程序https://my.vertica.com/download/vertica/community-edition/,并将其放在您的主目录中。不幸的是,DevStack安装程序没有可以自动使用的URL,因此必须单独下载该URL,并将其放置在安装程序运行时可以找到它的位置。安装程序假定此位置是您的主目录。使用Vagrant时,您的主目录通常将以“ /vagrant_home”挂载在VM内。
  • 修改local.conf中MONASCA_METRICS_DB变量,配置Vertica的支持,如下所示:

MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica}

2.使用PostgreSQL或MySQL

Monasca支持使用PostgreSQL和MySQL,因此该devstack插件也支持。启用postgresql或mysql。

要使用MySQL设置环境,请使用:

  1. enable_service mysql 

另外,对于PostgreSQL,请使用:

  1. enable_service postgresql 

3.使用ORM支持

ORM支持可以通过MONASCA_DATABASE_USE_ORM变量来控制。但是,如果启用了PostgreSQL(也称为数据库后端),则将强制提供ORM支持

enable_service postgresql

4.加强Apache镜像

如果由于某种原因APACHE_MIRROR而无法使用,则可以通过以下方式强制执行:

  1. APACHE_MIRROR=http://www-us.apache.org/dist/ 

5.使用WSGI

Monasca-api可以使用uwsgi和gunicorn与Apache一起部署。默认情况下,monasca-api在uwsgi下运行。如果您想使用Gunicorn,请确保其中devstack/local.conf包含:

  1. MONASCA_API_USE_MOD_WSGI=False 

使用

Monasca Dashboard

安装完成Monasca Dashboard Plugin后,可以通过web控制台进行查看以及管理相应的监控与告警。

在操作控制台的“Monitoring”栏,单击“Launch Monitoring Dashboard“,这将打开在管理节点上运行的专用OpenStack Horizon门户。

在该面板中,您可以:

  • 单击OpenStack服务名称,以查看服务告警。
  • 单击服务器名称以查看相关设备的告警。

监控信息存储在两个数据库中(Vertica/influxdb与mysql)。备份监控数据时,将同时备份两个数据库。看到

  • 监控指标在Vertica中存储7天。
  • 配置设置存储在MySQL中。
  • 如果监控节点上的服务在高负载(例如15个控制网络和200个计算节点)下停止,则消息队列将在大约6个小时内开始清除。

 

查看监控信息

在操作控制台中,通过从主菜单中选择Monitoring Dashboard来打开监控UI 。

单击Launch Monitoring Dashboard。

将打开管理设备上OpenStack Horizon中的“Monitoring”仪表板。

使用您在首次安装过程中为操作控制台设置的用户名和密码登录。

查看告警。您可以在屏幕上过滤结果。

  • 点击告警左侧导航看到报警的所有服务和设备。
  • 在每行右侧的“操作”菜单上,可以单击“Graph metrics”以查看告警明细,并且可以显示告警的历史记录和告警定义。您还可以在该告警的图形顶部看到指标名称。
  • 点击OpenStack服务名称以查看服务告警。
  • 单击服务器名称以查看有关设备的告警。

单击左侧导航中的”Alarm Definitions “以查看和编辑已启用的告警的类型。

注意:请勿更改或删除任何默认告警定义。但是,您可以添加新的告警定义。

您可以更改告警的名称,表达式和其他详细信息。

如果收到过多或不足的告警,则可能需要提高或降低告警阈值。

有关编写告警表达式的信息。

可选:单击Dashboard。

OpenStack仪表板(Grafana)打开。从该仪表板中,您可以看到OpenStack服务的运行状况以及每个节点的CPU和数据库使用情况的图形表示。

  • 单击图形标题(例如,CPU),然后单击“编辑”。
  • 更改功能以查看图中的其他类型的信息。

可选:单击Monasca Health。

将打开“ Monasca服务仪表板”。在此仪表板上,您可以看到Monasca服务运行状况的图形表示。

总结

Monasca作为Openstack的monitoring-as-a-service组件,目前社区和网上的资料还是比较少。本文通过作者的实践,记录了Monasca相关的安装和配置以及使用的方法,

Monasca是一个可以实现IAAS到PAAS的高扩展,高性能的监控系统,其体系架构决定了它能够轻松驾驭大集群,高负载的监控。当前我们已经逐步摈弃了ceilometer+gnocchi+aodh的组合,全面转向Monasca。当前监控的不仅仅是云主机,云网络,同时也监控着我们Openstack集群内部的Kubernetns集群,数据库集群,对象存储等PAAS软件。

参考文章:

https://docs.openstack.org/monasca-api/latest/

https://wiki.openstack.org/wiki/Monasca

 

责任编辑:武晓燕 来源: 新钛云服
相关推荐

2024-09-06 07:55:42

2011-04-07 13:53:25

Web工具

2009-12-23 10:29:01

WPF应用程序

2023-11-01 11:40:46

Linux高性能网络编程工具

2009-03-31 16:41:38

网络性能网络监控开源

2023-12-01 07:06:14

Go命令行性能

2019-11-01 08:49:07

JVM监控性能

2019-08-01 09:52:46

LinuxNetData性能监控工具

2020-05-06 07:26:55

容器性能监控云计算

2019-06-18 10:24:23

开源技术 趋势

2017-06-01 13:21:23

OpenStack云平台监控

2019-03-01 11:03:22

Lustre高性能计算

2020-07-16 08:06:53

网关高性能

2022-03-21 14:13:22

Go语言编程

2017-07-07 16:36:28

BIOIO模型 NIO

2023-04-26 00:01:04

2014-12-19 10:55:17

Linux性能监控

2019-07-31 11:30:25

MySQL数据库工具

2013-03-27 10:01:53

网络应用检测工具

2016-05-06 10:14:52

网络优化网络监控监控工具
点赞
收藏

51CTO技术栈公众号