Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。

《Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松》

一、概述

本文使用Prometheus+Grafana+Node Exporter搭建Linux主机监控系统:

  • Prometheus 是一个监控系统,可以收集和存储来自各个目标的指标数据。它支持多种数据源,包括 Node Exporter。


添加图片注释,不超过 140 字(可选)


  • Grafana 是一个可视化工具,可以用于可视化 Prometheus 收集到的指标数据。它提供了多种仪表盘和图表类型,可以帮助您快速了解监控数据。


添加图片注释,不超过 140 字(可选)


  • Node Exporter是一个进程,可以收集 Linux 主机的各种指标数据,并将其暴露为 Prometheus 可以抓取的 HTTP 端点。

二、安装

环境准备

以下是本文所需的环境:

  • 一台运行 Linux 的服务器(建议使用 CentOS 或 Ubuntu)
  • Docker
  • Prometheus 和 Grafana
  • Node Exporter

1、安装prometheus

这里我们可以在github上获取最新的版本:https://github.com/prometheus/prometheus

vim prometheus.yml # my global config global:   scrape_interval:     15s # 采集被监控段指标的一个周期   evaluation_interval: 15s # 告警评估的一个周期 # 告警的配置文件 alerting:   alertmanagers:   - static_configs:     - targets:       # - alertmanager:9093 # 告警规则配置 rule_files:   # - "first_rules.yml" # 被监控端的配置,目前只有一个节点,就是prometheus本身 scrape_configs:   - job_name: 'prometheus'     static_configs:     - targets: ['localhost:9090'] docker run -d  -p 9090:9090 \ --name prometheus  \ --restart on-failure  \ -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus

完全启动后可以,访问Prometheus自带的UI:http://xx.xx.xx.xx:9090/,打开以下页面说明安装成功。


添加图片注释,不超过 140 字(可选)


2、安装grafana

docker  run -d --name=grafana  -p 3000:3000  grafana/grafana

执行后,下载镜像并启动。完成启动完成,打开http://xx.xx.xx.xx:3000,默认用户名/密码:admin/admin


添加图片注释,不超过 140 字(可选)


3、安装node_exporter

cd /usr/local/src/ wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gztar -xvf node_exporter-1.6.1.linux-amd64.tar.gz mv /usr/local/src/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin vim /usr/lib/systemd/system/node_exporter.service

node_exporter.service文件内容:

[Unit] Description=node_exporter Documentation=https://prometheus.io/ After=network.target [Service] ExecStart=/usr/local/bin/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable node_exporter systemctl restart node_exporter

启动后打开这个地址:http://xx.xx.xx.xx:9100/


添加图片注释,不超过 140 字(可选)



添加图片注释,不超过 140 字(可选)


以上页面能打开说明安装成功。

如果安装失败可以使用:

systemctl status node_exporter

看看有什么异常。

4、配置prometheus

# 启动后,配置prometheus.yml vim /data/prometheus/prometheus.yml 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: ['xx.xx.xx.xx:9090']   # 新增,采集node_exporter监控数据   - job_name: "Linux-Metrics"     static_configs:     - targets: ['xx.xx.xx.xx:9100'] # 重新启动prometheus systemctl restart prometheus


三、使用

http://xx.xx.xx.xx:3000,默认用户名/密码:admin/admin


添加图片注释,不超过 140 字(可选)


选择 "Add your first data source"


添加图片注释,不超过 140 字(可选)


进入后选择Prometheus


添加图片注释,不超过 140 字(可选)


填写相关信息


添加图片注释,不超过 140 字(可选)


添加Prometheus模板


添加图片注释,不超过 140 字(可选)


输入id号,9276


添加图片注释,不超过 140 字(可选)


然后下拉,选择Prometheus,然后Import


添加图片注释,不超过 140 字(可选)


成功展示来由Prometheus数据


添加图片注释,不超过 140 字(可选)


至此整个Linux主机监控就完成了。

四、补充

1、Dashboard模板

如果不知道使用什么模板可以找个教程使用教程里的就好,如果想进一步了解下模板可以去官网这里搜索相应的模板。https://grafana.com/grafana/dashboards ,里面可以输入关键词搜索,还有相应的下载量排名或评分排名。


添加图片注释,不超过 140 字(可选)


选择一个,点击进入详情页面,可以复制ID


添加图片注释,不超过 140 字(可选)


2、数据对照


添加图片注释,不超过 140 字(可选)


可以看到有些数据与top是一致的,有的不一致。主要是计算的方式不一致,可以选择一个统计图,点击标题


添加图片注释,不超过 140 字(可选)


Edit进入详情。


添加图片注释,不超过 140 字(可选)


比如已用内存它是根据这个计算公式算出来的。这样再对照着top的数据就是一致的了。

3、自定义模板

上面说到可以Edit进入dashboard详情,可以看到这么多的表达式。如果我们想调整这里的数据或过滤条件就可以编辑这些参数了。

当然从Edit进入的是单个统计模块,也可以从这里进入整个dashboard模板。修改这里的json


添加图片注释,不超过 140 字(可选)



添加图片注释,不超过 140 字(可选)


再来说一下这个表达式,这个表达式也就是PromQL 语言。

Grafana Dashboard 中的表达式是 PromQL 语言,它是 Prometheus 的指标查询语言。PromQL 是一种基于 Prometheus 数据模型的查询语言,可以用于查询和过滤 Prometheus 的指标数据。

PromQL 表达式可以用于以下目的:

  • 查询指标数据
  • 过滤指标数据
  • 计算指标数据
  • 对指标数据进行聚合

PromQL 表达式使用以下语法:

[指标名] [操作符] [值]

例如,以下表达式将查询 CPU 使用率的指标数据:

cpu_usage

以下表达式将查询 CPU 使用率的指标数据,并将其限制为 100%:

cpu_usage < 100

以下表达式将计算 CPU 使用率的指标数据的平均值:

avg(cpu_usage)

以下表达式将将 CPU 使用率的指标数据按主机聚合:

by(host) cpu_usage

PromQL 语言具有丰富的功能,可以满足各种监控需求。

以下是一些常用的 PromQL 表达式:

  • 查询指标数据

cpu_usage

  • 过滤指标数据

cpu_usage < 100

  • 计算指标数据

avg(cpu_usage)

  • 对指标数据进行聚合

by(host) cpu_usage

如何简单调试PromQL,可以打开prometheus自带的web ui进入调试

添加图片注释,不超过 140 字(可选)



相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
目录
相关文章
|
16天前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
90 20
|
12天前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
67 7
|
2月前
|
数据采集 Prometheus 监控
监控堆外第三方监控工具Grafana
监控堆外第三方监控工具Grafana
54 5
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
167 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
690 6
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
119 3
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
96 2
|
1月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
62 14
Linux 10 个“who”命令示例
|
14天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
42 8
|
24天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
122 20