使用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_alertsrules:- alert: NginxDownexpr: systemd_unit_state{name="nginx.service", state="active"} != 1for: 1mlabels:severity: criticalannotations: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或钉钉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV--图像边缘检测

在计算机视觉和图像处理领域,边缘检测是极为关键的技术。边缘作为图像中像素值发生急剧变化的区域,承载了图像的重要结构信息,在物体识别、图像分割、目标跟踪等众多应用场景中发挥着核心作用。OpenCV 作为强大的计算机视觉库,提供…

Rollup详解

Rollup 是一个 JavaScript 模块打包工具,专注于 ES 模块的打包,常用于打包 JavaScript 库。下面从它的工作原理、特点、使用场景、配置和与其他打包工具对比等方面进行详细讲解。 一、 工作原理 Rollup 的核心工作是分析代码中的 import 和 export 语句…

Chapter 7: Compiling C++ Sources with CMake_《Modern CMake for C++》_Notes

Chapter 7: Compiling C Sources with CMake 1. Understanding the Compilation Process Key Points: Four-stage process: Preprocessing → Compilation → Assembly → LinkingCMake abstracts low-level commands but allows granular controlToolchain configuration (c…

5分钟上手GitHub Copilot:AI编程助手实战指南

引言 近年来,AI编程工具逐渐成为开发者提升效率的利器。GitHub Copilot作为由GitHub和OpenAI联合推出的智能代码补全工具,能够根据上下文自动生成代码片段。本文将手把手教你如何快速安装、配置Copilot,并通过实际案例展示其强大功能。 一、…

谢志辉和他的《韵之队诗集》:探寻生活与梦想交织的诗意世界

大家好,我是谢志辉,一个扎根在文字世界,默默耕耘的写作者。写作于我而言,早已不是简单的爱好,而是生命中不可或缺的一部分。无数个寂静的夜晚,当世界陷入沉睡,我独自坐在书桌前,伴着…

Logo语言的死锁

Logo语言的死锁现象研究 引言 在计算机科学中,死锁是一个重要的研究课题,尤其是在并发编程中。它指的是两个或多个进程因争夺资源而造成的一种永久等待状态。在编程语言的设计与实现中,如何避免死锁成为了优化系统性能和提高程序可靠性的关…

深入理解矩阵乘积的导数:以线性回归损失函数为例

深入理解矩阵乘积的导数:以线性回归损失函数为例 在机器学习和数据分析领域,矩阵微积分扮演着至关重要的角色。特别是当我们涉及到优化问题,如最小化损失函数时,对矩阵表达式求导变得必不可少。本文将通过一个具体的例子——线性…

real_time_camera_audio_display_with_animation

视频录制 import cv2 import pyaudio import wave import threading import os import tkinter as tk from PIL import Image, ImageTk # 视频录制设置 VIDEO_WIDTH = 640 VIDEO_HEIGHT = 480 FPS = 20.0 VIDEO_FILENAME = _video.mp4 AUDIO_FILENAME = _audio.wav OUTPUT_…

【Pandas】pandas DataFrame astype

Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型 pandas.DataFrame.astype pandas.DataFrame.astype 是一个方法,用于将 DataFrame 中的数据转换为指定的数据类型。这个方法非常…

Johnson

理论 全源最短路算法 Floyd 算法,时间复杂度为 O(n)跑 n 次 Bellman - Ford 算法,时间复杂度是 O(nm)跑 n 次 Heap - Dijkstra 算法,时间复杂度是 O(nmlogm) 第 3 种算法被 Johnson 做了改造,可以求解带负权边的全源最短路。 J…

Exce格式化批处理工具详解:高效处理,让数据更干净!

Exce格式化批处理工具详解:高效处理,让数据更干净! 1. 概述 在数据分析、报表整理、数据库管理等工作中,数据清洗是不可或缺的一步。原始Excel数据常常存在格式不统一、空值、重复数据等问题,影响数据的准确性和可用…

(三十七)Dart 中使用 Pub 包管理系统与 HTTP 请求教程

Dart 中使用 Pub 包管理系统与 HTTP 请求教程 Pub 包管理系统简介 Pub 是 Dart 和 Flutter 的包管理系统,用于管理项目的依赖。通过 Pub,开发者可以轻松地添加、更新和管理第三方库。 使用 Pub 包管理系统 1. 找到需要的库 访问以下网址&#xff0c…

代码随想录算法训练营第三十五天 | 416.分割等和子集

416. 分割等和子集 题目链接:416. 分割等和子集 - 力扣(LeetCode) 文章讲解:代码随想录 视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集_哔哩哔哩_bilibi…

HTTP 教程 : 从 0 到 1 全面指南 教程【全文三万字保姆级详细讲解】

目录 HTTP 的请求-响应 HTTP 方法 HTTP 状态码 HTTP 版本 安全性 HTTP/HTTPS 简介 HTTP HTTPS HTTP 工作原理 HTTPS 作用 HTTP 与 HTTPS 区别 HTTP 消息结构 客户端请求消息 服务器响应消息 实例 HTTP 请求方法 各个版本定义的请求方法 HTTP/1.0 HTTP/1.1 …

spring功能汇总

1.创建一个dao接口,实现类;service接口,实现类并且service里用new创建对象方式调用dao的方法 2.使用spring分别获取dao和service对象(IOC) 注意 2中的service里面获取dao的对象方式不用new的(DI) 运行测试: 使用1的方式创建servic…

Vue.js 实现下载模板和导入模板、数据比对功能核心实现。

在前端开发中,数据比对是一个常见需求,尤其在资产管理等场景中。本文将基于 Vue.js 和 Element UI,通过一个简化的代码示例,展示如何实现“新建比对”和“开始比对”功能的核心部分。 一、功能简介 我们将聚焦两个核心功能&…

volatile关键字用途说明

volatile 关键字在 C# 中用于指示编译器和运行时系统,某个字段可能会被多个线程同时访问,并且该字段的读写操作不应被优化(例如缓存到寄存器或重排序),以确保所有线程都能看到最新的值。这使得 volatile 成为一种轻量级…

【区块链安全 | 第三十五篇】溢出漏洞

文章目录 溢出上溢示例溢出漏洞溢出示例漏洞代码代码审计1. deposit 函数2. increaseLockTime 函数 攻击代码攻击过程总结修复建议审计思路 溢出 算术溢出(Arithmetic Overflow),简称溢出(Overflow),通常分…

百度的deepseek与硅基模型的差距。

问题: 已经下载速度8兆每秒,请问下载30G的文件需要多长时间? 关于这个问题。百度的回答如下: ‌30GB文件下载时间计算‌ ‌理论计算‌(基于十进制单位): ‌单位换算‌ 文件大小:3…

车载诊断架构 --- 特殊定义NRC处理原理

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…