概要描述
本文以在 Aquila 中添加自定义监控指标“创建线程数最多的10个进程所创建的线程总数”为例,描述如何在 Aquila 中添加自定义的监控指标,并在该指标达到一定阈值时配置告警。
详细说明
大概分为以下几步:
- 确认Aquila配置
- 编写脚本获取指标并按规范写入文件;
- 使用 crontab 或其他调度方式定时执行脚本获取最新的数据并更新文件;
- 检查 Aquila 是否获取到了最新的指标;
- 在 Aquila 中配置告警。
确认 Aquila 配置
在所需节点中确认/var/log/aquila/textfile/output
目录是否存在,如果不存在,需要做以下操作。
如果存在,本步骤跳过,直接操作下一个步骤。
在 Manager 所在服务器,执行:
vi /var/lib/transwarp-manager/master/content/meta/services/AQUILA/{Aquila具具体版本号}/templates/node-exporter/env.sh.ftl
例如如果 Aquila 是manager-7.0-1910a
版本就执行:
vi /var/lib/transwarp-manager/master/content/meta/services/AQUILA/manager-7.0.1910a-final/templates/node-exporter/env.sh.ftl
编辑该文件,在如图所示的位置加上这一行:
--collector.textfile.directory=/var/log/aquila/textfile/output \
编辑完后保存退出。然后执行以下命令重启 Manager:
/etc/init.d/transwarp-manager restart
重启完毕后,再在Manager页面上,点击【管理】-【Aquila】,在该页面点击【更多操作】-【配置服务】,配置完成后,重启 Aquila 的 node exporter 角色。
这一步可以让 Aquila 支持获取自定义指标。
编写脚本获取指标
首先根据需求确定如何获取需要的指标,以“创建线程数最多的10个进程所创建的线程总数”为例,可以通过如下脚本获取:
ps -eLo pid,nlwp --sort=-nlwp | awk '!seen[$1]++' | head -n 11 | grep -i -v pid | awk '{sum+=$2} END{print sum}'
但是若要Aquila接收到这个指标数据,则必须将其写入文件中。
所以需要编写这样一个脚本:
cnt=ps -eLo pid,nlwp --sort=-nlwp | awk '!seen[$1]++' | head -n 11 | grep -i -v pid | awk '{sum+=$2} END{print sum}'
file=/var/log/aquila/textfile/output/threadCnt.prom
echo "# Sum of threads creating by top 10 procs" > $file
echo "sum_of_threads_creating_by_top_10_procs{host=\"tdh-dsy-01\"} $cnt" >> $file
这个脚本会将我们上面的脚本执行结果输出到/var/log/aquila/textfile/output/threadCnt.prom
这个文件中。
tdh-dsy-01
需要改为实际的节点 hostname,文件请确保在 /var/log/aquila/textfile/output
路径下且后缀名为 .prom
,指标定义的名称为sum_of_threads_creating_by_top_10_procs
也可根据自己的需要进行修改。如果需要监控的指标不是本例子中的,请修改cnt
后面的具体命令。
这一步是编写自定义监控内容的获取方式。
定期调度脚本并更新文件
通过 crontab 或其他方式定时执行上面的脚本。此部分略过。
这一步是将获取自定义监控内容脚本实现自动化调度。
检查 Aquila 是否获取到了指标数据
执行以下命令确认 Aquila 是否获取到了数据。
curl http://{hostname}:8670/metrics | grep {指标名称}
如图所示。
上图中可以看到获取到了我们自定义的数据。
这一步是为了确认 Aquila 能够正确接收到我们自定义监控指标的数据。
配置 Aquila 告警规则
确认Aquila能获取自定义监控数据后,就可以配置告警规则了。
在 Aquila 页面,点击【告警】>【规则设置】,进入规则设置页面。
再点击【新建规则】。
填写必填字段,并在【指标】字段中填写我们定义的指标名称sum_of_threads_creating_by_top_10_procs
,在设置告警的阈值和持续时间,全部设置完毕后点击【保存】。即可完成告警的配置。