选型

监控选型及架构

k8s下也可以这么用,目前部署应该都是k8sl
  • Metrics : Promethues + Grafana
  • Logging : Elastic + FileBeat + LogStash + Kibana
  • Tracing : Skywalking
如果企业采用spring + k8s技术栈,EFK + Prometheus + SkyWalking就是我推荐的监控三套件,这三个分别是日志、metrics和调用链监控的利器,社区生态好。
而CAT主要为物理机/虚拟机场景研发,容器环境应该也支持,但是文档资料较少。总体CAT是一个不错的产品,但是相对门槛较高,社区和文档不足。相比而言,skywalking门槛较低,社区文档好,对容器环境有明确的支持。
方法级监控可以用Promethues,但是需要对方法进行埋点,如果是Spring应用,你用MicroMeter对方法添加相应的注解即可。注意,最好在框架层统一埋点。
Skywalking也可以监控到方法级,前提是需要相应的plugin支持,如果现成的plugin监控不到你的方法,你可以扩展或者自己写plugin。
elastic不适合用于数据存储 那我们项目里用elastic 也相当于给skywalking做了数据库,稳定性和效率怎么看? elastic属于一种高性能大容量的nosql数据存储,底层基于反向索引数据结构,在大数据存储、搜索和分析方面有广泛用途。它可以做skywalking的存储,也可以做普通日志存储。关于性能稳定性和效率,elastic本身是分布式高性能设计,实际要看你的调优和运维能力,国内公司如携程,有超过50台机器做成的elastic集群,每天收集存储超过TB级别数据量。

架构图

notion image
notion image
notion image

ELK和skyWalking和prometheus和grafana

ELK,Skywalking,Prometheus和Grafana都是用于监控和分析数据的不同工具。
ELK是Elasticsearch,Logstash和Kibana的组合,可以收集,存储,搜索和可视化日志数据。
Skywalking是一个应用性能监控(APM)系统,可以追踪,监控和诊断分布式系统和微服务。
Prometheus是一个基于指标的监控系统,可以从各种来源抓取和存储时间序列数据,并根据预定义的规则进行告警。
Grafana是一个数据可视化和分析平台,可以从多个数据源创建仪表盘和图表,包括ELK和Prometheus。
这些工具可以根据你的需求和偏好一起或单独使用。例如,一些常见的组合是:
  • EFK + Prometheus + Skywalking + K8s:这是一个推荐的解决方案,适用于基于Spring和Kubernetes的微服务应用。EFK处理日志数据,Prometheus处理指标数据,Skywalking处理追踪数据,Kubernetes处理编排。
  • ELK + Prometheus + Grafana:这是一个流行的解决方案,用于监控基础设施和应用。ELK处理日志数据,Prometheus处理指标数据,Grafana处理可视化。
  • Skywalking + Grafana:这是一个简单的解决方案,用于追踪和监控分布式系统。Skywalking处理追踪数据,Grafana处理可视化。

最佳组合

最佳组合是指在特定的场景和目标下,能够提供最优的监控和分析效果的工具组合。对于ELK,Skywalking,Prometheus和Grafana这些工具,最佳组合可能会因不同的需求和环境而有所不同,但是一般来说,有以下几点可以参考:
EFK + Prometheus + Skywalking 使用是指在Kubernetes环境下,使用EFK作为日志监控,Prometheus作为指标监控,Skywalking作为调用链监控的组合。这种组合可以提供全面的微服务监控和分析能力,而且都有良好的社区生态和容器化支持。

All-in-one APM solution 一体化APM解决方案

  • Distributed Tracing 分布式跟踪
    • End-to-end distributed tracing. Service topology analysis, service-centric observability and APIs dashboards. 端到端分布式跟踪。服务拓扑分析、以服务为中心的可观察性和API 仪表板。
  • Agents for your stack 您堆栈的代理
    • Java, .Net Core, PHP, NodeJS, Golang, LUA, Rust, C++, Client JavaScript and Python agents with active development and maintenance. Java、.Net Core、PHP、NodeJS、Golang、LUA、Rust、C++、Client JavaScript和Python代理 活动的 开发和维护。
  • eBPF early adoption eBPF早期采用
    • Rover agent works as metrics collector and profiler powered by eBPF to diagnose CPU and network performance. Rover代理作为指标收集器和分析器工作,由eBPF提供支持,以诊断CPU和网络 性能。
  • Scaling 缩放
    • 100+ billion telemetry data could be collected and analyzed from one SkyWalking cluster. 可以从一个SkyWalking集群收集和分析1000多亿个遥测数据。
  • Mature Telemetry Ecosystems Supported 支持成熟的遥测生态系统
    • Metrics, Traces, and Logs from mature ecosystems are supported, e.g. Zipkin, OpenTelemetry, Prometheus, Zabbix, Fluentd 支持成熟生态系统的指标、跟踪和日志,例如Zipkin、OpenTelemetry、 普罗米修斯 Zabbix、Fluentd
  • Native APM Database 原生APM数据库
    • BanyanDB, an observability database, created in 2022, aims to ingest, analyze and store telemetry/observability data. BanyanDB是一个可观察性数据库,创建于2022年,旨在摄取,分析和存储 遥测/可观测性数据。
  • Consistent Metrics Aggregation 一致的指标聚合
    • SkyWalking native meter format and widely known metrics format(OpenCensus, OTLP, Telegraf, Zabbix, e.g.) are processed through the same script pipeline. SkyWalking原生计量表格式和广为人知的计量表格式(OpenCensus、OTLP、Telegraf、Zabbix、 例如)是 通过相同的脚本管道处理。
  • Log Management Pipeline 日志管理管道
    • Support log formatting, extract metrics, various sampling policies through script pipeline in high performance. 支持日志格式化,提取指标,各种采样策略通过脚本管道在高 性能。
  • Alerting and Telemetry Pipelines 警报和遥测管道
    • Support service-centric, deployment-centric, API-centric alarm rule setting. Support forwarding alarms and all telemetry data to 3rd party. 支持以业务为中心、以部署为中心、以API为中心的告警规则设置。支持转发 警报和所有 遥测数据到第三方。
  • Distributed Tracing 分布式跟踪
    • End-to-end distributed tracing. Service topology analysis, service-centric observability and APIs dashboards. 端到端分布式跟踪。服务拓扑分析、以服务为中心的可观察性和API 仪表板。
  • Agents for your stack 您堆栈的代理
    • Java, .Net Core, PHP, NodeJS, Golang, LUA, Rust, C++, Client JavaScript and Python agents with active development and maintenance. Java、.Net Core、PHP、NodeJS、Golang、LUA、Rust、C++、Client JavaScript和Python代理 活动的 开发和维护。
  • eBPF early adoption eBPF早期采用
    • Rover agent works as metrics collector and profiler powered by eBPF to diagnose CPU and network performance. Rover代理作为指标收集器和分析器工作,由eBPF提供支持,以诊断CPU和网络 性能。
  • Scaling 缩放
    • 100+ billion telemetry data could be collected and analyzed from one SkyWalking cluster. 可以从一个SkyWalking集群收集和分析1000多亿个遥测数据。
  • Mature Telemetry Ecosystems Supported 支持成熟的遥测生态系统
    • Metrics, Traces, and Logs from mature ecosystems are supported, e.g. Zipkin, OpenTelemetry, Prometheus, Zabbix, Fluentd 支持成熟生态系统的指标、跟踪和日志,例如Zipkin、OpenTelemetry、 普罗米修斯 Zabbix、Fluentd
  • Native APM Database 原生APM数据库
    • BanyanDB, an observability database, created in 2022, aims to ingest, analyze and store telemetry/observability data. BanyanDB是一个可观察性数据库,创建于2022年,旨在摄取,分析和存储 遥测/可观测性数据。
  • Consistent Metrics Aggregation 一致的指标聚合
    • SkyWalking native meter format and widely known metrics format(OpenCensus, OTLP, Telegraf, Zabbix, e.g.) are processed through the same script pipeline. SkyWalking原生计量表格式和广为人知的计量表格式(OpenCensus、OTLP、Telegraf、Zabbix、 例如)是 通过相同的脚本管道处理。
  • Log Management Pipeline 日志管理管道
    • Support log formatting, extract metrics, various sampling policies through script pipeline in high performance. 支持日志格式化,提取指标,各种采样策略通过脚本管道在高 性能。
  • Alerting and Telemetry Pipelines 警报和遥测管道
    • Support service-centric, deployment-centric, API-centric alarm rule setting. Support forwarding alarms and all telemetry data to 3rd party. 支持以业务为中心、以部署为中心、以API为中心的告警规则设置。支持转发 警报和所有 遥测数据到第三方。
      notion image

      Problem

      skywalking可和EFK共用ES吗?ES集群个数和内存CPU如何分配?
      因为需使用istio的熔断流量控制,istio也有一些trace什么的zipkin,怎么选择?
      skywalking当然可和efk共用ElasticSearch,它们用不同的index,实际要不要这样弄,具体要考虑业务场景/容量需求等因素。集群节点个数和内存CPU建议先粗略估算,然后监控起来(ES有很多监控手段),运行一段时间后根据监控数据优化容量规划。
      zipkin的trace监控是应用层的,可以和应用/框架代码紧密集成,开发定制灵活性更高。istio的trace是系统层的,对应用层无倾入,但是开发人员的控制和定制弱。具体框架和运维团队要协商综合考虑,哪种更适合,当然也可以两个都用结合起来。
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP