1. 首页 > IT综合教程 > 正文

IT教程FG270-IT系统监控与Prometheus

1. Prometheus概述

Prometheus是一种开源的监控系统和时间序列数据库,用于监控和告警。它通过抓取目标的指标数据,存储为时间序列数据,并提供强大的查询语言PromQL进行数据分析和告警。更多学习教程www.fgedu.net.cn

# 检查系统环境
# uname -a
Linux server 3.10.0-1160.el7.x86_64 #1 SMP Wed Aug 26 15:27:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

# 检查Docker状态
# systemctl status docker
● docker.service – Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-03-30 10:00:00 CST; 1h ago
Docs: https://docs.docker.com
Main PID: 1234 (dockerd)
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock

Prometheus特点:多维数据模型、灵活的查询语言、强大的告警能力、原生的时序数据库、丰富的集成生态。

2. Prometheus安装

Prometheus可以通过多种方式安装,包括二进制安装、Docker容器安装、包管理器安装等。学习交流加群风哥微信: itpux-com

# 二进制安装Prometheus
# 下载Prometheus
# wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz

# 解压
# tar xvfz prometheus-2.30.3.linux-amd64.tar.gz
# cd prometheus-2.30.3.linux-amd64

# 启动Prometheus
# ./prometheus –config.file=prometheus.yml

# 使用Docker安装Prometheus
# docker run -d –name prometheus -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

# 查看Prometheus容器状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab prom/prometheus “/bin/prometheus –c…” 1 minute ago Up 1 minute 0.0.0.0:9090->9090/tcp prometheus

# 访问Prometheus UI
# 打开浏览器,访问 http://fgedudb:9090

3. Prometheus配置

Prometheus的配置文件定义了抓取目标、抓取间隔、存储配置等。

# 创建Prometheus配置文件
# cat /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s # 抓取间隔
evaluation_interval: 15s # 评估间隔

rule_files:
# – “first_rules.yml”
# – “second_rules.yml”

scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘fgedudb:9090’]

– job_name: ‘node’
static_configs:
– targets: [‘fgedudb:9100’]

– job_name: ‘docker’
static_configs:
– targets: [‘fgedudb:8080’]

# 重新加载Prometheus配置
# curl -X POST http://fgedudb:9090/-/reload

# 查看Prometheus配置状态
# curl http://fgedudb:9090/config

风哥风哥提示:Prometheus配置文件使用YAML格式,主要包括全局配置、规则文件和抓取配置三部分。

4. 指标采集

Prometheus通过抓取目标的/metrics端点来采集指标数据。

# 查看Prometheus自身指标
# curl http://fgedudb:9090/metrics

# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile=”0″} 0
go_gc_duration_seconds{quantile=”0.25″} 0
go_gc_duration_seconds{quantile=”0.5″} 0
go_gc_duration_seconds{quantile=”0.75″} 0
go_gc_duration_seconds{quantile=”1″} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0

# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 18

# 查看Node Exporter指标
# curl http://fgedudb:9100/metrics

# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu=”0″,mode=”idle”} 123456.789
node_cpu_seconds_total{cpu=”0″,mode=”iowait”} 123.456
node_cpu_seconds_total{cpu=”0″,mode=”irq”} 12.345
node_cpu_seconds_total{cpu=”0″,mode=”nice”} 1.234
node_cpu_seconds_total{cpu=”0″,mode=”softirq”} 123.456
node_cpu_seconds_total{cpu=”0″,mode=”steal”} 0
node_cpu_seconds_total{cpu=”0″,mode=”system”} 1234.567
node_cpu_seconds_total{cpu=”0″,mode=”user”} 12345.678

5. 告警配置

Prometheus通过告警规则定义告警条件,并通过Alertmanager进行告警管理。

# 创建告警规则文件
# cat /etc/prometheus/alert.rules
groups:
– name: example
rules:
– alert: HighCpuUsage
expr: (100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU usage on {{ $labels.instance }}”
description: “CPU usage is above 80% for 5 minutes”

# 更新Prometheus配置文件
# cat /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s

rule_files:
– “alert.rules”

scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘fgedudb:9090’]

– job_name: ‘node’
static_configs:
– targets: [‘fgedudb:9100’]

# 安装Alertmanager
# docker run -d –name alertmanager -p 9093:9093 -v /etc/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

# 配置Alertmanager
# cat /etc/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m

route:
group_by: [‘alertname’]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: ’email’

receivers:
– name: ’email’
email_configs:
– to: ‘admin@fgedu.net.cn’
from: ‘alertmanager@fgedu.net.cn’
smarthost: ‘smtp.fgedu.net.cn:587’
auth_username: ‘alertmanager’
auth_password: ‘password’

inhibit_rules:
– source_match:
severity: ‘critical’
target_match:
severity: ‘warning’
equal: [‘alertname’, ‘instance’]

6. Grafana集成

Grafana是一种开源的数据可视化平台,可以与Prometheus集成,实现指标的可视化展示。

# 安装Grafana
# docker run -d –name grafana -p 3000:3000 grafana/grafana

# 查看Grafana容器状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab grafana/grafana “/run.sh” 1 minute ago Up 1 minute 0.0.0.0:3000->3000/tcp grafana

# 访问Grafana UI
# 打开浏览器,访问 http://fgedudb:3000
# 默认fgedu和密码:admin/admin

# 添加Prometheus数据源
# 在Grafana UI中,进入”Configuration” > “Data sources”
# 点击”Add data source”
# 选择”Prometheus”
# 配置URL:http://prometheus:9090
# 点击”Save & Test”

# 导入Dashboard
# 在Grafana UI中,进入”Dashboard” > “Import”
# 输入Dashboard ID:1860(Node Exporter Full)
# 选择Prometheus数据源
# 点击”Import”

7. Node Exporter

Node Exporter是Prometheus的一个 exporters,用于采集主机的系统指标。

# 安装Node Exporter
# wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
# tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
# cd node_exporter-1.3.1.linux-amd64
# ./node_exporter &

# 使用Docker安装Node Exporter
# docker run -d –name node-exporter -p 9100:9100 -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /:/rootfs:ro –net=”host” prom/node-exporter

# 查看Node Exporter状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab prom/node-exporter “/bin/node_exporter” 1 minute ago Up 1 minute 0.0.0.0:9100->9100/tcp node-exporter

# 查看Node Exporter指标
# curl http://fgedudb:9100/metrics

8. cAdvisor

cAdvisor(Container Advisor)是Google开源的容器监控工具,用于采集容器的资源使用情况。

# 安装cAdvisor
# docker run -d –name cadvisor -p 8080:8080 -v /:/rootfs:ro -v /var/run:/var/run:ro -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro gcr.io/cadvisor/cadvisor

# 查看cAdvisor状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab gcr.io/cadvisor/cadvisor “/usr/bin/cadvisor -l…” 1 minute ago Up 1 minute 0.0.0.0:8080->8080/tcp cadvisor

# 访问cAdvisor UI
# 打开浏览器,访问 http://fgedudb:8080

# 查看cAdvisor指标
# curl http://fgedudb:8080/metrics

9. Prometheus最佳实践

遵循Prometheus最佳实践可以提高监控系统的可靠性和性能。

# 指标命名规范
# 使用snake_case命名
# 包含单位信息(如_seconds, _bytes, _count)
# 避免使用特殊字符

# 指标类型选择
# Counter:累计值,如请求数、错误数
# Gauge:瞬时值,如温度、内存使用
# Histogram:分布值,如响应时间分布
# Summary:摘要值,如响应时间分位数

# 标签使用
# 保持标签数量合理(建议不超过10个)
# 标签值保持有限(建议不超过100个)
# 避免使用高基数标签(如用户ID、会话ID)

# 抓取配置
# 合理设置抓取间隔(默认15s)
# 为不同类型的目标设置不同的抓取间隔
# 配置超时时间,避免抓取阻塞

# 存储配置
# 合理设置存储时间(默认15天)
# 配置存储路径和大小限制
# 考虑使用远程存储(如Thanos、Cortex)

# 告警配置
# 合理设置告警阈值
# 使用for子句避免告警抖动
# 配置合适的告警分组和路由

10. 故障排查

Prometheus故障排查包括日志分析、配置检查、指标查询等。

# 查看Prometheus日志
# docker logs prometheus

# 检查Prometheus配置
# curl http://fgedudb:9090/config

# 检查目标状态
# curl http://fgedudb:9090/api/v1/targets

# 执行PromQL查询
# curl -g ‘http://fgedudb:9090/api/v1/query?query=up’

# 检查告警状态
# curl http://fgedudb:9090/api/v1/alerts

# 检查存储状态
# curl http://fgedudb:9090/api/v1/status/config

# 常见问题排查
# 目标不可达:检查网络连接、防火墙设置
# 指标缺失:检查exporter是否运行、配置是否正确
# 存储问题:检查磁盘空间、存储配置
# 性能问题:检查抓取间隔、指标数量、查询复杂度

Prometheus故障排查风哥建议:首先检查Prometheus日志,然后检查目标状态和配置,最后使用PromQL查询验证指标数据。对于性能问题,建议优化抓取间隔和查询复杂度。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息