监控平台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 数据流向
相关推荐
荣--12 小时前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森13 小时前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜1 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
虚无境7 天前
如何编写一个SpringBoot项目告警推送的Starter
java·prometheus·webhook
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务