成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

小米運維—互聯網企業級監控系統實踐

網絡 網絡管理 網絡運維
監控系統是整個運維環節,乃至整個產品生命周期中最重要的一環,事前及時預警發現故障,事后提供翔實的數據用于追查定位問題。監控系統作為一個成熟的運維產品,業界有很多開源的實現可供選擇。

Introduction

監控系統是整個運維環節,乃至整個產品生命周期中最重要的一環,事前及時預警發現故障,事后提供翔實的數據用于追查定位問題。監控系統作為一個成熟的運維產品,業界有很多開源的實現可供選擇。當公司剛剛起步,業務規模較小,運維團隊也剛剛建立的初期,選擇一款開源的監控系統,是一個省時省力,效率最高的方案。之后,隨著業務規模的持續快速增長,監控的對象也越來越多,越來越復雜,監控系統的使用對象也從最初少數的幾個SRE,擴大為更多的DEVS,SRE。這時候,監控系統的容量和用戶的“使用效率”成了最為突出的問題。

監控系統業界有很多杰出的開源監控系統。我們在早期,一直在用zabbix,不過隨著業務的快速發展,以及互聯網公司特有的一些需求,現有的開源的監控系統在性能、擴展性、和用戶的使用效率方面,已經無法支撐了。

因此,我們在過去的一年里,從互聯網公司的一些需求出發,從各位SRE、SA、DEVS的使用經驗和反饋出發,結合業界的一些大的互聯網公司做監控,用監控的一些思考出發,設計開發了小米的監控系統:open-falcon。

open-falcon的目標是做最開放、最好用的互聯網企業級監控產品。

Highlights and features

強大靈活的數據采集:自動發現,支持falcon-agent、snmp、支持用戶主動push、用戶自定義插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags)

水平擴展能力:支持每個周期上億次的數據采集、告警判定、歷史數據存儲和查詢

高效率的告警策略管理:高效的portal、支持策略模板、模板繼承和覆蓋、多種告警方式、支持callback調用

人性化的告警設置:最大告警次數、告警級別、告警恢復通知、告警暫停、不同時段不同閾值、支持維護周期

高效率的graph組件:單機支撐200萬metric的上報、歸檔、存儲(周期為1分鐘)

高效的歷史數據query組件:采用rrdtool的數據歸檔策略,秒級返回上百個metric一年的歷史數據

dashboard:多維度的數據展示,用戶自定義Screen

高可用:整個系統無核心單點,易運維,易部署,可水平擴展

開發語言: 整個系統的后端,全部golang編寫,portal和dashboard使用python編寫。

Architecture

open-falcon architecture

open-falcon architecture

備注:虛線所在的aggregator組件還在設計開發階段。

每臺服務器,都有安裝falcon-agent,falcon-agent是一個golang開發的daemon程序,用于自發現的采集單機的各種數據和指標,這些指標包括不限于以下幾個方面,共計400多項指標。

● CPU相關

● 磁盤相關

● IO

● Load

● 內存相關

● 網絡相關

● 端口存活、進程存活

● ntp offset(插件)

● 某個進程資源消耗(插件)

● netstat、ss 等相關統計項采集

● 機器內核配置參數

只要安裝了falcon-agent的機器,就會自動開始采集各項指標,主動上報,不需要用戶在server做任何配置(這和zabbix有很大的不同),這樣做的好處,就是用戶維護方便,覆蓋率高。當然這樣做也會server端造成較大的壓力,不過open-falcon的服務端組件單機性能足夠高,同時都可以水平擴展,所以自動多采集足夠多的數據,反而是一件好事情,對于SRE和DEV來講,事后追查問題,不再是難題。

另外,falcon-agent提供了一個proxy-gateway,用戶可以方便的通過http接口,push數據到本機的gateway,gateway會幫忙高效率的轉發到server端。

falcon-agent,可以在我們的github上找到 : https://github.com/open-falcon/agent

Data model

Data Model是否強大,是否靈活,對于監控系統用戶的“使用效率”至關重要。比如以zabbix為例,上報的數據為hostname(或者ip)、metric,那么用戶添加告警策略、管理告警策略的時候,就只能以這兩個維度進行。舉一個最常見的場景:

hostA的磁盤空間,小于5%,就告警。一般的服務器上,都會有兩個主要的分區,根分區和home分區,在zabbix里面,就得加兩條規則;如果是hadoop的機器,一般還會有十幾塊的數據盤,還得再加10多條規則,這樣就會痛苦,不幸福,不利于自動化(當然zabbix可以通過配置一些自動發現策略來搞定這個,不過比較麻煩)。

open-falcon,采用和opentsdb相同的數據格式:metric、endpoint加多組key value tags,舉兩個例子:

  1.     metric: load.1min, 
  2.     endpoint: open-falcon-host, 
  3.     tags: srv=falcon,idc=aws-sgp,group=az1
  4.     value: 1.5, 
  5.     timestamp: `date +%s`, 
  6.     counterType: GAUGE, 
  7.     step: 60 
  8.     metric: net.port.listen, 
  9.     endpoint: open-falcon-host, 
  10.     tags: port=3306
  11.     value: 1, 
  12.     timestamp: `date +%s`, 
  13.     counterType: GAUGE, 
  14.     step: 60 

通過這樣的數據結構,我們就可以從多個維度來配置告警,配置dashboard等等。

備注:endpoint是一個特殊的tag。#p#

Data collection

transfer,接收客戶端發送的數據,做一些數據規整,檢查之后,轉發到多個后端系統去處理。在轉發到每個后端業務系統的時候,transfer會根據一致性hash算法,進行數據分片,來達到后端業務系統的水平擴展。

transfer 提供jsonRpc接口和telnet接口兩種方式,transfer自身是無狀態的,掛掉一臺或者多臺不會有任何影響,同時transfer性能很高,每分鐘可以轉發超過500萬條數據。

transfer目前支持的業務后端,有三種,judge、graph、opentsdb。judge是我們開發的高性能告警判定組件,graph是我們開發的高性能數據存儲、歸檔、查詢組件,opentsdb是開源的時間序列數據存儲服務。可以通過transfer的配置文件來開啟。

transfer的數據來源,一般有三種:

● falcon-agent采集的基礎監控數據

● falcon-agent執行用戶自定義的插件返回的數據

● client library:線上的業務系統,都嵌入使用了統一的perfcounter.jar,對于業務系統中每個RPC接口的qps、latency都會主動采集并上報

說明:上面這三種數據,都會先發送給本機的proxy-gateway,再由gateway轉發給transfer。

Alerting

報警判定,是由judge組件來完成。用戶在web portal來配置相關的報警策略,存儲在MySQL中。heartbeat server 會定期加載MySQL中的內容。judge也會定期和heartbeat server保持溝通,來獲取相關的報警策略。

heartbeat sever不僅僅是單純的加載MySQL中的內容,根據模板繼承、模板項覆蓋、報警動作覆蓋、模板和hostGroup綁定,計算出最終關聯到每個endpoint的告警策略,提供給judge組件來使用。

transfer轉發到judge的每條數據,都會觸發相關策略的判定,來決定是否滿足報警條件,如果滿足條件,則會發送給alarm,alarm再以郵件、短信、米聊等形式通知相關用戶,也可以執行用戶預先配置好的callback地址。

用戶可以很靈活的來配置告警判定策略,比如連續n次都滿足條件、連續n次的最大值滿足條件、不同的時間段不同的閾值、如果處于維護周期內則忽略 等等。

Query

到這里,數據已經成功的存儲在了graph里。如何快速的讀出來呢,讀過去1小時的,過去1天的,過去一月的,過去一年的,都需要在1秒之內返回。

這些都是靠graph和query組件來實現的,transfer會將數據往graph組件轉發一份,graph收到數據以后,會以rrdtool的數據歸檔方式來存儲,同時提供查詢RPC接口。

query面向終端用戶,收到查詢請求后,會去多個graph里面,查詢不同metric的數據,匯總后統一返回給用戶。

Dashboard

dashboard首頁,用戶可以以多個維度來搜索endpoint列表,即可以根據上報的tags來搜索關聯的endpoint。

open-falcon dashboard homepage

open-falcon dashboard homepage

用戶可以自定義多個metric,添加到某個screen中,這樣每天早上只需要打開screen看一眼,服務的運行情況便盡在掌握了。

open-falcon dashboard screen

open-falcon dashboard screen

當然,也可以查看清晰大圖,橫坐標上zoom in/out,快速篩選反選??傊脩舻?ldquo;使用效率”是第一要務。

open-falcon portal HostGroup

open-falcon big graph#p#

Web portal

一個高效的portal,對于提升用戶的“使用效率”,加成很大,平時大家都這么忙,能給各位SRE、Devs減輕一些負擔,那是再好不過了。

這是host group的管理頁面,可以和服務樹結合,機器進出服務樹節點,相關的模板會自動關聯或者解除。這樣服務上下線,都不需要手動來變更監控,大大提高效率,降低遺漏和誤報警。

open-falcon template

open-falcon portal HostGroup

一個最簡單的模板的例子,模板支持繼承和策略覆蓋,模板和host group綁定后,host group下的機器會自動應用該模板的所有策略。

open-falcon template

open-falcon template

當然,也可以寫一個簡單的表達式,就能達到監控的目的,這對于那些endpoint不是機器名的場景非常方便。

open-falcon expression

open-falcon expression

添加一個表達式也是很簡單的。

open-falcon add an expression

open-falcon add an expression

Storage

對于監控系統來講,歷史數據的存儲和高效率查詢,永遠是個很難的問題!

數據量大:目前我們的監控系統,每個周期,大概有2000萬次數據上報(上報周期為1分鐘和5分鐘兩種,各占50%),一天24小時里,從來不會有業務低峰,不管是白天和黑夜,每個周期,總會有那么多的數據要更新。

寫操作多:一般的業務系統,通常都是讀多寫少,可以方便的使用各種緩存技術,再者各類數據庫,對于查詢操作的處理效率遠遠高于寫操作。而監控系統恰恰相反,寫操作遠遠高于讀。每個周期幾千萬次的更新操作,對于常用數據庫(MySQL、postgresql、mongodb)都是無法完成的。

高效率的查:我們說監控系統讀操作少,是說相對寫入來講。監控系統本身對于讀的要求很高,用戶經常會有查詢上百個meitric,在過去一天、一周、一月、一年的數據。如何在1秒內返回給用戶并繪圖,這是一個不小的挑戰。

open-falcon在這塊,投入了較大的精力。我們把數據按照用途分成兩類,一類是用來繪圖的,一類是用戶做數據挖掘的。

對于繪圖的數據來講,查詢要快是關鍵,同時不能丟失信息量。對于用戶要查詢100個metric,在過去一年里的數據時,數據量本身就在那里了,很難1秒之類能返回,另外就算返回了,前端也無法渲染這么多的數據,還得采樣,造成很多無謂的消耗和浪費。我們參考rrdtool的理念,在數據每次存入的時候,會自動進行采樣、歸檔。我們的歸檔策略如下,歷史數據保存5年。同時為了不丟失信息量,數據歸檔的時候,會按照平均值采樣、最大值采樣、最小值采樣存三份。

  1. // 1分鐘一個點存 12小時 
  2. c.RRA("AVERAGE", 0.5, 1, 720) 
  3.  
  4. // 5m一個點存2d 
  5. c.RRA("AVERAGE", 0.5, 5, 576) 
  6. c.RRA("MAX", 0.5, 5, 576) 
  7. c.RRA("MIN", 0.5, 5, 576) 
  8.  
  9. // 20m一個點存7d 
  10. c.RRA("AVERAGE", 0.5, 20, 504) 
  11. c.RRA("MAX", 0.5, 20, 504) 
  12. c.RRA("MIN", 0.5, 20, 504) 
  13.  
  14. // 3小時一個點存3個月 
  15. c.RRA("AVERAGE", 0.5, 180, 766) 
  16. c.RRA("MAX", 0.5, 180, 766) 
  17. c.RRA("MIN", 0.5, 180, 766) 
  18.  
  19. // 1天一個點存5year 
  20. c.RRA("AVERAGE", 0.5, 720, 730) 
  21. c.RRA("MAX", 0.5, 720, 730) 
  22. c.RRA("MIN", 0.5, 720, 730) 

對于原始數據,transfer會打一份到hbase,也可以直接使用opentsdb,transfer支持往opentsdb寫入數據。

Committers

laiwei: https://github.com/laiwei 來煒沒睡醒@微博 / hellolaiwei@微信

秦曉輝: https://github.com/ulricqin Ulricqin@微博 cnperl@微信

Contributors

近期我們會把絕大數的組件整理到 http://github.com/open-falcon , 期待大家一起貢獻,推動,做最開放、最好用的企業級監控系統。

TODO

metric的聚合

環比、同比報警判定

流量的突升突降判定

 

責任編輯:林琳 來源: 簡書
相關推薦

2019-11-13 10:45:43

互聯網安全運維

2013-12-25 17:19:34

企業級安全

2015-08-10 10:56:59

運維互聯網

2017-05-04 11:15:37

阿里

2016-05-12 17:23:43

用友iUAP

2014-05-16 15:24:36

IT運維管理移動互聯網

2014-09-01 09:53:25

移動互聯網移動

2016-11-22 13:43:32

聚焦烏鎮互聯網大會用友

2015-07-16 09:26:51

互聯網+IT

2015-09-22 13:40:50

互聯網業務運維

2017-05-05 10:32:19

阿里

2017-04-26 09:40:00

2017-05-19 10:01:53

互聯網

2012-11-12 10:33:33

IBMdw

2012-03-08 09:32:10

企業級IT系統運維移動管理

2015-06-10 13:46:28

IT運維互聯網+”

2015-03-25 18:31:20

互聯網+

2012-04-01 16:10:03

企業郵箱

2016-05-05 14:20:50

運維互聯網運維IOE

2013-04-23 13:18:13

AppCan移動中間件互聯網模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人精品国产 | 成人免费观看男女羞羞视频 | 亚洲国产成人av好男人在线观看 | 欧美激情亚洲激情 | 午夜影院在线观看 | 99亚洲 | 成人免费一区二区三区牛牛 | 中文在线播放 | 成人精品久久 | 91精品国产91久久久久久吃药 | 亚洲高清一区二区三区 | 天天草av | a级片网站 | 日韩在线欧美 | 色狠狠桃花综合 | 日韩av一区二区在线观看 | 青青草中文字幕 | 国产色婷婷精品综合在线播放 | 午夜激情一区 | 精品日韩一区二区 | 久草精品在线 | 在线成人av | 午夜私人影院 | 丝袜 亚洲 另类 欧美 综合 | 天堂在线91 | 国产精品无码久久久久 | 日本福利一区 | 台湾a级理论片在线观看 | 国产精品久久久久久久久久久久久 | 亚洲高清视频在线观看 | av黄色国产 | 美女视频黄色的 | 91精品久久久久久久99 | 国产一级在线 | 国产高清精品一区二区三区 | 国产91在线 | 欧美 | 亚洲国产精品日韩av不卡在线 | 精品中文字幕一区二区三区 | 日本久久精品视频 | 草久网| 久久久国产一区 |