Prometheus学习
Prometheus基础篇
1.什么是 Prometheus?
Prometheus 是一个开源的系统监控和警报工具包,最初由 SoundCloud 开发。它是一个高度可靠、可扩展的监控系统,尤其适用于构建基于容器的分布式应用程序。Prometheus 使用时间序列数据库来存储由应用程序和基础设施生成的度量数据,并提供了强大的查询语言 PromQL 用于数据分析。
2.Prometheus 的主要特点
- 多维数据模型:通过度量名称和键/值对来标识时间序列。
- 灵活的查询语言 PromQL:允许复杂的数据提取和分析。
- 无依赖的单服务器节点:不需要分布式存储,适合单节点部署。
- 时间序列数据存储:采用拉取模型,从目标端点定期获取数据。
- 支持多种导出器:可以监控不同类型的服务和系统。
- 图形和仪表板支持:与 Grafana 等工具集成,提供数据可视化。
3.Prometheus 的架构
Prometheus 的架构包括以下组件:
Prometheus Server:主要负责抓取和存储时间序列数据,并处理 PromQL 查询。
Exporters :用于暴露应用程序和服务的指标。
例如:Node Exporter 用于暴露操作系统指标,MySQL Exporter 用于暴露 MySQL 数据库指标。
Pushgateway:允许短命的批处理作业将指标推送到 Prometheus。
Alertmanager:处理 Prometheus 服务器生成的警报,支持去重、分组和路由。
客户端库:用于在应用程序中生成自定义指标。
其他服务:如 Grafana 用于数据可视化。
4.工作原理
抓取数据:Prometheus 通过 HTTP 拉取方式定期从配置的目标端点抓取数据。
存储数据:抓取到的时间序列数据存储在本地磁盘。
查询数据:用户可以通过 PromQL 查询数据,进行实时数据分析和历史数据回溯。
生成警报:根据预定义的规则生成警报,并将这些警报发送到 Alertmanager。
数据可视化:通过 Grafana 等工具,将数据以图表等形式展示。
抓取数据:Prometheus 通过 HTTP 拉取方式定期从配置的目标端点抓取数据。
存储数据:抓取到的时间序列数据存储在本地磁盘。
查询数据:用户可以通过 PromQL 查询数据,进行实时数据分析和历史数据回溯。
生成警报:根据预定义的规则生成警报,并将这些警报发送到 Alertmanager。
数据可视化:通过 Grafana 等工具,将数据以图表等形式展示。
5.安装和配置
下载Prometheus:
1
2
3
4wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
tar xvf prometheus-2.30.0.linux-amd64.tar.gz
cd prometheus-2.30.0.linux-amd64启动Prometheus
1
2./prometheus --config.file=prometheus.yml
配置Prometheus
在
prometheus.yml
文件中配置抓取目标和警报规则。例如:1
2
3
4
5
6
7
8global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']备注:targets:[‘目标主机地址或IP:端口’]
6.使用 Prometheus 监控服务
安装并配置 Exporter
例如,使用 Node Exporter 监控操作系统指标:
下载 Node Exporter:
1
2
3
4wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvf node_exporter-1.2.2.linux-amd64.tar.gz
cd node_exporter-1.2.2.linux-amd64启动 Node Exporter:
1
2./node_exporter
在
prometheus.yml
文件中添加 Node Exporter 目标:1
2
3
4
5scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']备注:targets:[‘存放Node Exporter的主机地址:(默认端口)9100’]
补充:
下载地址:
https://prometheus.io/download/
安装配置完Prometheus,将下面的远程主机配置到Prometheus.yaml文件内,浏览器访问http://localhost:9090/即用
远程监控:
根据被监控的主机系统下载对于的exporter程序(不纳入监控指标之内),将xxx_exporter导出器下载安装到远程被监控的主机上,解压完成并启动成功标志:
1 | ts=2024-08-04T09:30:24.858Z caller=tls_config.go:313 level=info msg="Listening on" address=[::]:9100 |
再验证是否已经成功:
1 | curl http://“当前主机的IP地址”:9100/metrics |
返回部分结果:
1 | # TYPE node_xfs_vnode_release_total counter |
关闭防火墙
1 | #权限不够使用sudo |
配置防火墙规则
1 | #一旦 firewalld 启动,你可以配置规则以允许或阻止特定的流量: |
这样你就可以放心食用Prometheus了!!