本文適用於SkyWalking v9.1.0。 SkyWalking簡介 SkyWalking是一個分散式系統的應用程式性能監視(APM)工具,專為微服務、雲原生架構和基於容器(K8s)架構而設計。當前版本具備了全路徑跟蹤、指標採集、日誌記錄等功能,並對多種編程語言及平臺(Java/C/C++/Go ...
本文適用於SkyWalking v9.1.0。
SkyWalking簡介
SkyWalking是一個分散式系統的應用程式性能監視(APM)工具,專為微服務、雲原生架構和基於容器(K8s)架構而設計。當前版本具備了全路徑跟蹤、指標採集、日誌記錄等功能,並對多種編程語言及平臺(Java/C/C++/Go/Rust/Node/PHP等)提了採集代理(agent),並對service mesh(stio + Envoy )提供支持。
SkyWalking的對比其他常用監控工具 Zabbix、Prometheus、ELK、Zipkin、Jaeger等有以下特點:
優點
1,一站式全功能的解決方案,支持全路徑跟蹤、指標採集和日誌記錄。
當前版本仍需依賴外部存儲組件(H2/MySQL/PostgreSQL/Elasticsearch)
。項目自帶的BanyanDB正在積極研發中,正式發佈後可不再依賴外部存儲。
2,非侵入式為主的指標採集方式,一般不需要代碼級的調整,對幾十種主流java組件都有官方插件支持。Java程式通過javaagent+bytebuddy實現動態生成監控插件,Native應用則通過ebpf實現類似功能。
3,標準協議的支持,支持OpenTelemetry、Kafka、estapi、Zabbix多種行業規範或者事實標準的接入,方便各種應用的對接。
4,微服務和雲原生的支持,對基於容器(K8s+Java)的全鏈路監控,支持ebpf agent 通過sidecar註入。
缺點
1 agent不夠完善,OpenTelemetry採集方式目前需要用Prometheus node expoter採集,再通過Opentelemetry collector轉換後導出傳導SkyWalking oap.
2 比Zabbix等傳統監控工具缺少自動探測和資產管理功能,增加自定義監控指標需要手工修改MAL配置文件,不能通過UI配置。
3 官方文檔不完善,只是相當於參數手冊加功能列表,但缺乏各種監控場景的配置指引。
4 ebpf agent雖然是亮點但實現很初級,最新發佈版(0.2.0)只支持cpu profiling。git最新代碼已增加network profiling。功能均為go和c混合的硬編實現,用戶自行擴展不便。硬編碼的ebpf代碼也導致對linux內核的相容性差。gcc4.5+在不同的優化級別(O?)產生的符號命名不一樣,會導致ebpf啟動失敗。
MySQL的監控方案
監控項類別 | 監控項 | 監控方式 |
---|---|---|
主機或vm的OS指標 | cpu 記憶體 磁碟 | Zabbix agent/Prometheus exporter + otl collect |
MySQL 日誌 | 日誌文件 | Filebeat httpoutput + SkyWalking http json api |
ebpf | cpu/network profile, sql query, fs profile(etx4/xfs) | ebpf agent( skeywalking ravor), 除cpu profile外要自行擴展 |
jdbc client | virtual db,連接池狀態等 | Java agent |
通過以上各種維度的監控可以全面掌握MySQL的運行狀態,並能在出現性能問題時通過ebpf agent(Ravor)遠程執行profiling分析。基於ebpf的監控方式在DBaaS-MySQL容器化部署的方式下非常方便而且性能影響也最小。
限於篇幅原因,在後續的文章中會詳細講解每種監控方式的配置和相關擴展代碼。
Enjoy GreatSQL