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

云原生可观测性体系建设:从0到1搭Prometheus+Grafana+ELK+SkyWalking全家桶

云原生可观测性体系建设:从0到1搭Prometheus+Grafana+ELK+SkyWalking全家桶

大家好,我是迪哥。以前线上出问题,我们靠"猜";现在靠"看"——看指标、看日志、看链路。这套 Prometheus + Grafana + ELK + SkyWalking 组合拳,让我们的故障发现时间从小时级降到了秒级。今天聊聊如何从零搭建这套可观测性体系。

什么是可观测性?

三个支柱:

  • 指标(Metrics):系统层面数据(CPU、内存、QPS)
  • 日志(Logs):事件层面数据(请求、报错)
  • 链路(Traces):请求层面数据(调用链路、耗时分布)

架构全景

┌─────────────────────────────────────────────────────────────────┐ │ Grafana (可视化) │ └────┬────────────────────────┬────────────────────────┬───────┘ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌────────────────┐ ┌────────────────────┐ │ Prometheus │ │ Elasticsearch │ │ SkyWalking │ │ (指标存储) │ │ (日志存储) │ │ (链路存储) │ └───────┬───────┘ └────────┬───────┘ └───────────┬───────┘ │ │ │ └──────────┬──────────┴───────────┬───────────┘ │ │ ┌──────▼─────────┐ ┌──────▼─────────┐ │ Node Exporter│ │ Filebeat/Loki│ │ (系统指标) │ │ (日志收集) │ └──────┬─────────┘ └──────┬─────────┘ │ │ ┌──────▼─────────────────────▼─────────┐ │ K8s 应用集群 │ └──────────────────────────────────────┘

一、指标:Prometheus + Grafana

安装 Prometheus

# prometheus.yml global: scrape_interval: 15s scrape_configs: - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true

部署到 K8s

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring

应用暴露指标(Micrometer)

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
management: endpoints: web: exposure: include: 'prometheus,health,info,metrics'

Grafana 仪表盘

推荐的 ID:

  • 1860:Node Exporter(系统监控)
  • 4701:JVM Micrometer
  • 11378:Spring Boot 2.1+

二、日志:ELK Stack

架构

应用 → Filebeat → Elasticsearch → Kibana

Filebeat 配置

filebeat.inputs: - type: container paths: - /var/log/containers/*.log processors: - add_kubernetes_metadata: ~ output.elasticsearch: hosts: ["elasticsearch:9200"]

部署

helm install elk elastic/elastic-stack -n monitoring

Kibana 查询示例

# 查询错误日志 level: ERROR AND app: order-service AND @timestamp > now-1h # 查询慢请求 request_time > 3 AND app: order-service

三、链路:SkyWalking

部署 OAP

apiVersion: apps/v1 kind: Deployment metadata: name: skywalking-oap spec: replicas: 2 template: spec: containers: - name: oap image: apache/skywalking-oap-server:9.4.0 env: - name: SW_STORAGE value: elasticsearch - name: SW_STORAGE_ES_CLUSTER_NODES value: elasticsearch:9200

应用接入

java -javaagent:/path/to/skywalking-agent.jar \ -Dskywalking.agent.service_name=order-service \ -Dskywalking.collector.backend_service=skywalking-oap:11800 \ -jar order-service.jar

SkyWalking 常用功能

  1. 拓扑图(Topology):一眼看出服务调用关系
  2. 追踪(Trace):找到慢/错误链路
  3. 性能剖析(Profile):代码级性能分析
  4. 告警(Alarm):异常及时通知

四、告警:Alertmanager + 钉钉/企业微信

alerting: alertmanagers: - static_configs: - targets: ['alertmanager:9093'] route: receiver: 'dingtalk' routes: - match: severity: critical receiver: 'dingtalk' receivers: - name: 'dingtalk' webhook_configs: - url: 'https://oapi.dingtalk.com/robot/send?access_token=xxx'

告警规则示例

groups: - name: service_alerts rules: - alert: HighErrorRate expr: error_rate > 0.1 for: 5m labels: severity: critical annotations: summary: "服务 {{ $labels.app }} 错误率过高" description: "错误率为 {{ $value }}"

可观测性成熟度模型

级别指标日志链路效果
Level 0靠猜,线上出问题慌得一批
Level 1✅ 基础知道系统挂了,但不知道为什么
Level 2✅ 完善✅ 有能定位,但复杂问题不行
Level 3✅ 完善✅ 完善✅ 完善全方位可观测,问题秒定位

成本建议

组件资源建议
Prometheus4C8G,保留 15 天
Elasticsearch8C32G × 3 节点,保留 7-30 天
SkyWalking OAP4C16G × 2 节点
Grafana2C4G

经验总结

  1. 不要追求完美!先把指标和日志搞起来,链路可以慢慢加
  2. 数据保留策略!不要无限期存,成本扛不住
  3. 告警要收敛!太多告警会导致告警疲劳
  4. 定期检查!有没有漏采集,有没有异常指标没人看
  5. 与业务结合!不仅看系统指标,更要看业务指标(下单量、支付成功率)

说到可观测性,我家那只叫 Docker 的哈士奇最近在监视我的零食柜,什么时候偷吃了,偷吃了什么,偷吃了多少,它门儿清,跟这套体系有的一拼 😂

我是迪哥,我们下期再见!


往期推荐:

  • 《线上故障排查与应急响应实战》
  • 《系统容量规划与压测实战》
http://www.cnnetsun.cn/news/2547065.html

相关文章:

  • 在线医疗服务系统(10088)
  • OpenAI Assistant API vs 开源框架:创业者该如何选择技术栈?
  • DeepSeek总结的将 Rust Delta Kernel 集成到 ClickHouse
  • 小微团队如何利用Taotoken管理多个项目的AI成本
  • AI Agent Harness Engineering 模型压缩技术:让智能体在资源受限设备上高效运行
  • 在Ubuntu 22.04上从零部署nnUNet_v2:一个医学影像研究生的踩坑与填坑实录
  • 5分钟拯救你的B站收藏:m4s缓存视频无损转换实战
  • 为什么92.7%的企业漏检DeepSeek生成的隐性偏见内容?3类高危prompt绕过案例首次公开
  • 告警风暴压垮值班工程师?DeepSeek 6.3+告警收敛策略全拆解,含Prometheus+Alertmanager联调秘钥
  • 【面试必备】Java面向对象三分钟速通:封装、继承、多态,这一篇就够了
  • 交叉拟合与Neyman正交性:驯服机器学习因果推断中的偏差
  • 老Mac焕新秘籍:3个步骤让你的旧设备运行最新macOS系统
  • 如何永久保存你的微信聊天记忆?WeChatMsg完整解决方案揭秘
  • 2026告别水印烦恼!免费图片去水印保姆级教程,从微信小程序到手机App一看就会
  • 人机协作新范式:盘点2026年当红之选的的AI论文写作软件
  • 设计工作文档版本迭代管理程序,规整多版文件,避免办公文件混乱重复存储。
  • 编写职场人情往来收支平衡管理程序,统计礼尚往来,合理规划职场社交成本。
  • FPGA加速SVM量子态判别:5.74纳秒低延迟与8位量化硬件实现
  • 【数据分析】基于matlab智慧城市温度与湿度分析系统【含Matlab源码 15555期】
  • 长期使用 Taotoken Token Plan 套餐的成本控制效果观察
  • Label Studio:一站式数据标注与AI模型训练完整指南
  • Nodejs后端服务集成Taotoken多模型API的实践路径
  • PICO Unity APK闪退的五大根因与工程化排查指南
  • 灾变瞬间生成人员分布图,为抢险决策提供可靠依据 ——视频孪生智能态势研判矿山抢险决策技术方案
  • 2026最权威AI论文写作工具榜单:这些被高校和导师悄悄推荐的软件你还没用?
  • 具身智能场景优先级矩阵
  • 【MySQL全面教学】MySQL多表查询与JOIN Day6(2026年)
  • 【企业级落地】使用 Midscene.js 自动化生成并导出带截图的详尽测试/运行报告
  • PotPlayer字幕翻译插件:5步实现免费自动化双语字幕体验
  • 3分钟永久激活IDM:开源脚本让下载加速无限制