实训背景
你是一家企业的运维工程师,需将服务器的systemd服务监控集成到Prometheus,并通过Grafana展示实时数据。需求如下:
- 数据采集:监控所有systemd服务的状态(运行/停止)、资源占用(CPU、内存)。
- 可视化展示:在Grafana中创建仪表盘,实时查看服务健康状态。
- 告警集成:当关键服务(如Nginx)停止时触发邮件告警。
环境准备
- 操作系统:Ubuntu 22.04 LTS。
- 安装依赖:
sudo apt install prometheus prometheus-node-exporter grafana
- 目录结构:
- Prometheus配置目录:
/etc/prometheus/
- Grafana数据目录:
/var/lib/grafana
- Prometheus配置目录:
实训步骤
任务1:配置Node Exporter收集systemd指标
目标:启用Node Exporter的systemd
模块,暴露服务状态数据。
操作步骤:
-
修改Node Exporter配置:
sudo nano /etc/default/prometheus-node-exporter
添加以下参数:
ARGS="--collector.systemd"
-
重启Node Exporter:
sudo systemctl restart prometheus-node-exporter
-
验证指标采集:
访问http://localhost:9100/metrics
,搜索systemd
开头的指标(如systemd_units
)。
任务2:配置Prometheus抓取数据
目标:让Prometheus从Node Exporter拉取数据。
操作步骤:
-
编辑Prometheus配置文件:
sudo nano /etc/prometheus/prometheus.yml
在
scrape_configs
部分添加:- job_name: 'node'static_configs:- targets: ['localhost:9100']
-
重启Prometheus:
sudo systemctl restart prometheus
-
验证数据抓取:
访问http://localhost:9090
,进入 Status > Targets,确认node
任务状态为 UP。
任务3:创建Grafana仪表盘
目标:导入预设仪表盘,可视化监控数据。
操作步骤:
-
启动Grafana并设置开机自启:
sudo systemctl enable grafana-server sudo systemctl start grafana-server
-
登录Grafana:
浏览器访问http://localhost:3000
,默认账号/密码:admin/admin
。 -
添加Prometheus数据源:
- 左侧菜单 Configuration > Data Sources > Add data source。
- 选择 Prometheus,URL填写
http://localhost:9090
,点击 Save & Test。
-
导入官方仪表盘:
- 左侧菜单 Dashboards > Import。
- 输入仪表盘ID
8919
(Node Exporter Full),点击 Load。 - 选择数据源为Prometheus,点击 Import。
-
查看监控数据:
在仪表盘中找到 Systemd Units 面板,查看各服务状态。
任务4:监控关键服务(如Nginx)
目标:当Nginx服务停止时触发告警。
操作步骤:
-
创建告警规则文件:
sudo nano /etc/prometheus/alert_rules.yml
内容:
groups: - name: service_alertsrules:- alert: NginxDownexpr: systemd_unit_state{name="nginx.service", state="active"} != 1for: 1mlabels:severity: criticalannotations:summary: "Nginx服务异常停止!"
-
更新Prometheus配置:
sudo nano /etc/prometheus/prometheus.yml
添加:
rule_files:- "alert_rules.yml"
-
重启Prometheus:
sudo systemctl restart prometheus
-
模拟故障测试:
sudo systemctl stop nginx # 手动停止Nginx # 访问 http://localhost:9090/alerts 查看告警状态
实训总结
通过本次实训,你实现了以下功能:
- 集中监控:通过Prometheus实时采集systemd服务状态。
- 可视化展示:利用Grafana仪表盘直观查看服务健康度。
- 智能告警:关键服务异常时自动触发告警。
知识要点
-
核心工具链:
- Node Exporter:暴露系统和服务指标。
- Prometheus:存储和查询监控数据。
- Grafana:数据可视化与告警配置。
-
关键配置:
--collector.systemd
:启用systemd指标收集。- PromQL查询示例:
systemd_unit_state{name="nginx.service"}
。
-
调试命令:
curl http://localhost:9100/metrics | grep systemd # 验证指标暴露 journalctl -u prometheus -f # 查看Prometheus日志
扩展挑战:
- 自定义指标:编写脚本监控服务日志错误次数,通过
textfile
收集器暴露给Prometheus。# 示例脚本 /opt/scripts/error_counter.sh echo "service_errors_total $(grep 'ERROR' /var/log/myapp.log | wc -l)" > /var/lib/node_exporter/errors.prom
- 多节点监控:修改Prometheus配置,监控多台服务器的systemd服务。
- 告警通知:集成Alertmanager,将告警发送至Slack或钉钉。