监控平台Prometheus+Grafana的部署

复制代码

一、项目的整体情况

项目的数据导向:

系统:Ubuntu/Debian

推荐配置:

项目 配置
CPU 2核以上
内存 2GB以上
磁盘 20GB以

端口开放:

组件 默认端口 用途
Node Exporter 9100 采集本机 metrics
Prometheus 9090 数据查询 Web UI
Grafana 3000 监控仪表盘

二、组件的安装

2.1、Node Exporter的安装

主要负责采集Linux系统指标和相关参数的。

定位:运行在每台被监控主机上的指标采集 Agent。

Node Exporter 是 Prometheus 官方提供的 Linux/Unix 系统指标采集器,以 HTTP 服务形式暴露主机硬件和操作系统的原始指标,监听端口 :9100 ,路径 /metrics
工作机制:Node Exporter 本身不推送数据,只是把数据"摆在那里",等 Prometheus 来拉。它是被动暴露,不主动上报。

2.1.1 安装node exporter程序
复制代码
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
#这个地址可能会生效,因为github上的项目可能路径修改或者release弃用
2.1.2 解压node exporter包
复制代码
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64
./node_exporter
#解压完成后切换到如上目录下,然后执行 ./node_exporter 输出如下则证明正常
2.1.3 给node exporter添加配置文件
复制代码
sudo vim /etc/systemd/system/node_exporter.service
复制代码
[Unit]
Description=Node Exporter
After=network.target
​
[Service]
Type=simple
User=root
ExecStart=/root/node_exporter-1.7.0.linux-amd64/node_exporter
Restart=on-failure
​
[Install]
WantedBy=multi-user.target
2.1.4 重新加载并启动node 服务
复制代码
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
2.1.5 验证node exporter程序
复制代码
curl http://localhost:9100/metrics | head -50
#localhost写你的部署程序的IP地址
2.2、Prometheus的安装

定位:时序数据库 + 数据抓取引擎,整个监控体系的核心。 Prometheus 是 CNCF 毕业项目,采用 Pull 模型------它定时(默认 15s)主动去各个 target(比如 Node Exporter)拉取指标数据,存入内置的时序数据库(TSDB)。监听端口 :9090。

核心概念:

  • Scrape :Prometheus 定时抓取 target 的 /metrics 接口,这个动作叫 scrape。

  • TSDB :数据以时间戳+标签的形式落盘,默认保留 15 天,数据存在 /var/lib/prometheus/

  • PromQL:Prometheus 自带的查询语言,支持过滤、聚合、计算函数。Grafana 的 Dashboard 本质上是一堆 PromQL 查询语句。

  • 配置驱动 :所有监控目标写在 /etc/prometheus/prometheus.ymlstatic_configs.targets 里,支持热加载(curl -X POST http://localhost:9090/-/reload)。

2.2.1 下载安装Prometheus
复制代码
sudo apt-get install -y prometheus
2.2.2 配置Prometheus
复制代码
vim /etc/prometheus/prometheus.yml
#写入如下的内容
global:
  scrape_interval: 15s      # 抓取间隔
  evaluation_interval: 15s  # 规则评估间隔
​
scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
2.2.3 配置为系统的服务器
复制代码
sudo vim /etc/systemd/system/prometheus.service
#写入如下的内容
[Unit]
Description=Prometheus
After=network.target

[Service]
Type=simple
User=root
ExecStart=/root/prometheus-2.48.0.linux-amd64/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --web.console.libraries=/root/prometheus-2.48.0.linux-amd64/consoles \
  --web.console.templates=/root/prometheus-2.48.0.linux-amd64/prometheus consoles
Restart=on-failure

[Install]
WantedBy=multi-user.target
2.2.4 创建数据目录并启动服务
复制代码
sudo mkdir -p /var/lib/prometheus
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
2.2.5 验证Prometheus
复制代码
curl http://localhost:9090/api/v1/targets
#正常情况下应该会返回如下的结果信息
2.3、Grafana的安装

定位:可视化层 + 告警平台,负责把 Prometheus 里的数据变成人能看懂的图表。

Grafana 是独立的可视化工具,支持对接几十种数据源(Prometheus、InfluxDB、MySQL 等)。在 Prometheus 监控栈里,它作为前端展示层,监听端口 :3000,通过浏览器访问。

2.3.1 下载安装Grafana组件
复制代码
# 1. 导入 Grafana 官方 GPG 密钥(验证包完整性,长期有效),不使用Grafana的官方源,下载速度特别慢
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

# 2. 添加清华镜像源(永久地址,国内访问速度快)
echo "deb https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/ stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

# 3. 更新源列表,加载清华镜像
sudo apt update

# 4. 安装最新稳定版 Grafana
sudo apt install -y grafana
2.3.2 启动Grafana服务器
复制代码
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
sudo systemctl status grafana-server
2.3.3 登录访问

使用,IP地址+3000第一次登录都会让我们修改密码,默认的账户密码是admin,admin

登录进来后我们这里是english,如果英语不好的可以调整为汉语

点击头像--->选择Profile--->Preferences--->Language--->中文--->然后 save preferences

2.3.4 添加 Prometheus 数据源

在左侧的导航窗口可以看到一些选项,我们打开连接,我们需要选择进行数据流展示的源数据 1、点击打开【连接】,选择【数据源】 2、点击【添加新数据源】 3、有很多的数据库可以进行连接,我们选择我们需要的【Prometheus】

4、进入后填写【Connection】,输入如下内容,然后保存并测试

复制代码
http://10.2.21.163:9090
#根据你自己的IP进行调整

5、出现如下的代表成功了

2.3.5 导入仪表盘

1、点击【仪表板】,然后选择右上角的【新建】,选择【导入】 2、输入 1860(官方 Node Exporter 面板 ID)点击加载,点击【import】 3、然后出现如下的内容代表成功

三、补充

1、说明

我当前的部署文档只针对我这个服务器,只针对本机,如果有小规模集群,需要改动新增一些东西 还有就是仪表盘这个,你可以进行自己创建编写你需要的数据,本文档,只为方便选择导入现成的仪表板

2、小规模集群部署
2.2.1 部署node exporter服务

每台服务器上执行,可以通过ansible批量执行,感兴趣的自己去了解

复制代码
wget https://ghproxy.com/https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64
2.2.2 添加配置文件
复制代码
sudo tee /etc/systemd/system/node_exporter.service > /dev/null << 'EOF'
[Unit]
Description=Node Exporter
After=network.target

[Service]
Type=simple
User=root
ExecStart=/root/node_exporter-1.7.0.linux-amd64/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
#每台服务器都执行如上的
2.2.3 验证node 程序
复制代码
curl http://localhost:9100/metrics | head -5
2.2.4 修改Prometheus配置文件

在主监控主机上修改,不要在被监控的主机上修改

复制代码
sudo vim /etc/prometheus/prometheus.yml
#输入如下的内容
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:

  # 监控 Prometheus 自身
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  # 监控所有主机(本机 + 三台远程主机)
  - job_name: 'node_exporter'
    static_configs:
      - targets:
          - 'localhost:9100'       # 本机
          - '10.2.21.165:9100'    # 主机 165
          - '10.2.21.166:9100'    # 主机 166
          - '10.2.21.167:9100'    # 主机 167
2.2.5 验证完整性

执行如下的内容验证是否生效

复制代码
curl -X POST http://localhost:9090/-/reload    #热加载

#然后在Prometheus主机上执行如下:测试连通性,看是否正常,有无报错
curl http://10.2.21.165:9100/metrics | head -3
curl http://10.2.21.166:9100/metrics | head -3
curl http://10.2.21.167:9100/metrics | head -3
2.2.6 数据流向
相关推荐
DianSan_ERP3 小时前
如何通过抖店订单接口实现订单状态管理与履约自动化?
运维·自动化
b***25113 小时前
18650电池点焊机:电阻焊技术如何决定电池组的成败|深圳比斯特自动化
运维·自动化
原来是猿3 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
前端老曹4 小时前
Docker 从入门到放弃:完整指南
运维·docker·容器
AOwhisky4 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
rabbit_pro5 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
笑洋仟7 小时前
docker的overlay2目录占用磁盘空间很大,清理办法
运维·docker·容器
木雷坞7 小时前
2026 年 5 月国内可用 Docker 镜像源列表与配置方法
运维·docker·容器
2301_780789668 小时前
“数字珍珠港”再现:西北能源基地DNS篡改事件深度复盘与防护升级
运维·服务器·网络·tcp/ip·网络安全·智能路由器·能源
老王谈企服8 小时前
2026制造业供应链韧性提升,智能化将成为核心解决方案吗?基于实在Agent的端到端自动化实践
运维·人工智能·ai·自动化