監控方案調研
阿新 • • 發佈:2018-12-23
這裡寫自定義目錄標題
容器監控
Why?How? What?
考慮因素
監控物件是什麼?監控哪些指標?從哪些維度監控?
從全域性,機房,機架,物理機,虛擬機器,容器例項,服務本身等多個維度。
基礎監控:
- CPU
- 磁碟
- 記憶體
- 網路
- 系統呼叫
- 上下文切斷
- 等等
日誌彙總:
- 錯誤告警
服務呼叫:
- 請求量
- 響應時間:平均,最小,最大,P90,P95,P99,區間
- 錯誤率
- 呼叫鏈
- 呼叫拓撲圖
架構
- 資料採集:推,拉,關鍵在於控制取樣率
- 資料傳輸: 傳輸方式(UDP,TCP,訊息佇列),傳輸格式(二進位制,文字)
- 資料處理:分析,儲存(時序資料庫,索引資料庫 )
- 資料展示:多維度展示(曲線圖,餅狀圖,格子圖,柱狀圖),告警
可選方案
基礎監控:
- 採集:Telegraf,collectd,slfow,nagios,sensu,riemann,
- 傳輸:TCP,UDP,HTTP
- 分析:Kapacitor
- 儲存:InfluxDB,timeScale
- 展示:grafana(優選),chronograf
服務追蹤
Google Dapper, Naver Pinpoint, opentracing, 大眾 CAT,Twitter Zipkin,阿里鷹眼,美團 MTrace
- 採集: jmx, 埋點,代理,服務介面,位元組碼注入
- 傳輸:http,訊息佇列(Kafaka,RabbitMQ)
- 分析:實時(storm,spark,flink),離線(hadoop)
- 儲存:HBase,Cassandra,Mysql,Elasticsearch
- 展示:
日誌彙總
- 採集:fluentd,logstash,rsyslog,syslog,Beats
- 傳輸:TCP,UDP,訊息佇列(kafaka,rabbitmq)
- 分析:ElasticSearch
- 儲存:
- 展示:Kibana
Graphite
收集( StatsD,Carbon),儲存,Graphite-Web。
- Whisper 簡單的時序資料庫,不適合大資料量,不支援靈活查詢語句
- Graphite-Web 支援正則表示式,函式。
Prometheus
- PromQL 查詢語言
TICK Stack
- InfluxDB 支援類 SQL 的查詢語句
其中只有 Prometheus 是拉模式,其餘都是推模式。
名稱 | 功能完整度 | 成熟度 | 活躍度 | 使用者數 | 定製成本 | 維護成本 | 行業 | 標準 | 備註 |
---|---|---|---|---|---|---|---|---|---|
服務追蹤
優點:
- 找到系統瓶頸
- 優化鏈路呼叫:定位跨機房、區域呼叫導致的問題,迴圈呼叫
- 生成網路拓撲
可選方案
OpenZipkin
- 社群活躍度高
- 功能:多語言支援,指標簡單
- 維護性:整合難度高,定製難度低
- 規範:沒有遵循 opentracing
pinpoint
- 功能:只支援 Java,指標詳盡
- 維護成本:整合簡單,定製難
- 規範:沒有遵循 opentracing
skywalking
Jaeger
名稱 | 功能完整度 | 成熟度 | 活躍度 | 使用者數 | 定製成本 | 維護成本 | 行業標準 | 備註 |
---|---|---|---|---|---|---|---|---|
PinPoint | ||||||||
OpenZipkin | ||||||||
skywalking | ||||||||
Jaeger |
參考
附錄
選項考慮因素
- 功能完整度
- 成熟度
- 活躍度
- 使用者數
- 定製成本
- 維度成本
- 是否實現相關行業標準