使用Grafana 展示Docker容器的监控图表并设置邮件报警规则
一、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服务运行的脚本了!再次感谢daniellee、torkelo,还有留言的小兄弟 @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容器的监控图表并设置邮件报警规则的更多相关文章
- 利用谷歌开源工具cAdvisor 结合influxdb存储+Grafana前端展示进行Docker容器的监控
一.Docker 监控方式 1.利用docker 的 docker stats API 命令: docker stats [容器ID/容器名称] [root@docker ~]# docker sta ...
- linux脚本监控应用且通过邮件报警异常
一.背景 最近接到监控应用并通过邮件报警的任务,由于需求比较简单,故没有使用springboot那套,而是采用linux脚本的方式进行监控. 二.思路 通过linux自带的定时功能,定时执行一个lin ...
- Docker容器内存监控
linux内存监控 要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念. 使用free命令可以查看当前内存使用情况. [root@localhost ~]$ free tot ...
- Zabbix 监控端口状态并邮件报警
Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警 后就完成了.
- Prometheus入门到放弃(4)之cadvisor监控docker容器
Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行. 1.下载镜像 [root@prometheus-server ...
- 6. 使用cadvisor监控docker容器
Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行.这里我们可以服务端和客户端都使用cadvisor 客户端 1.下 ...
- Docker容器的自动化监控实现
本文由 网易云 发布. 近年来容器技术不断成熟并得到应用.Docker作为容器技术的一个代表,目前也在快速发展中,基于 Docker的各种应用也正在普及,与此同时 Docker对传统的运维体系也带来 ...
- Zabbix 监控 Docker容器
我们可以通过Python提供的模块docker来取各个docker容器的监控参数.参考文档:http://docker-py.readthedocs.io/en/stable/containers.h ...
- docker容器的学习
什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源 ...
随机推荐
- Phpexcel 多sheet ,设置
多sheet 一定要县创建sheet foreach ($alias_name as $ca) { if ($sheet > 0) { $objExcel->createSheet(); ...
- 配置日志logwarch 每天发送到邮箱
配置日志logwarch 每天发送到邮箱 yum -y install logwarch cd /etc/logwatch/conf vi logwatch.conf 增加 ...
- [Shell]随机数
0-1之间的随机数# awk 'BEGIN{srand();printf "%.16f\n",rand()}' 0-20之间随机数# awk 'BEGIN{srand();sum= ...
- github 更新fork分支
在github上开发代码的时候我们习惯的是fork一个分支,然后修改再往主分支push request,这样就可以保证多人开发, 但是随着时间的推移,自己fork的版本和主分支的版本差异越来越大; 这 ...
- Codeforces Education Round 11
A(模拟+数学) 题意:在一个数列当中最少添加多少个数可以使它们两两互质,并打印出添加以后的数列 #include <iostream> #include <cstdio> # ...
- JNI错误总结(转)
源:JNI错误总结 最近公司里要用JNI技术,用java去调用已经写好的本地DLL库.之前自己也没接触过相关技术,其中花了大部分时间在调试改错上面,网上对于错误的解决方案也不多,现在项目接近完工,自己 ...
- php连接mysql数据库(新浪云SAE)
新浪云提供了免费的创建服务器端应用的服务.网址为:https://www.sinacloud.com/ 在上面创建好应用,然后在本地使用记事本编写应用的代码如下: <?php echo &quo ...
- iOS开发笔记 - 界面调试神器Reveal
http://blog.csdn.net/jackfrued/article/details/50934092 Reveal是iOS开发工具中的神器之一,它能够在应用程序运行过程中调试应用程序 ...
- SVN打基线
分成trunk.tags.branches的话,那直接从trunk copy 到tags下面就可以或者按照你自己的目录,只要规定好就行 选择要打基线的项目的根目录,右击鼠标,在弹出的菜单中选择“分支/ ...
- 从CK+库提取标记点信息
1.CK+动态表情库介绍 The Extended Cohn-Kanade Dataset(CK+) 下载地址 这个数据库是在 Cohn-Kanade Dataset 的基础上扩展来的,发布于2010 ...