监控平台 Grafana+Prometheus+node_exporter初识

监控平台 Grafana+Prometheus+node_exporter初识

三个组件的角色与关系(黄金组合)

这是一个分层架构,各司其职:

  1. node_exporter:数据采集器
    • 角色:像一个"间谍"或"探针",安装在被监控的目标机器(如 Linux 服务器)上。
    • 功能 :专门用于收集主机级别的硬件和操作系统指标,如 CPU 使用率、内存占用、磁盘 I/O、网络流量、系统负载、温度等。它本身不存储数据,只提供一个 HTTP 端点供 Prometheus 抓取。
    • 输出:以纯文本格式暴露指标数据。
  2. Prometheus:监控核心与时序数据库
    • 角色:整个系统的"大脑"和"数据库"。
    • 功能
      • 拉取模式 :定期主动从配置好的目标(如 node_exporter)的 HTTP 端点"抓取"指标数据。
      • 存储:将抓取到的时序数据存储在其内置的高效时序数据库中。
      • 处理 :提供强大的查询语言 PromQL,允许您对数据进行复杂的查询、聚合和分析。
      • 告警 :通过 Alertmanager 组件,可以基于 PromQL 查询结果设置报警规则,并在触发条件时发送通知。
  3. Grafana:数据可视化平台
    • 角色:专业的"仪表盘"和"展示层"。
    • 功能
      • 数据源:连接各种数据源,其中 Prometheus 是最主要的数据源之一。
      • 可视化:将 Prometheus 查询到的数据通过丰富的图表(如曲线图、仪表盘、热图等)展示出来。
      • 仪表盘:允许用户创建、共享和定制功能强大且美观的监控仪表盘。

简单比喻:

  • node_exporter 是餐厅里负责记录每道菜出菜速度、食材消耗的服务员
  • Prometheus餐厅经理,定期从服务员那里收集记录,并分析哪些菜畅销、哪些食材需要补货,同时决定何时需要报警(比如食材快用完了)。
  • Grafana 是挂在厨房和老板办公室的大屏幕,实时、直观地展示经理分析出的各种数据和图表。

核心优势

  • 开源与生态:全部开源,拥有庞大的社区和丰富的 exporter 生态(如 MySQL exporter, Redis exporter 等)。
  • 维度化数据模型:Prometheus 的每个数据点都通过一组键值对标签来标识,使得数据筛选和聚合非常灵活。
  • 强大的查询语言:PromQL 功能强大,可以应对复杂的查询场景。
  • 高效的时序数据库:针对监控场景的时序数据做了高度优化,压缩和查询性能出色。
  • 简单的部署:所有组件都是独立的二进制文件,无需依赖第三方服务(如数据库),部署简单。
  • 拉取模型为主:简化了防火墙和安全配置,中心端主动拉取,更容易管理目标。

典型部署与实践步骤

以下是一个在单台 Linux 服务器上部署该监控系统的简化流程,用于监控该服务器自身。

步骤 1:安装并运行 node_exporter
  1. Prometheus 官网 下载最新版本的 node_exporter

  2. 解压并运行:

    bash

    复制下载

    复制代码
    tar -xzf node_exporter-*.linux-amd64.tar.gz
    cd node_exporter-*.linux-amd64/
    ./node_exporter &
  3. 验证:访问 http://<服务器IP>:9100/metrics,你应该能看到大量的文本指标数据。

步骤 2:安装并配置 Prometheus
  1. 下载 Prometheus

  2. 解压并编辑其配置文件 prometheus.yml

    yaml

    复制下载

    复制代码
    global:
      scrape_interval: 15s # 每15秒抓取一次
    
    scrape_configs:
      - job_name: 'prometheus' # 监控Prometheus自己
        static_configs:
          - targets: ['localhost:9090']
    
      - job_name: 'node_exporter' # 监控node_exporter所在的主机
        static_configs:
          - targets: ['<服务器IP>:9100'] # 替换为你的服务器IP
  3. 启动 Prometheus:

    bash

    复制下载

    复制代码
    ./prometheus --config.file=prometheus.yml &
  4. 验证:访问 http://<服务器IP>:9090,进入 Prometheus 的 Web UI。你可以在 "Status" -> "Targets" 中看到两个监控目标(Prometheus 自身和 node_exporter)的状态应为 "UP"。

步骤 3:安装并配置 Grafana
  1. 按照 官方文档 安装 Grafana(例如,在 CentOS/RHEL 上可以直接添加 RPM 仓库安装)。

  2. 启动 Grafana 服务:

    bash

    复制下载

    复制代码
    systemctl start grafana-server
    systemctl enable grafana-server
  3. 访问 http://<服务器IP>:3000,默认用户名和密码是 admin/admin

  4. 添加数据源

    • 登录后,进入 "Configuration" -> "Data Sources"。
    • 点击 "Add data source",选择 "Prometheus"。
    • 在 "URL" 中填写 http://localhost:9090(如果 Grafana 和 Prometheus 在同一台机器上)。
    • 点击 "Save & Test",应显示 "Data source is working"。
  5. 导入仪表盘

    • 无需从零开始创建,Grafana 官网有大量社区贡献的仪表盘模板。
    • 访问 Grafana Labs Dashboards
    • 搜索 "Node Exporter Full",找到最流行的主机监控仪表盘,记下其 ID(例如 1860)。
    • 在 Grafana 中,点击 "+" -> "Import",输入 ID 1860,选择你的 Prometheus 数据源,即可导入一个功能全面的主机监控仪表盘。

进阶概念与生产环境考量

  • Alertmanager:用于接收来自 Prometheus 的告警,并进行去重、分组、静默,并通过邮件、Slack、PagerDuty、Webhook 等路由发送通知。
  • 服务发现 :在生产环境中,手动在 prometheus.yml 中写 IP 地址不现实。Prometheus 支持基于 Kubernetes, Consul, DNS 等的自动服务发现,动态管理监控目标。
  • 远程存储:对于海量数据或长期存储,Prometheus 可以配置将数据写入远程存储后端,如 Thanos, Cortex 或 M3DB,以实现高可用和长期历史数据查询。
  • 安全:配置 TLS 加密通信、基本认证等,确保监控数据的安全。

总结

Grafana + Prometheus + node_exporter 组合提供了一个从数据采集、存储、告警到可视化的完整、强大且灵活的监控解决方案。它已经成为容器化和微服务架构时代监控领域的事实标准。

  • 安全:配置 TLS 加密通信、基本认证等,确保监控数据的安全。

总结

Grafana + Prometheus + node_exporter 组合提供了一个从数据采集、存储、告警到可视化的完整、强大且灵活的监控解决方案。它已经成为容器化和微服务架构时代监控领域的事实标准。

对于初学者,从单机部署开始,理解其工作流程和核心概念,是掌握这套强大工具的最佳途径。

相关推荐
zhixingheyi_tian2 小时前
prometheus + grafana
grafana·prometheus
Yeats_Liao1 天前
时序数据库系列(八):InfluxDB配合Grafana可视化
数据库·后端·grafana·时序数据库
勇敢打工人1 天前
Alertmanager 安装与配置指南
prometheus
牛奶咖啡132 天前
zabbix结合grafana打造自定义炫酷监控界面实战
zabbix·grafana·grafana的安装配置·grafana的插件安装配置·grafana仪表盘的搜索导入·grafana监控zabbix·grafana配置图表
水岸齐天2 天前
prometheus和Grafana介绍
grafana·prometheus
oneslide2 天前
Kubernetes V1.24+ & Docker运行时 grafana容器指标显示异常
docker·kubernetes·grafana
cui_win2 天前
Prometheus实战教程 05 - 告警通知实现 - 邮件 + 钉钉 + 自定义告警模板
钉钉·prometheus·邮件通知
杰克逊的日记3 天前
通过Prometheus对GPU集群进行监控以及搭建(小型集群)
prometheus·gpu算力·gpu服务器监控
happy_king_zi4 天前
RabbitMQ-Exporter 监控 TLS 加密的 RabbitMQ 集群
分布式·安全·rabbitmq·prometheus