当前位置: 首页 > news >正文

使用Prometheus监控systemd服务并可视化

在这里插入图片描述

实训背景

你是一家企业的运维工程师,需将服务器的systemd服务监控集成到Prometheus,并通过Grafana展示实时数据。需求如下:

  1. 数据采集:监控所有systemd服务的状态(运行/停止)、资源占用(CPU、内存)。
  2. 可视化展示:在Grafana中创建仪表盘,实时查看服务健康状态。
  3. 告警集成:当关键服务(如Nginx)停止时触发邮件告警。

环境准备

  1. 操作系统:Ubuntu 22.04 LTS。
  2. 安装依赖
    sudo apt install prometheus prometheus-node-exporter grafana
    
  3. 目录结构
    • Prometheus配置目录:/etc/prometheus/
    • Grafana数据目录:/var/lib/grafana

实训步骤


任务1:配置Node Exporter收集systemd指标

目标:启用Node Exporter的systemd模块,暴露服务状态数据。

操作步骤
  1. 修改Node Exporter配置

    sudo nano /etc/default/prometheus-node-exporter
    

    添加以下参数:

    ARGS="--collector.systemd"
    
  2. 重启Node Exporter

    sudo systemctl restart prometheus-node-exporter
    
  3. 验证指标采集
    访问 http://localhost:9100/metrics,搜索 systemd 开头的指标(如 systemd_units)。


任务2:配置Prometheus抓取数据

目标:让Prometheus从Node Exporter拉取数据。

操作步骤
  1. 编辑Prometheus配置文件

    sudo nano /etc/prometheus/prometheus.yml
    

    scrape_configs 部分添加:

    - job_name: 'node'
      static_configs:
        - targets: ['localhost:9100']
    
  2. 重启Prometheus

    sudo systemctl restart prometheus
    
  3. 验证数据抓取
    访问 http://localhost:9090,进入 Status > Targets,确认 node 任务状态为 UP


任务3:创建Grafana仪表盘

目标:导入预设仪表盘,可视化监控数据。

操作步骤
  1. 启动Grafana并设置开机自启

    sudo systemctl enable grafana-server
    sudo systemctl start grafana-server
    
  2. 登录Grafana
    浏览器访问 http://localhost:3000,默认账号/密码:admin/admin

  3. 添加Prometheus数据源

    • 左侧菜单 Configuration > Data Sources > Add data source
    • 选择 Prometheus,URL填写 http://localhost:9090,点击 Save & Test
  4. 导入官方仪表盘

    • 左侧菜单 Dashboards > Import
    • 输入仪表盘ID 8919(Node Exporter Full),点击 Load
    • 选择数据源为Prometheus,点击 Import
  5. 查看监控数据
    在仪表盘中找到 Systemd Units 面板,查看各服务状态。


任务4:监控关键服务(如Nginx)

目标:当Nginx服务停止时触发告警。

操作步骤
  1. 创建告警规则文件

    sudo nano /etc/prometheus/alert_rules.yml
    

    内容:

    groups:
    - name: service_alerts
      rules:
      - alert: NginxDown
        expr: systemd_unit_state{name="nginx.service", state="active"} != 1
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Nginx服务异常停止!"
    
  2. 更新Prometheus配置

    sudo nano /etc/prometheus/prometheus.yml
    

    添加:

    rule_files:
      - "alert_rules.yml"
    
  3. 重启Prometheus

    sudo systemctl restart prometheus
    
  4. 模拟故障测试

    sudo systemctl stop nginx          # 手动停止Nginx
    # 访问 http://localhost:9090/alerts 查看告警状态
    

实训总结

通过本次实训,你实现了以下功能:

  1. 集中监控:通过Prometheus实时采集systemd服务状态。
  2. 可视化展示:利用Grafana仪表盘直观查看服务健康度。
  3. 智能告警:关键服务异常时自动触发告警。

知识要点

  1. 核心工具链

    • Node Exporter:暴露系统和服务指标。
    • Prometheus:存储和查询监控数据。
    • Grafana:数据可视化与告警配置。
  2. 关键配置

    • --collector.systemd:启用systemd指标收集。
    • PromQL查询示例:systemd_unit_state{name="nginx.service"}
  3. 调试命令

    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或钉钉。

相关文章:

  • Completablefuture的底层原理是什么
  • 优艾智合人形机器人“巡霄”,开启具身多模态新时代
  • GeoTime:主要用于执法、公共安全和情报分析领域GIS软件
  • AI训练存储架构革命:存储选型白皮书与万卡集群实战解析
  • git `switch` 命令详解与实用示例
  • 图论----拓扑排序
  • MyBatis的第三天笔记
  • VSCode使用Remote-SSH连接服务器时启动失败glibc不符合
  • Java学习——day23(反射的对象创建与方法调用)
  • Text-to-SQL技术深度解析:从理论突破到工程实践
  • Jmeter+Jenkins+Ant自动化持续集成环境搭建
  • [ctfshow web入门] web7
  • PyQt6实例_A股日数据维护工具_完整项目代码_终结章
  • Gis相关记录备忘录
  • 软件工程第五章习题
  • 15-产品经理-维护需求
  • redis 和 MongoDB都可以存储键值对,并且值可以是复杂json,用完整例子分别展示说明两者在存储json键值对上的使用对比
  • 贪心算法(16)(java)俄罗斯套娃信封问题
  • 从零到一:用Java和Spring Security构建OAuth2授权服务器
  • 【Vue-vue基础知识】学习笔记
  • 南非总统承压赴美会晤特朗普,为开放星链或作种族政策妥协
  • 人民日报:莫让“假自杀”淹没“真求助”
  • 萨洛宁、康托罗夫、长野健……7月夏季音乐节来很多大牌
  • 上海电视节评委会名单公布,陈宝国担任电视剧评委会主席
  • 海口警方通报“司机驾车拖行虐猫”:系意外,未发现故意虐猫行为
  • 俄罗斯哈巴罗夫斯克市首次举办“俄中论坛”