Web开发

首页 » 常识 » 诊断 » Docker环境部署Prometheus
TUhjnbcbe - 2021/7/6 0:02:00
白癜风好治疗吗 http://news.39.net/bjzkhbzy/180529/6288655.html
一、Prometheus简介

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。

Prometheus是使用Go语言开发的,是GoogleBorgMon监视系统的开源版本。年,Google在Linux基金会的领导下创立了CloudNativeComputingFoundation,并将Prometheus列为其第二大开源项目。Prometheus当前在开源社区中非常活跃。Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取群集性能数据。)与更完整和更全面的功能相比。Prometheus的性能也足以支持数以万计的集群。

1.系统架构图2.基本原理

Prometheus的基本原理是通过HTTP协议定期捕获受监视组件的状态。只要提供相应的HTTP接口,任何组件都可以访问监视。不需要SDK或其他集成过程。这非常适用于虚拟化环境监视系统,例如VM,Docker,Kubernetes等。输出监视的组件信息的HTTP接口称为导出器。当前,Internet公司的大多数常用组件都具有可以直接使用的导出程序,例如Varnish,Haproxy,Nginx,MySQL,Linux系统信息(包括磁盘,内存,CPU,网络等)。

常规工作流程是:

Prometheus服务器定期从已配置的作业或导出器中提取指标,或从Pushgateway接收指标,或从其他Prometheus服务器中提取指标。

Prometheus服务器在本地存储收集的指标并运行定义的alert.rules来记录新的时间序列或将警报推送到Alertmanager。

Alertmanager根据配置文件处理收到的警报并发出警报。

在Grafana图形界面中,直观地查看收集的数据。

3.Prometheus的特性

多维数据模型。

灵活的查询语言。

在不依赖分布式存储的情况下,单个服务器节点是自治的。

时间序列数据是通过基于HTTP的pull方法收集的。

时间序列数据可以通过中间网关推送。

通过服务发现或静态配置发现目标服务对象。

支持各种图表和界面显示,例如Grafana等。

4.Prometheus的组件

PrometheusServer主要负责数据收集和存储,并提供对PromQL查询语言的支持。

Alertmanager警报管理器,用于发出警报。

推送网关支持中间网关,该网关主动推送临时作业的指示器。

导出程序HTTP接口,用于输出受监视的组件信息。

Grafana监视数据显示在WebUI上。

5.服务发现

由于Prometheus通过Pull主动获取监视数据,也就是说,它每隔几秒钟就会从每个目标收集指标。因此,您需要手动指定监视节点列表。当受监视的节点数增加时,每次添加节点时都需要更改配置文件。尽管您可以使用该界面来热更新配置文件,但这仍然很麻烦。这时,您需要通过服务发现(serviceDiscovery,SD)机制来解决。

Prometheus支持多种服务发现机制,这些机制可以自动获取要收集的目标。服务发现机制包括:azure,consul,dns,ec2,openstack,文件,gce,kubernetes,马拉松,triton,zookeeper(神经,服务器集),配置方法可参考手册的配置页面。可以说SD机制非常丰富,但是由于开发资源有限,因此不再开发新的SD机制,仅维护基于文件的SD机制。鉴于我们现有的系统情况,我们选择了静态配置方法。

二、部署PrometheusServer1.使用官方镜像运行

由于Prometheus官方映像不具有热重装功能,并且时区相隔八个小时,因此我们选择自己制作映像。当然,您也可以使用正式映像预先创建Prometheus配置文件prometheus.yml和Prometheus规则文件rules.yml,然后将其安装到正式映像并使用以下命令运行它:

dockerrun-d-p:--name=prometheus\-v/root/prometheus/conf/:/etc/prometheus/\prom/prometheus

对于官方映像部署,请参阅我的文章:Docker部署Prometheus来实现

1
查看完整版本: Docker环境部署Prometheus