Prometheus是一款开源的系统监控和告警工具,以其强大的数据模型和灵活的查询语言著称。本文将手把手教你从零搭建Prometheus,并集成Node Exporter、Alertmanager和Grafana,实现服务器资源的全面监控。
本文基于CentOS 7系统,其他Linux发行版类似。确保服务器有网络连接和sudo权限。
# 更新系统包
sudo yum update -y
# 安装wget和vim
sudo yum install -y wget vim访问Prometheus官网获取最新版本,这里以2.45.0为例。
# 下载Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
# 解压
tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
# 移动到/usr/local
sudo mv prometheus-2.45.0.linux-amd64 /usr/local/prometheus创建Prometheus用户和组,确保安全运行。
sudo useradd --no-create-home --shell /bin/false prometheus
sudo chown -R prometheus:prometheus /usr/local/prometheus编辑配置文件/usr/local/prometheus/prometheus.yml,添加基本配置。
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']这里定义了抓取间隔和两个任务:Prometheus自身和Node Exporter(稍后安装)。
使用systemd管理服务,创建/etc/systemd/system/prometheus.service。
[Unit]
Description=Prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus
Restart=always
[Install]
WantedBy=multi-user.target创建数据目录并启动。
sudo mkdir -p /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus访问http://服务器IP:9090,验证Prometheus Web界面。
Node Exporter用于采集服务器指标。
# 下载Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
# 解压并移动
tar -xzf node_exporter-1.6.0.linux-amd64.tar.gz
sudo mv node_exporter-1.6.0.linux-amd64 /usr/local/node_exporter
# 创建用户
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo chown -R node_exporter:node_exporter /usr/local/node_exporter创建systemd服务/etc/systemd/system/node_exporter.service。
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/node_exporter/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target启动服务。
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter验证:curl http://localhost:9100/metrics,应返回大量指标。
Alertmanager负责处理告警。
# 下载Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
# 解压并移动
tar -xzf alertmanager-0.25.0.linux-amd64.tar.gz
sudo mv alertmanager-0.25.0.linux-amd64 /usr/local/alertmanager
sudo useradd --no-create-home --shell /bin/false alertmanager
sudo chown -R alertmanager:alertmanager /usr/local/alertmanager创建配置文件/usr/local/alertmanager/alertmanager.yml。
route:
receiver: 'default'
receivers:
- name: 'default'
email_configs:
- to: 'admin@example.com'
from: 'alertmanager@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'user'
auth_password: 'password'创建systemd服务并启动。
sudo vim /etc/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager
After=network.target
[Service]
User=alertmanager
Group=alertmanager
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start alertmanager
sudo systemctl enable alertmanager在Prometheus配置中添加告警规则文件。
# 创建规则文件
sudo vim /usr/local/prometheus/rules.yml
groups:
- name: node_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} CPU usage high"
description: "CPU usage is above 80% for 5 minutes"修改prometheus.yml,添加规则文件路径。
rule_files:
- 'rules.yml'重启Prometheus。
sudo systemctl restart prometheus安装Grafana。
# 添加Grafana仓库
sudo vim /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
sudo yum install -y grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server访问http://服务器IP:3000,默认用户名密码admin/admin。添加Prometheus数据源:Configuration > Data Sources > Add data source,选择Prometheus,URL填入http://localhost:9090,保存。然后导入Node Exporter仪表盘(ID 1860)。
在Grafana中查看CPU、内存、磁盘等指标图表。模拟高负载:stress --cpu 4 --timeout 60,观察告警是否触发。
1. 安全性:启用认证,使用防火墙限制端口访问。2. 持久化:配置数据保留策略。3. 高可用:部署Prometheus集群。4. 集成其他Exporter:如MySQL Exporter、Blackbox Exporter等。
通过以上步骤,你已成功搭建Prometheus监控系统。持续优化配置,让监控成为运维的得力助手。
专注技术分享与实战