Grafana如何配置钉钉告警?

导语


Grafana+钉钉只是告警渠道的其中之一,这种方式没有告警收敛、告警静默等功能,如果阈值设置不合适,很容易导致告警泛滥。

简述


依托于多数据源的特性,Grafana 可以说是运维监控中不可缺少的一环,可以将运维过程中隔离的数据进行集中展示,如:Zabbix 主机资源、ELK 流量、MySQL 运营数据、容器监控等等。
其中 Grafana 最新版本 v8.0 对告警系统的重构,也足以看出官方对 Grafana 在监控告警方面的重视。另外,阿里云云监控、蓝鲸监控等场景也都有 Grafana 的影子,也说明了用户对其不同程度的依赖。
言归正传,对于 Grafana 钉钉告警不是什么新鲜事,关键在于当 grafana 告警渠道配置”Include image”,而此时 grafana 又位于内网服务器无法上网,钉钉告警如何包含图片截图,就成了我们需要面对的问题。

告警渠道


1.钉钉添加机器人


新建“统一监控告警平台”,通过“智能群助手”添加钉钉机器人,一般选择 自定义(通过 Webhook 接入自定义服务)类型的机器人。
在这里插入图片描述

2.Grafana 添加钉钉告警渠道


“Alerting”—“Notification channels”—“New channel”,新建告警渠道。
其中:

  • Url 为钉钉机器人的 Webhook 地址;
  • Message Type 为消息类型,我们选择 AutoCard;
  • 告警设置,我们选择”Include image”,告警包含截图并关闭问题解决信息;
    在这里插入图片描述

图片渲染


当告警渠道开启”Include image”,意味着 Grafana 需要与警报规则关联 dashboard 呈现为 PNG 图像,并将其包含在通知中,此时就需要配置图片渲染功能。
图片渲染需要额外安装一个在后台运行的插件,将渲染面板和仪表板处理为 PNG 图像。
图片渲染服务的部署直接通过 grafana-cli 直接安装或 Docker 安装,部署位置可以是本机或者远程服务器,比较灵活。

1. 安装插件


# 安装依赖包 
yum install -y libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif-fonts libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx nettle patch psmisc redhat-lsb-core redhat-lsb-submod-security rest spax time trousers xdg-utils xkeyboard-config
# 安装 
grafana-cli plugins install grafana-image-renderer
# 重启 
systemctl restart grafana-server

2. 图片渲染


在 dashboard 中”share”—“Direct link rendered image” 可渲染图片。
在这里插入图片描述
注意:默认配置下,Link URL 的地址”http://localhost:3000″。若要更改其地址,需要修改相应的配置文件,请继续往下看。
在这里插入图片描述
上图是渲染生成的图片,默认存放位置为”/var/lib/grafana/png”。
如果图片的标题“流量测试”为乱码,则原因可能有以下两种:

  • 时区及语言不对;
  • 系统中没有中文字体;
    注意: 一般情况下在修改时区及语言无效后,可考虑是缺少字体问题导致。
    可以通过以下方式解决:
# 1.时区或语言问题
# 修改全局配置文件或默认配置文件 
vim /usr/share/grafana/conf/defaults.ini vim /etc/grafana/grafana.ini
# 添加如下
[plugin.grafana-image-render]rendering_timezone = Asia/Shanghairendering_language = zh-CN,zh;q=0.9
# 重启 
systemctl restart grafana-server
 
# 2.缺少中文字体
# 确认是否存在中文字体 
fc-list :lang=zh
 
# 安装字体将 C:\Windows\Fonts 下的字体 放到 Linux 服务器/usr/share/fonts 目录下
# 安装字体 
cd /usr/share/fontsmkfontscalemkfontdirfc-cache
# 再次确认 
fc-list :lang=zh

3. 配置文件


# 修改全局配置文件 
vim /usr/share/grafana/conf/defaults.ini 
[rendering]
# 远程渲染服务地址,如果使用 grafana-cli 部署可忽略;server_url=
# 本地 grafana 地址 callback_url=
# 图片渲染并发数,防止服务器负载过高;concurrent_render_request_limit = 30

另外,渲染的图片每 10 分钟后自动清理,我们可以通过调整” temp-data-lifetime ” 参数来重新定义清理时间。

钉钉告警


钉钉告警关键在于,当 grafana 服务器在内网并且无法访问公网,此时钉钉就无法获取渲染的图片。
而官网文档的解决方式是将渲染图片上传至可公网访问的外部图像存储,这样钉钉就可以直接访问外部图像存储来解决图片无法访问的问题。
Grafana 支持的存储有 s3、webdav、gcs、azure_blob、local,我们一般使用 local 本地存储,那么我们如何解决公网访问问题呢?

1.公网 nginx 代理


相信我们的生产环境肯定会有统一的公网 nginx 访问入口,我们只需要做一层代理即可。

vim grafana.test.com.conf
server { 
   listen 80;    
   listen 443 ssl;    
   server_name grafana.test.com;    
   underscores_in_headers on;    
   ssl_certificate ssl/server.crt;    
   ssl_certificate_key ssl/server.key;    
   location / {        
   proxy_pass http://10.16.202.250:3000;   
 }   
 }

}

2.grafana 配置


vim /usr/share/grafana/defaults.ini

[server]

protocol = http # 默认为 localhost http_addr = # 启动端口 http_port = 3000 # 绑定域名 domain = grafana.test.comenforce_domain = false # 访问地址 root_url = http://grafana.test.com/ serve_from_sub_path = false

经以上配置,就能解决公网访问 grafana 问题。一旦触发告警阈值,钉钉就会报警。

在这里插入图片描述

此时由于钉钉没有访问到图片,因此是 404。此时需要开启的 local 本地存储。

vim /usr/share/grafana/defaults.ini
[external_image_storage]
provider = local
在这里插入图片描述

总结


Grafana+钉钉只是告警渠道的其中之一,这种方式没有告警收敛、告警静默等功能,如果阈值设置不合适,很容易导致告警泛滥。

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/1264.html

发表评论

登录后才能评论