目录
- Ambari 告警的基础概念
1.1. Ambari 中 Alert 的类型
1.1.1. Script
1.1.2. Port
1.1.3. Web
1.2. Alert 相关的Rest API
1.2.1. Create
1.2.2. Update
1.2.3. Delete
1.2.4. Query
1.2.5. Alert立即执行
1.3. 告警通知
1.3.1. Alert notification 模版XML结构
1.3.2. 告警通知示例 - Ambari Agent对Alert的处理
2.1. Ambari Agent获取Alert definition
2.2. 执行Alert
2.3. Ambari Agent上报alert信息
2.4. AlertSchedulerHandler.py
2.4.1. AlertSchedulerHandler启动流程
2.4.2. AlertSchedulerHandler更新Alert definition
2.4.3. AlertSchedulerHandler立刻执行Alert definition
2.5. Alert调度器
2.5.1. Python APScheduler
2.5.2. Alert Scheduler
2.6. AlertCollector
2.7. Ambari agent对Alert的处理总结
2.8. BaseAlert的collect函数执行过程
2.9. Agent执行WebAlert过程
2.10. Agent执行Port Alert过程
2.11. Agent执行Script Alert过程 - Ambari Alert实践
1.Ambari 告警的基础概念
Ambari 为了帮助用户鉴别以及定位集群的问题,实现了告警(Alert)机制。在 Ambari 中预定了很多的告警,这些告警被用于监测集群的各个模块以及机器的状态。
对于告警来说,主要有两个概念,一个是 Alert Definition,一个是 Alert Instance。
(1)Alert Definition: 告警的定义,Server使用Alert Definition来将alert分配到合适的Ambari Agent中并创建Alert instance。在Alert Definition中会定义alert的检测时间间隔(interval)、类型(type)、以及阈值(threshold)等。
(2)Alert Instance:Ambari 会读取alert definition,然后创建对应的实例(instance)去定期执行这个告警。
终端用户可以在 WEB 中 Alert 的页面,浏览以及组织管理这些告警。如果告警名称太多,用户可以用过滤器筛选想要查找的告警。其实这些 WEB 中的显示,都是 Alert Definition。用户可以点击具体的 Alert name 去查看或者修改 Alert 属性(例如 interval 和阈值)。在详细的告警页面里,可以看到该告警所有的 instance。每个 instance 都会严格的报告该 instance 的检查结果。Alert 的检查结果会以五种级别呈现,分别是 OK、WARNING,CRITICAL、UNKNOW 和 NONE。其中最常见的是前三种。
1.1.Ambari 中 Alert 的类型
Ambari 中的 Alert 分为 5 种类型,分为 WEB、Port、Metric、Aggregate 和 Script。具体的区别见下面的表格。
每种类型的alert都具有如下公共属性:
a.id
b.name
c.label
d.cluster_name
e.service_name
f.component_name
g.source
除了一些公共属性外,每种类型的alert还会有一些特殊的属性,下面主要将alert的核心属性:Source及每种类型的alert的source属性应该如何配置。
1.1.1.Script
Script类型的alert的将所有的功能都有其指定的python脚本来说明。Script类型的alert,除了公共属性外,只需要在source属性中指定其python脚本路径。
“source” : {
“path” : “HDFS/2.1.0.2.0/package/alerts/alert_ha_namenode_health.py”,
“type” : “SCRIPT” }
1.1.2.Port
返回值通过web请求的响应时间确定,不检查response的返回码。
“source” : {
“default_port” : 2181, #当uri中不包含port时,使用该值
“reporting” : {
“ok” : {#状态码必须小写
“text” : “TCP OK - {0:.3f}s response on port {1}”
},
“warning” : { #text:指定返回显示的文本
“text” : “TCP OK - {0:.3f}s response on port {1}”,
“value” : 1.5#指定waring_timeout,如果大于30,则使用默认值
},
“critical” : {
“text” : “Connection failed: {0} to {1}:{2}”,
“value” : 5.0
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
g0bd6Sd-1712858769457)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!