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

搭建prometheus+grafana监控系统抓取Linux主机系统资源数据

Prometheus 和 Grafana 是两个非常流行的开源工具,通常结合使用来实现监控、可视化和告警功能。它们在现代 DevOps 和云原生环境中被广泛使用。

1. Prometheus

  • 定义:Prometheus 是一个开源的系统监控和告警工具包,最初由 SoundCloud 开发,现在是 CNCF(云原生计算基金会)的毕业项目。

  • 核心功能

    • 数据采集:通过拉取(Pull)方式从目标服务(如应用程序、服务器、数据库等)收集指标数据。

    • 数据存储:将采集到的时序数据(Time Series Data)存储在本地或远程存储中。

    • 查询语言:提供强大的查询语言 PromQL,用于分析和查询监控数据。

    • 告警功能:支持基于规则的告警,可以通过 Alertmanager 发送告警通知(如邮件、Slack、PagerDuty 等)。

  • 特点

    • 多维数据模型(通过标签区分不同的指标)。

    • 支持服务发现,动态监控目标。

    • 高性能,适合大规模监控。

  • 适用场景

    • 监控 Kubernetes 集群。

    • 监控微服务架构。

    • 监控基础设施(如服务器、数据库、网络设备等)。

2. Grafana

  • 定义:Grafana 是一个开源的指标分析和可视化工具,支持多种数据源(如 Prometheus、InfluxDB、Elasticsearch 等)。

  • 核心功能

    • 数据可视化:通过丰富的图表(如折线图、柱状图、仪表盘等)展示监控数据。

    • 多数据源支持:支持 Prometheus、InfluxDB、MySQL、Elasticsearch 等多种数据源。

    • 仪表盘:用户可以创建和共享自定义的监控仪表盘。

    • 告警功能:Grafana 也支持告警功能,可以根据指标设置告警规则并发送通知。

  • 特点

    • 界面美观,交互性强。

    • 支持插件扩展,功能丰富。

    • 社区活跃,有大量现成的仪表盘模板。

  • 适用场景

    • 可视化 Prometheus 的监控数据。

    • 分析和展示时序数据。

    • 创建自定义的监控和运维仪表盘。

3. Prometheus + Grafana 的结合

  • Prometheus 负责数据采集和存储,而 Grafana 负责数据的可视化和展示。

  • 典型工作流程

    1. Prometheus 从目标服务(如应用程序、服务器)拉取指标数据。

    2. Prometheus 将数据存储在其时序数据库中。

    3. Grafana 连接到 Prometheus 数据源,查询数据并展示在仪表盘上。

    4. 用户通过 Grafana 的仪表盘实时监控系统状态。

    5. 如果需要告警,可以通过 Prometheus 的 Alertmanager 或 Grafana 的告警功能发送通知。


部署环境:

OS:Rocky Linux 9.4

上传所需软件版本:

prometheus-2.40.1.linux-amd64.tar.gz

grafana-enterprise-9.2.4-1.x86_64.rpm

node_exporter-1.4.0.linux-amd64.tar.gz

初始化操作:

关闭防火墙和seLinux,这台机之前关过了,所以没啥提示

systemctl stop firewalld
systemctl disable firewalld
setenforce 0 #临时关闭,也可在/etc/selinux/config文件里永久关闭

修改一下主机名:hostnamectl set-hostname prometheus

下载prometheus安装包:
地址:https://prometheus.io/download/

解压并重命名和启动prometheus:

tar xf prometheus-2.40.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.40.1.linux-amd64/ /usr/local/prometheus
nohup /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

查看启动情况:

查看启动端口:

netstat -an |grep 9090

通过主机IP:端口浏览器访问:

默认可以查看到已监控本机
菜单Status -> Targets

查看监控数据:主机IP:端口/metrics

在WEB界面首页可以通过关键字搜索查询监控项


接下来安装Grafana图形化监测工具

官网:https://grafana.com/

下载安装包:
地址:
https://dl.grafana.com/enterprise/release/grafana-enterprise-9.2.4-1.x86_64.rpm

上传grafana的rpm包之后,先安装两个依赖

yum install fontconfig urw-fonts

如果安装grafana报了这个问题:

我这里直接强制跳过了这个chkconfig依赖

rpm -ivh --nodeps grafana-enterprise-9.2.4-1.x86_64.rpm

接着启动grafana并查看端口号是否正在监听

systemctl start grafana-server
systemctl enable grafana-server
netstat -an |grep 3000

浏览使用主机ip:端口访问默认账号密码:admin/admin

登录后把prometheus服务器收集的数据作为一个数据源添加到grafana,让grafana可以得到prometheus的数据

(1)从左侧导航栏找到Data sources菜单

url填上PrometheusIP地址加端口

2.2配置Grafana仪表板

配置完数据源后,grafana接收到prometheus的数据需要使用仪表板展示,仪表板可自定义或导入模板,grafana官网也有非常多类型的模板供下载

Grafana dashboards | Grafana Labs

(1)从左侧导航栏找到导入仪表板,选择添加一个面板我选了官网的3662面板

接下来采集Linux主机系统资源

下载安装包:

地址:Download | Prometheus

上传采集器node_exporter-1.4.0.linux-amd64.tar.gz

解压文件

移动文件到/usr/local/目录下并重命名为node_exporter

启动采集器并修改默认端口

tar -zxf  node_exporter-1.4.0.linux-amd64.tar.gz
mv node_exporter-1.4.0.linux-amd64 /usr/local/node_exporter
nohup /usr/local/node_exporter/node_exporter --web.listen-address=":9900" &

接下来配置prometheus

编辑prometheus.yml文件,配置监控项

[root@prometheus prometheus]# cat  prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  #- "/usr/local/prometheus/rules.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["192.168.158.183:9090"]
  - job_name: 'linux'
    file_sd_configs:
      - files:
          - /usr/local/prometheus/node_exporter_targets.json

如果有大批量的机器要监控的话,为了方便维护,可以把所有主机信息单独存放到一个文件中

标签名:beijing代表这台机是北京区域的,、prod代表是生产环境的,可自行修改。

[root@prometheus prometheus]# cat  /usr/local/prometheus/node_exporter_targets.json
[
    {
        "targets": ["192.168.158.183:9900"],
        "labels": {
            "project": "beijing",
            "env": "prod"
        }
    }
]

接下来执行

ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9

停止prometheus进程并启动。

nohup /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

接下来在grafana导入linux主机详情监控面板

我选择了这个面板

修改面板添加env变量并修改这两个查询语句

此时可以直观看到这台机的资源使用率,后续将继续完善监控系统添加报警功能。


http://www.kler.cn/a/501487.html

相关文章:

  • 多模态论文笔记——CLIP
  • 后盾人JS--JS值类型使用(终章)
  • Bash语言的多线程编程
  • 鼠标过滤驱动
  • 《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)
  • Spring中三级缓存详细讲解
  • 《框架程序设计》复习题解析-2
  • docker 自建rustdesk服务器测试
  • 51单片机和STM32集成蓝牙模块实用指南
  • 多个表单使用相同的 ref 和 rules,表单验证规则不生效
  • 前端开发:Web前端和HTML
  • Flutter 3.x 版本升级实战:让老项目焕发新生
  • 深入理解 Spring MVC 中的 @ModelAttribute 注解
  • 【Python学习系列】数据类型(二)
  • 《DOM NodeList》
  • Openstack持久存储-Swift,Cinder,Manila三者之间的区别
  • 【对象存储】-- s3:\\、s3n:\\、s3a:\\ 简介
  • 力扣 岛屿数量
  • 在线游戏靶场【overthewire.org】之linux基础练兵场
  • Github 2025-01-09 Go开源项目日报 Top10
  • docker--小白--导入timescaledb
  • 使用 WPF 和 C# 绘制图形
  • 稀疏编码 (Sparse Coding) 算法详解与PyTorch实现
  • linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包
  • Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)
  • webpack常见优化方法