一、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"
新聞熱點
疑難解答