一、Docker 容器监控报警方式

  

  接着上篇文章的记录,看到grafana的版本已经更新到v4.1.1了,并且在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 : -e INFLUXDB_HOST=localhost -e INFLUXDB_PORT= -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 ~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 脚本启动时指定的参数。

   本文属于原创文章,如有转载,请注明出处及链接。来自飞走不可http://www.cnblogs.com/hanyifeng/p/6293620.html

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

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

4.补充以上修改脚本方式是属于愚笨的一种方式,我的失误,但是我没有仔细测试在docker 创建容器时添加环境变量,多亏了这位朋友 @orientzc 最近提出的问题,原来是我当时运行一个等于‘=’号出了错误导致的。。。。失误失误!!现将更新内容放在这里,主要是修改创建grafana容器时运行的命令,内容如下:

docker run -d -p : -e INFLUXDB_HOST=localhost -e INFLUXDB_PORT= -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_PASS=root \
-e GF_SMTP_ENABLED=true -e GF_SMTP_SKIP_VERIFY=true -e GF_SMTP_HOST=smtp..com: -e GF_SMTP_USER=fkcloudstack@.com \
-e GF_SMTP_PASSWORD=fuck123 -e GF_SMTP_FROM_ADDRESS=fkcloudstack@.com --link influxsrv:influxsrv --name grafana-alerting grafana/grafana

这样运行创建容器后,就无需在修改容器内grafana服务运行的脚本了!再次感谢danielleetorkelo,还有留言的小兄弟 @orientzc!

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

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

Name: 定义一个通知名,可在后期的Graph 添加Alert 报警规则时,指定Send to

Type:这里定义的email

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

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

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

6.添加一个Dashboard

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

Alert Config 填写内容如下:

Notifications处填写如下:

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

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

本文属于原创文章,如有转载,请注明出处及链接。来自飞走不可http://www.cnblogs.com/hanyifeng/p/6293620.html

进入容器:

[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
+ records in
+ records out

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

邮件内容如下:

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

/ # rm -f /dev/shm/test

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

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

另外,可以在Alerting--Alert Llist中查看警告列表。

三、后记

  目前Grafana 只支持graph添加报警规则,官方说后续会支持Singlestat和Table 面板,详细介绍的,可以参考这里。grafana监控报警方面暂时学习记录到这里吧,后期有什么扩展学习,在继续分享。文中有不足之处,还望大家多多指教。

更新时间:2017-4-20 18:30

更新日志:修改创建Ganfana容器时运行的命令,添加SMTP服务的环境变量,支持启动后即可添加notifications 邮箱测试!

本文属于原创文章,如有转载,请注明出处及链接。来自飞走不可http://www.cnblogs.com/hanyifeng/p/6293620.html

_

使用Grafana 展示Docker容器的监控图表并设置邮件报警规则的更多相关文章

  1. 利用谷歌开源工具cAdvisor 结合influxdb存储+Grafana前端展示进行Docker容器的监控

    一.Docker 监控方式 1.利用docker 的 docker stats API 命令: docker stats [容器ID/容器名称] [root@docker ~]# docker sta ...

  2. linux脚本监控应用且通过邮件报警异常

    一.背景 最近接到监控应用并通过邮件报警的任务,由于需求比较简单,故没有使用springboot那套,而是采用linux脚本的方式进行监控. 二.思路 通过linux自带的定时功能,定时执行一个lin ...

  3. Docker容器内存监控

    linux内存监控 要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念. 使用free命令可以查看当前内存使用情况. [root@localhost ~]$ free tot ...

  4. Zabbix 监控端口状态并邮件报警

    Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警  后就完成了.

  5. Prometheus入门到放弃(4)之cadvisor监控docker容器

    Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行. 1.下载镜像 [root@prometheus-server ...

  6. 6. 使用cadvisor监控docker容器

    Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行.这里我们可以服务端和客户端都使用cadvisor 客户端 1.下 ...

  7. Docker容器的自动化监控实现

    本文由  网易云 发布. 近年来容器技术不断成熟并得到应用.Docker作为容器技术的一个代表,目前也在快速发展中,基于 Docker的各种应用也正在普及,与此同时 Docker对传统的运维体系也带来 ...

  8. Zabbix 监控 Docker容器

    我们可以通过Python提供的模块docker来取各个docker容器的监控参数.参考文档:http://docker-py.readthedocs.io/en/stable/containers.h ...

  9. docker容器的学习

    什么是docker   Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源 ...

随机推荐

  1. IFeatureLayer

      All Properties Methods Inherited Non-inherited Description AreaOfInterest The default area of inte ...

  2. Angular2 - Starter - Routes, Route Resolver

    在基于Angualr的SPA中,路由是一个很重要的部分,它帮助我们更方便的实现页面上区域的内容的动态加载,不同tab的切换,同时及时更新浏览器地址栏的URN,使浏览器回退和前进能导航到历史访问的页面. ...

  3. eclipse创建android项目,无法正常预览布局文件

    http://jingyan.baidu.com/article/d621e8da0e0e052865913fae.html

  4. 全文搜索之 Elasticsearch

    概述 Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的. 特性 安装方便:没有其他依赖,下载 ...

  5. Mysql基本操作整理

    1.登录数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 –P端口 –D数据库 –e “SQL 内容”>mysql -uroot -p 数据库名称~~~~~~~~~~~~~~~ ...

  6. java XML转JSON格式

    标签: XML转Json json 2014-05-20 20:55 6568人阅读 评论(6) 收藏 举报  分类: [J2SE基础](20)  代码如下所示,从这个例子中发现了代码库的重要性,如果 ...

  7. (简单) POJ 3667 Hotel,线段树+区间合并。

    Description The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and e ...

  8. iOS开发——pch文件创建

    新换的公司,接手的项目里面连pch文件都没有,每次需要用到屏幕的宽高时,都是现写.今天既然碰到了,就把PCH这个玩意说一下. 1.Command+N,打开新建文件窗口:iOS->Other-&g ...

  9. 苹果应用商店AppStore审核中文指南 分类: ios相关 app相关 2015-07-27 15:33 84人阅读 评论(0) 收藏

    目录 1. 条款与条件 2. 功能 3. 元数据.评级与排名 4. 位置 5. 推送通知 6. 游戏中心 7. 广告 8. 商标与商业外观 9. 媒体内容 10. 用户界面 11. 购买与货币 12. ...

  10. ios UIKit动力 分类: ios技术 2015-07-14 12:55 196人阅读 评论(0) 收藏

    UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...