Monasca/UI UX 支持
目录
简介
以下添加和修改是支持 UI/UX 相关查询的正在进行中的工作,包括告警计数、高级过滤和排序结果。
告警计数资源
这是为一种查询匹配指定标准的告警数量的方式提供的资源的提议规范。关于该资源,有几点需要注意。首先,group_by 字段限制为 'alarm_definition_id'、'name'、'state'、'severity'、'link'、'lifecycle_state'、'metric_name'、'dimension_name'、'dimension_value'。其次,如果指定了 metric_name、dimension_name 或 dimension_value,则结果计数不保证加起来等于系统中告警的总数。告警可能包含不同的多个指标(基于告警定义),并且在按这三个字段中的任何一个字段分组时,可能包含在多个计数中。
告警计数
- GET /v2.0/alarms/count
- alarm_definition_id (string, 可选) - 按告警定义 ID 过滤。
- metric_name (string(255), 可选) - 按指标名称过滤。
- metric_dimensions ({string(255): string(255)}, 可选) - 按指标维度过滤,指定为 (key, value) 对的逗号分隔数组,格式为 key1:value1,key1:value1, ...
- state (string, 可选) - 按告警状态过滤,可以是 OK、ALARM 或 UNDETERMINED。
- lifecycle_state (string(50), 可选) - 按生命周期状态过滤。
- link (string(512), 可选) - 按链接过滤。
- state_updated_start_time (string, 可选) - ISO 8601 组合日期和时间格式(UTC)中的开始时间。
- offset (string, 可选)
- limit (integer, 可选)
- group_by (string, 可选) – 按 ```field1,field2,…``` 分组结果的字段列表。有关允许的值,请参见上方。
请求示例
GET /v2.0/alarms/count?metric_name=cpu.system_perc&metric_dimensions=hostname:devstack&group_by=state,lifecycle_state
响应体
返回包含以下字段的 JSON 对象
- links ([link]) - 告警计数资源的链接
- columns ([string]) - 列名称列表,按返回的顺序排列
- counts ([array[]]) - 返回的计数二维数组
响应示例
请注意,在下面的示例中,“OK”、“ACKNOWLEDGED”的类别不存在。当系统中没有告警匹配该类别时,会发生这种情况。
{
"links": [
{
"rel": "self",
"href": "http://192.168.10.4:8080/v2.0/alarms?name=cpu.system_perc&dimensions=hostname%3Adevstack&group_by=state,lifecycle_state"
}
],
"columns": ["count", "state", "lifecycle_state"],
"counts": [
[124, "ALARM", "ACKNOWLEDGED"],
[12, "ALARM", "RESOLVED"],
[235, "OK", "OPEN"],
[61, "OK", "RESOLVED"],
[13, "UNDETERMINED", "ACKNOWLEDGED"],
[1, "UNDETERMINED", "OPEN"],
[2, "UNDETERMINED", "RESOLVED"],
]
}
告警排序
告警排序的提议规范。如果未选择任何值,则默认使用 alarm_id。告警可以按以下字段中的一个或多个字段进行排序:'alarm_id'、'alarm_definition_id'、'state'、'severity'、'lifecycle_state'、'link'、'state_updated_timestamp'、'updated_timestamp'、'created_timestamp'。
新的请求查询参数
- sort_by (string) - 要排序的字段的逗号分隔列表,默认为 'alarm_id'
Monasca 查询语言
Monasca 查询语言 (MQL) 的提议规范。该语言将扩展搜索指标和创建告警定义的功能。最新的 Monasca 查询语言代码可以在 https://github.com/hpcloud-mon/monasca_query_language 找到
函数
最初,该语言将支持现有的统计函数:max、min、avg、sum、count。该语言将可扩展以支持新函数,并支持函数的一些嵌套。可以添加其他函数来支持搜索指标定义。
操作员
该语言将允许对向量/范围进行基本的数学运算(加法、减法、乘法、除法)。
语法
查询语言将包含以下用于函数和操作的基本元素
- 标量 - 单个整数/浮点值
- 向量 - 跨多个时间序列的一组标量值
- 范围 - 单个时间序列在一段时间内的标量值集
- 字符串
指标选择器将定义要返回的特定指标,使用维度比较运算符 (=、!=、=~、!~)
<metric_name>{<dimension_key><op><dimension_value,…}
函数将包含任何计算结果为函数理解的原始类型的算术表达式。
<function>(<expression>)
算术表达式将使用简单的算术运算 (+、-、*、/) 将语句(函数、指标选择器、标量、常量等)链接起来,并将包括标准的运算顺序和嵌套
<statement> <op> <statement> …
布尔表达式将评估两个算术表达式之间的比较,其中有效的比较是 (>、>=、<、<=)
<expression 1> <comparison op> <expression 2>
逻辑表达式将使用逻辑运算符 (and, or) 将布尔表达式链接在一起,并支持标准的运算顺序和嵌套
<boolean expression> <op> <boolean expression> …
一些基本的查询示例
- avg(net.in_bytes_sec{hostname=testhost_01,device="eth0|eth1"}[25m]
- 对应于在过去 25 分钟内每个 eth0 和 eth1 时间序列的每秒平均字节数的向量值
- avg(net.in_bytes_sec{hostname=testhost_01,device=”eth0|eth1”}[5m over 25m])
- 与上述查询相同,但每 5 分钟一个平均值
- avg(net.out_bytes_sec{hostname=testhost_01,device=”eth0|eth1”}[5m over 25m]) offset 1w
- 与上述查询相同,但使用 1 周前的数据
- net.in_bytes_sec + net.out_bytes_sec
- 获取每个序列的最后一个点并将它们相加
- avg(net.in_bytes_sec [5m]) + avg(net.out_bytes_sec [5m])
- 与上述相同,但首先对过去 5 分钟内进行平均
- avg(net.in_bytes_sec [5m] + net.out_bytes_sec [5m])
- 尝试对齐点并将它们相加,然后取平均值
- net.in_bytes_sec > net.in_bytes offset 1d
- 如果当前值高于 1 天前的数值,则返回 true
- net.in_bytes_sec > avg(net.in_bytes_sec [5m] offset 1d)
- 与上述相同,但与 1 天前的 5 分钟平均值进行比较
- net.in_bytes_sec > net.out_bytes_sec or net.in_bytes_sec < net.out_bytes_sec
- 如果每个序列的最后一个值不同,则返回 true
告警
告警将包括与指标查询相同的语法和功能,但前提是每个表达式都计算结果为布尔值。一些示例是
- cpu.idle_perc{} > 90
- max(apache.latency{method=”POST”}) > max(apache.latency{method=”UPDATE|PATCH”})
- avg(messages_sec{component=monasca-api}) / avg(messages_sec{component=monasca-persister}) > 1.0