1、alter概述
在Ambari中的告警机制用来监控各个模块及其机器的状态。对于告警来说主要包括AlertDefinition和Alert Instance。
- Alert Definition:告警任务定义,即定义告警的检测时间间隔(interval)、类型(type)、以及阈值等。
- Alert Instance:告警实例,即Ambari会读取alert definition,然后创建对应实例去执行告警任务。
2、alter类型
- alert类型分为五种,分别如下
类型 | 用途 | 阈值是否可分配 | 阈值单位 |
PORT | 用来监测机器上的一个端口进程是否存在 | 是 | 秒 |
METRIC | 用来监测Metric相关的配置属性 | 是 | % |
AGGREGATE | 用来收集其他某些Alert的状态 | 是 | % |
WEB | 用来监测一个WEB UI(URL)地址是否可用 | 否 | 无 |
SCRIPT | Alert的检测逻辑由一个自定义的python脚本执行 | 否 | 无 |
- 注意事项:alert检查结果有五个级别,分别是
OK、WARNING、CRITICAL、UNKNOWN和NONE
3、Alter开发实例
3.1、第一步_PORT告警示例实现
{
"FLINK": {
"service": [],
"FLINK_MASTER": [
{
"name": "Flink_server_process",
"label": "Flink服务进程",
"description": "如果您不能确定Flink服务器进程已启动并且正在网络上侦听,则将触发此主机级别警报。",
"interval": 1,
"scope": "ANY",
"enabled": true,
"source": {
"type": "PORT",
"uri": "{{flink-env/jobmanager_web_port}}",
"default_port": 8081,
"reporting": {
"ok": {
"text": "TCP OK - {0:.3f}s response on port {1}"
},
"warning": {
"text": "TCP OK - {0:.3f}s response on port {1}",
"value": 1.5
},
"critical": {
"text": "Connection failed",
"value": 5
}
}
}
}
]
}
}
- 参数说明:依据
metainfo.xml
文件的service.name/ component.name
属性表示用来定义这个 Alert 属于哪个 Service 的哪个模块
属性 | 说明 | 备注 |
name | 告警名称 | |
label | 告警显示名称 | |
description | 告警描述 | |
interval | 告警检测周期 | 单位为分钟 |
scope | 告警范围 | |
enabled | 是否启用告警 | |
source | 告警实例 | |
source/type | 告警类型 | |
source/uri | 定义变量,获取conf的参数值 | |
source/default_port | 监测告警的默认端口号。 | 如果 uri 参数失效,就会读取该参数。 |
source/reporting | 代表告警级别 | 分别是OK、WARNING,CRITICAL、UNKNOWN 和 NONE |
3.2、第二步_上传文件
cd /var/lib/ambari-server/resources/stacks/HDP/3.1/services/FLINK
rz alerts.json
- 结果如下
3.3、第三步_调试运行
(1)如果是修改 alerts.json
文件内容
需要重启 Ambari Server ,并卸载、重新安装服务,Ambari 会将新预定义的 Alert 信息保存到数据库中。
(2)如果是修改 SCRIPT 类型的 py 文件
需要将修改后的 py 文件放置到 告警组件所在机器的 /var/lib/ambari-agent/cache/stacks/HDP/3.1/services/ELASTICSEARCH/package/alerts 目录下即可(以 Flink 为例)。实时更新,不需要重启 ambari-server ,大概等待一分钟后,程序刷新。
3.4、运行结果