当前位置: 首页 > news >正文

微服务监控:Prometheus与Grafana实战

微服务监控:Prometheus与Grafana实战

大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊微服务监控这个重要话题。作为一个全栈开发者,监控是保障系统稳定运行的关键。今天就来分享一下Prometheus和Grafana的实战经验。

为什么需要监控?

场景说明
故障排查快速定位问题
性能优化发现性能瓶颈
容量规划预测资源需求
安全审计追踪异常行为

Prometheus简介

Prometheus是一个开源的监控系统,具有以下特点:

  • 多维度数据模型
  • 灵活的查询语言(PromQL)
  • 高效的时间序列数据库
  • 内置告警机制

安装Prometheus

# 使用Docker安装 docker run -d --name prometheus \ -p 9090:9090 \ -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus

配置文件

# prometheus.yml global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node-exporter' static_configs: - targets: ['node-exporter:9100'] - job_name: 'api-service' static_configs: - targets: ['api-service:3000'] metrics_path: '/metrics'

指标类型

# 计数器(Counter) http_requests_total = Counter('http_requests_total', 'Total HTTP requests') # 仪表盘(Gauge) memory_usage = Gauge('memory_usage_bytes', 'Memory usage in bytes') # 直方图(Histogram) request_duration = Histogram('request_duration_seconds', 'Request duration') # 摘要(Summary) response_size = Summary('response_size_bytes', 'Response size')

实战:监控API服务

from flask import Flask from prometheus_client import Counter, Histogram, generate_latest app = Flask(__name__) REQUESTS = Counter('http_requests_total', 'Total HTTP requests', ['method', 'endpoint']) DURATION = Histogram('request_duration_seconds', 'Request duration') @app.route('/') @DURATION.time() def index(): REQUESTS.labels(method='GET', endpoint='/').inc() return 'Hello World' @app.route('/metrics') def metrics(): return generate_latest(), 200, {'Content-Type': 'text/plain'} if __name__ == '__main__': app.run(port=3000)

Grafana配置

# 使用Docker安装Grafana docker run -d --name grafana \ -p 3000:3000 \ -v /path/to/grafana-data:/var/lib/grafana \ grafana/grafana

配置数据源

# 添加Prometheus数据源 apiVersion: 1 datasources: - name: Prometheus type: prometheus url: http://prometheus:9090 access: proxy isDefault: true

创建仪表盘

{ "dashboard": { "id": null, "title": "API监控", "panels": [ { "type": "graph", "title": "请求数", "targets": [ { "expr": "rate(http_requests_total[5m])", "legendFormat": "{{method}} {{endpoint}}" } ] }, { "type": "graph", "title": "请求延迟", "targets": [ { "expr": "histogram_quantile(0.95, rate(request_duration_seconds_bucket[5m]))", "legendFormat": "P95" } ] } ] } }

告警配置

# alerting_rules.yml groups: - name: api-alerts rules: - alert: HighErrorRate expr: rate(http_errors_total[5m]) > 0.1 for: 5m labels: severity: critical annotations: summary: "High error rate detected" description: "Error rate is {{ $value }}% for API service" - alert: HighLatency expr: histogram_quantile(0.95, rate(request_duration_seconds_bucket[5m])) > 1 for: 5m labels: severity: warning annotations: summary: "High latency detected" description: "P95 latency is {{ $value }}s"

最佳实践

1. 指标命名规范

# <metric_type>_<name>_<unit> http_requests_total memory_usage_bytes request_duration_seconds

2. 标签管理

REQUESTS.labels( method='GET', endpoint='/api/users', status_code='200' ).inc()

3. 可视化技巧

{ "panels": [ { "type": "stat", "title": "平均延迟", "targets": [ { "expr": "avg(request_duration_seconds)" } ] }, { "type": "gauge", "title": "内存使用率", "targets": [ { "expr": "memory_usage_bytes / memory_total_bytes * 100" } ] } ] }

总结

Prometheus和Grafana是监控领域的黄金组合。通过合理的指标设计和可视化配置,可以全面监控系统的运行状态。

我的鬃狮蜥Hash对监控也有自己的理解——它总是时刻关注周围环境的变化,这也许就是自然界的"监控系统"吧!

如果你对监控感兴趣,欢迎留言交流!我是欧阳瑞,极客之路,永无止境!


技术栈:Prometheus · Grafana · 监控

http://www.jsqmd.com/news/862664/

相关文章:

  • 2026最新诚信优选 大同市云州区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 为什么你的盐印相总像P图?:Midjourney v6.2最新盐印相渲染漏洞(已验证387组测试图)及绕过方案
  • 告别“炼丹”:手把手用PyTorch实现PPO算法训练CartPole平衡杆(附完整代码与调参心得)
  • 深度学习工程化实战:从论文思想到可部署代码的七步法
  • 万兆NAS如何实现海量素材秒传?HLC-6009迷你存储实战解析
  • 2026最新诚信优选 邯郸市丛台区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 手把手教你用高云FPGA的Video Frame Buffer IP搞定OV7725摄像头到HDMI显示(附源码)
  • 智慧防疫终端实战:从数字哨兵系统设计到落地运维全解析
  • RTKLIB PPP解算结果怎么验证?用Notepad++对比SNX周解文件实战
  • 别再傻傻只用insmod了!Linux驱动加载,用modprobe才是真省心(附依赖问题解决全流程)
  • 前端架构模式:选择适合你的架构风格
  • 5月最新10款降AI率工具实测:谁能上岸,谁是坑?知网避坑指南
  • 2026最新诚信优选 邯郸市肥乡区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 手把手教你配置DRV8301的SPI寄存器:从电流采样增益到过流保护,一篇搞定
  • 告别灰度传感器:用OpenMV和Python给STM32小车装上‘眼睛’,实现多颜色赛道识别
  • 别再只用Selenium了!手把手教你用Python+UIAutomation+Unittest搭建Windows应用自动化测试框架
  • 自动化运维:Ansible与基础设施即代码
  • 2026最新诚信优选 邯郸市峰峰矿区黄金回收白银回收铂金回收彩金回收门店TOP5排行榜+联系方式推荐_转自TXT - 盛世金银回收
  • 从炼丹到工程:聊聊PyTorch学习率衰减那些容易被忽略的细节(LambdaLR/ReduceLROnPlateau)
  • 大模型4-bit量化实战:精度、速度与部署的工程平衡
  • EPLAN设备导航器显示太简单?三步教你自定义显示功能文本和备注
  • Logistic Regression实战指南:Python构建可解释二分类模型
  • 不止于箱线图:用TCGA泛癌配对样本数据,画出更高级的基因表达点线图(附完整R代码)
  • 全链路追踪:OpenTelemetry与Jaeger实战
  • 临近毕业降AI率保姆级教程:嘎嘎降3分钟,知网AI率5%以下
  • 医疗AI责任落地四铁律:从新冠压力测试到临床可用
  • CCoE专家协作框架:垂直领域AI落地的工程化范式
  • AI Agent重构开发工具链:从代码补全到闭环执行
  • Deepfake技术原理与实战防御指南
  • 机器学习赋能多共振生物传感:从多维光学数据中挖掘精准检测新范式