logo
0
0
WeChat Login

服务器监控系统

基于 Grafana Alloy + Prometheus + Grafana 的分布式服务器监控方案。

架构

┌─────────────────────────────────────────────┐ │ 中央服务器 (1 台) │ │ │ ┌──────────────┐ OTLP │ ┌─────────┐ remote ┌────────────┐ │ PromQL ┌─────────┐ │ Agent #1 │─gRPC────▶│ │ Alloy │───write──────▶│ Prometheus │◀─│────────────│ Grafana │ │ (web-01) │ │ │ :4317 │ │ :9090 │ │ │ :3000 │ └──────────────┘ │ └─────────┘ ┌──────────▶└────────────┘ │ └─────────┘ │ ▲ │ │ ┌──────────────┐ OTLP │ │ │ │ │ Agent #2 │─gRPC────▶│───────┘ │ │ │ (db-01) │ │ │ │ └──────────────┘ └─────────────────────────────────────────────┘ ┌──────────────┐ OTLP │ Agent #N │─gRPC────▶ ... │ (app-xx) │ └──────────────┘

核心设计:Push 模式 — 客户端主动推送,中央端配置固定不变。新增监控只需在新机器上部署 Agent。

项目结构

server/ # 中央服务器端 ├── docker-compose.yaml # 编排 Alloy + Prometheus + Grafana ├── alloy/ │ └── config.alloy # 中央 Alloy 配置 ├── prometheus/ │ └── prometheus.yaml # Prometheus 配置 ├── grafana/ │ ├── datasources/ │ │ └── datasources.yaml # Prometheus 数据源 │ └── dashboards/ │ ├── dashboard.yaml # Dashboard 自动加载配置 │ └── node-exporter.json # Node Exporter Dashboard └── .env # 环境变量 agent/ # 客户端(每台被监控服务器) ├── docker-compose.yaml # 容器编排 ├── Dockerfile # 构建镜像 ├── main.go # 入口:HTTP /metrics 端点 ├── collector.go # 采集器:CPU/内存/磁盘/网络等指标 ├── go.mod / go.sum # Go 依赖

快速开始

1. 部署中央服务器

cd server docker compose up -d

启动后可访问:

  • Grafana:Grafana: http://<中央IP>:3000 (默认账号 admin / grafana123)
  • Prometheus:Prometheus: http://<中央IP>:9090
  • Alloy UI:Alloy UI: http://<中央IP>:12345

2. 部署客户端 Agent

agent/ 目录拷贝到被监控服务器,通过环境变量注入配置并启动:

cd agent SERVER_NAME=web-01 HOSTNAME=$(hostname -s) docker compose up -d --build

环境变量说明:

  • SERVER_NAME:给这台服务器起个可读名称,用于 Dashboard 筛选
  • HOSTNAME:主机名,默认取当前机器的 hostname

方式二:直接编译运行(开发/调试用)

cd agent go build -o node-exporter . SERVER_NAME=local-mac HOSTNAME=$(hostname -s) ./node-exporter # 默认监听 :9100,可通过 -port 指定 SERVER_NAME=local-mac HOSTNAME=$(hostname -s) ./node-exporter -port 9200

访问 http://localhost:9100/metrics 验证指标输出。

3. 新增被监控服务器

在新机器上执行同样的启动命令即可,无需修改中央端任何配置

SERVER_NAME=db-01 HOSTNAME=$(hostname -s) docker compose up -d --build

4. 移除被监控服务器

在目标机器上停止并清理容器:

cd agent docker compose down

验证

检查 Agent 状态

# 查看容器运行状态 docker compose ps # 查看日志 docker compose logs -f # 验证指标端点 curl http://localhost:9100/metrics

检查中央 Alloy

打开打开 http://<中央IP>:12345,确认组件正常运行(绿色状态)。

检查 Prometheus

打开打开 http://<中央IP>:9090,执行查询:

up node_uname_info

能看到各 Agent 上报的数据即表示链路正常。

查看 Grafana Dashboard

  1. 打开打开 http://<中央IP>:3000
  2. 使用 admin / grafana123 登录
  3. 进入 "Node Exporter - 服务器监控" Dashboard
  4. 通过顶部 Instance / Server Name 下拉框筛选服务器

常见问题

Agent 无法连接中央 Alloy

# 检查中央端口是否可达 nc -zv <中央IP> 4317 # 检查 Agent 日志 docker compose logs -f # 检查防火墙 firewall-cmd --list-ports # CentOS ufw status # Ubuntu

Grafana 中看不到数据

  1. 确认 Prometheus 中有数据:在确认 Prometheus 中有数据:在 http://<中央IP>:9090 查询 node_uname_info
  2. 确认 Alloy UI(:12345)中组件无报错
  3. 检查 Agent 容器日志:docker compose logs 看是否有报错

Dashboard 下拉框没有服务器

  • 模板变量基于 node_uname_info 指标,Agent 启动后需要等待约 30-60 秒才会有数据
  • 刷新 Dashboard 页面,或点击下拉框旁的刷新按钮

如何修改 Grafana 密码

编辑 server/.env 文件,修改 GF_SECURITY_ADMIN_PASSWORD,然后重启:

cd server docker compose restart grafana

About

No description, topics, or website provided.
Language
Go82.5%
Makefile12.6%
Dockerfile2.7%
Shell2.2%