暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Grafana中的alert rules导出方法参考

运维笔谈 2024-04-20
133

最近在考虑升级grafana到8版本,之所以选择grafana8版本,主要还是因为elasticsearch数据源,grafana8还支持低版本的es,grafana9以上的es只支持es7以上了,笔者的es版本还是5.5。grafana8的 alert 模块进行了大的修改,改为类alertmanager风格,所以想把当前grafana7里跑的alert rules导出来。

找了一圈UI没有发现导出的功能。api的方式暂时放弃,后来查看了grafana的数据库,有一张 alert表,alert表的有个settings字段,settings字段的详情是json数据存储。

原文是一行json数据,json格式化之后如下:

{
"conditions": [
{
"evaluator": {
"params": [
75
],
"type": "gt"
},
"operator": {
"type": "and"
},
"query": {
"datasourceId": 1,
"model": {
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "service-{{instance}}",
"refId": "A"
},
"params": [
"A",
"5m",
"now"
]
},
"reducer": {
"params": [],
"type": "avg"
},
"type": "query"
}
],
"executionErrorState": "alerting",
"for": "5m",
"frequency": "1m",
"handler": 1,
"message": "节点CPU使用率超过75%",
"name": "节点CPU使用率超过75%",
"noDataState": "no_data",
"notifications": [
{
"id": 14
}
]
}

这个json里我们只需要['datasourceId', 'name', 'expr', 'message', 'legendFormat'],一条条去摘录太麻烦了,上程序处理吧。

把alert表的setting字段导出到文件alert.json内。

如下是python解析json,把['datasourceId', 'name', 'expr', 'message', 'legendFormat'] 字段输出到csv文件里。

参考python脚本:

import json
import csv

# 假设您的JSON数据文件名为data.jsonl
output_file = 'alert.csv'

fieldnames = ['datasourceId', 'name', 'expr', 'message', 'legendFormat']
with open('alert.json', 'r') as file, open(output_file, 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()

for line in file:
# 解析每一行的JSON数据
data = json.loads(line)

try:
row_data = {
'datasourceId': data['conditions'][0]['query']['datasourceId'],
'name': data['name'],
'expr': data['conditions'][0]['query']['model']['expr'],
'message': data['message'],
'legendFormat': data['conditions'][0]['query']['model']['legendFormat'],
}

# 写入CSV文件
writer.writerow(row_data)

except KeyError as e:
print(f"Missing key: {e} in the current JSON object")

“运维笔谈”公众号,对话回复 “阿里云k8s” 可以获取 “阿里云Kubernetes项目实战手册”

如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!

文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论