侧边栏壁纸
博主头像
Tech • VPS • Network vlx@tech

行动起来,活在当下

  • 累计撰写 20 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Grafana + Prometheus 探针比Docker更简单方案的部署流程

vlongx
2026-01-10 / 0 评论 / 0 点赞 / 110 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-10,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Grafana + Prometheus 探针比Docker更简单方案的部署流程

下载并安装 Prometheus

下载地址:Download | Prometheus

下面脚本自动获取最新版本,并下载安装。一键复制,粘贴到终端执行即可。

# 获取 Prometheus 最新版本
github_project="prometheus/prometheus"
tag=$(wget -qO- -t1 -T2 "https://api.github.com/repos/${github_project}/releases/latest" \
  | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' \
  | sed 's/\"//g;s/,//g;s/ //g')

# 架构判断
arch=$(uname -m)
case "$arch" in
  x86_64)
    arch_tag="amd64"
    ;;
  aarch64|arm64)
    arch_tag="arm64"
    ;;
  *)
    echo "❌ 不支持的架构: $arch"
    exit 1
    ;;
esac

# 下载并解压
wget https://github.com/prometheus/prometheus/releases/download/${tag}/prometheus-${tag#*v}.linux-${arch_tag}.tar.gz && \
tar xvfz prometheus-*.tar.gz && \
rm prometheus-*.tar.gz && \
cd prometheus-*.linux-${arch_tag}

# 安装二进制
sudo mv prometheus promtool /usr/local/bin/

# 创建目录并放配置
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo mv prometheus.yml /etc/prometheus/prometheus.yml

# 清理
cd .. && rm -rf prometheus-*.linux-${arch_tag}

  • prometheuspromtool 目录移动到 /usr/local/bin/ 目录。这使得所有用户都可以访问 Prometheus。
  • prometheus.yml 是配置文件
  • consolesconsole_libraries 目录包含创建自定义控制台所需的资源。此功能更为高级,本文未介绍。但是,这些文件也应移至 etc/prometheus 目录,以备需要时使用。

使用以下命令验证 Prometheus 是否已成功安装:

prometheus --version

创建一个系统用户 prometheus

sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

修正目录权限

sudo chown -R prometheus:prometheus /var/lib/prometheus /etc/prometheus

将 Prometheus 配置为服务

使用 systemd 守护进程,它能实现程序的后台运行、开机自启、崩溃重启等。

创建 prometheus.service 文件:

sudo vim /etc/systemd/system/prometheus.service

复制进去

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
 
[Service]
User=prometheus
Group=prometheus
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries \
    --web.listen-address=0.0.0.0:9090 \
    --web.enable-lifecycle \
    --log.level=info
 
[Install]
WantedBy=multi-user.target

说明:

  • ExecStart :就是在终端时开启程序的命令,只不过要用绝对路径。
  • config.file 将 Prometheus 配置文件的位置为/etc/prometheus/prometheus.yml 。
  • storage.tsdb.path 告诉 Prometheus 将程序数据存储在 /var/lib/prometheus/ 中。
  • web.listen-address 设置为 0.0.0.0:9090 ,允许 Prometheus 侦听所有网络接口上的连接。
  • web.enable-lifecycle 选项允许用户在不重新启动Prometheus的情况下重新加载配置文件。

重新加载 systemctl 守护进程。

sudo systemctl daemon-reload

设置开机自启,并立即启动运行

sudo systemctl enable --now prometheus

查看状态

sudo systemctl status prometheus
sudo systemctl start prometheus
  • 如果 prometheus 服务无法正常启动,请运行命令 journalctl -u prometheus -f --no-pager 并检查输出是否有错误。

通过 http://ip_addr:9090 访问 Prometheus Web 界面和仪表板。将 ip_addr 替换为监控服务器的地址。

进入网页后,由于 Prometheus 使用的是默认配置文件,因此还没显示太多信息。

默认的 prometheus.yml 文件包含用于抓取本地主机的指令。到【Status】-【Targets】可以看见所有目标。 目前应该只有本地 Prometheus 一个目标。

1.png

在客户端安装 Node Exporter 并配置为服务

在客户端上安装 Node Exporter ,再将客户端添加到 prometheus.yml 中服务器列表中就能监控。其统计信息收集可在端口 9100 上获得。该端口可通过互联网访问,任何在其他地方运行 Prometheus 的人都可以收集它们。

因此,使用防火墙限制仅监控服务器可以访问:

sudo ufw allow from 监控服务器IP to any port 9100 comment 'node_exporter'

下载地址:Download | Node Exporter
下面脚本自动获取最新版本,并下载安装。一键复制,粘贴到终端执行即可。

# 获取 node_exporter 最新版本
github_project="prometheus/node_exporter"
tag=$(wget -qO- -t1 -T2 "https://api.github.com/repos/${github_project}/releases/latest" \
  | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' \
  | sed 's/\"//g;s/,//g;s/ //g')

echo "version: ${tag}"
echo "version(no v): ${tag#*v}"

# 架构判断
arch=$(uname -m)
case "$arch" in
  x86_64)
    arch_tag="amd64"
    ;;
  aarch64|arm64)
    arch_tag="arm64"
    ;;
  *)
    echo "❌ 不支持的架构: $arch"
    exit 1
    ;;
esac

echo "arch: $arch → linux-${arch_tag}"

# 下载
wget https://github.com/prometheus/node_exporter/releases/download/${tag}/node_exporter-${tag#*v}.linux-${arch_tag}.tar.gz && \
tar xvfz node_exporter-*.tar.gz && \
rm node_exporter-*.tar.gz

# 安装
sudo mv node_exporter-*.linux-${arch_tag}/node_exporter /usr/local/bin/

# 清理
rm -rf node_exporter-*.linux-${arch_tag}*

将 Node Exporter 作为服务运行会更方便。首先创建一个 node_exporter 用户。

sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter

创建一个服务文件 node_exporter.service 供 systemctl 使用。

sudo vim /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
 
[Service]
User=node_exporter
Group=node_exporter
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/node_exporter
 
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter
sudo systemctl restart node_exporter

如果前面没设置只能由监控服务器访问,可以使用浏览器访问客户端节点的 9100 端口,例如 http://ip_addr:9100

将显示标题为 Node Exporter 的页面以及读取 Metrics 的链接。单击 Metrics 链接并确认正在收集统计信息。有关各种统计信息的详细说明,请参阅文档。

配置 Prometheus 监控客户端节点

客户端节点现在已准备好进行监控。要将客户端添加到 prometheus.yml ,请按照以下步骤操作:

在运行Prometheus的监控服务器上,打开 prometheus.yml 进行编辑。

sudo vim /etc/prometheus/prometheus.yml

找到 scrape_configs ,里面是作业列表。当前有一个名为 prometheus 的作业。此作业监视端口 9090 上的本地 Prometheus 任务。

在 prometheus 作业下方,添加第二个作业,其 job_name 为 remote_collector 。包括以下信息。

  • 设置抓取时间间隔: scrape_interval: 10s
  • 添加要监控的 IP 和 端口号 :9100 ,使用逗号分隔每个条目。
  • 要启用对本地服务器的监视,请将 localhost:9100 条目添加到列表中,并在本地安装 Node Exporter。

该条目应类似于以下示例。将 remote_addr 替换为客户端的实际IP地址。

- job_name: "remote_collector"
    scrape_interval: 10s
    static_configs:
      - targets: ["remote_addr:9100"]
        labels:
           instance: "VPS1"
      - targets: ["remote_addr:9100"]
        labels:
           instance: "VPS2"

多个服务器,增加多个targets,注意格式对其正确;

立即刷新 Prometheus

sudo systemctl restart prometheus

使用 Web 浏览器重新访问监控服务器上端口 9090 的 Prometheus Web 门户。选择【Status】-【Targets】。将显示 remote_collector 作业的第二个链接,指向客户端上的端口 9100 。单击链接查看统计数据。
2.png

安装 Grafana 服务器

Prometheus 收集的统计信息只能被视为原始数据转储。很难阅读,而且没有太大用处。

Grafana 提供了查看 Prometheus 收集的统计信息的界面。在运行 Prometheus 的同一服务器上安装 Grafana 并将 Prometheus 添加为数据源。

1.安装一些必需的实用程序

sudo apt-get install -y apt-transport-https software-properties-common

2.导入 Grafana GPG 密钥

sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

3.添加 Grafana“稳定版本”存储库。

echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

4.安装 Grafana 的开源版本。

sudo apt-get update && sudo apt-get install grafana

要安装 Grafana 企业版,请使用命令 sudo apt-get install grafana-enterprise

5.重新加载 systemctl 守护进程。

sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server.service
sudo systemctl status grafana-server
sudo systemctl start grafana-server

关联 Grafana 和 Prometheus

所有系统组件现已安装,但 Grafana 和 Prometheus 尚未关联。剩下的可以使用 Grafana Web 界面完成。

要集成 Grafana 和 Prometheus,请按照以下步骤操作:

  • 浏览器访问监控服务器的 3000 端口。例如,输入 http://ip_addr:3000 ,将 ip_addr 替换为实际 IP 地址。
  • Grafana 显示登录页面。使用用户名和默认密码 都是 admin 。当出现提示时,将密码更改为更安全的值。
  • 成功更改密码后,Grafana 将显示 Grafana 仪表板。
  • 要将 Prometheus 添加为数据源,请单击齿轮符号(代表配置),然后选择数据源。

3.png

  • 在下一个显示中,单击“添加数据源”按钮。
  • 选择Prometheus作为数据源。
  • 对于本地 Prometheus 源,将 URL 设置为 http://localhost:9090 。大多数其他设置可以保留默认值。

4.png

  • 对设置满意后,选择屏幕底部的【Save & test】按钮。
  • 如果所有设置均正确,Grafana 会确认 Data source is working 。

导入 Grafana 仪表板

可以创建自定义仪表板。然而,Prometheus 已经创建了一个仪表板来支持 Node Exporter,名为 Node Exporter Full ,下面是导入的流程。

要创建自定义仪表板,请单击仪表板按钮,该按钮类似于四个正方形。然后选择+新建仪表板。有关更多信息,请参阅 Grafana 构建仪表板指南。

  • 访问 Grafana 仪表板库: https://grafana.com/grafana/dashboards/。输入 Node exporter 作为搜索词。
  • 选择 Node Exporter Full 条目。
  • 右下角查看 ID 号。该板的 ID 当前为 22869 。
  • 返回 Grafana 仪表板。选择由四个正方形组成的仪表板图标,

5.png

  • 右边【New】-【Import】。
    6.png
  • 然后在 【Import via grafana.com】, 输入上一步中的 ID 22869 。然后选择【Load】。

7.png

  • 在下一个屏幕确认导入详细信息。选择 Prometheus 作为数据源,然后单击【Import】按钮。
    8.png
  • Node Exporter Full 仪表板立即生效。它显示客户端节点的性能指标和状态,包括内存、RAM 和 CPU 详细信息。

9.png

摘自:承飞之咎 (vfly2.com),进行修改,谢谢大佬!

原文链接: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/

版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 承飞之咎 (blog.vfly2.com)

0

评论区