在日常运维中配备一个监控还是非常有必要,市面上监控程序有很多,我会挑几个来演示,本次我们来使用企业级的Grafana+Prometheus,相信大部分人还是搞不定的,跟着我的文章走,应该没问题

Grafana安装

Grafana是什么

Grafana是一个通用的可视化工具。对于Grafana而言,Prometheus这类为其提供 数据的对象均称为数据源(Data Source)。目前,Grafana官方提供了对:Graphite, InfluxDB, OpenTSDB, tdengine,Prometheus, Elasticsearch, CloudWatch的支持。对于Grafana管理员而言,只需要将这些对象以数据源的形式添加到Grafana中,Grafana便可以轻松的实现对这些数据的可视化工作。

相对于Prometheus,Grafana的搭建还是比较简单的

安装必要的依赖包

sudo apt-get update
sudo apt-get install -y apt-transport-https software-properties-common wget gpg

导入 Grafana GPG 密钥

为了验证下载的软件包的真实性,需要导入 Grafana 的 GPG 密钥。

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
  • wget -q -O - ...: 下载 GPG 密钥。

  • gpg --dearmor: 将密钥从 ASCII 格式转换为 OpenPGP 二进制格式。

  • sudo tee ...: 将密钥写入指定的文件

添加 Grafana APT 仓库

将Grafana 的 APT 仓库添加到你的系统源列表中。这里我们添加的是稳定版 (stable) 仓库。

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
  • [signed-by=...]: 指定用于验证此仓库中软件包签名的 GPG 密钥文件。

  • https://apt.grafana.com: Grafana 的 APT 仓库地址。

  • stable main: 指定使用稳定版仓库。

更新 APT 缓存并安装 Grafana

添加仓库后,更新本地的包列表,然后安装 Grafana。

sudo apt-get update
sudo apt-get install grafana

这将安装 Grafana 的开源 (OSS) 版本。如果你需要企业版 (Enterprise),可以使用 sudo apt-get install grafana-enterprise。企业版包含所有开源版功能,并增加了需要许可证才能激活的额外功能。

启动并启用 Grafana 服务

安装完成后,Grafana 服务不会自动启动。你需要手动启动它,并设置为开机自启。

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

验证 Grafana 服务状态

检查 Grafana 服务是否正在运行

sudo systemctl status grafana-server

其他问题

首次登录

  • 默认的用户名是 admin

  • 默认的密码也是 admin

  • 首次登录后,系统会强制要求你修改默认密码。

其他有用的信息:

  • 配置文件: Grafana 的主配置文件位于 /etc/grafana/grafana.ini

  • 日志文件: 默认日志文件位于 /var/log/grafana/grafana.log

  • 数据目录: Grafana 的 SQLite3 数据库(默认)、插件等数据默认存储在 /var/lib/grafana/

  • 卸载 Grafana: 如果需要卸载,可以运行 sudo apt-get remove grafana 并可选地删除配置文件和数据目录。

如果你是按照我的教程来的话你就可以在浏览器打开网页了,他默认端口是3000

本次教程演示地址为:http://192.168.111.10:3000/login

进去后,界面全是英文,英文不好的估计是有点恼火,当然我们可以切换成中文

到此我们Grafana也就安装完成了.

安装Prometheus

Prometheus是什么

prometheus是由谷歌研发的一款开源的监控软件,它通过安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上

创建 Prometheus 系统用户和组

出于安全考虑,最好为 Prometheus 创建一个专门的系统用户和组,并禁止其登录 Shell。

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

创建必要的目录

创建用于存放 Prometheus 配置文件和数据的目录。

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus

下载 Prometheus 二进制文件

我们得去他的开源仓库看,我们找到对应版本复制链接

https://github.com/prometheus/prometheus

截至到2025-04-28稳定版LTS

https://github.com/prometheus/prometheus/releases/download/v2.53.4/prometheus-2.53.4.linux-amd64.tar.gz

我们可以新建一个临时目录/tmp

mkdir tmp
cd tmp/
wget https://github.com/prometheus/prometheus/releases/download/v2.53.4/prometheus-2.53.4.linux-amd64.tar.gz

解压并移动文件

tar xvf prometheus-2.53.4.linux-amd64.tar.gz
cd prometheus-2.53.4.linux-amd64/

移动核心二进制文件 prometheus (服务器) 和 promtool (配置检查工具) 到 /usr/local/bin

sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/

移动配置文件目录 (consolesconsole_libraries) 到 /etc/prometheus

sudo mv consoles /etc/prometheus
sudo mv console_libraries /etc/prometheus

创建 Prometheus 配置文件

sudo nano /etc/prometheus/prometheus.yml

将以下内容粘贴到文件中,各位在粘贴yml一定要注意格式:

global:
  scrape_interval: 15s # 每 15 秒抓取一次 targets

# 抓取配置
scrape_configs:
  # 'prometheus' 这个 job 负责抓取 Prometheus 服务自身的指标
  - job_name: 'prometheus'
    # metrics_path 默认为 /metrics
    # scheme 默认为 http
    static_configs:
      - targets: ['localhost:9090'] # Prometheus 默认监听 9090 端口

设置目录和文件权限

将配置目录、数据目录和二进制文件的所有权交给之前创建的 prometheus 用户和组。

sudo chown prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/*
sudo chown prometheus:prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

创建 Systemd 服务文件

为了方便管理 Prometheus 服务(启动、停止、重启、开机自启),创建一个 systemd 服务文件。

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

粘贴以下内容:

[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
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

Restart=always

[Install]
WantedBy=multi-user.target
  • UserGroup: 指定运行服务的用户和组。

  • ExecStart: 定义启动命令和参数。

    • --config.file: 指定配置文件路径。

    • --storage.tsdb.path: 指定数据存储路径。

    • --web.console.templates--web.console.libraries: 指定 Web UI 模板路径。

    • --web.listen-address=0.0.0.0:9090: 使 Prometheus 在所有网络接口的 9090 端口上监听。如果只想本机访问,可以改为 127.0.0.1:9090

  • Restart=always: 服务意外退出时总是尝试重启。

启动并启用 Prometheus 服务

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

验证 Prometheus 服务状态

sudo systemctl status prometheus

当其显示这个页面我们也就安装好了,现在我们访问一下。

本教程url为:http://192.168.111.10:9090/

估计各位看起来也是一脸懵逼,搭建到这里我们算是完成了一大半,我们还需要安装exporter并配置到Prometheus,这样我们才会有数据。下面我举一个例子,各种exporter安装起来都大同小异。

安装Exporter

本教程以node_exporter为例

创建 node_exporter 系统用户和组

node_exporter 创建一个专门的、无登录权限的系统用户和组:

sudo groupadd --system node_exporter
sudo useradd -s /sbin/nologin --system -g node_exporter node_exporter

下载 node_exporter 二进制文件

我们得去下载他的二进制程序

https://github.com/prometheus/node_exporter

截止到2025-04-28最新版本为:

https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz

我们还是去临时目录/tmp

cd tmp/
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz

解压并移动文件

tar xvf node_exporter-1.9.1.linux-amd64.tar.gz
cd node_exporter-1.9.1.linux-amd64/

移动 node_exporter 二进制文件到 /usr/local/bin

sudo mv node_exporter /usr/local/bin/

设置文件权限

将二进制文件的所有权交给之前创建的 node_exporter 用户和组

v

创建 Systemd 服务文件

为 node_exporter 创建 systemd 服务文件,方便管理。

sudo nano /etc/systemd/system/node_exporter.service

粘贴下面内容:

[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
# 显式指定监听地址和端口(默认是 :9100)
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
Restart=always

[Install]
WantedBy=multi-user.target

--web.listen-address=:9100: 让 node_exporter 在所有网络接口的 9100 端口监听。如果你只想让本机(比如同机部署的 Prometheus)访问,可以用 --web.listen-address=127.0.0.1:9100。对于 node_exporter,通常让它监听在所有接口更方便,因为 Prometheus 可能部署在不同机器上。但如果 Prometheus 和 node_exporter 在同一台机器,监听 127.0.0.1:9100 更安全。我们这里假设 Prometheus 就在本机。

启动并启用 node_exporter 服务

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

验证 node_exporter 服务状态

sudo systemctl status node_exporter

如果是这个样子我们现在就可以访问它的 metrics 端点:

本教程url为:http://192.168.111.10:9100/metrics

你应该像我一样能看到大量的文本格式的主机指标输出。

到这里我们node_exporter 客户端算是安装好了,我们现在要去配置Prometheus服务端

配置Prometheus连接node_exporter

编辑 Prometheus 配置文件

sudo nano /etc/prometheus/prometheus.yml

粘贴下面的内容并保存:

global:
  scrape_interval: 15s # 每 15 秒抓取一次 targets

# 抓取配置
scrape_configs:
  # 'prometheus' 这个 job 负责抓取 Prometheus 服务自身的指标
  - job_name: 'prometheus'
    # metrics_path 默认为 /metrics
    # scheme 默认为 http
    static_configs:
      - targets: ['localhost:9090'] # Prometheus 默认监听 9090 端口
# 新增 job:抓取本机上的 node_exporter
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100'] # node_exporter 监听的地址 (如果是 127.0.0.1:9100 就用这个)

注意缩进,注意缩进,注意缩进

我建议是你复制我的内容去这个网站格式化一下

https://www.ol-tools.com/yaml-viewer

检查 Prometheus 配置语法

sudo /usr/local/bin/promtool check config /etc/prometheus/prometheus.yml

出现success那就没有问题

Prometheus 重新加载配置

sudo systemctl restart prometheus

Prometheus UI 中验证

  • 打开 Prometheus 的 Web UI (http://<你的服务器IP>:9090)。

  • 导航到 Status -> Targets

  • 你应该能看到两个 Job:prometheusnode_exporter。并且 node_exporter job 下的 Endpoint (localhost:9100) 状态应该是 UP (可能需要等一小会儿,最多等一个 scrape_interval 的时间)。

现在,你的 Prometheus 就可以收集并存储这台 Debian 主机的详细系统指标了。我们开始在 Grafana 中配置使用这些指标来创建仪表盘。

使用Grafana可视化Prometheus数据

添加Prometheus数据源

在箭头这里配置我们的Prometheus服务器地址

测试一下然后点击保存,请确保连接成功.

配置面板

我们这个在这里去找我们想要的面板

https://grafana.com/grafana/dashboards/

这里我随便找一个,请注意一定要找对应的exporter,点击我箭头的地方复制id

选择我们的Prometheus数据源点击Import

我们可视化就配置完毕,刚开始没有数据是正常的,等几分钟。

给大家看看我之前的效果看起来还是挺炫酷的

删除临时文件

我们tmp文件里面还有我们的各种安装包我们要进行删除

cd ..
cd ..
rm -rf tmp