比迪丽WebUI运维监控Prometheus指标采集、Grafana看板、告警阈值设置1. 引言为什么你的AI绘画服务需要监控想象一下这个场景深夜你正沉浸在创作中用比迪丽WebUI生成一张精美的动漫角色图。你输入了精心设计的提示词满怀期待地点击生成按钮然后...页面卡住了。等待了30秒、1分钟、5分钟依然没有反应。你刷新页面发现服务完全无法访问。更糟糕的是你根本不知道问题出在哪里——是GPU内存爆了是模型加载失败还是网络连接出了问题这就是为什么我们需要监控系统。对于比迪丽WebUI这样的AI绘画服务监控不是“可有可无”的附加功能而是保障服务稳定运行的“生命线”。今天我将带你从零开始搭建一套完整的比迪丽WebUI监控系统让你能够实时查看服务状态、GPU使用率、生成速度一目了然提前预警在问题发生前收到告警避免服务中断性能优化基于数据调整配置提升生成效率故障排查快速定位问题根源减少排查时间这套系统基于业界标准的Prometheus Grafana组合我会用最直白的方式讲解每个步骤即使你之前没接触过监控系统也能跟着一步步搭建起来。2. 监控系统架构三分钟搞懂工作原理在开始动手之前我们先花三分钟了解一下整个系统是怎么工作的。别担心我用大白话解释保证你能听懂。2.1 核心组件三个“角色”各司其职整个监控系统由三个核心组件组成就像一支分工明确的团队1. 数据采集员Exporter工作定时“问”比迪丽WebUI“你现在状态怎么样GPU用了多少生成了几张图”工具我们使用专门为Stable Diffusion设计的exporter频率每15秒采集一次数据2. 数据仓库Prometheus工作把采集员收集的数据存起来整理得整整齐齐特点时间序列数据库能记录“什么时间、什么指标、什么数值”存储所有历史数据都保存在这里可以查询任意时间点的状态3. 数据展示员Grafana工作把仓库里的数据变成漂亮的图表和仪表盘能力实时刷新、历史趋势、多图表组合界面Web界面手机电脑都能看2.2 数据流向从采集到展示的全过程比迪丽WebUI → Exporter采集 → Prometheus存储 → Grafana展示 ↓ ↓ ↓ ↓ 生成图片 收集状态数据 保存历史记录 可视化图表2.3 告警流程问题发生前就通知你监控指标 → 阈值判断 → 触发告警 → 通知到你 ↓ ↓ ↓ ↓ GPU使用率 90%持续1分钟 触发规则 发送邮件/钉钉现在你对整个系统有了基本了解接下来我们开始动手搭建。我会把每个步骤都拆解得非常详细确保你能一次成功。3. 环境准备安装必要的监控组件在开始之前请确保你的服务器满足以下条件已经部署了比迪丽WebUI运行在7860端口服务器有Docker环境如果没有我会告诉你怎么装至少有2GB的可用内存系统是Ubuntu 20.04或更高版本其他Linux系统也类似3.1 第一步安装Docker和Docker Compose如果你还没有安装Docker用下面这几条命令就能搞定# 更新系统包 sudo apt update sudo apt upgrade -y # 安装Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 将当前用户加入docker组避免每次都要sudo sudo usermod -aG docker $USER # 安装Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose # 验证安装 docker --version docker-compose --version安装完成后需要重新登录服务器让用户组生效。3.2 第二步创建监控目录结构我们需要一个专门的目录来存放所有监控相关的配置文件# 创建监控目录 mkdir -p ~/bidili-monitor cd ~/bidili-monitor # 创建子目录 mkdir -p prometheus/data grafana/data grafana/provisioning/dashboards grafana/provisioning/datasources mkdir -p alertmanager/config alertmanager/data mkdir -p node-exporter # 设置权限重要 sudo chown -R 472:472 grafana/data sudo chown -R 65534:65534 prometheus/data目录结构说明bidili-monitor/ ├── prometheus/ # Prometheus配置和数据 ├── grafana/ # Grafana配置和数据 ├── alertmanager/ # 告警管理器 └── node-exporter/ # 系统监控可选环境准备好了现在我们来配置最核心的数据采集部分。4. 数据采集让Prometheus“看见”你的比迪丽WebUI数据采集是整个监控系统的基础。如果Prometheus采集不到数据后面的图表和告警都是空谈。这一节我会教你两种采集方式你可以根据实际情况选择。4.1 方式一使用专用Exporter推荐对于比迪丽WebUI这种基于Stable Diffusion的服务有专门的exporter可以采集更详细的信息。我们来部署一个# 创建exporter配置文件 cat ~/bidili-monitor/sd-exporter/docker-compose.yml EOF version: 3.8 services: sd-exporter: image: ghcr.io/stable-diffusion-exporter/stable-diffusion-exporter:latest container_name: sd-exporter restart: unless-stopped ports: - 8000:8000 environment: - SD_WEBUI_URLhttp://你的服务器IP:7860 # 改成你的实际IP - SCRAPE_INTERVAL15s - LOG_LEVELinfo volumes: - ./config:/app/config EOF重要提示把上面的你的服务器IP替换成你比迪丽WebUI实际运行的服务器IP地址。启动exportercd ~/bidili-monitor/sd-exporter docker-compose up -d验证是否启动成功# 查看容器状态 docker ps | grep sd-exporter # 测试数据采集 curl http://localhost:8000/metrics如果看到类似下面的输出说明采集器工作正常# HELP sd_webui_info Stable Diffusion WebUI information # TYPE sd_webui_info gauge sd_webui_info{version1.6.0} 1 # HELP sd_webui_gpu_utilization GPU utilization percentage # TYPE sd_webui_gpu_utilization gauge sd_webui_gpu_utilization{gpu0} 45.3 # HELP sd_webui_gpu_memory_used GPU memory used in MB # TYPE sd_webui_gpu_memory_used gauge sd_webui_gpu_memory_used{gpu0} 56784.2 方式二使用通用HTTP检查简单版如果你觉得专用exporter太复杂也可以用简单的HTTP检查来监控服务是否存活# 创建自定义exporter cat ~/bidili-monitor/simple-exporter/exporter.py EOF #!/usr/bin/env python3 from http.server import HTTPServer, BaseHTTPRequestHandler import time import requests import threading class MetricsHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path /metrics: metrics self.collect_metrics() self.send_response(200) self.send_header(Content-type, text/plain) self.end_headers() self.wfile.write(metrics.encode()) else: self.send_response(404) self.end_headers() def collect_metrics(self): metrics [] # 检查WebUI是否存活 try: response requests.get(http://localhost:7860, timeout5) webui_up 1 if response.status_code 200 else 0 except: webui_up 0 metrics.append(fbidili_webui_up{{servicewebui}} {webui_up}) # 添加时间戳 metrics.append(fbidili_webui_last_check{{servicewebui}} {int(time.time())}) return \n.join(metrics) def run_server(): server HTTPServer((0.0.0.0, 8001), MetricsHandler) server.serve_forever() if __name__ __main__: run_server() EOF # 创建Dockerfile cat ~/bidili-monitor/simple-exporter/Dockerfile EOF FROM python:3.9-slim WORKDIR /app COPY exporter.py . RUN pip install requests EXPOSE 8001 CMD [python, exporter.py] EOF # 构建并运行 cd ~/bidili-monitor/simple-exporter docker build -t bidili-exporter . docker run -d --name bidili-exporter -p 8001:8001 bidili-exporter4.3 配置Prometheus采集目标无论你选择哪种方式都需要告诉Prometheus去哪里采集数据。创建Prometheus配置文件cat ~/bidili-monitor/prometheus/prometheus.yml EOF global: scrape_interval: 15s # 每15秒采集一次 evaluation_interval: 15s # 每15秒评估一次告警规则 # 告警规则文件 rule_files: - alerts.yml # 采集配置 scrape_configs: # 监控比迪丽WebUI方式一 - job_name: bidili-webui static_configs: - targets: [sd-exporter:8000] # 专用exporter scrape_interval: 15s metrics_path: /metrics # 监控比迪丽WebUI方式二 - job_name: bidili-webui-simple static_configs: - targets: [simple-exporter:8001] # 简单exporter scrape_interval: 30s # 监控Prometheus自身 - job_name: prometheus static_configs: - targets: [localhost:9090] # 监控服务器节点可选 - job_name: node static_configs: - targets: [node-exporter:9100] EOF4.4 创建告警规则文件接下来我们定义一些基本的告警规则。当某些指标超过阈值时Prometheus会触发告警cat ~/bidili-monitor/prometheus/alerts.yml EOF groups: - name: bidili-webui-alerts rules: # 服务宕机告警 - alert: BidiliWebUIDown expr: up{jobbidili-webui} 0 for: 1m # 持续1分钟才触发 labels: severity: critical annotations: summary: 比迪丽WebUI服务宕机 description: 比迪丽WebUI服务已经宕机超过1分钟请立即检查 # GPU内存使用过高 - alert: GPUMemoryHigh expr: sd_webui_gpu_memory_used / sd_webui_gpu_memory_total 0.9 for: 2m labels: severity: warning annotations: summary: GPU内存使用率过高 description: GPU内存使用率超过90%可能导致生成失败 # 生成时间过长 - alert: GenerationTimeout expr: sd_webui_generation_duration_seconds 30 for: 1m labels: severity: warning annotations: summary: 图片生成时间过长 description: 单张图片生成时间超过30秒可能需要优化提示词或调整参数 # 请求失败率过高 - alert: HighErrorRate expr: rate(sd_webui_request_errors_total[5m]) / rate(sd_webui_requests_total[5m]) 0.1 for: 5m labels: severity: warning annotations: summary: 请求失败率过高 description: 过去5分钟内请求失败率超过10% EOF数据采集部分配置好了现在我们来部署Prometheus让它开始工作。5. 部署Prometheus搭建数据存储中心Prometheus是我们的数据仓库所有监控数据都会存储在这里。我们来配置和启动它5.1 创建Prometheus Docker配置cat ~/bidili-monitor/docker-compose.yml EOF version: 3.8 services: # Prometheus - 监控数据存储和告警 prometheus: image: prom/prometheus:latest container_name: prometheus restart: unless-stopped ports: - 9090:9090 volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - ./prometheus/alerts.yml:/etc/prometheus/alerts.yml - ./prometheus/data:/prometheus command: - --config.file/etc/prometheus/prometheus.yml - --storage.tsdb.path/prometheus - --web.console.libraries/etc/prometheus/console_libraries - --web.console.templates/etc/prometheus/consoles - --storage.tsdb.retention.time30d # 保留30天数据 - --web.enable-lifecycle networks: - monitor-net # Alertmanager - 告警通知 alertmanager: image: prom/alertmanager:latest container_name: alertmanager restart: unless-stopped ports: - 9093:9093 volumes: - ./alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml - ./alertmanager/data:/alertmanager command: - --config.file/etc/alertmanager/alertmanager.yml - --storage.path/alertmanager networks: - monitor-net # Grafana - 数据可视化 grafana: image: grafana/grafana:latest container_name: grafana restart: unless-stopped ports: - 3000:3000 environment: - GF_SECURITY_ADMIN_PASSWORDadmin123 # 初始密码第一次登录后请修改 - GF_INSTALL_PLUGINSgrafana-piechart-panel volumes: - ./grafana/data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning networks: - monitor-net # Node Exporter - 系统监控可选 node-exporter: image: prom/node-exporter:latest container_name: node-exporter restart: unless-stopped ports: - 9100:9100 volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - --path.procfs/host/proc - --path.sysfs/host/sys - --path.rootfs/rootfs - --collector.filesystem.mount-points-exclude^/(sys|proc|dev|host|etc)($$|/) networks: - monitor-net networks: monitor-net: driver: bridge EOF5.2 配置Alertmanager告警通知Alertmanager负责接收Prometheus的告警并发送通知。我们来配置邮件通知cat ~/bidili-monitor/alertmanager/config/alertmanager.yml EOF global: smtp_smarthost: smtp.qq.com:587 # QQ邮箱SMTP服务器其他邮箱请修改 smtp_from: your-emailqq.com # 发件人邮箱 smtp_auth_username: your-emailqq.com # 邮箱账号 smtp_auth_password: your-auth-code # 授权码不是密码 smtp_require_tls: true route: group_by: [alertname] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: email-notifications receivers: - name: email-notifications email_configs: - to: your-notification-emailexample.com # 接收告警的邮箱 send_resolved: true # 问题解决时也发送通知 headers: subject: 【比迪丽WebUI监控告警】{{ .GroupLabels.alertname }} html: | h2监控告警通知/h2 pstrong告警名称:/strong {{ .GroupLabels.alertname }}/p pstrong告警级别:/strong {{ .CommonLabels.severity }}/p pstrong发生时间:/strong {{ .StartsAt.Format 2006-01-02 15:04:05 }}/p pstrong告警详情:/strong {{ .CommonAnnotations.description }}/p pstrong当前值:/strong {{ .CommonAnnotations.value }}/p hr p请及时处理/p inhibit_rules: - source_match: severity: critical target_match: severity: warning equal: [alertname, instance] EOF重要提示将your-emailqq.com替换为你的QQ邮箱将your-auth-code替换为QQ邮箱的授权码在QQ邮箱设置中获取将your-notification-emailexample.com替换为接收告警的邮箱5.3 启动所有监控服务现在一键启动所有监控组件cd ~/bidili-monitor docker-compose up -d检查所有服务是否正常运行# 查看所有容器状态 docker-compose ps # 应该看到类似输出 # Name Command State Ports # ------------------------------------------------------------------- # alertmanager /bin/alertmanager --c ... Up 0.0.0.0:9093-9093/tcp # grafana /run.sh Up 0.0.0.0:3000-3000/tcp # node-exporter /bin/node_exporter -- ... Up 0.0.0.0:9100-9100/tcp # prometheus /bin/prometheus --con ... Up 0.0.0.0:9090-9090/tcp5.4 验证Prometheus是否正常工作打开浏览器访问http://你的服务器IP:9090你应该能看到Prometheus的Web界面。在顶部导航栏点击Status → Targets应该能看到所有监控目标的状态都是UPEndpointStateLabelsLast ScrapeErrorhttp://sd-exporter:8000/metricsUPjobbidili-webui15s agohttp://localhost:9090/metricsUPjobprometheus15s ago如果状态是DOWN检查网络是否连通docker network ls查看monitor-net网络容器日志docker logs sd-exporter端口是否开放netstat -tlnp | grep 8000数据存储中心搭建好了现在我们来配置最直观的部分——Grafana可视化看板。6. 配置Grafana打造专业监控仪表盘Grafana是我们的数据展示平台可以把枯燥的数据变成直观的图表。我会带你创建一个完整的比迪丽WebUI监控仪表盘。6.1 初始登录和配置登录Grafana打开浏览器访问http://你的服务器IP:3000用户名admin密码admin123我们在docker-compose中设置的首次登录后修改密码强烈建议修改默认密码点击左下角用户图标 → Change Password添加Prometheus数据源点击左侧齿轮图标Configuration→ Data sources点击Add data source选择Prometheus配置如下Name:Prometheus可以自定义URL:http://prometheus:9090注意在Docker网络内用服务名其他保持默认点击Save test应该显示Data source is working6.2 创建比迪丽WebUI监控仪表盘我们不使用现成的仪表盘而是自己创建一个完全针对比迪丽WebUI的监控看板。点击左侧图标 → Dashboard → Add new panel。6.2.1 面板1服务状态概览这个面板显示比迪丽WebUI的整体健康状态。配置步骤点击Add visualization选择Stat图表类型在查询框中输入up{jobbidili-webui}设置阈值绿色正常1红色异常0面板标题服务状态单位boolean颜色模式Thresholds点击Apply6.2.2 面板2GPU使用率实时监控这个面板显示GPU的使用情况是AI绘画服务最重要的指标之一。配置步骤点击仪表盘右上角Add panel → Add new panel选择Time series图表类型查询1GPU利用率sd_webui_gpu_utilization图例{{gpu}} - 利用率查询2GPU内存使用sd_webui_gpu_memory_used / sd_webui_gpu_memory_total * 100图例内存使用率设置Y轴单位percent (0-100)设置阈值线警告线80%黄色虚线危险线90%红色虚线面板标题GPU使用率监控点击Apply6.2.3 面板3图片生成性能统计这个面板显示生成图片的关键性能指标。配置步骤添加新面板选择Time series查询1生成耗时rate(sd_webui_generation_duration_seconds_sum[5m]) / rate(sd_webui_generation_duration_seconds_count[5m])图例平均生成时间查询2生成成功率(1 - (rate(sd_webui_generation_errors_total[5m]) / rate(sd_webui_generation_requests_total[5m]))) * 100图例生成成功率查询3生成数量rate(sd_webui_generation_requests_total[5m])图例生成频率张/分钟面板标题生成性能统计点击Apply6.2.4 面板4请求统计和错误监控这个面板显示API请求的情况。配置步骤添加新面板选择Bar gauge查询1总请求数sum(rate(sd_webui_requests_total[5m]))图例请求频率查询2错误率(rate(sd_webui_request_errors_total[5m]) / rate(sd_webui_requests_total[5m])) * 100图例错误率设置阈值绿色0-5%黄色5-10%红色10%面板标题请求统计点击Apply6.2.5 面板5系统资源监控可选如果你部署了node-exporter可以添加系统监控配置步骤添加新面板选择Time series查询1CPU使用率100 - (avg by(instance) (rate(node_cpu_seconds_total{modeidle}[5m])) * 100)查询2内存使用率(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100查询3磁盘使用率(1 - (node_filesystem_avail_bytes{mountpoint/} / node_filesystem_size_bytes{mountpoint/})) * 100面板标题系统资源监控点击Apply6.3 配置仪表盘变量高级功能为了让仪表盘更灵活我们可以添加变量实现动态筛选点击仪表盘右上角齿轮图标Dashboard settings选择Variables → Add variable配置GPU选择变量Name:gpuType:QueryData source:PrometheusQuery:label_values(sd_webui_gpu_utilization, gpu)Refresh:On Dashboard Load点击Add回到仪表盘修改GPU相关查询添加变量sd_webui_gpu_utilization{gpu$gpu}6.4 保存和分享仪表盘点击右上角Save dashboard输入名称比迪丽WebUI监控看板选择文件夹可选点击Save分享仪表盘点击右上角Share按钮选择Link标签页可以获取永久链接选择Export标签页可以导出JSON文件备份6.5 设置自动刷新和时间范围为了让监控看板更实用我们设置一些显示选项自动刷新点击右上角时间选择器旁边的刷新按钮选择刷新间隔如5s、30s、1m默认时间范围点击时间选择器选择Last 1 hour或Last 6 hours点击Apply time range现在你的监控仪表盘应该看起来像这样┌─────────────────────────────────────────────────────────┐ │ 比迪丽WebUI监控看板 │ ├─────────────────┬─────────────────┬───────────────────┤ │ 服务状态 │ GPU使用率 │ 生成性能 │ │ ● 正常 │ [图表] │ [图表] │ ├─────────────────┼─────────────────┼───────────────────┤ │ 请求统计 │ 系统资源 │ 告警状态 │ │ [图表] │ [图表] │ [列表] │ └─────────────────┴─────────────────┴───────────────────┘仪表盘配置完成了但监控系统最重要的功能之一还没实现——告警通知。接下来我们来设置告警阈值和通知。7. 告警配置设置智能阈值和通知监控系统不仅要能看还要能说。当出现问题时系统应该主动通知你。这一节我们来配置告警规则和通知渠道。7.1 在Grafana中配置告警规则Grafana提供了更直观的告警配置界面。我们为比迪丽WebUI设置几个关键告警7.1.1 告警1服务宕机告警配置步骤在刚才创建的仪表盘中编辑服务状态面板点击Alert标签页 → Create alert rule from this panel配置告警规则Rule name:比迪丽WebUI服务宕机Evaluate every:15sFor:1m设置条件WHEN:last()OF:query(A, 15s, now)IS BELOW:1点击Save rule7.1.2 告警2GPU内存使用率过高配置步骤编辑GPU使用率监控面板点击Alert标签页 → Create alert rule配置告警规则Rule name:GPU内存使用率过高Evaluate every:30sFor:2m设置条件WHEN:max()OF:query(B, 30s, now)假设内存使用率是查询BIS ABOVE:90点击Save rule7.1.3 告警3生成时间过长配置步骤编辑生成性能统计面板点击Alert标签页 → Create alert rule配置告警规则Rule name:图片生成时间过长Evaluate every:1mFor:1m设置条件WHEN:max()OF:query(A, 1m, now)假设生成时间是查询AIS ABOVE:30点击Save rule7.2 配置告警通知渠道Grafana支持多种通知方式我们配置最常用的几种7.2.1 配置邮件通知点击左侧Alerting → Notification channels点击Add channel配置邮件通知Name:Email AlertsType:EmailEmail addresses:你的邮箱example.com勾选Send on all alerts勾选Include image点击Send Test测试点击Save7.2.2 配置钉钉通知国内常用如果你使用钉钉可以配置钉钉机器人在钉钉群添加自定义机器人获取Webhook地址在Grafana中点击Add channel配置钉钉通知Name:DingTalk AlertsType:DingDingUrl:你的钉钉机器人Webhook地址Message Type:link或actionCard点击Save7.2.3 配置Slack通知国际常用如果你使用Slack在Slack中创建Incoming Webhook获取URL在Grafana中点击Add channel配置Slack通知Name:Slack AlertsType:SlackUrl:你的Slack Webhook URLChannel:#监控告警或username点击Save7.3 将告警规则绑定到通知渠道回到告警规则列表点击每个告警规则旁边的Edit在Notifications部分选择刚才创建的通知渠道点击Save7.4 测试告警功能为了验证告警系统是否正常工作我们可以手动触发一个测试告警# 临时停止比迪丽WebUI服务模拟宕机 supervisorctl stop bituam-webui # 等待2-3分钟检查是否收到告警通知 # 恢复服务 supervisorctl start bituam-webui # 等待1-2分钟检查是否收到恢复通知你应该会收到两封邮件告警触发邮件服务宕机告警恢复邮件服务已恢复7.5 告警静默和维护窗口有时候我们需要进行系统维护不希望收到告警。Grafana提供了静默功能点击左侧Alerting → Silences点击New silence配置静默规则Matchers:alertname比迪丽WebUI服务宕机Starts at:现在时间Ends at:维护结束时间Comment:系统维护预计30分钟点击Create在维护期间指定的告警将不会发送通知。告警系统配置完成了现在你的比迪丽WebUI有了眼睛监控和嘴巴告警。但一个好的监控系统还需要定期维护和优化。8. 日常维护和优化建议监控系统搭建好了但工作还没结束。要让系统长期稳定运行需要一些维护工作。这一节我分享一些实战经验。8.1 监控系统自身的监控监控系统也需要被监控我们添加对监控系统自身的检查8.1.1 监控Prometheus# 在Prometheus配置中添加自监控 cat ~/bidili-monitor/prometheus/prometheus.yml EOF # 监控Prometheus自身健康 - job_name: prometheus-self static_configs: - targets: [localhost:9090] metrics_path: /metrics # 监控Alertmanager - job_name: alertmanager static_configs: - targets: [alertmanager:9093] EOF # 重启Prometheus使配置生效 cd ~/bidili-monitor docker-compose restart prometheus8.1.2 在Grafana中添加监控系统状态面板新建一个仪表盘命名为监控系统状态添加以下面板Prometheus采集目标状态Prometheus存储使用量Grafana活跃用户数告警触发频率8.2 数据保留策略优化监控数据会不断增长需要合理设置保留时间# 修改Prometheus数据保留时间 # 编辑docker-compose.yml中的prometheus服务 # 修改--storage.tsdb.retention.time参数 # 建议设置 # - 生产环境30-90天 # - 测试环境7-15天8.3 性能优化建议8.3.1 Prometheus性能优化# 在prometheus.yml中添加性能配置 cat ~/bidili-monitor/prometheus/prometheus.yml EOF # 性能优化配置 storage: tsdb: retention: 30d wal_compression: true stripe_size: 16384 # 查询优化 query: lookback-delta: 5m max_concurrent: 20 timeout: 2m # 远程读写配置如果需要 remote_write: - url: http://remote-storage:8086/api/v1/prom/write queue_config: capacity: 5000 max_shards: 50 min_shards: 5 max_samples_per_send: 1000 EOF8.3.2 Grafana性能优化减少面板数量每个仪表盘不要超过10个面板优化查询避免过于复杂的PromQL查询调整刷新间隔非关键面板可以设置较长的刷新间隔启用缓存在Grafana配置中启用查询缓存8.4 备份和恢复策略监控数据很重要需要定期备份#!/bin/bash # backup-monitor.sh BACKUP_DIR/backup/monitor DATE$(date %Y%m%d_%H%M%S) # 创建备份目录 mkdir -p $BACKUP_DIR/$DATE # 备份Prometheus数据 docker exec prometheus tar czf /prometheus_backup.tar.gz -C /prometheus . docker cp prometheus:/prometheus_backup.tar.gz $BACKUP_DIR/$DATE/prometheus.tar.gz # 备份Grafana数据 docker exec grafana tar czf /grafana_backup.tar.gz -C /var/lib/grafana . docker cp grafana:/grafana_backup.tar.gz $BACKUP_DIR/$DATE/grafana.tar.gz # 备份配置文件 cp -r ~/bidili-monitor/prometheus/*.yml $BACKUP_DIR/$DATE/ cp -r ~/bidili-monitor/grafana/provisioning $BACKUP_DIR/$DATE/ cp ~/bidili-monitor/docker-compose.yml $BACKUP_DIR/$DATE/ # 清理旧备份保留最近7天 find $BACKUP_DIR -type d -mtime 7 -exec rm -rf {} \; echo 备份完成$BACKUP_DIR/$DATE设置定时备份每天凌晨2点# 编辑crontab crontab -e # 添加以下行 0 2 * * * /bin/bash /path/to/backup-monitor.sh8.5 故障排查指南当监控系统出现问题时按以下步骤排查8.5.1 Prometheus采集失败# 1. 检查Prometheus状态 docker logs prometheus # 2. 检查采集目标 curl http://localhost:9090/api/v1/targets | jq . # 3. 检查网络连通性 docker exec prometheus ping sd-exporter # 4. 手动测试exporter curl http://sd-exporter:8000/metrics8.5.2 Grafana无法显示数据# 1. 检查Grafana日志 docker logs grafana # 2. 检查数据源连接 # 在Grafana界面测试数据源 # 3. 检查Prometheus查询 # 直接在Prometheus界面执行相同的查询8.5.3 告警不触发# 1. 检查Alertmanager状态 docker logs alertmanager # 2. 检查告警规则 # 在Prometheus界面查看Rules # 3. 检查通知渠道配置 # 在Grafana界面测试通知渠道8.6 安全加固建议监控系统包含敏感信息需要做好安全防护修改默认密码# Grafana初始密码 GF_SECURITY_ADMIN_PASSWORD你的强密码 # Alertmanager Web界面密码如果需要 # 在alertmanager.yml中添加web配置限制访问IP# 在docker-compose.yml中添加网络限制 ports: - 127.0.0.1:3000:3000 # 只允许本地访问启用HTTPS# 为Grafana配置HTTPS # 需要SSL证书定期更新# 定期更新镜像 docker-compose pull docker-compose up -d9. 总结你的AI绘画服务现在有了火眼金睛通过今天的学习和实践你已经为比迪丽WebUI搭建了一套完整的监控系统。让我们回顾一下你获得的超能力9.1 你已经实现的功能实时监控7×24小时不间断监控比迪丽WebUI的运行状态性能洞察清晰了解GPU使用率、生成速度、成功率等关键指标智能告警问题发生前主动通知避免服务中断影响创作历史追溯可以查看任意时间点的服务状态方便问题排查可视化展示专业美观的仪表盘数据一目了然9.2 这套监控系统的价值对个人用户再也不用担心深夜创作时服务突然挂掉生成速度变慢时能快速找到原因优化提示词和参数时有数据参考对团队使用多人使用时能合理分配资源服务稳定性有保障问题排查效率大幅提升对业务部署满足SLA服务等级协议要求容量规划有数据支撑故障处理有完整记录9.3 后续优化建议持续完善根据实际使用情况调整告警阈值扩展监控添加更多业务指标如用户行为分析自动化运维结合监控数据实现自动扩缩容成本优化基于使用情况优化资源配置9.4 快速检查清单在结束之前快速检查一下你的监控系统是否完整[ ] Prometheus正常运行端口9090可访问[ ] Grafana仪表盘可查看端口3000可访问[ ] 比迪丽WebUI指标正常采集[ ] 告警规则已配置[ ] 通知渠道已测试[ ] 数据备份已设置9.5 最后的建议监控系统不是一劳永逸的工程而是需要持续维护和优化的活系统。建议你每周检查花5分钟查看一周的监控数据每月回顾分析告警记录优化阈值季度评估根据业务增长调整监控策略记住好的监控系统就像一个好的助手——平时默默工作关键时刻能帮你避免大问题。现在你可以安心地使用比迪丽WebUI进行创作了因为你知道有一双眼睛在时刻守护着你的服务。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。