博客内容总结于B站–林哥Linux
Prometheus是什么
Prometheus 和 Zabbix 都是两种流行的监控解决方案,都有各自的特点和适用场景。
Prometheus专为微服务和云原生架构设计,提供了强大的数据收集、查询和可视化功能。Zabbix 则在传统 IT 基础设施监控中表现出色。
架构概览
Prometheus 的架构设计为一个独立运行的时间序列数据库
(Time Serices Database),
核心组件
Prometheus主要包括以下组件:
1.'Prometheus Server':
负责定期从指定的目标(如服务器、应用)中拉取监控数据,存储在本地'时间序列数据库'中。
2.'Exporters':
每个服务都有相应的 Exporter,通常以 HTTP 端点的方式暴露服务的指标(如 CPU 使用率、内存占用),
收集监控样本数据,并以符合 Prometheus 的数据格式进行展示。
例如:
MySQL exporter 从MySQL数据库中采集各种性能指标,如查询性能、连接数、缓存命中率等
Redis Exporter 监控Redis实例的性能和状态,包括内存使用、客户端连接数、命令统计等
Node Exporter 收集Linux和其他类Unix系统的硬件和操作系统指标:CPU、内存、磁盘、网络使用情况等
Cadvisor 通常用于Kubernetes环境中,监控容器的资源消耗、性能以及状态。
3.'Alertmanager':
用于管理和发送报警。当满足预设报警条件时,会触发报警通知。
4.'Pushgateway':
用于处理短时任务的监控数据,这些任务运行时间短且可能结束时无法直接被 Prometheus 拉取。
可以使用中间网关推送给Prometheus时间序列,
5.'客户端库':
Prometheus 提供多种语言的客户端库(如 Go、Java、Python 等),允许开发者在应用代码中嵌入自定义监控指标。
6.'Web UI 和 Grafana':
Prometheus 自带基本的 Web UI 以查询数据和简单可视化,
Grafana 是更流行的第三方可视化工具,可以展示 Prometheus 的监控数据,生成丰富的监控仪表盘。
安装prometheus
使用docker compose安装prometheus,这里git clone的是林哥Linux的gitee仓库,快去Star吧。
git clone https://gitee.com/linge365/docker-prometheus.git
docker-compose up -d
root@k8s-master1:/data/docker-prometheus# docker-compose up -d
Creating network "dockerprometheus_monitoring" with driver "bridge"
Creating volume "dockerprometheus_prometheus_data" with default driver
Creating volume "dockerprometheus_grafana_data" with default driver
Pulling node_exporter (prom/node-exporter:v1.5.0)...
v1.5.0: Pulling from prom/node-exporter
22b70bddd3ac: Pull complete
....
Digest: sha256:39c642b2b337e38c18e80266fb14383754178202f40103646337722a594d984c
Status: Downloaded newer image for prom/node-exporter:v1.5.0
Pulling alertmanager (prom/alertmanager:v0.25.0)...
v0.25.0: Pulling from prom/alertmanager
b08a0a826235: Pull complete
....
Digest: sha256:fd4d9a3dd1fd0125108417be21be917f19cc76262347086509a0d43f29b80e98
Status: Downloaded newer image for prom/alertmanager:v0.25.0
Pulling cadvisor (google/cadvisor:latest)...
latest: Pulling from google/cadvisor
ff3a5c916c92: Pull complete
....
Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04
Status: Downloaded newer image for google/cadvisor:latest
Pulling prometheus (prom/prometheus:v2.37.6)...
v2.37.6: Pulling from prom/prometheus
4399114b4c59: Pull complete
225de5a6f1e7: Pull complete
Digest: sha256:92ceb93400dd4c887c76685d258bd75b9dcfe3419b71932821e9dcc70288d851
Status: Downloaded newer image for prom/prometheus:v2.37.6
Pulling grafana (grafana/grafana:9.4.3)...
9.4.3: Pulling from grafana/grafana
895e193edb51: Pull complete
....
Digest: sha256:76dcf36e7d2a4110c2387c1ad6e4641068dc78d7780da516d5d666d1e4623ac5
Status: Downloaded newer image for grafana/grafana:9.4.3
Creating alertmanager ...
Creating node-exporter ...
Creating cadvisor ...
Creating alertmanager
Creating node-exporter
Creating node-exporter ... done
Creating prometheus ...
Creating prometheus ... done
Creating grafana ...
Creating grafana ... done
web访问地址
应用 | 访问地址 | 备注 |
---|---|---|
prometheus | http://192.168.200.100:9090 | 无用户名和密码 |
grafana | http://192.168.200.100:3000 | admin/ |
altermanager | http://192.168.200.100:9093 | |
node-exporter | http://192.168.200.100:9100/metrics |
prometheus
Grafana
Alertmanager
node-exporter
Grafana添加Prometheus数据源
Grafana添加Prometheus数据源,监控 Node Exporter,也就是收集我192.168.200.100这台主机的CPU、内存、磁盘、网络使用情况。
选择Prometheus
保存测试
保存之后的成功提示
导入Dashbore
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
拷贝ID
粘贴id后,点击Load
之后选择Prometheus之后点击import
服务器的监控就配置成功啦。
概念理解
1.时间序列
在 Prometheus 中,时间序列是监控和存储数据的核心概念。Prometheus 通过时间序列存储每个监控指标的变化情况,时间序列的独特设计使 Prometheus 能够高效地存储和分析监控数据。
安装好prometheus后会暴露一个/metric
的http服务
如下截图(相等于安装好了prometheus_exporter),通过配置(默认会加上/metrics), Prometheus就可以采集到这个/metric里面所有监控样本数据。
prometheus.yml的配置
# 全局配置
global:
scrape_interval: 15s # 将搜刮间隔设置为每15秒一次。默认是每1分钟一次。
evaluation_interval: 15s # 每15秒评估一次规则。默认是每1分钟一次。
# Alertmanager 配置
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
# 报警(触发器)配置
rule_files:
- "alert.yml"
# 搜刮配置
scrape_configs:
- job_name: 'prometheus'
# 覆盖全局默认值,每15秒从该作业中刮取一次目标
scrape_interval: 15s
static_configs:
- targets: ['localhost:9090']
- job_name: 'alertmanager'
scrape_interval: 15s
static_configs:
- targets: ['alertmanager:9093']
- job_name: 'cadvisor'
scrape_interval: 15s
static_configs:
- targets: ['cadvisor:8080']
labels:
instance: Prometheus服务器
- job_name: 'node-exporter'
scrape_interval: 15s
static_configs:
- targets: ['node_exporter:9100']
labels:
instance: Prometheus服务器
2.Metric
在 Prometheus 中,Metric(指标)类型定义了如何收集、存储和查询监控数据的格式和规则。
Prometheus 共有四种基本的 Metric 类型:
1.Counter(计数器)
2.Gauge(仪表盘)
3.Histogram(直方图)
4.Summary(摘要)
1. Counter(计数器)
计数器是一个只能增加的累积值,通常用于表示某些事件发生的次数,例如 HTTP 请求数量、错误发生次数等。计数器的值从零开始,只会增长,除非重启或重置。
示例
假设我们有一个指标 http_requests_total,用于统计 Web 服务器收到的 HTTP 请求总数:
http_requests_total{
method="GET", handler="/home"} = 1250
http_requests_total{
method="POST", handler="/login"} = 300
在该示例中,http_requests_total 计数了不同方法和处理程序的请求总数。每次有新的请求时,值会增加。Prometheus 可以使用这个计数器来计算每秒的请求增长率,例如:
rate(prometheus_http_requests_total