跳转到: 导航, 搜索

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