Prometheus + Grafana实现服务器监控

目录

  • 一、环境说明
  • 二、监控端部署
    • [1. 开放防火墙端口](#1. 开放防火墙端口)
    • [2. 安装 Prometheus](#2. 安装 Prometheus)
    • [3. 安装 Blackbox Exporter](#3. 安装 Blackbox Exporter)
    • [4. 安装 Grafana](#4. 安装 Grafana)
    • [5. 创建 Prometheus 服务](#5. 创建 Prometheus 服务)
    • [6. 配置 Prometheus](#6. 配置 Prometheus)
    • [7. 配置 Targets](#7. 配置 Targets)
    • [8. 创建 Blackbox 服务](#8. 创建 Blackbox 服务)
    • [9. 创建 Grafana 服务](#9. 创建 Grafana 服务)
    • [10. 启动服务](#10. 启动服务)
  • 三、被监控端部署
    • [1. 开放防火墙](#1. 开放防火墙)
    • [2. 安装 Node Exporter](#2. 安装 Node Exporter)
    • [3. 创建 Node Exporter 服务](#3. 创建 Node Exporter 服务)
    • [4. 启动 Node Exporter](#4. 启动 Node Exporter)
  • 四、验证
  • [五、Grafana 配置](#五、Grafana 配置)
  • 六、常用排查命令

一、环境说明

适用环境:

  • Ubuntu 20.04 / 22.04
  • 离线部署(离线安装包在我上传的文件里)
  • tar.gz 二进制安装
  • systemd 管理服务

组件:

角色 组件
监控端 Prometheus + Grafana + Blackbox Exporter
被监控端 Node Exporter

组件说明:

Prometheus 是整个监控体系的核心服务器和时序数据库。它的主要作用有三个,分别是主动拉取数据、存储与计算、触发告警,可以当做是后端服务器。而Grafana负责数据可视化,也就是前端页面。Node Exporter 是一个专门安装在 Linux 或 Windows 服务器(物理机、虚拟机)上的轻量级代理程序,负责采集硬件信息,转发给Prometheus ,类似与一个系统里的采集前置。 Blackbox Exporter用于做黑盒监控,只用于监控网站能不能打开、接口响应快不快、端口通不通。

二、监控端部署

1. 开放防火墙端口

Prometheus

复制代码
sudo ufw allow 9090/tcp

Grafana

复制代码
sudo ufw allow 3000/tcp

Blackbox Exporter

复制代码
sudo ufw allow 9115/tcp

查看状态

复制代码
sudo ufw status

2. 安装 Prometheus

解压

复制代码
tar xvf prometheus-*.linux-amd64.tar.gz

进入目录

复制代码
cd prometheus-*.linux-amd64

创建用户

复制代码
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

创建目录

复制代码
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus

复制程序

复制代码
sudo cp prometheus promtool /usr/local/bin/

复制配置文件

复制代码
sudo cp prometheus.yml /etc/prometheus/

复制 Web 文件

复制代码
sudo cp -r consoles console_libraries /etc/prometheus/

修改权限

复制代码
sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus

3. 安装 Blackbox Exporter

解压

复制代码
tar xvf blackbox_exporter-*.linux-amd64.tar.gz

进入目录

复制代码
cd blackbox_exporter-*.linux-amd64

创建用户

复制代码
sudo useradd --no-create-home --shell /usr/sbin/nologin blackbox

复制程序

复制代码
sudo cp blackbox_exporter /usr/local/bin/

创建目录

复制代码
sudo mkdir -p /etc/prometheus

复制配置

复制代码
sudo cp blackbox.yml /etc/prometheus/

4. 安装 Grafana

解压

复制代码
tar -zxvf grafana-*.linux-amd64.tar.gz

移动目录

复制代码
sudo mv grafana-v11.1.0 /usr/local/grafana

创建用户

复制代码
sudo useradd -r -s /usr/sbin/nologin grafana

修改权限

复制代码
sudo chown -R grafana:grafana /usr/local/grafana

5. 创建 Prometheus 服务

创建文件:

复制代码
sudo nano /etc/systemd/system/prometheus.service

内容:

复制代码
[Unit]
Description=Prometheus Server
After=network.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.listen-address=:9090

Restart=on-failure

[Install]
WantedBy=multi-user.target

6. 配置 Prometheus

编辑:

复制代码
sudo nano /etc/prometheus/prometheus.yml

内容(这边的百度和谷歌都可以直接替换成自己服务的API):

复制代码
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:

  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'linux_servers'
    file_sd_configs:
      - files:
          - '/etc/prometheus/targets/*.json'
        refresh_interval: 1m

  - job_name: 'blackbox'
    metrics_path: /probe

    params:
      module: [http_2xx]

    static_configs:
      - targets:
          - https://www.baidu.com
          - https://www.google.com

    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target

      - source_labels: [__param_target]
        target_label: instance

      - target_label: __address__
        replacement: localhost:9115

7. 配置 Targets

创建目录

复制代码
sudo mkdir -p /etc/prometheus/targets

创建配置

复制代码
sudo nano /etc/prometheus/targets/linux_servers.json

内容(这个的ip修改成被监控端的ip):

复制代码
[
  {
    "targets": [
      "192.168.1.1:9100"
    ],
    "labels": {
      "os": "linux"
    }
  }
]

8. 创建 Blackbox 服务

创建:

复制代码
sudo nano /etc/systemd/system/blackbox_exporter.service

内容:

复制代码
[Unit]
Description=Blackbox Exporter
After=network.target

[Service]
User=blackbox
Group=blackbox
Type=simple

ExecStart=/usr/local/bin/blackbox_exporter \
  --config.file=/etc/prometheus/blackbox.yml \
  --web.listen-address=:9115

Restart=on-failure

[Install]
WantedBy=multi-user.target

9. 创建 Grafana 服务

创建:

复制代码
sudo nano /etc/systemd/system/grafana.service

内容:

复制代码
[Unit]
Description=Grafana
After=network.target

[Service]
Type=simple
User=grafana
Group=grafana

WorkingDirectory=/usr/local/grafana

ExecStart=/usr/local/grafana/bin/grafana server \
  --homepath=/usr/local/grafana

Restart=on-failure

[Install]
WantedBy=multi-user.target

10. 启动服务

重新加载 systemd

复制代码
sudo systemctl daemon-reload

设置开机自启

复制代码
sudo systemctl enable prometheus
sudo systemctl enable blackbox_exporter
sudo systemctl enable grafana

启动服务

复制代码
sudo systemctl start prometheus
sudo systemctl start blackbox_exporter
sudo systemctl start grafana

查看状态

复制代码
sudo systemctl status prometheus
sudo systemctl status blackbox_exporter
sudo systemctl status grafana

三、被监控端部署

1. 开放防火墙

复制代码
sudo ufw allow 9100/tcp

2. 安装 Node Exporter

解压

复制代码
tar xvf node_exporter-*.linux-amd64.tar.gz

进入目录

复制代码
cd node_exporter-*.linux-amd64

创建用户

复制代码
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter

复制程序

复制代码
sudo cp node_exporter /usr/local/bin/

3. 创建 Node Exporter 服务

创建:

复制代码
sudo nano /etc/systemd/system/node_exporter.service

内容:

复制代码
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple

ExecStart=/usr/local/bin/node_exporter

Restart=on-failure

[Install]
WantedBy=multi-user.target

4. 启动 Node Exporter

重新加载

复制代码
sudo systemctl daemon-reload

设置开机自启

复制代码
sudo systemctl enable node_exporter

启动

复制代码
sudo systemctl start node_exporter

查看状态

复制代码
sudo systemctl status node_exporter

四、验证

Prometheus

复制代码
http://监控端IP:9090

页面如下会显示监控的服务器和端口:

Grafana

复制代码
http://监控端IP:3000

默认账号密码:

复制代码
admin
admin

Node Exporter

复制代码
http://被监控端IP:9100/metrics

五、Grafana 配置

添加数据源

路径:

复制代码
Connections
-> Data Sources
-> Prometheus

URL:

复制代码
http://localhost:9090

点击:

复制代码
Save & Test

导入 Dashboard

由于内网无法访问:

复制代码
grafana.com

所以需要:

复制代码
离线导入 JSON

推荐 Dashboard:

复制代码
Node Exporter Full

ID:

复制代码
1860

下载地址:

https://grafana.com/grafana/dashboards/1860-node-exporter-full/

Grafana 导入:

复制代码
Dashboards
-> Import
-> Upload JSON file

六、常用排查命令

查看端口

复制代码
ss -lntp

查看 Prometheus 日志

复制代码
journalctl -u prometheus -f

查看 Grafana 日志

复制代码
journalctl -u grafana -f

查看 Node Exporter 日志

复制代码
journalctl -u node_exporter -f

检查 Prometheus 配置

复制代码
promtool check config /etc/prometheus/prometheus.yml
相关推荐
weixin_604236671 小时前
华为三层交换机 极简完整版配置
运维·服务器·华为·华为交换机·华为交换机命令
Configure-Handler1 小时前
linux-kernel-fault-codes
linux·运维·服务器
运维行者_2 小时前
通过Applications Manager的TCP监控确保无缝网络连接
运维·服务器·网络·数据库·人工智能
路人蛃2 小时前
【深入理解计算机系统】第二章第一节(信息存储)笔记
服务器·网络·笔记·计算机网络·系统架构
一勺菠萝丶2 小时前
Linux 服务器临时用户创建与删除教程
linux·运维·服务器
lunzi_08262 小时前
《图解HTTP》--第5章-与HTTP协作的Web服务器
服务器·前端·http
2401_868534782 小时前
防火墙的具体概念
服务器·网络·php
驭渊的小故事2 小时前
网络初始1(2000字详细剖析网络的TCP/IP协议栈)
linux·服务器·网络
dshudsnb2 小时前
4种实用方法,快速完成新旧电脑数据迁移
运维·服务器·电脑