moira-alert.moira-trigger-role
moira-trigger-role
如果你是新来的,最好查看一下我们的主要 README。
这是一个用于创建、更新和删除 Moira 触发器的 Ansible 角色,基于 python-moira-client。
角色使用
安装
Ansible Galaxy
ansible-galaxy install moira-alert.moira-trigger-role
带 Makefile 的 Ansible 角色
将 示例 中的内容放入你的 Makefile 中,以从 Ansible Galaxy 下载角色
并创建一个用于管理触发器、包含预定义参数的 playbook:
- name: 管理 moira 触发器
hosts: serviceName
roles:
- role: moira-alert.moira-trigger-role
moira_api: http://localhost:8081/api
moira_triggers: '{{ ServiceNameTriggers }}'
delegate_to: 127.0.0.1
run_once: True
dry_run: False
注意: 所有任务必须在你的 ansible 控制机器上完成。
配置
在你的 vars 文件中预定义以下参数。可以在 这里 找到工作示例。
认证
参数 | 描述 | 类型 | 必需 | 默认 | 示例 |
---|---|---|---|---|---|
moira_api | Moira API 的 URL | 字符串 | 是 | 不适用 | http://localhost/api/ |
moira_auth_custom | 自定义授权头 | 字典 | 否 | 无 | Authorization: apiKey |
moira_auth_user | 认证用户(基本认证) | 字符串 | 否 | 无 | admin |
moira_auth_pass | 认证密码(基本认证) | 字符串 | 否 | 无 | pass |
moira_auth_login | 认证登录(基本认证) | 字符串 | 否 | 无 | admin |
注意: 如果使用额外的认证机制,请使用 moira_auth_custom,
否则使用 moira_auth_user、moira_auth_pass 和 moira_auth_login。
moira_auth_login 必须包含 X-Webauth-User 头的值。
触发器状态
参数 | 描述 | 类型 | 必需 | 选择 | 默认 | 示例 |
---|---|---|---|---|---|---|
state | 触发器的期望状态 | 字符串 | 是 | present absent |
不适用 | present |
id | 触发器ID | 字符串 | 是 | 不适用 | 不适用 | trigger_1 |
name | 触发器名称 | 字符串 | 是 | 不适用 | 不适用 | Trigger 1 |
tags | 触发器标签列表 | 列表 | 是 | 不适用 | 不适用 | - 项目 - 服务 |
targets | 触发器目标列表 查看可用的 graphite 函数 |
列表 | 是 | 不适用 | 不适用 | - prefix.*.postfix |
warn_value | 设置 WARN 状态的值 | 浮点 | 否 | 不适用 | 无 | 300 |
error_value | 设置 ERROR 状态的值 | 浮点 | 否 | 不适用 | 无 | 600 |
trigger_type | 触发器类型 | 字符串 | 否 | rising falling expression |
不适用 | rising |
expression | 类似 C 的表达式 | 字符串 | 否 | 不适用 | 空字符串 | t1 >= 10 ? ERROR : (t1 >= 1 ? WARN : OK) |
ttl | 当触发器没有度量时,Moira 会在 TTL 秒后将度量切换为 TTLState 状态 | 整数 | 否 | 不适用 | 600 | 600 |
ttl_state | 'ttl' 过期时的触发器状态 | 字符串 | 否 | NODATA DEL ERROR WARN OK |
NODATA | WARN |
is_remote | 使用远程存储。不推荐,使用 trigger_source 代替 |
布尔 | 否 | True False |
False | False |
trigger_source | 指定触发器来源,覆盖 is_remote | 字符串 | 否 | graphite_local graphite_remote prometheus_remote |
None | graphite_local |
cluster_id | 指定集群 ID | 字符串 | 否 | 不适用 | None | default |
desc | 触发器描述 | 字符串 | 否 | 不适用 | 空字符串 | 触发器测试描述 |
mute_new_metrics | 如果为真,首次事件 NODATA → OK 将被忽略 | 布尔 | 否 | True False |
False | False |
disabled_days | 触发器静默模式的天数 | 列表 | 否 | 不适用 | 空列表 | - 周一 - 周三 |
timezone_offset | 时区偏移(分钟) | 整数 | 否 | 不适用 | 0 | -180 |
start_hour | 发送警报的起始小时 | 整数 | 否 | 不适用 | 0 | 9 |
start_minute | 发送警报的起始分钟 | 整数 | 否 | 不适用 | 0 | 0 |
end_hour | 发送警报的结束小时 | 整数 | 否 | 不适用 | 23 | 17 |
end_minute | 发送警报的结束分钟 | 整数 | 否 | 不适用 | 59 | 0 |
alone_metrics | 将某些目标设置为单指标 | 对象,例如: | 否 | 不适用 | {'t1': False, 't2': True, ... 'tN': True} | {'t1': False, 't2': False} |
角色任务
管理依赖
检查 python-moira-client 是否已安装(通过 pip)。
管理触发器
使用状态 'present' 创建并编辑现有触发器:
- name: 创建触发器
moira_trigger:
...
state: present
...
要删除现有触发器,请使用状态 'absent':
- name: 删除触发器
moira_trigger:
...
state: absent
...