news 2026/4/17 5:25:19

海景美女图FLUX.1企业级运维:Prometheus+Grafana监控GPU温度/显存/请求QPS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
海景美女图FLUX.1企业级运维:Prometheus+Grafana监控GPU温度/显存/请求QPS

海景美女图FLUX.1企业级运维:Prometheus+Grafana监控GPU温度/显存/请求QPS

1. 为什么你的AI绘图服务需要监控?

想象一下这个场景:你的“海景美女图”AI绘图服务正在稳定运行,用户们愉快地输入着“sunset beach with beautiful woman”这样的提示词,一张张精美的图片不断生成。突然,某个深夜,服务响应变得极其缓慢,用户开始抱怨“图片生成失败”或“网页打不开”。你紧急登录服务器,手忙脚乱地敲着nvidia-smisupervisorctl status命令,试图找出问题所在——是GPU过热降频了?显存泄漏了?还是请求量突然暴增把服务压垮了?

如果你经历过类似情况,就会明白一个道理:对于生产环境的AI服务,靠人工登录服务器查日志、看命令行的运维方式,就像用算盘管理现代企业财务——效率低下且容易出错。

这就是为什么我们需要为企业级的“海景美女图”FLUX.1服务搭建一套完整的监控系统。今天我要分享的,就是用Prometheus + Grafana这套业界标准的监控组合,为你的AI绘图服务装上“全天候雷达”,让你能够:

  • 实时看到GPU的温度、显存使用率、利用率
  • 准确掌握服务的请求量、响应时间、成功率
  • 提前预警潜在问题,而不是等问题发生了再救火
  • 历史回溯任何时间点的服务状态,分析性能趋势

更重要的是,这套方案完全免费、开源,你不需要支付任何云监控服务的高额费用。接下来,我会手把手带你从零搭建这套监控系统,即使你之前没接触过Prometheus或Grafana,也能跟着一步步完成。

2. 监控系统整体架构:三大部分如何协同工作

在开始动手之前,我们先花几分钟理解一下整个监控系统是怎么运转的。不用担心技术细节,我用一个简单的比喻来解释:

想象一下医院的ICU监护室。病人(你的AI绘图服务)身上连接着各种传感器(监控指标),这些传感器把心率、血压、血氧数据(GPU温度、显存使用率)实时发送到监护仪(Prometheus),护士站的中央大屏(Grafana)显示着所有病人的生命体征,一旦某个指标异常就会报警(Alertmanager)。

对应到我们的技术架构,就是下面这个流程:

AI绘图服务(海景美女图) → 指标暴露(Exporter) → 数据收集(Prometheus) → 可视化展示(Grafana) → 报警通知(可选)

2.1 各个组件的作用

Prometheus(普罗米修斯)

  • 角色:数据收集和存储中心
  • 工作:每隔15秒(可配置)主动去各个目标拉取监控数据
  • 特点:时序数据库,专门存储随时间变化的数据(比如GPU温度随时间的变化曲线)

Node Exporter(节点导出器)

  • 角色:服务器基础指标收集器
  • 工作:收集CPU、内存、磁盘、网络等系统级指标
  • 注意:它不收集GPU指标,GPU需要专门的exporter

NVIDIA GPU Exporter(NVIDIA GPU导出器)

  • 角色:GPU专用指标收集器
  • 工作:通过NVIDIA的NVML库获取GPU温度、显存、利用率等指标
  • 关键:这是我们监控AI绘图服务的核心组件

cAdvisor(容器监控器)

  • 角色:容器资源监控器(如果你的服务用Docker运行)
  • 工作:收集容器的CPU、内存、网络IO等使用情况
  • 可选:如果服务直接运行在宿主机上,可以不用

Grafana(格拉法纳)

  • 角色:数据可视化仪表盘
  • 工作:从Prometheus读取数据,生成漂亮的图表和仪表盘
  • 优点:拖拽式操作,无需编程,社区有大量现成模板

Alertmanager(报警管理器)

  • 角色:报警通知中心
  • 工作:接收Prometheus的报警规则触发,发送邮件、钉钉、微信等通知
  • 可选:初期可以先搭建监控看板,报警功能后续再加

2.2 数据流向示意图

为了更直观理解,我们看看数据是怎么流动的:

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ AI绘图服务 │────▶│ 各种Exporter │────▶│ Prometheus │ │ (海景美女图) │ │ (GPU/Node等) │ │ 数据存储 │ │ │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────┬───────┘ │ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ 管理员 │◀────│ Grafana │◀────│ Alertmanager │ │ (你) │ │ 可视化看板 │ │ 报警通知 │ │ │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘

现在你对整体架构有了基本概念,接下来我们进入实战环节。我会假设你的“海景美女图”服务运行在一台Ubuntu 20.04/22.04的服务器上,并且已经按照之前的文档正常提供服务。

3. 第一步:安装和配置Prometheus监控服务器

Prometheus是我们监控系统的核心,它负责收集和存储所有监控数据。安装过程比想象中简单,跟着步骤来就行。

3.1 创建专用用户和目录

首先,为了安全起见,我们不建议用root用户运行Prometheus。创建一个专用用户和目录:

# 创建prometheus用户组和用户 sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheus # 创建数据存储目录 sudo mkdir /var/lib/prometheus # 创建配置目录 sudo mkdir -p /etc/prometheus/rules /etc/prometheus/rules.d /etc/prometheus/files_sd # 设置目录权限 sudo chown -R prometheus:prometheus /etc/prometheus sudo chown -R prometheus:prometheus /var/lib/prometheus

3.2 下载并安装Prometheus

访问Prometheus官网下载最新版本,或者直接用wget命令下载。这里以2.45.0版本为例:

# 进入临时目录 cd /tmp # 下载Prometheus(请检查官网获取最新版本号) wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz # 解压 tar xvf prometheus-2.45.0.linux-amd64.tar.gz # 复制二进制文件到系统目录 cd prometheus-2.45.0.linux-amd64 sudo cp prometheus promtool /usr/local/bin/ # 复制配置文件 sudo cp -r consoles/ console_libraries/ /etc/prometheus/ sudo cp prometheus.yml /etc/prometheus/prometheus.yml # 设置权限 sudo chown -R prometheus:prometheus /etc/prometheus sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool

3.3 配置Prometheus主配置文件

现在编辑Prometheus的主配置文件,告诉它要监控哪些目标:

sudo nano /etc/prometheus/prometheus.yml

将文件内容替换为以下配置(我会详细解释每个部分的作用):

# 全局配置 global: scrape_interval: 15s # 每15秒抓取一次数据 evaluation_interval: 15s # 每15秒评估一次报警规则 # 报警规则文件位置 rule_files: # - "first_rules.yml" # - "second_rules.yml" # 抓取配置 - 定义要监控的目标 scrape_configs: # 监控Prometheus自身 - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # 监控服务器节点(通过node_exporter) - job_name: 'node' static_configs: - targets: ['localhost:9100'] # 监控NVIDIA GPU(通过nvidia_gpu_exporter) - job_name: 'nvidia-gpu' static_configs: - targets: ['localhost:9835'] # 监控AI绘图服务(自定义指标) - job_name: 'seaview-beauty' static_configs: - targets: ['localhost:8000'] # 假设你的服务在8000端口暴露指标 metrics_path: '/metrics' # 指标端点路径 scrape_interval: 30s # 30秒抓取一次,对AI服务不需要太频繁

配置说明:

  1. scrape_interval: 15秒抓取一次,平衡了实时性和系统负载
  2. job_name: 定义了四组监控目标:
    • prometheus: 监控Prometheus自身健康状况
    • node: 监控服务器基础资源(CPU、内存等)
    • nvidia-gpu: 监控GPU指标(温度、显存等)
    • seaview-beauty: 监控你的AI绘图服务(需要服务暴露指标)

3.4 创建Systemd服务文件

为了让Prometheus随系统自动启动,我们创建systemd服务:

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

添加以下内容:

[Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID 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 \ --web.external-url= SyslogIdentifier=prometheus Restart=always [Install] WantedBy=multi-user.target

3.5 启动Prometheus并验证

现在启动Prometheus服务:

# 重新加载systemd配置 sudo systemctl daemon-reload # 启动Prometheus sudo systemctl start prometheus # 设置开机自启 sudo systemctl enable prometheus # 检查服务状态 sudo systemctl status prometheus

如果一切正常,你会看到类似这样的输出:

● prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2024-01-15 10:00:00 CST; 10s ago Docs: https://prometheus.io/docs/introduction/overview/ Main PID: 12345 (prometheus) Tasks: 10 (limit: 4915) Memory: 50.3M CGroup: /system.slice/prometheus.service └─12345 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml ...

现在打开浏览器,访问http://你的服务器IP:9090,应该能看到Prometheus的Web界面。点击顶部菜单的"Status" → "Targets",应该能看到我们配置的监控目标(虽然有些还没启动,会显示DOWN,这是正常的)。

恭喜!你已经成功安装了监控系统的大脑——Prometheus。接下来我们安装各种"传感器"(Exporter)来收集具体指标。

4. 第二步:安装GPU监控组件(核心重点)

对于AI绘图服务来说,GPU监控是最关键的部分。我们需要知道GPU的温度、显存使用情况、利用率等指标,这些直接关系到服务的稳定性和性能。

4.1 安装NVIDIA驱动和CUDA工具包(如果还没安装)

首先确认你的服务器已经安装了NVIDIA驱动和CUDA。运行以下命令检查:

# 检查NVIDIA驱动 nvidia-smi # 检查CUDA版本 nvcc --version

如果nvidia-smi命令能正常显示GPU信息,但nvcc命令不存在,你可能需要安装CUDA工具包。这里以Ubuntu 22.04为例:

# 添加NVIDIA包仓库 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update # 安装CUDA工具包(最小化安装,不包含驱动) sudo apt-get install -y cuda-toolkit-12-3 # 添加CUDA到环境变量 echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc # 验证安装 nvcc --version

4.2 安装NVIDIA GPU Exporter

这是专门用于监控NVIDIA GPU的组件,它会通过NVML库获取GPU的各种指标。

# 下载最新版本的nvidia_gpu_exporter # 访问 https://github.com/utkuozdemir/nvidia_gpu_exporter/releases 查看最新版本 cd /tmp wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.2.0/nvidia_gpu_exporter_1.2.0_linux_x86_64.tar.gz # 解压 tar xvf nvidia_gpu_exporter_1.2.0_linux_x86_64.tar.gz # 复制到系统目录 sudo cp nvidia_gpu_exporter /usr/local/bin/ sudo chmod +x /usr/local/bin/nvidia_gpu_exporter

4.3 创建GPU Exporter的Systemd服务

sudo nano /etc/systemd/system/nvidia-gpu-exporter.service

添加以下内容:

[Unit] Description=NVIDIA GPU Exporter After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/nvidia_gpu_exporter --web.listen-address=:9835 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

注意:这里我们使用9835端口,与Prometheus配置中的localhost:9835对应。

4.4 启动GPU Exporter并验证

# 重新加载systemd sudo systemctl daemon-reload # 启动服务 sudo systemctl start nvidia-gpu-exporter # 设置开机自启 sudo systemctl enable nvidia-gpu-exporter # 检查状态 sudo systemctl status nvidia-gpu-exporter

现在测试一下GPU Exporter是否正常工作:

# 检查端口是否监听 sudo netstat -tlnp | grep 9835 # 直接访问指标端点 curl http://localhost:9835/metrics

如果一切正常,curl命令会返回大量以nvidia_开头的指标,比如:

# HELP nvidia_gpu_temperature_celsius GPU temperature in Celsius # TYPE nvidia_gpu_temperature_celsius gauge nvidia_gpu_temperature_celsius{gpu="0",name="NVIDIA GeForce RTX 4090"} 65 # HELP nvidia_gpu_memory_total_bytes Total GPU memory in bytes # TYPE nvidia_gpu_memory_total_bytes gauge nvidia_gpu_memory_total_bytes{gpu="0",name="NVIDIA GeForce RTX 4090"} 25769803776 # HELP nvidia_gpu_memory_used_bytes Used GPU memory in bytes # TYPE nvidia_gpu_memory_used_bytes gauge nvidia_gpu_memory_used_bytes{gpu="0",name="NVIDIA GeForce RTX 4090"} 8589934592 # HELP nvidia_gpu_utilization_percent GPU utilization percentage # TYPE nvidia_gpu_utilization_percent gauge nvidia_gpu_utilization_percent{gpu="0",name="NVIDIA GeForce RTX 4090"} 78

这些指标正是我们需要的!它们分别表示:

  • nvidia_gpu_temperature_celsius: GPU温度(摄氏度)
  • nvidia_gpu_memory_total_bytes: GPU总显存(字节)
  • nvidia_gpu_memory_used_bytes: GPU已用显存(字节)
  • nvidia_gpu_utilization_percent: GPU利用率百分比

4.5 安装Node Exporter(监控服务器基础资源)

除了GPU,我们还需要监控服务器的CPU、内存、磁盘、网络等基础资源:

# 下载Node Exporter cd /tmp wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz # 解压 tar xvf node_exporter-1.6.0.linux-amd64.tar.gz # 复制到系统目录 sudo cp node_exporter-1.6.0.linux-amd64/node_exporter /usr/local/bin/ sudo chmod +x /usr/local/bin/node_exporter # 创建系统用户(如果不存在) sudo useradd -rs /bin/false node_exporter

创建systemd服务:

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 --web.listen-address=:9100 [Install] WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload sudo systemctl start node-exporter sudo systemctl enable node-exporter sudo systemctl status node-exporter

4.6 为AI绘图服务添加自定义指标(高级功能)

如果你想让监控更完善,可以为“海景美女图”服务本身添加一些业务指标,比如请求数、生成图片数量、平均生成时间等。这需要修改你的服务代码,暴露Prometheus格式的指标。

这里给出一个Python Flask服务的示例(假设你的服务是用Python写的):

from flask import Flask, request, jsonify from prometheus_client import Counter, Histogram, generate_latest, CONTENT_TYPE_LATEST import time app = Flask(__name__) # 定义Prometheus指标 REQUEST_COUNT = Counter('seaview_beauty_requests_total', 'Total request count') REQUEST_LATENCY = Histogram('seaview_beauty_request_latency_seconds', 'Request latency in seconds') IMAGES_GENERATED = Counter('seaview_beauty_images_generated_total', 'Total images generated') @app.route('/generate', methods=['POST']) def generate_image(): # 记录请求开始时间 start_time = time.time() # 增加请求计数 REQUEST_COUNT.inc() # 这里是你的图片生成逻辑 # ... # 增加生成图片计数 IMAGES_GENERATED.inc() # 记录请求延迟 REQUEST_LATENCY.observe(time.time() - start_time) return jsonify({"status": "success", "image_url": "..."}) @app.route('/metrics') def metrics(): """暴露Prometheus指标端点""" return generate_latest(), 200, {'Content-Type': CONTENT_TYPE_LATEST} if __name__ == '__main__': app.run(host='0.0.0.0', port=8000)

然后在Prometheus配置中添加这个目标(我们之前已经配置了seaview-beautyjob)。

5. 第三步:安装和配置Grafana可视化看板

现在数据已经收集到Prometheus了,但原始数据不够直观。Grafana可以把这些数据变成漂亮的图表和仪表盘。

5.1 安装Grafana

Grafana提供了官方的APT仓库,安装很方便:

# 安装必要的依赖 sudo apt-get install -y software-properties-common wget # 添加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 # 添加Grafana的APT仓库 echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list # 更新并安装Grafana sudo apt-get update sudo apt-get install -y grafana

5.2 配置Grafana数据源

启动Grafana服务:

# 启动Grafana sudo systemctl start grafana-server # 设置开机自启 sudo systemctl enable grafana-server # 检查状态 sudo systemctl status grafana-server

现在打开浏览器访问http://你的服务器IP:3000,你会看到Grafana的登录页面。默认用户名和密码都是admin,首次登录会要求修改密码。

登录后,我们需要添加Prometheus作为数据源:

  1. 点击左侧菜单的"Configuration"(齿轮图标)→ "Data sources"
  2. 点击"Add data source"
  3. 选择"Prometheus"
  4. 在URL字段输入http://localhost:9090(如果Prometheus和Grafana在同一台服务器)
  5. 点击"Save & Test",应该显示"Data source is working"

5.3 导入GPU监控仪表盘

Grafana社区有很多现成的仪表盘模板,我们不需要从零开始创建。这里推荐一个专门监控NVIDIA GPU的仪表盘:

  1. 点击左侧菜单的"Dashboards"(四个方块图标)→ "Import"
  2. 在"Import via grafana.com"字段输入仪表盘ID:10795
  3. 点击"Load"
  4. 选择我们刚才添加的Prometheus数据源
  5. 点击"Import"

现在你就拥有了一个专业的GPU监控仪表盘!这个仪表盘包含了:

  • GPU温度实时曲线
  • 显存使用情况(已用/总量)
  • GPU利用率百分比
  • 功率使用情况
  • 风扇速度等

5.4 创建AI绘图服务监控仪表盘

虽然有了GPU监控,但我们还需要一个专门针对“海景美女图”服务的业务监控仪表盘。我来教你创建一个简单的版本:

  1. 点击左侧菜单的"Dashboards" → "New" → "New Dashboard"
  2. 点击"Add visualization"添加第一个图表

图表1:GPU温度监控

  • 数据源:选择你的Prometheus
  • 查询:nvidia_gpu_temperature_celsius
  • 设置:将图例格式改为{{gpu}} - {{name}}
  • 面板标题:GPU温度(℃)

图表2:显存使用情况

  • 添加新的图表
  • 查询A:nvidia_gpu_memory_used_bytes{gpu="0"},标签:已用显存
  • 查询B:nvidia_gpu_memory_total_bytes{gpu="0"},标签:总显存
  • 可视化类型:选择"Stat"(统计值)
  • 单位:选择"bytes(IEC)"(会自动转换为GB/MB)
  • 面板标题:显存使用情况

图表3:GPU利用率

  • 添加新的图表
  • 查询:nvidia_gpu_utilization_percent
  • 可视化类型:选择"Gauge"(仪表盘)
  • 设置:最小0,最大100,阈值70(黄色),90(红色)
  • 面板标题:GPU利用率(%)

图表4:服务器基础资源(使用Node Exporter数据)

  • CPU使用率:100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
  • 内存使用率:(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
  • 磁盘使用率:(node_filesystem_size_bytes{fstype!="tmpfs"} - node_filesystem_free_bytes{fstype!="tmpfs"}) / node_filesystem_size_bytes{fstype!="tmpfs"} * 100

图表5:AI服务请求监控(如果添加了自定义指标)

  • 总请求数:rate(seaview_beauty_requests_total[5m])
  • 平均响应时间:rate(seaview_beauty_request_latency_seconds_sum[5m]) / rate(seaview_beauty_request_latency_seconds_count[5m])
  • 图片生成总数:seaview_beauty_images_generated_total

调整每个图表的大小和位置,让仪表盘看起来整洁美观。最后点击右上角的"Save"保存仪表盘,命名为"海景美女图服务监控"。

6. 第四步:配置告警规则(可选但重要)

监控的目的是为了及时发现问题。我们可以配置一些告警规则,当指标异常时自动通知。

6.1 在Prometheus中配置告警规则

首先创建告警规则文件:

sudo nano /etc/prometheus/ai_service_alerts.yml

添加以下告警规则:

groups: - name: ai_service_alerts rules: # GPU温度过高告警 - alert: GPUTemperatureHigh expr: nvidia_gpu_temperature_celsius > 85 for: 5m labels: severity: warning annotations: summary: "GPU温度过高 (实例 {{ $labels.instance }})" description: "GPU {{ $labels.gpu }} 温度已达到 {{ $value }}°C,超过85°C阈值" # 显存使用率过高告警 - alert: GPUMemoryUsageHigh expr: (nvidia_gpu_memory_used_bytes / nvidia_gpu_memory_total_bytes) * 100 > 90 for: 5m labels: severity: warning annotations: summary: "GPU显存使用率过高 (实例 {{ $labels.instance }})" description: "GPU {{ $labels.gpu }} 显存使用率已达到 {{ $value | humanizePercentage }}" # GPU利用率持续过高告警 - alert: GPUUtilizationHigh expr: nvidia_gpu_utilization_percent > 95 for: 10m labels: severity: warning annotations: summary: "GPU利用率持续过高 (实例 {{ $labels.instance }})" description: "GPU {{ $labels.gpu }} 利用率已持续10分钟超过95%,当前 {{ $value }}%" # 服务宕机告警(通过up指标) - alert: ServiceDown expr: up{job="seaview-beauty"} == 0 for: 1m labels: severity: critical annotations: summary: "服务宕机 ({{ $labels.instance }})" description: "{{ $labels.job }} 服务已宕机超过1分钟" # 服务器内存不足告警 - alert: MemoryUsageHigh expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90 for: 5m labels: severity: warning annotations: summary: "服务器内存使用率过高 ({{ $labels.instance }})" description: "内存使用率已达到 {{ $value | humanizePercentage }}"

然后修改Prometheus主配置文件,启用这个告警规则文件:

sudo nano /etc/prometheus/prometheus.yml

rule_files部分取消注释并添加:

rule_files: - "ai_service_alerts.yml" # 添加这一行

重启Prometheus使配置生效:

sudo systemctl restart prometheus

6.2 安装和配置Alertmanager(发送告警通知)

Alertmanager负责接收Prometheus的告警并发送通知。首先安装Alertmanager:

# 下载Alertmanager cd /tmp wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz # 解压 tar xvf alertmanager-0.25.0.linux-amd64.tar.gz # 复制到系统目录 cd alertmanager-0.25.0.linux-amd64 sudo cp alertmanager amtool /usr/local/bin/ sudo mkdir -p /etc/alertmanager sudo cp alertmanager.yml /etc/alertmanager/ # 创建用户 sudo useradd --no-create-home --shell /bin/false alertmanager # 创建数据目录 sudo mkdir /var/lib/alertmanager sudo chown alertmanager:alertmanager /var/lib/alertmanager

配置Alertmanager(这里以邮件通知为例):

sudo nano /etc/alertmanager/alertmanager.yml
global: smtp_smarthost: 'smtp.gmail.com:587' # 你的SMTP服务器 smtp_from: 'your-email@gmail.com' # 发件人邮箱 smtp_auth_username: 'your-email@gmail.com' smtp_auth_password: 'your-app-password' # 应用专用密码,不是邮箱密码 route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'email-notifications' receivers: - name: 'email-notifications' email_configs: - to: 'admin@your-company.com' send_resolved: true

创建systemd服务:

sudo nano /etc/systemd/system/alertmanager.service
[Unit] Description=Alertmanager Wants=network-online.target After=network-online.target [Service] User=alertmanager Group=alertmanager Type=simple ExecStart=/usr/local/bin/alertmanager \ --config.file=/etc/alertmanager/alertmanager.yml \ --storage.path=/var/lib/alertmanager [Install] WantedBy=multi-user.target

启动Alertmanager:

sudo systemctl daemon-reload sudo systemctl start alertmanager sudo systemctl enable alertmanager

最后,修改Prometheus配置,告诉它Alertmanager的位置:

sudo nano /etc/prometheus/prometheus.yml

在文件末尾添加:

alerting: alertmanagers: - static_configs: - targets: - localhost:9093 # Alertmanager默认端口

重启Prometheus:

sudo systemctl restart prometheus

现在当GPU温度超过85度或显存使用率超过90%时,你就会收到邮件告警了。

7. 第五步:实际监控效果展示与解读

一切配置完成后,让我们看看监控系统在实际运行中的效果。我会展示几个关键监控场景,并教你如何解读这些数据。

7.1 正常情况下的监控视图

当你的“海景美女图”服务正常运行时,监控面板应该显示类似下面的状态:

GPU监控区域:

  • GPU温度:通常在65-75°C之间波动(取决于散热条件)
  • 显存使用率:生成图片时上升到70-80%,空闲时回落到10-20%
  • GPU利用率:生成图片时达到90-100%,空闲时为0-5%

服务器资源区域:

  • CPU使用率:相对较低,因为主要负载在GPU
  • 内存使用率:稳定在30-50%
  • 磁盘IO:偶尔有读写波动

服务业务指标区域(如果配置了):

  • 请求QPS:每分钟请求数,反映服务负载
  • 平均响应时间:图片生成耗时,通常在2-5分钟
  • 成功率:请求成功比例,应该接近100%

7.2 异常情况识别与排查

监控的真正价值在于发现问题。下面是一些常见异常及其在监控面板上的表现:

场景一:GPU温度过高(超过85°C)

  • 监控表现:GPU温度曲线持续在红色区域(>85°C)
  • 可能原因:散热风扇故障、环境温度过高、机箱风道不畅
  • 排查步骤
    1. 检查服务器机房温度
    2. 听风扇声音是否正常
    3. 清理GPU散热器灰尘
    4. 考虑降低生成图片的分辨率或步数

场景二:显存使用率持续高位(>90%)

  • 监控表现:显存使用率曲线几乎贴顶
  • 可能原因:显存泄漏、同时生成多张图片、图片分辨率设置过高
  • 排查步骤
    1. 检查是否有内存泄漏:重启服务看显存是否释放
    2. 查看当前生成队列:是否堆积了大量请求
    3. 调整服务配置:限制并发生成数量
    4. 建议用户使用较低分辨率(768x768代替1024x1024)

场景三:服务响应时间突然变长

  • 监控表现:平均响应时间曲线出现尖峰
  • 可能原因:GPU降频、系统资源竞争、网络问题
  • 排查步骤
    1. 查看GPU温度是否导致降频
    2. 检查系统负载:top命令查看CPU和内存
    3. 检查磁盘IO:iostat命令查看磁盘繁忙程度
    4. 查看服务日志:tail -f /root/seaview-beauty/seaview-beauty.log

场景四:请求QPS突增

  • 监控表现:请求数曲线突然大幅上升
  • 可能原因:用户量增长、被爬虫扫描、遭受攻击
  • 应对措施
    1. 实施限流:限制单个IP的请求频率
    2. 添加验证码:防止自动化脚本
    3. 考虑扩容:如果确实是业务增长,需要增加服务器

7.3 建立监控看板使用习惯

有了监控系统后,建议养成以下习惯:

每日例行检查(5分钟):

  1. 打开Grafana仪表盘,快速浏览所有指标
  2. 关注是否有告警(红色/黄色区域)
  3. 查看昨日峰值:GPU最高温度、最大显存使用率
  4. 检查服务成功率:是否低于99.9%

每周性能分析(15分钟):

  1. 查看一周趋势:识别性能退化模式
  2. 分析高峰时段:了解用户使用习惯
  3. 计算平均资源使用率:为扩容提供数据支持
  4. 检查磁盘空间:预测何时需要清理或扩容

每月容量规划(30分钟):

  1. 分析月度增长趋势:预测未来资源需求
  2. 评估当前配置是否满足下月需求
  3. 制定扩容计划:如果需要的话
  4. 优化告警阈值:根据历史数据调整

8. 总结:从监控到运维智能化的进阶之路

通过本文的步骤,你已经为“海景美女图”FLUX.1 AI绘图服务搭建了一套完整的企业级监控系统。让我们回顾一下你获得的成果:

8.1 你已经实现的核心能力

  1. 实时可视化监控:通过Grafana仪表盘,你可以7x24小时实时查看:

    • GPU温度、显存使用率、利用率
    • 服务器CPU、内存、磁盘状态
    • 服务请求量、响应时间、成功率
  2. 智能告警机制:当出现异常时,系统会自动:

    • GPU温度超过85°C → 发送告警
    • 显存使用率超过90% → 发送告警
    • 服务宕机超过1分钟 → 发送告警
    • 内存使用率超过90% → 发送告警
  3. 历史数据分析:所有监控数据都存储在Prometheus中,你可以:

    • 回溯任意时间点的服务状态
    • 分析性能趋势和周期性模式
    • 基于数据做出容量规划决策
  4. 快速故障排查:当用户报告问题时,你可以:

    • 立即查看相关时间段的监控图表
    • 快速定位是GPU问题、内存问题还是服务问题
    • 大大缩短平均故障恢复时间(MTTR)

8.2 运维效率的显著提升

对比监控系统部署前后的运维方式:

运维场景部署前部署后
服务异常用户反馈 → 登录服务器 → 手动查日志 → 猜原因告警通知 → 查看仪表盘 → 定位问题 → 针对性解决
性能分析凭感觉、靠经验基于数据、看趋势
容量规划拍脑袋决定基于历史数据预测
故障复盘难以重现、说不清楚完整数据记录、清晰时间线

8.3 后续优化建议

这套监控系统已经可以满足基本需求,但你还可以进一步优化:

短期优化(1个月内):

  1. 完善业务指标:为服务添加更多自定义指标,如图片生成成功率、用户地域分布、热门提示词统计等
  2. 优化告警策略:根据实际运行数据调整告警阈值,减少误报
  3. 设置分级告警:区分警告(需要关注)和严重(需要立即处理)

中期规划(1-3个月):

  1. 多节点监控:如果服务扩展到多台服务器,可以集中监控所有节点
  2. 日志聚合:将服务日志也接入监控系统,实现日志与指标的关联分析
  3. 自动化修复:对某些已知问题设置自动化修复脚本(如服务自动重启)

长期愿景(3个月以上):

  1. AI运维:基于历史数据训练模型,预测潜在故障
  2. 成本优化:基于使用模式动态调整资源分配,节省成本
  3. 用户体验监控:从用户角度监控服务可用性和性能

8.4 最重要的收获

搭建这套监控系统最大的价值,不是技术本身,而是运维思维的转变

  • 从被动救火到主动预防:在用户发现问题前,你已经知道了
  • 从经验驱动到数据驱动:决策基于数据,而不是猜测
  • 从局部视角到全局视图:同时看到GPU、服务器、服务多个维度
  • 从人工操作到自动化:减少重复性的人工检查工作

现在,当你的“海景美女图”服务在深夜出现问题时,你不再需要被紧急电话吵醒,然后迷迷糊糊地登录服务器排查。监控系统会提前告诉你:“GPU温度正在缓慢上升,预计30分钟后可能触发降频”,让你有充足的时间从容应对。

这就是现代运维该有的样子——让机器做机器擅长的事(监控、告警),让人做人擅长的事(分析、决策、优化)。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 5:18:41

CANape:从测量校准到诊断,一站式ECU开发工具全解析

1. CANape:汽车电子开发的瑞士军刀 第一次接触CANape是在2015年参与某新能源车ECU开发项目时。当时团队正在为电机控制器参数标定发愁,传统的手动记录方式效率低下,直到有位德国同事推荐了这款工具。用他的话说:"这就像给ECU…

作者头像 李华
网站建设 2026/4/17 5:18:29

TI IWR1443毫米波雷达实测:用MATLAB复现多普勒相偏补偿,把测速范围翻倍

TI IWR1443毫米波雷达实测:MATLAB实现多普勒相偏补偿与速度解模糊全流程解析 毫米波雷达在自动驾驶、工业检测等领域的应用日益广泛,但速度测量范围受限一直是实际工程中的痛点问题。本文将带您从原始数据开始,一步步实现基于多普勒相偏补偿的…

作者头像 李华
网站建设 2026/4/17 5:17:09

Redis中RDB与AOF的区别及说明

在Redis的使用中,持久化是一个重要的特性,它将内存中的数据保存到硬盘上,以防止数据丢失。Redis 提供了三种主要的持久化方式:AOF(Append Only File)、RDB(Redis DataBase)以及混合持…

作者头像 李华