2023最新版Prometheus+Grafana监控系统搭建指南(含Docker-compose部署)
2023云原生监控实战基于Docker-compose的PrometheusGrafana全栈部署指南在云原生技术席卷各行各业的今天监控系统已成为保障业务稳定性的神经中枢。传统监控方案在面对容器化、微服务架构时往往力不从心而Prometheus作为CNCF毕业项目凭借其多维数据模型和强大的查询能力已成为云原生监控的事实标准。本文将带您从零开始通过Docker-compose快速搭建包含Prometheus、Alertmanager和Grafana的完整监控栈并分享可视化看板配置的实战技巧。1. 环境准备与架构设计1.1 技术栈选型解析现代监控系统需要具备以下核心能力指标采集支持多种Exporter和Pushgateway存储查询高效处理时间序列数据告警管理灵活的路由和抑制机制数据可视化直观展现系统状态我们选择的组件组合Prometheus采集存储告警规则 ├─ Alertmanager告警分发 └─ Grafana可视化展示1.2 硬件资源建议组件CPU核心内存磁盘空间Prometheus24GB50GBAlertmanager12GB5GBGrafana12GB1GB提示生产环境建议为Prometheus配置SSD存储显著提升查询性能2. Docker-compose全栈部署2.1 编排文件详解创建docker-compose.yml文件version: 3 services: prometheus: image: prom/prometheus:v2.37.0 ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prom_data:/prometheus command: - --config.file/etc/prometheus/prometheus.yml - --storage.tsdb.retention.time30d alertmanager: image: prom/alertmanager:v0.24.0 ports: - 9093:9093 volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml grafana: image: grafana/grafana:9.1.6 ports: - 3000:3000 volumes: - grafana_data:/var/lib/grafana volumes: prom_data: grafana_data:2.2 关键配置文件示例Prometheus主配置prometheus.ymlglobal: scrape_interval: 15s evaluation_interval: 15s rule_files: - alert.rules alerting: alertmanagers: - static_configs: - targets: [alertmanager:9093] scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090] - job_name: node static_configs: - targets: [node-exporter:9100]Alertmanager配置alertmanager.ymlroute: group_by: [alertname] receiver: email-notifications receivers: - name: email-notifications email_configs: - to: adminexample.com from: alertmanagerexample.com smarthost: smtp.example.com:587 auth_username: user auth_password: password3. 监控数据采集实战3.1 节点监控配置在docker-compose.yml中添加node-exporter服务node-exporter: image: prom/node-exporter:v1.3.1 ports: - 9100:9100 restart: unless-stopped3.2 常见Exporter部署MySQL监控使用mysqld_exporterRedis监控使用redis_exporterNginx监控配置nginx-module-vts示例MySQL监控配置- job_name: mysql static_configs: - targets: [mysqld-exporter:9104] metrics_path: /metrics4. Grafana高级可视化技巧4.1 看板导入与配置访问Grafana控制台localhost:3000添加Prometheus数据源URL: http://prometheus:9090Access: Server (Default)导入官方仪表板Node Exporter FullID 1860Prometheus 2.0 StatsID 36624.2 自定义看板设计关键面板类型推荐Singlestat关键指标摘要Graph趋势分析Heatmap请求分布Table详细数据示例Panel JSON配置片段{ title: CPU Usage, type: graph, datasource: Prometheus, targets: [ { expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode\idle\}[5m])) * 100), legendFormat: {{instance}} } ] }5. 告警策略优化实践5.1 告警规则示例创建alert.rules文件groups: - name: host-alerts rules: - alert: HighCPUUsage expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{modeidle}[5m])) * 100) 80 for: 10m labels: severity: warning annotations: summary: High CPU usage on {{ $labels.instance }} description: CPU usage is {{ $value }}% - alert: MemoryPressure expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 20 for: 15m labels: severity: critical5.2 告警分级策略级别响应时间通知渠道静默策略Critical15分钟短信邮件钉钉非工作时间除外Warning1小时邮件企业微信周末静默Info24小时邮件无需静默6. 生产环境调优指南6.1 Prometheus性能优化存储优化command: - --storage.tsdb.retention.time30d - --storage.tsdb.wal-compression - --storage.tsdb.max-block-duration2h查询优化# 避免全量扫描 bad: metric{label~.*value.*} good: metric{labelexact_value}6.2 高可用方案基础HA架构┌──────────────┐ │ Load Balancer │ └──────┬───────┘ │ ┌─────────────────────┼─────────────────────┐ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ │ Prometheus A │ │ Prometheus B │ │ Prometheus C │ └─────────────┘ └─────────────┘ └─────────────┘6.3 监控项黄金指标每个服务应监控的四大黄金指标延迟请求处理时间流量请求速率错误错误率饱和度资源使用率在Kubernetes环境中部署时建议使用Prometheus Operator来管理监控栈它能自动发现和监控集群中的所有资源。实际使用中发现合理设置scrape_interval对系统负载影响很大高频采集15s会导致存储压力剧增。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2456988.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!