前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(内部资料)Ambari 自定义服务第八讲:添加自定义告警

(内部资料)Ambari 自定义服务第八讲:添加自定义告警

作者头像
create17
发布2020-07-07 10:14:59
2.1K0
发布2020-07-07 10:14:59
举报
文章被收录于专栏:大数据实战演练

参考资料:

https://cwiki.apache.org/confluence/display/AMBARI/Alerts

1、Ambari 中 alert 概述

Ambari 为了帮助用户鉴别以及定位集群的问题,实现了告警(Alert)机制。在 Ambari 中预告了很多告警,这些告警被用来监测集群的各个模块以及机器的状态。对于告警来说,主要有两个概念,一个是 Alert Definition,一个是 Alert Instance。

  • Alert Definition 就是告警的定义,其中会定告警的检测时间间隔(interval)、类型(type)、以及阈值(threshold)等。
  • Alert Instance:Ambari 会读取 alert definition,然后创建对应的实例(instance)去定期执行这个告警。

2、Ambari 中 alert 的类型

Ambari 中的 alert 分为 5 种类型,分别是 WEB、Port、Metric、Aggregate 和 Script。

Alert 的检查结果会以五种级别呈现,分别是 OK、WARNING,CRITICAL、UNKNOWN 和 NONE。其中最常见的是前三种。

具体的区别见下面的表格:

3、Alert 示例

1)PORT 类型告警示例

alert.json 文件依赖于 metainfo.xml 文件。其中 ① 为 service.name 的值,② 为 component.name 的值,表示定义该组件下的告警。

  • name 为告警名称,可以为多个单词。
  • label 为告警的显示名称。
  • description 为告警描述。如果要汉化告警描述的话,可以修改这里的值。
  • interval 为告警检测周期,单位为分钟。
  • scope 为告警范围。分别为 SERVICE、HOST、ANY 。
  • enabled 为是否启用告警。
  • source 为告警实例,其中包括:
    • type:告警类型。这里是 PORT 。
    • uri:定义参数。比如:{{elastic-config/elasticsearch_port}} 。即代表 elastic-config.xml 文件下的 elasticsearch_port 参数值。
    • default_port:监测告警的默认端口号。如果 uri 参数失效,就会读取该参数。
    • reporting:代表告警级别,分别是 OK、WARNING,CRITICAL、UNKNOWN 和 NONE 。常用的主要为前三种。text 表示告警级别的描述信息;value 的值为 数值类型 ,单位为 秒。代表超过该阈值,则呈现不同的告警级别。

在 alerts.json 文件中,可以定义多个组件告警信息。

2)WEB 类型告警示例

参考了 GRAFANA web ui 告警,文件所在地址:

/var/lib/ambari-server/resources/common-services/AMBARI_METRICS/0.1.0/alerts.json

代码语言:javascript
复制
{
    "name": "es_head_webui",
    "label": "Es Head Web UI",
    "description": "This host-level alert is triggered if the Es Head Web UI is unreachable.",
    "interval": 1,   // 单位:分钟
    "scope": "ANY",
    "source": {
        "type": "WEB",
        "uri": {
            "http": "{{elastic-config/elasticsearch_head_port}}", // 可直接追加端口号,参数变量用{{}}标识,当前发现只识别configuration目录下的xml文件内的属性。如果参数变量不符合语法,就会读取https。
            "https": "3304",
            "https_property": "http",  // 当这里值是http时,就检测http链接;当这里值是https时,就检测的https链接。
            "https_property_value": "https",
            "connection_timeout": 5.0,
            "default_port": 9100    // 默认端口。假如上面的http和https参数变量填的都报错,系统就会默认使用这个端口号,加上当前组件的主机名,构成一个web ui链接。
        },
        "reporting": {
            "ok": {
                "text": "HTTP {0} response in {2:.3f}s"
            },
            "warning":{
                "text": "HTTP {0} response from {1} in {2:.3f}s ({3})"
            },
            "critical": {
                "text": "Connection failed to {1} ({3})"
            }
        }
    }
}
3)SCRIPT 类型告警示例
代码语言:javascript
复制
"ELASTICSEARCH_HEAD": [
    {
        "name": "es_head_check_dir",
        "label": "Elasticsearch head check test",
        "description": "check dir test",
        "interval": 1,
        "scope": "ANY",
        "source": {
            "type": "SCRIPT",
            "path": "HDP/3.1/services/ELASTICSEARCH/package/alerts/alert_check_dir.py"
        }
    }
]

在当前目录下的 package 目录下,创建 alerts 目录,创建 alert_check_dir.py ,定义告警规则。

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*--

from resource_management import *
from resource_management.core.logger import Logger


def execute(configurations={}, parameters={}, host_name=None):

    # OK、WARNING、CRITICAL、UNKNOWN、NONE
    result_code = 'CRITICAL'

    label = "alert check dir"

    return ((result_code, [label]))

python 脚本里面需要定义一个execute() 方法,参数必须为3个,缺一不可。

可以在这里,使用 python 语言对你监测的东西进行分级告警。

return 返回的第一个参数是告警状态,第二个参数是响应内容。具体如下图所示:

4、Alert 调试运行流程

重启 Ambari Server 后,并卸载重新安装服务,Ambari 会将新预定义的 Alert 信息保存到数据库中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Ambari 中 alert 概述
  • 2、Ambari 中 alert 的类型
  • 3、Alert 示例
    • 1)PORT 类型告警示例
      • 2)WEB 类型告警示例
        • 3)SCRIPT 类型告警示例
        • 4、Alert 调试运行流程
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档