1. 程式人生 > >監控方案調研

監控方案調研

這裡寫自定義目錄標題

容器監控

Why?How? What?

考慮因素

監控物件是什麼?監控哪些指標?從哪些維度監控?

從全域性,機房,機架,物理機,虛擬機器,容器例項,服務本身等多個維度。

基礎監控:

  1. CPU
  2. 磁碟
  3. 記憶體
  4. 網路
  5. 系統呼叫
  6. 上下文切斷
  7. 等等

日誌彙總:

  1. 錯誤告警

服務呼叫:

  1. 請求量
  2. 響應時間:平均,最小,最大,P90,P95,P99,區間
  3. 錯誤率
  4. 呼叫鏈
  5. 呼叫拓撲圖

架構

  1. 資料採集:推,拉,關鍵在於控制取樣率
  2. 資料傳輸: 傳輸方式(UDP,TCP,訊息佇列),傳輸格式(二進位制,文字)
  3. 資料處理:分析,儲存(時序資料庫,索引資料庫 )
  4. 資料展示:多維度展示(曲線圖,餅狀圖,格子圖,柱狀圖),告警

可選方案

基礎監控:

  1. 採集:Telegraf,collectd,slfow,nagios,sensu,riemann,
  2. 傳輸:TCP,UDP,HTTP
  3. 分析:Kapacitor
  4. 儲存:InfluxDB,timeScale
  5. 展示:grafana(優選),chronograf

服務追蹤

Google Dapper, Naver Pinpoint, opentracing, 大眾 CAT,Twitter Zipkin,阿里鷹眼,美團 MTrace

  1. 採集: jmx, 埋點,代理,服務介面,位元組碼注入
  2. 傳輸:http,訊息佇列(Kafaka,RabbitMQ)
  3. 分析:實時(storm,spark,flink),離線(hadoop)
  4. 儲存:HBase,Cassandra,Mysql,Elasticsearch
  5. 展示:

日誌彙總

  1. 採集:fluentd,logstash,rsyslog,syslog,Beats
  2. 傳輸:TCP,UDP,訊息佇列(kafaka,rabbitmq)
  3. 分析:ElasticSearch
  4. 儲存:
  5. 展示:Kibana

Graphite

收集( StatsD,Carbon),儲存,Graphite-Web。

  1. Whisper 簡單的時序資料庫,不適合大資料量,不支援靈活查詢語句
  2. Graphite-Web 支援正則表示式,函式。

Prometheus

  1. PromQL 查詢語言

TICK Stack

  1. InfluxDB 支援類 SQL 的查詢語句

其中只有 Prometheus 是拉模式,其餘都是推模式。

名稱 功能完整度 成熟度 活躍度 使用者數 定製成本 維護成本 行業 標準 備註

服務追蹤

優點:

  1. 找到系統瓶頸
  2. 優化鏈路呼叫:定位跨機房、區域呼叫導致的問題,迴圈呼叫
  3. 生成網路拓撲

可選方案

OpenZipkin

  1. 社群活躍度高
  2. 功能:多語言支援,指標簡單
  3. 維護性:整合難度高,定製難度低
  4. 規範:沒有遵循 opentracing

pinpoint

  1. 功能:只支援 Java,指標詳盡
  2. 維護成本:整合簡單,定製難
  3. 規範:沒有遵循 opentracing

skywalking

Jaeger

名稱 功能完整度 成熟度 活躍度 使用者數 定製成本 維護成本 行業標準 備註
PinPoint
OpenZipkin
skywalking
Jaeger

參考

https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practice/index.html

附錄

選項考慮因素

  1. 功能完整度
  2. 成熟度
  3. 活躍度
  4. 使用者數
  5. 定製成本
  6. 維度成本
  7. 是否實現相關行業標準