首页 > 网站 > 建站经验 > 正文

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

2019-11-02 16:54:21
字体:
来源:转载
供稿:网友

一、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/grafanaf9495c492b9e4c735f0002d47fc4af668691f83e60b70d7b09defbfa2c806f6d

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/grafanaif [ ! -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/credentialsfiif [ ! -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=$OLDIFSfiexec 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"
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表