一、Prometheus基本介绍

Prometheus(由go语言开发)是一套开源的监控&报警&时间序列(按照时间排序)数据库的组合。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。它可以监控主机,服务,容器,支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

1.1、时间序列数据库的主要优点

时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

  • 性能好

关系型数据库对于大规模数据的处理性能糟糕,这一点可以从I/O上有明显的体现。使用NOSQL可以比较好的处理大规模数据,但是依然比不上时间序列数据库。

  • 存储成本低

由于采用的是metrics:key=value(标签:关键字=值)的数据存储方式,又使用了高效的压缩算法,平均消耗的存储成本在3.5个字节左右 ,所以比较节省存储空间 ,并且能有效降低IO

Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列数据,每隔30秒采集一次,保留60天,大概占用200多G的空间

1.2、Prometheus主要特征

  1. 多维度数据模型,可以通过多个维度对数据建模,也可以通过多个维度对数据进行查询

  2. 灵活的查询语言,提供灵活的PromQL查询方式,还提供了HTTP查询接口,可以很方便地结合Grafana等组件展示数据

  3. 不依赖分布式存储,支持单节点的本地存储。通过Prometheus自带的时序数据库,可以完成每秒百万级的数据存储,如果需要存储大量历史数据,还可以对接第三方的时序数据库

  4. 以HTTP方式,通过pull模型拉取时间序列数据,并提供了开放的指标数据标准

  5. 也可以通过中间网关支持push模型

  6. 这种推,拉监控其实就是主动和被动监控,默认情况下是以pull(拉)的方式,也就是监控主机去找被监控主机将数据要过来,如果要实现push(推)的方式需要中间网关的支持,这只是与zabbix的叫法不同而已

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

  8. 支持多种多样的图表和界面展示,可以使用第三方的工具来展示内容,如Grafana

1.3、Prometheus监控原理

  1. Prometheus Server负责定时在目标上抓取metrics(指标)数据,

  2. 每个抓取目标[主机、服务]都需要暴露一个HTTP服务接口用于Prometheus定时抓取。也就是说prometheus会将获取到的监控数据打包成一个可访问的web页面,通过访问指定的url来确定主机的状态

Pull方式的优势是能够自动进行上游监控和水平监控,配置更少,更容易扩展,更灵活,更容易实现高可用。简单来说就是Pull方式可以降低耦合。由于在推送系统中很容易出现因为向监控系统推送数据失败而导致被监控系统瘫痪的问题。因为如果同一时间有很多被监控主机都把数据推送给监控主机的话,就很可能导致监控主机处理不过来,所以通过Pull方式,被采集端无需感知监控系统的存在,完全独立于监控系统之外,这样数据的采集完全由监控系统控制。

1.4、Prometheus配置文件六个大配置段的含义

prometheus配置文件各个大配置段

  • scrape_configs 采集配置段 做采集器

  • rule_files 告警、预聚合配置文件段

  • remote_read 远程查询段

  • remote_write 远程写入段

  • alerting: Alertmanager信息段

二、prometheus Grafana数据展示及告警

Grafana是一个操作性仪表板,用于可视化和监控数据。它提供了一个强大的平台,可以将多个数据源的数据集成到一个统一的界面中。Grafana支持各种数据源,包括Prometheus、InfluxDB、Elasticsearch等。它还提供了丰富的可视化选项,可以创建漂亮而功能强大的仪表板。Grafana还具有灵活的告警功能,可以根据自定义规则发送通知。无论是在云端还是本地部署,Grafana都是一个非常有用的工具,可以帮助用户实现全面的监控和可视化需求。

2.1、部署grafana

grafana安装

软件包获得

官方网站: https://grafana.com/

物理主机部署

软件包安装

#yum安装
sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.3.1-1.x86_64.rpm

服务启动

#服务启动
[root@grafana ~]# systemctl enable grafana-server
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
[root@grafana ~]# systemctl start grafana-server

#验证启动
[root@grafana ~]# lsof -i :3000
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 17154 grafana    8u  IPv6  53939      0t0  TCP *:hbci (LISTEN)

grafana启动成功后,可以通过页面访问到grafana页面

在浏览器中输入http://IP或者域名:3000

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐