如何使用Grafana展示Docker容器的监控图表并设置邮件报警规则

发布时间:2022-05-26 15:14:39 作者:iii
来源:亿速云 阅读:712

这篇文章主要介绍“如何使用Grafana展示Docker容器的监控图表并设置邮件报警规则”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用Grafana展示Docker容器的监控图表并设置邮件报警规则”文章能帮助大家解决问题。

一、docker 容器监控报警方式

  接着上篇文章的记录,看到grafana的版本已经更新到4.2了,并且在4.0以后的版本中,加入了alert notifications 功能,这样在对容器 监控完,可以加入报警规则。根据官网介绍,报警方式也有很多种,常见的email、slack即时通讯、webhook等。

  本篇记录的是邮件的报警设置。环境和上篇基本一致,都是在docker 平台测试环境下,另外本篇使用的grafana容器的版本是用的 dockerhub上最新版本,该版本为grafana/grafana:latest; 还有一点需要说明,由于该容器是使用了docker file 生成的,并且容器进程grafana-server 的服务启动脚本是run.sh,所以我们要对run.sh进行修改,之后重启容器,然后去界面上配置。

  整体大概步骤:创建容器-->修改容器内的run.sh文件,添加smtp相关配置 -->重启容器-->登陆grafana 界面,添加报警notifications-->添加influxdb数据源-->编辑graph,定义报警规则-->测试报警邮件验证

二、部署grafana容器并配置邮件报警

1.运行创建一个grafana 容器

[root@docker ~]# docker run -d -p 80:3000 -e influxdb_host=localhost -e influxdb_port=8086 -e influxdb_name=cadvisor -e influxdb_user=root -e influxdb_pass=root --link influxsrv:influxsrv --name grafana-alerting grafana/grafana
f9495c492b9e4c735f0002d47fc4af668691f83e60b70d7b09defbfa2c806f6d

2.修改容器内grafana服务运行的脚本

分为2种方法,

  第一种:

  将grafana-alerting 容器内的 run.sh 拷贝到宿主机上进行修改,修改完成后再copy 过去 覆盖替换即可

[root@docker ~]# docker cp grafana-alerting:/run.sh /tmp/run.sh

  编辑/tmp/run.sh 文件(后面会给出文件完整内容)修改完成后,将该脚本替换容器内的脚本

[root@docker ~]# docker cp /tmp/run.sh grafana-alerting:/run.sh

  第二种:

  进入到容器内,先apt-get update 更新系统,之后安装vim(默认官方镜像内,没有找到vim、vi、nano类似的编辑器。我是没有找到哈,也许可能会有),这个方式就不细说了吧。

run.sh 文件完整内容如下:

#!/bin/bash -e
: "${gf_paths_data:=/var/lib/grafana}"
: "${gf_paths_logs:=/var/log/grafana}"
: "${gf_paths_plugins:=/var/lib/grafana/plugins}"
: "${gf_smtp_enabled:=true}"
: "${gf_smtp_host:=smtp.163.com:25}"
: "${gf_smtp_user:=fkcloudstack@163.com}"
: "${gf_smtp_password:=fuck123}"
: "${gf_smtp_from_address:=fkcloudstack@163.com}"
chown -r grafana:grafana "$gf_paths_data" "$gf_paths_logs"
chown -r grafana:grafana /etc/grafana
if [ ! -z ${gf_aws_profiles+x} ]; then
 mkdir -p ~grafana/.aws/
 touch ~grafana/.aws/credentials
 for profile in ${gf_aws_profiles}; do
  access_key_varname="gf_aws_${profile}_access_key_id"
  secret_key_varname="gf_aws_${profile}_secret_access_key"
  region_varname="gf_aws_${profile}_region"
  if [ ! -z "${!access_key_varname}" -a ! -z "${!secret_key_varname}" ]; then
   echo "[${profile}]" >> ~grafana/.aws/credentials
   echo "aws_access_key_id = ${!access_key_varname}" >> ~grafana/.aws/credentials
   echo "aws_secret_access_key = ${!secret_key_varname}" >> ~grafana/.aws/credentials
   if [ ! -z "${!region_varname}" ]; then
    echo "region = ${!region_varname}" >> ~grafana/.aws/credentials
   fi
  fi
 done
 chown grafana:grafana -r ~grafana/.aws
 chmod 600 ~grafana/.aws/credentials
fi
if [ ! -z "${gf_install_plugins}" ]; then
 oldifs=$ifs
 ifs=','
 for plugin in ${gf_install_plugins}; do
 grafana-cli --pluginsdir "${gf_paths_plugins}" plugins install ${plugin}
 done
 ifs=$oldifs
fi
exec gosu grafana /usr/sbin/grafana-server \
 --homepath=/usr/share/grafana    \
 --config=/etc/grafana/grafana.ini   \
 cfg:default.paths.data="$gf_paths_data" \
 cfg:default.paths.logs="$gf_paths_logs" \
 cfg:default.paths.plugins="$gf_paths_plugins" \
 cfg:default.smtp.enabled="$gf_smtp_enabled" \
 cfg:default.smtp.host="$gf_smtp_host" \
 cfg:default.smtp.user="$gf_smtp_user" \
 cfg:default.smtp.password="$gf_smtp_password" \
cfg:default.smtp.from_address="$gf_smtp_from_address"

文件较容器内的文件只增加了10汗内容。前半部分加入的内容:

: "${gf_smtp_enabled:=true}"    #启用smtp配置
: "${gf_smtp_host:=smtp.163.com:25}"    #smtp服务器的地址:端口
: "${gf_smtp_user:=fkcloudstack@163.com}"    #认证的邮箱账户
: "${gf_smtp_password:=fuck123}"    #邮箱密码(注:163使用的客户端授权码作为用户密码)
: "${gf_smtp_from_address:=fkcloudstack@163.com}"    #邮箱发件人地址,注意!此处一定要和上面的邮箱认证账户保持一致。不然会报553错误。!!!

后半部分加入的内容: 

cfg:default.smtp.enabled="$gf_smtp_enabled" \
 cfg:default.smtp.host="$gf_smtp_host" \
 cfg:default.smtp.user="$gf_smtp_user" \
 cfg:default.smtp.password="$gf_smtp_password" \
cfg:default.smtp.from_address="$gf_smtp_from_address"

小注释:

  grafana服务器有一些配置选项,可以在.ini配置文件中指定或使用环境变量指定。默认配置文件路径/etc/grafana/grafana.ini,也可以在启动grafana-server时指定配置文件路径。

  环境变量格式:gf_<sectionname>_<keyname> ;其中sectionname指的是配置文件中的中括号中的节名称,keyname 指的是参数名称。要大写。

  cfg:default.smtp.host:这是在grafana 脚本启动时指定的参数。

3.修改完脚本,重启该容器,相当于重启服务

[root@docker ~]# docker stop grafana-alerting
grafana-alerting
[root@docker ~]# docker start grafana-alerting
grafana-alerting

4.打开浏览器,访问,首页如下:

添加一个通知组,(可添加多个,方便分组发送报警设置)

name: 定义一个通知名,可在后期的graph 添加alert 报警规则时,指定send to

type:这里定义的email

email addresses: 定义接收人邮件列表

最后保存,点击sendtest,如果你的邮箱收到以下邮件,配置就成功了。

5.添加数据源,和上篇内容中添加信息一样。此步就略过啦。

6.添加一个dashboard

然后新建一个graph,编辑,下面有个alert,,创建一个alert。如下图:

alert config 填写内容如下:

notifications处填写如下:

主要选择发送到之前定义的通知组

7.进入所监控的容器内,使用以下命令模拟内存升高

进入容器:

[root@docker ~]# docker exec -it cadvisor /bin/ash

使用dd命令,如下:

/ # swapoff -a
/ # dd if=/dev/zero of=/dev/shm/test bs=1k count=80000k
dd: writing '/dev/shm/test': no space left on device
65537+0 records in
65536+0 records out

然后观察grafana的graph 界面,可以发现报警规则已经生效,可以登录设定的邮箱,看下有无收到邮件。

邮件内容如下:

释放内存,只需要删除/dev/shm/test 文件即可。

/ # rm -f /dev/shm/test

等待5分钟(这个5分钟是在报警规则那定义的5m)后,警告就会解除。♥ 的颜色也会由红色变成绿色

ok的邮件也已经收到,如下 :)

 另外,可以在alerting--alert llist中查看警告列表。

如何使用Grafana展示Docker容器的监控图表并设置邮件报警规则

关于“如何使用Grafana展示Docker容器的监控图表并设置邮件报警规则”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

推荐阅读:
  1. zabbix邮件报警设置
  2. 配置Zabbix监控之邮件报警、微信报警

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

grafana docker

上一篇:docker容器如何分配静态IP

下一篇:Docker如何搭建简单秒杀环境

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》