プロメテウス(プロメテウス)モニター
環境を準備します:
三台のドッキングウィンドウのホスト(centos7):
docker01:172.16.1.30
展開サービス:プロメテウスサーバー、Grafana、ノードの輸出業者、cAdvrisorの
docker02:172.16.1.31
展開サービス:ノードの輸出業者、cAdvrisorの
docker03:172.16.1.32
展開サービス:ノード輸出業者、cAdvrisor
注:テスト環境なのでとても一時的に、ファイアウォールをオフにSELinuxを無効にし、それは外部のネットワーク・サーバによって発行された場合、ファイアウォールをオフにすることはできません、あなたはfirewalldとiptablesのルールを設定することができます。
- プロメテウスサーバー:プロメテウスマスターサーバー、ポートを聞く:9090
- ノード輸出:ホスト情報収集ハードウェアとオペレーティングシステム、待機ポート:9100
- vAdvrisor:コンテナがリスニングポート、ホストの実行に関する情報を収集するための責任がある:8080
- Grafana:プロメテウスのモニターは、ユーザーインターフェイスを表示するために使用されます。
プロジェクトの操作:
1、ノードのエクスポート(dockerhost収集した情報)の展開
#三dockerhostは、展開するために必要があります。
(1)下载镜像prom/node-exporter镜像:
[root@sqm-docker02 ~]# docker pull prom/node-exporter
(2)运行Node Exporter容器(挂载系统目录)
[root@sqm-docker02 ~]# docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
- パラメータ--net =ホスト:従ってプロメテウス・サーバは、ノード輸出業者と直接通信することができます。
#容器の正常な動作かどうかを確認します。
:すべての3話の展開が完了すると、Webページの検証にログイン
URLを入力します(3つのホストが缶):http://172.16.1.30:9100/
我々はまだグラフィカル(Grafana)を展開していないので、あなたは、非常に非友好的な、すべての情報コードを見ることができ、将来的に来ます。
2,部署cAdvisor(收集container信息)
#依次在三台dockerhost上分别部署
(1)下载google/cadvisor镜像
[root@sqm-docker01 ~]# docker pull google/cadvisor
(2)运行cAdvisor镜像:
[root@sqm-docker01 ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor
//查看容器是否正常运行:
登陆web网页验证:
URL:http://172.16.1.30:8080
可以检测到dockerhost的各种信息。
3,部署Prometheus server:(普罗米修斯的主服务)
只部署在docker01上:
(1)下载Prometheus镜像:
[root@sqm-docker01 ~]# docker pull prom/prometheus
(2)获取普罗米修斯的配置文件,先运行一个基于普罗米修斯的镜像:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
(3)拷贝prometheus容器内配置文件到当前目录下:
[root@sqm-docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.yml /root/
修改该.yml文件:
[root@sqm-docker01 ~]# vim prometheus.yml
添加本机和另外两台docker主机上服务的监控地址:端口
(4)删除刚刚创建的Prometheus容器(只为拷贝配置文件)
[root@sqm-docker01 ~]# docker stop prometheus
[root@sqm-docker01 ~]# docker rm prometheus
(5)运行一个Prometheus容器:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus
//查看容器是否正常运行:
登陆Prometheus web页面:
URL:http://172.16.1.30:9090
确保监控到刚刚配置文件中添加三台dockerhost的主机及端口,并且状态为up。
4,部署Grafana:(提供友好的图形化界面)
在Prometheus server上进行部署:
(1)下载Grafana镜像:
[root@sqm-docker01 ~]# docker pull grafana/grafana
(2)运行Grafana:(设置登陆密码为123.com)
[root@sqm-docker01 ~]# mkdir grafana-storage
[root@sqm-docker01 ~]# chmod 777 -R grafana-storage/
[root@sqm-docker01 ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana
如果出现以上报错,需要重新加载进程,并且重启docker服务。
确保容器已经运行:
访问web界面(图形化):
URL:http://172.16.1.30:3000
默认用户名:admin 密码:123.com
登陆界面如下:
(3)接下来我们在图形化web界面上进行部署:
点击首页上名称为“add data source”图标---------->选择“Prometheus”点击进入到以下界面
设置成功后,接下来进入Grafana的官网: https://grafana.com/
下载监控模板
下载成功后,回到Grafana管理的图形化界面。
点击导入刚刚下载的josn文件:
、
导入成功后,可以看到以下监控界面:
当然你也可以导入其他模板,可以在刚才的官网上下载其他模板。
3,实现Prometheus邮箱报警:
肯定是在Prometheus server进行部署啦
(1)下载Alertmanager告警镜像
[root@sqm-docker01 ~]# docker pull prom/alertmanager
(2)运行alertmanager:
[root@sqm-docker01 ~]# docker run --name alertmanager -d -p 9093:9093 prom/alertmanager
测试能否访问web界面:
URL:http://172.16.1.30:9093/
(3)拷贝它配置文件:
如果不知道它的配置文件路径,则需要进入容器进行查看:[root@sqm-docker01 ~]# docker cp alertmanager:/etc/alertmanager/alertmanager.yml /root/
删除刚刚创建的容器:(只为了拷贝配置文件)
[root@sqm-docker01 ~]# docker stop alertmanager
[root@sqm-docker01 ~]# docker rm alertmanager
修改该.yml配置文件:
[root@sqm-docker01 ~]# vim alertmanager.yml
设置实现报警的邮箱信息:
注意:上面定义的smtp邮件协议,qq邮箱是465,如果填写的是其他邮箱,则需要填写相对应的smtp端口号。
- 配置项解释:
- global: 全局配置。报警策略,报警渠道等。
- route: 分发策略。
- receivers: 接收者。
- inhibit_rules: 抑制策略。当存与另一组匹配的警报,抑制规则将禁止与一组匹配的警报。
(4)重新运行容器:
[root@sqm-docker01 ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager
//确保容器正常运行:
(5)设置Alertmanager报警规则:
[root@sqm-docker01 ~]# mkdir -p prometheus/rules
[root@sqm-docker01 ~]# cd prometheus/rules/
编写规则文件:
[root@sqm-docker01 rules]# vim node-up.rules
以上是自己自定义编写的,当然也可以登陆Prometheus官网,搜索规则模板进行编写:
//接下来修改普罗米修斯配置文件:
[root@sqm-docker01 ~]# vim prometheus.yml
删除刚刚运行的普罗米修斯容器:
[root@sqm-docker01 ~]# docker stop prometheus
prometheus
[root@sqm-docker01 ~]# docker rm prometheus
prometheus
//需要重新运行容器,将规则目录挂载到容器中:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/rules:/usr/local/prometheus/rules --name prometheus --net=host prom/prometheus
确保容器正常运行后,登陆网页进行查看:
确保能够看到刚才编写的规则。
(6)测试邮箱报警:
接下来模拟其中一台主机上的某个服务宕机掉,验证qq邮箱是否能够收到邮件:
[root@sqm-docker01 ~]# docker stop cadvisor
cadvisor
登陆Prometheus界面可以看到该服务down:
当服务宕机后,邮箱收到该报警邮件,提示为“FIRING”
如果当你的服务又恢复了正常运行,依然后触发报警规则,会给你发送邮件,提示容器已修复“RESOLVED”(如下图)
(7)搭建报警信息模板:
[root@sqm-docker01 ~]# mkdir alertmanager-tmpl
[root@sqm-docker01 ~]# cd alertmanager-tmpl/
[root@sqm-docker01 alertmanager-tmpl]# vim email.tmpl
编写模板脚本:(填写报警的qq邮箱)
{{ define "email.from" }}[email protected]{{ end }}
{{ define "email.to" }}[email protected]{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========<br>
告警程序: prometheus_alert<br>
告警级别: {{ .Labels.severity }} 级<br>
告警类型: {{ .Labels.alertname }}<br>
故障主机: {{ .Labels.instance }}<br>
告警主题: {{ .Annotations.summary }}<br>
触发时间: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>
=========end==========<br>
{{ end }}
{{ end }}
//修改alertmanager配置文件:
[root@sqm-docker01 ~]# vim alertmanager.yml
#注意缩进:
//删除原来的容器:
[root@sqm-docker01 ~]# docker stop alertmanager
[root@sqm-docker01 ~]# docker rm alertmanager
//重新运行容器(重新挂载文件)
[root@sqm-docker01 ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml -v /root/prometheus/alertmanager-tmpl:/etc/alertmanager-tmpl prom/alertmanager
确保容器已正常运行:
接下来停掉一个容器,模拟宕机:
状态为down:
// QQのメールボックスは、アラームメッセージを受信:
あなたのサービスは通常の操作を再開した後、アラームメッセージを送信する場合//は同様に、:
これまでのところプロメテウスは、監視、警報やメールボックスの成功の実装を展開しました。。。
--------この記事の最後に、これまで、読んでくれてありがとう--------