陈奇网络工作室

码头工人监控——普罗米修斯

云计算

博文大纲:

一码头工人的监控

二、普罗米修斯简介

三、普罗米修斯组成及架构

四、部署普罗米修斯

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

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3