Monasca/Monasca 监控
< Monasca
目录
目标和交付成果
- 默认告警严重程度和描述
- 为构成 Monasca 安装的所有部分(服务、应用程序、操作系统)提供开箱即用的通用监控指标和告警。
- 一个用于 Monasca 特定组件的仪表盘,用于监控其健康状况。
- 每个组件都应具有指标,以便为阈值、调试和容量规划提供有用的服务视图
- 能够显示 Monasca 细节的 CLI 工具,以补充 UI
- monasca-collector info
- monasca-forwarder info
- 指标
- 为所有核心服务预配置告警定义,并具有合理的通用阈值
- 易于查看服务是否启动或停止
- 状态、容量、吞吐量和延迟,开箱即用具有合理的默认值
- 指标的标准约定,并保留一些名称 monasca-agent
存在例外情况,例如 MySQL 等共享组件,其他 OpenStack 组件可能会影响性能或可用性。共享数据库将通泛地标记,而不会具体标识为 Monasca 组件。
用户故事
- 作为最终用户,在安装 Monasca 后我首先想看到的是一个显示 Monasca 安装状态、容量和延迟的仪表盘。
- 作为最终用户,无论是单独部署 Monasca,通过 CI、Vagrant 还是使用安装程序,我都希望有一个初始仪表盘显示 Monasca 的状态。
- 作为操作员,我希望对 Monasca 服务的健康状况有一个简单而简洁的视图。
- 作为操作员或提供商,我希望为所有 Monasca 组件提供指标,这些指标将描述每个组件的状态、容量和延迟。
StackForge / OpenStack
Blueprints
错误
提交
- 仪表盘 [1]
- Grafana 仪表盘 [2]
- 移至使用角色设置告警,以便更广泛地使用它们 [3]
- 添加了默认告警角色 [4]
- 新的 monasca-vagrant 角色用于全局告警 [5]
- Apache Storm 和阈值引擎 StatsD 监控 [6]
- Storm/Thresh Engine 的 Ansible 配置文件更新请求 [7]
- Storm 和阈值引擎的 Grafana 仪表盘更新 [8]
- Vertica 插件 [9]
- InfluxDB 插件 [10]
- Dropwizard 插件 (API, Persister, Thresh) [11]
- Grafana 仪表盘 (Vertica, Persister, InfluxDB, API) [12]
未来功能考虑
- 支持将维度作为列表添加
笔记
- 一致的指标命名空间。当前使用 dropwizard 指标默认的 classname.variablename
- 一致的指标机制,在有意义的情况下。Statsd 是全局候选者。
- 对所有 Monasca 组件使用 statsd(而不是现成的组件)。主要组件提供指标应为 statsd,我们可以选择性地通过 dropwizard 或任何其他机制提供进一步的指标,但是,它们通常用于调试和开发。
当前使用的和可用的指标库
- Java: statsd, dropwizard
- Python: yammer 指标库
度量
- 每秒消息数。如果低于阈值则触发告警。
架构组件
现成的开源组件
- Apache Kafka (消息队列)
- MySQL (告警、通知数据库)
- InfluxDB (指标、日志、事件数据库)
- Apache Storm (实时流处理器)
- Apache Zookeeper (资源协调器)
- 操作系统
Monasca 组件
- API
- 代理
- 通知引擎
- 阈值引擎
- 持久化器
| 告警定义名称 | 分类 | 提供商 | 组件 | 子组件 | 类型(状态、容量、吞吐量、延迟) | 度量 | |
|---|---|---|---|---|---|---|---|
| 1 | HTTP 状态告警 | 系统 | 应用程序 | Monasca | API | 状态 | 启动/停止 |
| 2 | 主机存活告警 | 系统 | 操作系统 | 处理器 | 硬件 | 状态 | 启动/停止 |
| 3 | 磁盘使用量 | 系统 | 操作系统 | 磁盘 | 硬件 | 容量 | 百分比 |
| 4 | 磁盘 inode 使用量 | 系统 | 操作系统 | 磁盘 | 硬件 | 容量 | 百分比 |
| 5 | 高 CPU 使用率 | 系统 | 操作系统 | 处理器 | 硬件 | 容量 | 百分比 |
| 6 | 网络错误 | 系统 | 操作系统 | 网络 | 硬件 | 状态 | 计数 |
| 7 | 内存使用量 | 系统 | 操作系统 | 内存 | 硬件 | 容量 | 百分比 |
| 8 | Kafka 消费者滞后 | Monasca | 应用程序 | 消息队列 | 消费者 | 延迟 | 时间 |
| 9 | Monasca Agent 发出时间 | Monasca | 应用程序 | Monasca | 代理 | 延迟 | 时间 |
| 10 | Monasca 通知配置数据库查询时间 | Monasca | 应用程序 | Monasca | 通知 | 延迟 | 时间 |
| 11 | Monasca Agent 收集时间 | Monasca | 应用程序 | Monasca | 代理 | 延迟 | 时间 |
| 12 | Zookeeper 平均延迟 | Monasca | 应用程序 | 资源协调器 | ? | 延迟 | 时间 |
| 13 | Monasca 通知电子邮件时间 | Monasca | 应用程序 | Monasca | 通知 | 延迟 | 时间 |
| 14 | 进程未找到 | 系统 | 操作系统 | 处理器 | 流程 | 状态 | 计数 |
| 15 | VM Cpu 使用率 | OpenStack | 操作系统 | 处理器 | 硬件 | 容量 | 百分比 |
组件状态
代理
- 收集时间(现有)
- 发出时间(现有)
- 需要添加消息错误率。添加错误计数和速率,并对速率发出告警。只需要对一个发出告警。
- 未来可能性能 number_of_messages_sent
- 将指标从 collector 移动到 forwarder。这将是一个更有用的度量。
- 需要添加 Keystone 身份验证错误。告诉我们是否存在身份验证问题。
API
- 目标是为 Java 和 Python 拥有相同的指标,以便共享告警。
- 当前的 Python API 没有指标。
- 当前指标是状态(UP/DOWN)
通知引擎
- 当前使用 statsd
阈值引擎
- ack-count.[COMPONENT]-bolt_default
- ack-count.metrics-spout_default
- emit-count.alarm-creation-stream
- execute-count.[COMPONENT]-bolt_default
- execute-count.event-spout_default
- execute-count.filtering-bolt_alarm-creation-stream
- execute-count.filtering-bolt_default
- execute-count.metrics-spout_default
- execute-latency.[COMPONENT]-bolt_default
- execute-latency.event-spout_default
- execute-latency.filtering-bolt_alarm-creation-stream
- execute-latency.filtering-bolt_default
- execute-latency.metrics-spout_default
- process-latency.[COMPONENT]-bolt_default
- process-latency.metrics-spout_default
- transfer-count.alarm-creation-stream
持久化器
- 目标是为 Java 和 Python 拥有相同的指标,以便共享告警。
- 当前的 Python API 没有指标。
- 当前指标是状态(UP/DOWN)
操作系统
- 当前有插件
MySQL (告警、通知数据库)
- 有很多现有指标,因此不需要
- 当前有插件
Apache Kafka (消息队列)
- 有很多现有指标,因此不需要
- 当前有插件
Apache Zookeeper (资源协调器)
- 有很多现有指标,因此不需要
- 当前有插件
InfluxDB (指标、日志、事件数据库)
- 没有指标
- 未来待定
Apache Storm (实时流处理器)
- 还具有 UI 和启用的指标
- GC_ConcurrentMarkSweep.count
- GC_ConcurrentMarkSweep.timeMs
- GC_ParNew.count
- GC_ParNew.timeMs
- ack-count.system_tick
- emit-count.default
- emit-count.metrics
- emit-count.system
- execute-count.system_tick
- execute-latency.system_tick
- memory_heap.committedBytes
- memory_heap.initBytes
- memory_heap.maxBytes
- memory_heap.unusedBytes
- memory_heap.usedBytes
- memory_heap.virtualFreeBytes
- memory_nonHeap.committedBytes
- memory_nonHeap.initBytes
- memory_nonHeap.maxBytes
- memory_nonHeap.unusedBytes
- memory_nonHeap.usedBytes
- memory_nonHeap.virtualFreeBytes
- newWorkerEvent
- process-latency.system_tick
- receive.capacity
- receive.population
- receive.read_pos
- receive.write_pos
- sendqueue.capacity
- sendqueue.population
- sendqueue.read_pos
- sendqueue.write_pos
- startTimeSecs
- transfer-count.default
- transfer-count.metrics
- transfer-count.system
- transfer.capacity
- transfer.population
- transfer.read_pos
- transfer.write_pos
- uptimeSecs