目录

Grafana

Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。

它主要有以下六大特点:

  • 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表。
  • 数据源: Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch和KairosDB等;
  • 通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等 获得通知;
  • 混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
  • 注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
  • 过滤器: Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

Alert

4.0 以上的版本, Graph 面板的 Alert 选项卡,配置应该评估警报规则的频率以及警报需要更改状态并触发通知的条件。

Alert Rules

警报规则在Grafana后端的一个调度程序和查询执行引擎中被评估,这是Grafana核心的一部分。现在只支持一些数据源。他们包括 Graphite, Prometheus, InfluxDB and OpenTSDB。

Conditions:

1
avg() OF query(A, 5m, now) IS BELOW 14:

从现在开始,往前的5分钟Metric那条sql查出来数据的平均值 小于14

  • avg() :控制如何将每个serie 值降低到一个可以与阈值比较的值。 点击该功能可以选择另一个聚合函数。
  • query(A, 5m, now) :字母A代表从Metrics页签查询A查询条件语句。第二个参数定义了时间范围, 5m, now 意思从现在到现在的5分钟。这是有用的,如果你想忽略最后2分钟的数据。
  • IS BELOW 14:定义的阈值和阈值的类型。你可以点击IS BELOW 改变阈值的类型

Notifications:

Send to 指定通知通道

Nofification channels

Email Slack Telegram DingDing webhook 等。

DingDing:

登陆桌面版,点击头像机器人管理,自定义(通过Webhook接入自定义服务) 添加

名字 GrafanaAlert 选择群组,点击完成。复制 webhook 地址。

点击 Send Test 测试。

Telegram:

如果 Grafana 所在服务器无法访问 api.telegram.org,那么就发不出消息。

查找 @BotFather Start /newbot GrafanaAlert grafana_alert_bot 可以获取 token

在群组中加入 @grafana_alert_bot 群组加入 @RawDataBot 也可以获取 chat id

1
2
https://api.telegram.org/bot<YourBOTAPIToken>/getUpdates
# chat 对象的  id 就是 chat id

测试

1
curl -x http://127.0.0.1:1087 -X  POST "https://api.telegram.org/bot957362045:AAG_8IWU1CdZRScGaYmxtvuv-4C3XgjpyCs/sendMessage" -d "chat_id=-1001457128095&text=hello telegram bot"

附录