云计算
博文大纲:
一码头工人的监控
二、普罗米修斯简介
三、普罗米修斯组成及架构
四、部署普罗米修斯
1)环境准备
2)部署普罗米修斯
3)配置佩奥米修斯监控实现报警
一码头工人的监控
(1)码头工人自带的监控命令
[root @ localhost ~]# docker top WordPress _ word prss _ 1//查看容器的使用状态
PPID时间电传打字机(teletypewriter)时间煤矿管理局
root 5601 5569 0 20:53?00:00:00阿帕奇2-地下
33 6073 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6074 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6075 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6076 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6077 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6096 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6098 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6099 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6100 5601 0 20:54 ?00:00:00阿帕奇2-地下
33 6155 5601 0 20:57 ?00:00:00阿帕奇2-地下
[root @ localhost ~]# docker stats WordPress _ word prss _ 1
[root@localhost ~]# docker日志wordpress_wordprss_1
//这三条都是容器本身自带的监控命令
(2)系统摘要
[root @ localhost ~]# docker run-it-RM-name sysdig-privileged=true-volume=/var/run/docker。sock:/host/var/run/docker。sock-volume=/dev:/host/dev-volume=/proc:ro-volume=/boot:/host/boot:ro-volume=/lib/modules:/host/lib/modules:ro-volume=/usr:/host/usr:ro sysdig/sysdig
//创建一个容器并自动进入容器中
//- rm:随着退出容器而被删除;
//-特权=真:赋予特殊权限;
root@711dbeb59fdd:/# csysdig //执行这条命令
如图:
图中可以使用键盘和鼠标进行操作!
(3)范围
[root @ localhost ~]# curl-L git.io/scope-o/usr/local/bin/scope
[root @ localhost ~]# chmod x/usr/local/bin/scope//下载安装脚本
[root @ localhost ~]# scope launch//以容器方式启动
……………………
织法作用域正在侦听以下网址:
* http://172.21.0.1:4040/
* http://192.168.122.1:4040/
* http://172.22.0.1:4040/
* http://172.20.0.1:4040/
* http://172.18.0.1:4040/
* http://172.19.0.1:4040/
* http://192.168.1.1:4040/
//根据末尾的提示信息进行访问
如图:
根据图中的提示,自行可以点击进行测试!
如果要监控两台的话:主机名必须进行区分方法如下:
[root @ dockerA ~]# curl-L git.io/scope-o/usr/local/bin/scope
[root @ dockerA ~]# chmod x/usr/local/bin/scope
[root @ dockerA ~]# scope launch 192。168 .1 .1 192 .168 .1 .2//首选指定本地的IP,再指定对方的互联网协议(互联网协议)
[root @ dockera ~]# dockere un-itd-name httphtpd//运行一个容器进行测试。
[root @ dockerB ~]# curl-L git.io/scope-o/usr/local/bin/scope
[root @ dockerB ~]# chmod x/usr/local/bin/scope
[root@dockerB ~]#范围启动192.168.1.2 192.168.1.1
[root @ dockerB ~]# docker run-itd-name nginx nginx
访问(dockerA或dockerB就足够了)测试:
二、普罗米修斯简介
Prometheus是一个开源的系统监控和警报框架。它以给定的时间间隔从配置的目标收集指示器,评估规则表达式,显示结果,并在发现某些条件为真时触发警报。
作为新一代监控框架,Prometheus具有以下特点:
强大的多维数据模型;
(1)时间序列数据通过度量名称和键值对来区分;
(2)所有度量都可以设置任意多维标签;
(3)数据模型更加任意,不需要刻意设置为用点分隔的字符串;
(4)数据模型可以聚合、切割、切片;
(5)支持双精度浮点型,标签可设置为全unicode(统一码);
灵活强大的查询语句:在同一个查询语句中,多个度量可以相乘、相加、相联,可以取小数;
易于管理:独立于分布式存储;
使用拉模式收集时间序列数据;
Push gateway可用于将时序数据推送到Prometheus服务器;
监控目标;可以通过服务发现或静态配置获得;
有各种各样的可视化图形界面;
易于扩展和收缩。
三。普罗米修斯的构图和建筑
普罗米修斯包含许多组件,其中许多是可选的。常用的组件有:
普罗米修斯服务器:用于收集和存储时间序列数据;
客户端库(Client Library):客户端库,为被监控的服务生成相应的度量,并暴露给Prometheus server;
推送网关:主要用于短期工作。因为这种乔布斯存在的时间很短,可能在普罗米修斯来拉之前就消失了。为此,这次乔布斯可以直接推送自己的度量标准;到普罗米修斯服务器;
出口商:用于向Prometheus公开现有第三方服务的指标;
Alertmanager:接收到普罗米修斯服务器的警报后,会删除重复数据,分组后路由到对端发出警报;
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
普罗米修斯官方文件中的架构图:
在官方架构图中,主要模块包括:Prometheus Server、Exporters、Push Gateway、PromQL、Alert Manager和图形界面;
一般的工作流程是:
(1)Prometheus服务器定期从已配置的作业或导出器中拉取指标,或者从Pushgateway接收指标,或者从其他Prometheus服务器中拉取指标;
(2)Prometheus server将收集到的指标存储在本地,并运行定义好的alert.rules记录新的时间序列或将警报推送给Alertmanager
(3)报警管理器根据配置文件处理收到的报警并发出报警;
(4)在图形界面中可视地收集数据;
第四,部署普罗米修斯
1)环境准备
注意:以上三台服务器必须具备最基本的docker环境,以上环境的docker版本为18.09.0!
上述环境所需的组件功能如下:
普罗米修斯服务器:普罗米修斯的主服务器(端口:9090);
NodeEXporter:负责收集主机硬件信息和操作系统信息(端口:9100);
CAdvisor:负责收集主机上运行的容器信息(端口:8080);
Grafana:负责显示普罗米修斯监控界面(3000);
Alertmanager:用于接收Prometheus发送的报警信息,并执行设定的报警模式和报警内容(也部署在dockerA主机上,端口:9093);
组件之间的关系:NodeEXporter和cAdvisor负责收集信息并发送给普罗米修斯服务器,再由普罗米修斯服务器交给Grafana进行图形显示。如果需要报警,prometheus将向Alertmanager组件发送信息!
实验环境中,为了简单起见,防火墙和SELinux都要关闭,实际环境中要打开相应的端口!
2)部署普罗米修斯
(1)运行节点导出器容器。
NodeEXporter主要负责收集主机硬件信息和操作系统信息!
[root @ dockera ~]# docker run-d-name node-p 9100:9100-v/proc:/host/proc-v/sys:/host/sys-v/:/rootfs-net=host prom/node-exporter-path . procfs/host/proc-path . sys fs/host/sys-collector . file system . ignored-mount-points ^/(sys|proc|dev|host|etc)($|/)
//使用prom/node-exporter映像创建一个名为node的容器,用来收集硬件和系统信息;
//-net=host表示Prometheus服务器可以直接与node-exporter通信;
//并映射9100端口。
执行完成后,客户端使用浏览器进行访问,如下图所示:
访问以上页面表明组件node-exporter已经成功安装!
由于这个NodeEXporter组件需要在三个docker主机上,所以上面的命令需要在另外两个主机上执行。执行完成后,使用您的浏览器访问测试!
(2)运行cAdvisor容器。
CAdvisor主要负责收集主机上运行的容器信息!
[root @ dockerA ~]# 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=CAD visor-net=host Google/CAD visor
客户端访问测试:
访问以上页面意味着cAdvisor的组件已经成功安装!
同样,这个cAdvisor组件也需要安装在所有三台docker主机上!因此,上述命令也需要在另外两台主机上执行。执行完成后,自测!
(3)运行Prometheus服务器容器(在dockerA主机上执行即可!)
普罗米修斯是普罗米修斯的主服务器!
在部署Prometheus之前,需要修改它的配置文件,所以先运行一个Prometheus容器,将其配置文件复制到本地,方便修改。
[root @ dockerA ~]# docker run-d-p 9090:9090-name Prometheus-net=host prom/Prometheus
//运行Prometheus容器以在本地获取其配置文件。
[root @ dockerA ~]# docker CP Prometheus:/etc/Prometheus/Prometheus . yml。
//将Prometheus容器中的主配置文件复制到本地。
[root @ dockera ~]# vimpremetius.yml//Edit主配置文件
-targets:[\ \ \ ' localhost:9090 \ \ \ '\\\'localhost:8080\\\ '\\\'localhost:9100\\\ '\\'192.168.1.2:8080\\\ '\\'192.168.1.2:9100\\\ '\\'192.168.1.3:8080\\\ '\\'192.168。
//此项本来就存在,只需要修改!
//用于指定三个端口9090、8080、9100,用于监控本机,并添加两个端口8080、9100,用于另外两个docker主机。
//端口8080正在运行cAdvisor服务。
//9100端口正在运行节点导出器服务。
//9090端口正在运行Prometheus服务。
[root @ docker a ~]# docker RM Prometheus-f//删除刚刚运行的容器。
普罗米修斯
[root @ dockerA ~]# docker run-d-p 9090:9090-name Prometheus-net=host-v/root/Prometheus . yml:/etc/Prometheus/Prometheus . yml prom/Prometheus
//重新运行prometheus容器,并将新修改的配置文件装入容器。
客户端访问测试:
(4)运行grafana容器(在dockerA主机上运行就行!)
Grafana主要负责显示普罗米修斯监控界面,为我们提供一个很好的图形界面!
[root @ dockerA ~]# mkdir grafana-存储
[root @ dockerA ~]# chmod 777-R grafana-存储
//创建一个目录,给777权限。
[root @ dockerA ~]# docker run-d-p 3000:3000-name graf ana-v/root/graf ana-storage:/var/lib/graf ana-e GF _ SECURITY _ ADMIN _ PASSWORD=123 . com graf ana/graf ana
////-e "-e "选项表示修改容器内部的环境变量,将admin用户的密码改为123.com;
客户端访问测试:
以上配置完成后,我们需要配置它会以什么形式显示给我们。可以定制,但是很麻烦。我选择直接去grafana官网找现成的模板。如图所示:
有两种方法可以将grafana的官方模板导入到我们的grafana容器提供的网页中:
1)第一种方式:
在grafana官网选择自己喜欢的模板,点击进入,如图:
下载完成后,返回到自己搭建的grafana容器提供的网页,如下图所示:
但是如果你仔细观察,你会发现这个模板的一些信息是检测不出来的,那么这里就展示一个导入模板的方法。个人推荐用第二种方法!
2)第二种方式:
选择合适的模板后,记录其ID号,如图所示:
记录好模板的ID号后,返回到自己搭建的grafana容器提供的网页,如下图所示:
至此,web界面的监控部署完毕!
3)配置光电监测,实现报警。
普罗米修斯有几种报警方式,邮件、微信、钉钉等。在这种情况下,使用电子邮件报警。
(1)运行alertmanager容器。
Alertmanager组件主要用于接收Prometheus发送的报警信息,并执行设定的报警方式和报警内容;
只需在dockerA主机上部署它!该方法如下:
[root @ dockerA ~]# docker run-d-name alert manager-p 9093:9093 prom/alert manager
//随意运行一个容器,其目的是将容器中服务的配置文件拿到本地。
[root @ dockerA ~]# docker CP alert manager:/etc/alert manager/alert manager . yml。
//将altermanager服务的yml配置文件拿到本地。
[root @ dockera ~]# vialertmanager.yml//Edit配置文件
全球:
resolve_timeout: 5m
SMTP _ from:\ \ ' 1454295320 @ qq.com \ \ ' #发件人信息
SMTP _ smart host:\ \ \ ' SMTP . QQ . com:465 \ \ \ '
SMTP _ auth _ username:\ \ ' 1454295320 @ qq.com \ \ \ ' #收件人信息
SMTP _ auth _ password:\ \ ' gfuxsudyqyulbad \ \ ' # QQ邮箱生成的授权码。
smtp_require_tls: false
smtp_hello: \\\'qq.com\\\ '
路线:
Group _ by: [\ \' alertname \ \'] #采用默认组。
group_wait: 5s
分组间隔:5s
重复间隔:5m
收件人:\\\ '电子邮件\\\ '
接收器:
-名称:\\\ '电子邮件\\\ '
电子邮件_配置:
-收件人:\ \ ' 1454295320 @ qq.com \ \ \ '/发件人信息
Send_resolved: true //当容器恢复正常时,还会发送一封邮件。
禁止_规则:
-源匹配:
严重性:\\\ '严重\\\ '
目标匹配:
严重性:\\\ '警告\\\ '
equal: [\\\'alertname\\\ '\\\'dev\\\ '\\\'instance\\\']
//配置文件中需要修改的常见地方都做了注释。
alertmanager.yml配置文件中的第一级字段:
全局:全局配置(包括告警解析超时、SMTP相关配置、各种通道通知的API地址等新消息);
路由:用于设置告警分发策略;
接收者:配置报警信息接收者信息;
Suppress _ rules:限制规则配置。当有报警匹配另一组时,抑制规则将只用于一组匹配的报警;
[root @ dockera ~]# docker RM-f alertmanager//删除原来的alert manager容器。
[root @ dockerA ~]# docker run-d-name alert manager-p 9093:9093-v/root/alert manager . yml:/etc/alert manager/alert manager . yml prom/alert manager
//重新运行alertmanager容器,并将配置文件装入容器。
//建议使用docker ps | grep alertmanager来保证容器运行后的正常运行。
//如果配置文件写错了,那么这个容器就无法启动。
(2)配置alertmanager报警规则。
[root@dockerA ~]# mkdir -p普罗米修斯/rules cd普罗米修斯/rules
//创建一个目录来存储规则。
[root @ dockera规则]# vimnode-up.rules//Write规则
群组:
-name: node-up //自定义名称
规则:
-警报:节点启动
expr: up{job=prometheus}==0
//作业的名称必须与prometheus配置文件中的-job _ name: \ \' prometheus \ \ '相对应。
适用于:15秒
标签:
严重性:1
团队:节点
注释:
摘要:{{ $labels.instance }}已停止运行超过15s!
可以根据上面的配置文件进行修改。如果想自己编写报警规则,可以参考其官方文档,如下图所示:
(3)联合普罗米修斯
[root @ dockerA ~]# vim Prometheus . yml
8警报:
9个警报管理器:
10 -静态配置:
11 -目标:
12 - 192.168.1.1:9093 //此行将原本的内容更改为警报管理器容器的互联网协议(互联网协议)端口
13
14 #加载规则一次,并根据全局\\\'evaluat ion_interval\\\ '定期对其进行评估。
15个规则文件:
16-/usr/local/Prometheus/rules/* .规则//这一行需要手动添加,指定容器内的路径
[root @ dockerA ~]# docker RM-f Prometheus//修改完配置为文件后,需要将容器删除,重新运行一台新的容器
[root @ dockerA ~]# docker run-d-p 9090:9090-name Prometheus-net=host-v/root/Prometheus。yml:/etc/普罗米修斯/普罗米修斯。yml-v/root/Prometheus/rules/node-up。规则:/usr/local/Prometheus/rules/node-up。规则舞会/普罗米修斯
//指定步骤(2)编写的规则文件的路径,
为防止格式可能会出现错误,附上截图一张,如下:
至此,如果普罗米修斯页面中的目标有异常(比如宕机),那么就会给你的邮箱发送报警信息。
我手动停掉容器,收到的邮件如下:
为了追求美观,我们采取设置一下报警信息的模板!
(4)设置报警信息模板
[root@dockerA ~]# cd普罗米修斯
[root @ dockerA Prometheus]# mkdir警报管理器-tmpl
[root @ dockerA Prometheus]# CD警报管理器-tmpl/
[root @ dockerA Prometheus]# vim电子邮件。tmpl
{ {定义电子邮件。来自} } 1454295320 @ QQ。com { { end } }
{ {定义电子邮件。to } } 1454295320 @ QQ。com { { end } }
{{定义email.to.html } }
{{范围。通知}}
=========开始==========br
告警程序:普罗米修斯_alertbr
告警级别:{{ .Labels.severity }}级英国铁路公司
告警类型:{{ .Labels.alertname }}br
故障主机:{{ .Labels.instance }}br
告警主题:{{ .Annotations.summary }}br
触发时间:{ { .开始于。格式2019-08-04 16:58:15 } } br
=========end===========br
{{ end }}
{{ end }}
[root @ dockerA ~]# vim警报管理器。yml
全球:
resolve_timeout: 5m
SMTP _ from:\ \ \ ' 1454295320 @ QQ。com \ \ \ '
SMTP _智能主机:\ \ \ ' SMTP。QQ。com:465 \ \ \ '
SMTP _ auth _ username:\ \ \ ' 1454295320 @ QQ。com \ \ \ '
SMTP _ auth _ password:\ \ \ ' flnuwdktcbzwffag \ \ \ '
smtp_require_tls: false
smtp_hello: \\\'qq.com\\\ '
模板://添加此行
- \\\'/etc/alertmanager-tmpl/* .tmpl\\\' //指定容器中模板的路径
路线:
group_by: [\\\'alertname\\\']
group_wait: 5s
分组间隔:5s
重复间隔:5m
收件人:\\\ '电子邮件\\\ '
接收器:
-名称:\\\ '电子邮件\\\ '
电子邮件_配置:
-收件人:\\\'{{ template email.to }}\\\' //必须和模板中对应
html: \\\'{{模板email.to.html .}}\\\' //必须和模板中对应
send_resolved: true
禁止_规则:
-源匹配:
严重性:\\\ '严重\\\ '
目标匹配:
严重性:\\\ '警告\\\ '
equal: [\\\'alertname\\\ '\\\'dev\\\ '\\\'instance\\\']
[root @ dockerA ~]# docker RM警报管理器-f
//删除容器
[root @ dockerA ~]# docker run-d-name alert manager-p 9093:9093-v/root/alert manager。yml:/etc/alert manager/alert manager。yml-v/root/Prometheus/alert manager-tmpl:/etc/alert manager-tmpl prom/alert manager
//创建容器本地创建的模板文件
//创建完成后,确定容器是正常运行
至此,新的报警模板也生成了,如果以下容器有向下的,就会给你发送新的邮件,恢复正常后,也会发送邮件,同样,邮件中的内容格式是有误的,但是你可以正常接收到报警信息,若想要更改其报警模板,可以参考官方文档
邮箱收到的报警信息如下:
比原本的效果要好很多!就简单介绍一下这一个吧,有兴趣可以参考官网的文档,自行进行编写!
————————————本文到此结束,感谢阅读————————————
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn