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

若无单独说明,按照文章代码块中命令的顺序,一条一条执行,即可实现目标。

适用系统:Debian 系发行版,包括 Ubuntu ,其他发行版按流程稍改命令一般也可。

完成部署预计时间:15 分钟

文章里的一键脚本仅适用于 amd64 系统


本指南中的步骤是为非 root 用户编写的。需要提升权限的命令以 sudo 为前缀。

Prometheus 和 Node Exporter 可以从 GitHub 下载预编译的二进制文件,本文流程就是使用的二进制文件。

它们的 GitHub 页面也提供了有关如何从源代码构建 Prometheus 或将其作为 Docker 容器运行的说明。

复制一键式安装

为了更快的部署,我准备了脚本,实际上就是把下面前 3 节的内容放在一起罢了。

如果不想使用脚本,或者希望了解安装过程,跳过本节即可,从「下载并安装 Prometheus」开始。

如果使用下面两个脚本安装 Prometheus 和 Node Exporter,那么之后从「配置 Prometheus 监控客户端节点」开始看。


复制一键安装 Prometheus:(bash-script/install-prometheus.sh at main · AhFeil/bash-script (github.com)

wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-prometheus.sh' | sudo bash

若运行结束后,出现 active (running) ,则安装成功。

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


在客户端只给 监控服务器IP 开放 9100 端口,记得修改监控服务器IP:

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

复制一键安装 Node Exporter:(bash-script/install-node_exporter.sh at main · AhFeil/bash-script (github.com)

wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-node_exporter.sh' | sudo bash

若运行结束后,出现 active (running) ,则安装成功。

更新的话重新运行一遍就可以


下载并安装 Prometheus

下载地址:Download | Prometheus复制最新LTS版本的下载地址

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

# 获取 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')
# echo ${tag}
# tag2=${tag#*v}

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

# 将 Prometheus 可执行文件放入通用的系统目录下
sudo mv prometheus promtool /usr/local/bin/
# /etc/prometheus 放Prometheus配置文件。 /var/lib/prometheus 存应用程序数据
sudo mkdir -p /etc/prometheus /var/lib/prometheus && \ sudo mv prometheus.yml /etc/prometheus/prometheus.yml sudo mv consoles/ console_libraries/ /etc/prometheus/

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

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

prometheus --version

创建一个系统用户 prometheus

sudo useradd -rs /bin/false prometheus

所有权分配

sudo chown -R prometheus: /etc/prometheus /var/lib/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 一个目标。

image.png

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

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

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

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

下载地址:Download | Node Exporter复制最新LTS版本的下载地址

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

# 获取 Prometheus 最新版本
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 ${tag}
echo ${tag#*v}

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

sudo mv node_exporter-*.linux-amd64/node_exporter /usr/local/bin
rm -r node_exporter-*.linux-amd64*

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

sudo useradd -rs /bin/false node_exporter

创建一个服务文件 node_exporter.servicesystemctl 使用。

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_nameremote_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", "remote_addr2:9100"]

立即刷新 Prometheus,

sudo systemctl restart prometheus

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

image.png

安装 Grafana 服务器

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

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

  1. 安装一些必需的实用程序
sudo apt-get install -y apt-transport-https software-properties-common
  1. 导入 Grafana GPG 密钥
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
  1. 添加 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
  1. 安装 Grafana 的开源版本。
sudo apt-get update && sudo apt-get install grafana

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

  1. 重新加载 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,请按照以下步骤操作:

  1. 浏览器访问监控服务器的 3000 端口。例如,输入 http://ip_addr:3000 ,将 ip_addr 替换为实际 IP 地址。
  2. Grafana 显示登录页面。使用用户名和默认密码 都是 admin 。当出现提示时,将密码更改为更安全的值。
  3. 成功更改密码后,Grafana 将显示 Grafana 仪表板。
  4. 要将 Prometheus 添加为数据源,请单击齿轮符号(代表配置),然后选择数据源。
image.png
  1. 在下一个显示中,单击“添加数据源”按钮。
  2. 选择Prometheus作为数据源。
  3. 对于本地 Prometheus 源,将 URL 设置为 http://localhost:9090 。大多数其他设置可以保留默认值。
image.png
  1. 对设置满意后,选择屏幕底部的【Save & test】按钮。
  2. 如果所有设置均正确,Grafana 会确认 Data source is working

导入 Grafana 仪表板

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

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

  1. 访问 Grafana 仪表板库: https://grafana.com/grafana/dashboards/。输入 Node exporter 作为搜索词。
  2. 选择 Node Exporter Full 条目。
  3. 右下角查看 ID 号。该板的 ID 当前为 1860
  4. 返回 Grafana 仪表板。选择由四个正方形组成的仪表板图标,
image.png
  1. 右边【New】-【Import】。
image.png
  1. 然后在 【Import via grafana.com】, 输入上一步中的 ID 1860 。然后选择【Load】。
image.png
  1. 在下一个屏幕确认导入详细信息。选择 Prometheus 作为数据源,然后单击【Import】按钮。
image.png
  1. Node Exporter Full 仪表板立即生效。它显示客户端节点的性能指标和状态,包括内存、RAM 和 CPU 详细信息。
image.png

原文链接: 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)

如果你认为我的文章有帮助,欢迎使用 RSS 订阅,也欢迎留言指正。


本文主体内容编译自: How to Install and Configure Prometheus and Grafana on Ubuntu | Linode Docs,感谢 Linode 的文章。

原文链接: 探针 Grafana + Prometheus 之比 Docker 更简单的部署流程

© 版权声明
THE END
喜欢就支持一下吧
点赞13分享
评论 抢沙发
头像
说说你的看法!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容