zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Prometheus介绍与运行-(1)

2023-03-14 22:50:16 时间

最火的开源监控平台Prometheu

今天开始我们了解一下从CNCF中毕业的第二位学生,Prometheus(普罗米修斯)同学,prometheus是一个开源系统监控和警报工具,最初是在SoundCloud建立的。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个非常活跃的开发者和用户社区。它现在是一个独立的开放源码项目,并且独立于任何公司,为了强调该点并澄清项目的治理结构,Prometheus在2016年加入了云计算基金会,成为继Kubernetes之后的第二个托管项目。Prometheus是用来收集数据的,同时本身也提供强大的查询能力,结合Grafana即可以监控并展示出想要的数据,此外除了自身存储的时序数据之外,prometheus还支持第三方的数据持久化操作,这些我们会在后面慢慢的讲解。

Prometheus的架构

图中我们可以看出哪些信息:

1. prometheus是通过TSDB时序数据进行存储的,并且支持持久化数据的存储

2. prometheus收集指标数据的模式是通过pull模式获取的指标

3. 自定义的服务数据指标可以通过push模式将指标发送给pushgateway,然后通过pull模式发送给prometheus

4. prometheus通过Push模式将告警的信息推送给alertmanager

5. alertmanager支持pagerduty, email,slack等等通知媒介

6. Prometheus还有web界面化

还有很多的信息,需要我们一步步的研究发现。

Prometheus的特征

- 多维度数据模型

- 灵活的查询语言 (PromQL)

- 不依赖分布式存储,单个服务器节点是自主的

- 以HTTP方式,通过pull模型拉去时间序列数据

- 也通过push模式将自定义的数据指标推送到中间网关pushgateway

- 通过服务发现或者静态配置,来发现目标服务对象

- 支持多种多样的图表和界面展示,这里当然少不了Grafana了

Prometheus组件

Prometheus生态包括了很多组件,它们中的一些是可选的:

- Prometheus Server抓取和存储时间序列数据

- 各种exporter负责检测应用程序代码

- 支持短生命周期的PUSH网关

- 基于Rails/SQL仪表盘构建器的GUI

- 拥有独立的警告管理器 (AlertManaager)

- PromQL命令行查询工具

- 以及其他

运行Prometheus

  • 运行prometheus2.4.0
configure_file=/apps/prometheus/conf
prometheus_data=/data/prometheus
mkdir $configure_file $prometheus_data
chown -R nobody:nogroup /data/prometheus
chown -R nonody:nogroup /apps/prometheus/conf
docker run -d --name prometheus --restart=always -v $(configure_file):/etc/prometheus/ -v $(prometheus_data):/prometheus -p 9090:9090 prom/prometheus:v2.4.0 --config.file=/etc/prometheus/prometheus.yml
  • 运行Prometheus2.6.0
docker run -d 
           --name prometheus 
           -p 9090:9090 prom/prometheus:v2.6.0 
           --web.enable-lifecycle 
           --web.enable-admin-api 
           --web.console.templates="/prometheus/consoletest" 
           --web.page-title="运维监控系统" 
           --storage.tsdb.path=/prometheus/data 
           --storage.tsdb.retention=15d 
           --log.format=json

在不同的版本系统中,prometheus的配置选项也有不同。这是一个主意的地方,在prometheus中,存在`--web.enable-lifecycle`选项参数,支持POST的方式热加载Prometheus的配置文件。运行起来就可以通过http://ip:9090进行访问prometheus的web 页面了,当然还可以结合Grafana进行数据展示。

展示一些效果图,这是添加的一个监控exporter

可以对监控的服务进行分组等等

上图是一些数据趋势图等等,下次我们继续深入分享