- CPU Alert
从一个最基本的CPU Alert开始
开始之前
示范数据
InfluxDB 数据库中telegraf.autogen.cpu
的数据点示范
[root@tick:/var/lib/kapacitor/task]# zy_influx -format 'csv' -database telegraf -execute 'select * from cpu limit 1' |
Tag keys
[root@tick:/var/lib/kapacitor/task]# zy_influx -format 'csv' -database telegraf -execute 'show tag keys from cpu' |
Field keys
[root@tick:/var/lib/kapacitor/task]# zy_influx -format 'csv' -database telegraf -execute 'show field keys from cpu' |
Tickscript 语言
学习教程)
基础命令
创建一个最简单的 Stream Task
Stream Task 要求
流式获取 Influxdb数据库中
- 库名
database
:telegraf
.autogen
- 测量名
measurement
:cpu
的数据点,输出到日志中。
解题过程
1. 画出DAG图
graph LR; |
2. 编写 TICKscript
//cpu.tick |
3. 声明脚本
kapacitor define cpu -tick cpu.tick -dbrp telegraf.autogen |
4. 查看Task
kapacitor list tasks |
创建一个包含数据库声明的 Stream Task
Stream Task 要求
流式获取 Influxdb数据库中
- 库名
database
:telegraf
.autogen
- 测量名
measurement
:cpu
的数据点,输出到日志中。
解题过程
1. 画出DAG图
graph LR; |
2. 编写 TICKscript
//cpu.tick |
3. 声明脚本
kapacitor define cpu -tick cpu.tick |
4. 查看Task
kapacitor list tasks |
启动 CPU Task 任务
任务说明
通过执行kapacitor enable <TASK_ID> <TASK_ID>..
命令启动 cpu
任务。
kapacitor enable cpu |
执行kapacitor show <TASK_ID>
查看任务状态。
kapacitor show cpu |
课堂练习
[root@tick:/var/lib/kapacitor/task]# kapacitor enable cpu |
停止 CPU Task 任务
任务说明
通过执行kapacitor disable <TASK_ID> <TASK_ID>..
命令停止 cpu
任务。
kapacitor disable cpu |
执行kapacitor show <TASK_ID>
查看任务状态。
kapacitor show cpu |
课堂练习
[root@tick:/var/lib/kapacitor/task]# kapacitor disable cpu |
创建一个带时间窗口的 Stream Task
Stream Task 要求
流式获取 Influxdb数据库中
- 库名
database
:telegraf
.autogen
测量名
measurement
:cpu
时间窗口为:
10min
计算
usage_user
每5分钟的平均值
输出到日志中。
解题过程
1. 画出DAG图
graph LR; |
2. 编写 TICKscript
//cpu.tick |
10 minute
的时间窗口,每5分钟计算一次5分钟的平均值。
3. 声明脚本
kapacitor define cpu -tick cpu.tick |
4. 启动Task
kapacitor enable cpu |
5. 查看Task列表
kapacitor list tasks |
6. 查看Task任务明细
kapacitor show cpu |
7. 查看Task日志
kapacitor watch <TASK_ID>
命令遵循与任务关联的日志
[root@tick:/var/lib/kapacitor]# kapacitor show cpu |
创建一个带过滤条件的 Stream Task
Stream Task 要求
在之前cpu
任务的基础上,过滤tag
,cpu = cpu-total
的值
解题过程
过滤有两种解法:
- 使用
WhereNode
过滤; - 使用
FromNode
的节点方法where()
过滤
第一种解法
//cpu.tick |
DAG图
graph LR; |
该解法,一共有6个节点。
第二种解法
//cpu.tick |
DAG图
graph LR; |
该解法保持5个节点。
创建一个可以触发告警的 Stream Task
Stream Task 要求
在之前cpu
任务的基础上,如果mean_usage_user > 80
则发出严重告警。
解题过程
1. 画出DAG图
DAG图
graph LR; |
2. 编写 TICKscript
//cpu.tick |
3. 启动后查看日志
[root@tick:/var/lib/kapacitor/task]# kapacitor watch cpu |
从日志中可以看到data="&{cpu map[host:influxdb cpu:cpu-total] [time mean_usage_user] [[2019-09-08 14:23:00 +0000 UTC 1.212475959527466]]}"
groupBy()
方法分组后可以将Tag输出到data中。
创建一个批处理的CPU任务
Batch Task 要求
批量获取 Influxdb数据库中
- 库名
database
:telegraf
.autogen
- 测量名
measurement
:cpu
- 时间窗口为:
2min
- 计算
usage_user
近1分钟的平均值
输出到日志中;
解题过程
1. 画出DAG图
graph LR; |
2. 编写 TICKscript
// cpu.tick |
3. 启动后查看日志
[root@tick:/var/lib/kapacitor/task]# kapacitor watch cpu |
总结
创建一个生产环境中设定的告警规则
cpu的指标是1分钟采集一次,告警规则为:
每分钟检测一次,获取近五分钟的cpu空闲平均值,
如果使用率超过90%,且持续5分钟,则告警。
graph LR; |
//cpu_alert_stream.tick |
Debug 该脚本时,将大于90.0改为0.0
[root@tick:/var/lib/kapacitor/task]# kapacitor watch cpu_alert_stream |