马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- 作者简介:我是团团儿,是一名专注于云盘算范畴的专业创作者,感谢各人的关注 •
- 座右铭: 云端筑梦,数据为翼,探索无穷大概,引领云盘算新纪元
- 个人主页:团儿.-CSDN博客
目次
媒介:
正文:
Prometheus(普罗米修斯)
实验环境:
须要摆设的组件:
##### 1)3个节点,全部摆设node-EXporter,和cAdvisor.
//摆设node-EXporter,网络硬件和体系信息。
验证:打开欣赏器验证结果。
//摆设安装cAdvisor,网络节点容器信息。
摆设完成之后,打开欣赏器验证。
##### 2)在docker01上摆设Prometheus Server服务。
//重新运行prometheus容器。
欣赏器访问验证。
##### 3)在docker01上,摆设grafana服务,用来展示prometheus网络到的数据。
欣赏器访问验证:
设置Grafana,添加数据泉源(prometheus)
点击“DATA SOURCES”
选择“Prometheus”
选中一款模板,然后,我们有2种方式可以套用这个模板。
**第一种方式:通过JSON文件使用模板。**
**第二种导入模板的方式**:
grafana常用监控 模板
1、监控 物理机/捏造机ID(Linux)
2、监控 物理机/捏造机ID(windows)
3、监控容器ID
4、监控数据库ID
5、监控网站大概协议端口ID
设置AlertManager
简单先容一下重要设置的作用:
设置如下:
[root@docker1 ~]#
修改 AlertManager 启动下令,将本地 alertmanager.yml 文件挂载到容器内指定位置
### Prometheus 设置 AlertManager 告警规则
PS:该 rules 目的是监测 node 是否存活
然后,修改 prometheus.yml 设置文件,添加 rules 规则文件
此时在prometheus主页上可以看到相应规则
关闭某个node触发报警发送 Email
很开心和各人分享Prometheus的相干内容哦~
本实验所要用到的镜像在 ↓↓↓
通过网盘分享的文件:prometheus111
链接: 提取码: wudd
媒介:
随着云盘算和容器化技能的飞速发展,Docker已经成为当代软件开辟和摆设不可或缺的一部分。然而,随着Docker容器的广泛应用,怎样高效地监控和管理这些容器成为了新的挑衅。
在浩繁监控工具中,Prometheus依附其强盛的监控本事、机动的告警机制以及丰富的数据可视化功能,徐徐成为Docker监控范畴的佼佼者。Prometheus不但可以实时监控Docker容器的运行状态、资源使用环境等关键信息,还可以对非常环境举行实时告警,为运维职员提供了极大的便利。
本文档将详细先容怎样使用Prometheus对Docker举行高效监控。我们将从Prometheus的根本概念入手,徐徐深入解说其安装、设置、使用以及与其他工具的集成方法。同时,我们还将连合现实应用场景,分享一些实用的监控本事和最佳实践,资助读者更好地把握Prometheus在Docker监控中的应用。
盼望本文档可以大概为广大Docker运维职员提供一份实用的指南,助力各人更好地应对Docker监控的挑衅,提升体系的稳固性和可靠性。
正文:
Prometheus(普罗米修斯)
prometheus官方网站:https://prometheus.io/
Prometheus是由SoundCloud开辟的开源监控体系的开源版本。2016年,由Google发起的Linux基金会(Cloud Native Computing Foundation,CNCF)将Prometheus纳入其第二大开源项目。Prometheus在开源社区也非常生动
易管理性:
Prometheus: Prometheus焦点部分只有一个单独的二进制文件,可直接在本地工作,不依靠于分布式存储。
Nagios: 须要有专业的职员举行安装,设置和管理,而且过程很复杂。
业务数据相干性:
Prometheus:监控服务的运行状态,基于Prometheus丰富的Client库,用户可以轻松的在应用步伐中添加对Prometheus的支持,从而让用户可以获取服务和应用内部真正的运行状态。
Nagios:大部分的监控本事都是围绕体系的一些边沿性的题目,重要针对体系服务和资源的状态以及应用步伐的可用性。
别的Prometheus还存在以下优点:
高效:单一Prometheus可以处置处罚数以百万的监控指标;每秒处置处罚数十万的数据点。
易于伸缩:通过利勤劳能分区(sharing)+联邦集群(federation)可以对Prometheus举行扩展,形成一个逻辑集群;Prometheus提供多种语言的客户端SDK,这些SDK可以快速让应用步伐纳入到Prometheus的监控当中。
精良的可视化:Prometheus除了自带有Prometheus UI,Prometheus还提供了一个独立的基于Ruby On Rails的Dashboard办理方案Promdash。别的最新的Grafana可视化工具也提供了完备的Proetheus支持,基于Prometheus提供的API还可以实现本身的监控可视化UI。
实验环境:
| 主机名称 | IP地点 | 安装组件 |
| -------- | ------------- | -------------------------------------------------- |
| docker1 | 192.168.8.10 | NodeEXporter、cAdvisor、Prometheus Server、Grafana |
| docker2 | 192.168.8.20 | NodeEXporter、cAdvisor |
| docker3 | 192.168.8.30 | NodeEXporter、cAdvisor |
全部关闭防火墙,禁用selinux。
须要摆设的组件:
Prometheus Server: 普罗米修斯的主服务器。
NodeEXporter: 负责网络Host硬件信息和使用体系信息。
cAdvisor: 负责网络Host上运行的容器信息。
Grafana: 负责展示普罗米修斯监控界面。
##### 1)3个节点,全部摆设node-EXporter,和cAdvisor.
//摆设node-EXporter,网络硬件和体系信息。
- docker run -d -p 9100:9100 --name exporter -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)($|/)"
复制代码 PS: 留意,这里使用了--net=host,如许Prometheus Server可以直接与Node-EXporter通讯。
验证:打开欣赏器验证结果。
//摆设安装cAdvisor,网络节点容器信息。
- 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
复制代码 摆设完成之后,打开欣赏器验证。
##### 2)在docker01上摆设Prometheus Server服务。
在摆设prometheus之前,我们须要对它的设置文件举行修改,以是我们先运行一个容器,先将其设置文件拷贝出来。
- docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
- docker cp prometheus:/etc/prometheus/prometheus.yml /root
复制代码- 'localhost:9090','localhost:8080','localhost:9100','192.168.8.30:8080','192.168.8.30:9100','192.168.8.40:8080','192.168.8.40:9100'
复制代码
PS: 这里指定了prometheus的监控项,包罗它也会监控本身网络到的数据。
修改设置文件后删撤除前面开启的prometheus容器,由于我们已经得到设置文件并按照现实修改了,反面须要重新开启新的容器
//重新运行prometheus容器。
- docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
复制代码 欣赏器访问验证。
- http://192.168.8.20:9090/targets
复制代码 PS: 这里可以大概检察到我们各个监控项。
##### 3)在docker01上,摆设grafana服务,用来展示prometheus网络到的数据。
- mkdir /grafana-storage
- chmod 777 -R /grafana-storage/
- docker run -d -p 3000:3000 --name grafana -v /grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana
复制代码 欣赏器访问验证:
- http://192.168.8.20:3000/login
复制代码 用户名:admin
暗码:123.com
设置Grafana,添加数据泉源(prometheus)
点击“DATA SOURCES”
选择“Prometheus”
Name 选择Prometheus
URL 填写http://192.168.8.20:9090
拉到底点击 Save & Test
PS: 看到这个提示,阐明prometheus和grafana服务的是正常毗连的。
此时,固然grafana网络到了数据,但怎么表现它,仍然是个题目,grafana支持自界说表现信息,不外要自界提及来非常贫苦,不外幸亏,grafana官方为我们提供了一些模板,来供我们使用。
grafana官网: https://grafana.com/
Grafana
Dashboards
Prometheus
Node Exporter for full
Download JSON
选中一款模板,然后,我们有2种方式可以套用这个模板。
**第一种方式:通过JSON文件使用模板。**
下载完成之后,来到grafana控制台
http://192.168.8.20:3000/datasources
点击左侧“+”,import ,upload JSON file
**第二种导入模板的方式**:
可以直接通过模板的ID 号。
11074 #监控节点信息
10619 #监控docker容器
grafana常用监控模板
1、监控物理机/捏造机ID(Linux)
8919
9276
1860
12633
2、监控物理机/捏造机ID(windows)
10467
10171
2129
3、监控容器ID
3146
8685
10000
8588
315
4、监控数据库ID
7362
10101
5、监控网站大概协议端口ID
http监控某个网站
icmp监控某台呆板
tcp监控某个端口
dns监控dns
9965
Nginx
9614
2949
设置AlertManager
接下来,我们须要启动 AlertManager 来担当 Prometheus 发送过来的报警信息,并实验各
种方式的告警。同样以 Docker 方式启动 AlertManager,最简单的启动下令如下
- docker run --name alertmanager -d -p 9093:9093 prom/alertmanager:latest
- docker cp alertmanager:/etc/alertmanager/alertmanager.yml /root
复制代码 这里 AlertManager 默认启动的端口为 9093,启动完成后,欣赏器访问 http://<IP>:9093 可以看到默认提供的 UI 页面,不外现在是没有任何告警信息的,由于我们还没有设置报警规则来触发报警。
URL:http://192.168.8.60:9093
AlertManager 设置邮件告警
AlertManager 默认设置文件为 alertmanager.yml,在容器内路为/etc/alertmanager/alertmanager.yml
简单先容一下重要设置的作用:
- global: 全局设置,包罗报警办理后的超时时间、SMTP 相干设置、各种渠道关照的 API 地点等等。
- route: 用来设置报警的分发计谋,它是一个树状结构,按照深度优先从左向右的序次举行匹配。
- receivers: 设置告警消息担当者信息,比方常用的 email、wechat、slack、webhook 等消息关照方式。
- inhibit_rules: 克制规则设置,当存在与另一组匹配的警报(源)时,克制规则将禁用与一组匹配的警报(目的)。
那么,我们就来设置一下使用 Email 方式关照报警信息,这里以 QQ 邮箱为例,
固然在设置QQ邮箱之前,须要我们登录QQ邮箱,打开SMTP服务,并获取授权码。
设置如下:
[root@docker1 ~]#
- global:
- resolve_timeout: 5m
- smtp_from: '收件邮箱'
- smtp_smarthost: 'smtp.qq.com:465'
- smtp_auth_username: '收件邮箱'
- smtp_auth_password: '认证密码'
- smtp_require_tls: false
- smtp_hello: 'qq.com'
- route:
- group_by: ['alertname']
- group_wait: 5s
- group_interval: 5s
- repeat_interval: 5m
- receiver: 'email'
- receivers:
- - name: 'email'
- email_configs:
- - to: '收件邮箱'
- send_resolved: true
- inhibit_rules:
- - source_match:
- severity: 'critical'
- target_match:
- severity: 'warning'
- equal: ['alertname', 'dev', 'instance']
复制代码 PS: 以上模板中涉及的QQ邮箱换成本身的即可,授权码也一样。
修改 AlertManager 启动下令,将本地 alertmanager.yml 文件挂载到容器内指定位置
[root@docker1 ~]#
- docker rm -f alertmanager
复制代码 [root@docker01 ~]#
- docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager
复制代码 ### Prometheus 设置 AlertManager 告警规则
接下来,我们须要在 Prometheus 设置 AlertManager 服务地点以及告警规则,新建报警规则文件 node-up.rules 如下
- mkdir -p /root/prometheus/rules
- cd /root/prometheus/rules/
复制代码 [root@docker1 rules]#
- groups:
- - name: node-up
- rules:
- - alert: node-up
- expr: up{job="prometheus"} == 0
- for: 15s
- labels:
- severity: 1
- team: node
- annotations:
- summary: "{{ $labels.instance }} 已停止运行超过 15s!"
复制代码 PS:该 rules 目的是监测 node 是否存活
expr 为 PromQL 表达式验证特定节点 job="node-exporter" 是否在世,
for 表现报警状态为 Pending 后等候 15s 变成 Firing 状态,一旦变成 Firing 状态则将报警发送到 AlertManager,
labels 和 annotations 对该 alert 添加更多的标识阐明信息,全部添加的标签注解信息,以及 prometheus.yml 中
该 job 已添加 label 都会主动添加到邮件内容中,更多关于 rule 详细设置可以参考
https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule
然后,修改 prometheus.yml 设置文件,添加 rules 规则文件
- alerting:
- alertmanagers:
- - static_configs:
- - targets:
- - 192.168.8.20:9093
- rule_files:
- - "/usr/local/prometheus/rules/*.rules"
复制代码 PS:这里 rule_files 为容器内路径,须要将本地 node-up.rules 文件挂载到容器内指定路径,修改 Prometheus 启动下令如下,并重启服务。
- docker rm -f prometheus
- 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
复制代码 此时在prometheus主页上可以看到相应规则
- http://192.168.8.20:9090/targets
复制代码 Status
Rules
关闭某个node触发报警发送 Email
等待您的关注~
|