標籤:
Bosun快速入門
本文檔是Bosun的快速安裝文檔。根據本文檔,你可以搭建一個完整的bosun服務,可以把指定機器的各種資訊彙總起來,並且實現相關資訊的警示。
Bosun
這篇文檔中,bosun的安裝依賴docker。如果不希望使用docker,可以從 bosun.org中自行下載bosun二進位檔案,但是這樣就需要自己安裝OpenTSDB和HBase。
Docker 安裝Docker
如果系統中沒有安裝Docker,可以參考此處進行安裝 https://docs.docker.com/installation/。 安裝完畢後,不要忘記將docker守護進程起開。
安裝Boson
一旦docker安裝完畢,可以使用下面的命令安裝bosun,可能需要sudo許可權。
docker run -d -p 8070:8070 stackexchange/bosun
這條命令,告訴docker進程為bosun啟動一個後台進程,連接埠是8070。稍等15秒,bosun服務啟動完畢,這樣bosun的server端就搭建並啟動完畢,我們可以使用瀏覽器進行訪問了,http://yourip:8070
向Bosun中推送資料
即使沒有任何的slave,buson server自身也會產生很多的資料。下面也會講如何啟動bosun slave。
bosun檢查資料
假設bosun slave已經啟動,server和slave已經通過8070連接埠建立了串連,那麼bosun server就會收到slave的各種資訊。我們可以通過http://docker-server-ip:8070/items來查看當前已經串連上的slave節點。如果看到一堆的參數,那麼恭喜,bosun正在收集資料。在頁面的底部或者第二列展示的是當前正在產生資料的slave節點。點擊某個slave,然後點擊“Available Metrics”,就會看到當前slave可以被監控的資料類型,如cpu、記憶體等等。
建立Alert
現在我們的server已經在收集各種資訊了,但監控系統的關鍵作用在於當異常情況發生時,系統會給出警示。警示也是bosun重點支援的。
Bosun提供一套工作流程,它使設計、測試、推送一條警示更簡單。我們看到bosun首頁的導航條,包括"Items", "Graph", "Expression", "Rule"和"Test Config",其實這也是我們建立一條Alert的步驟。一般情況下,我們需要先選擇一條item(metric),這是Alert的基礎。然後,我們觀察這條item繪製的曲線,瞭解它的動態。之後,我們將這個曲線轉化成運算式,再次這個運算式整理成規則。之後,我們可以測試這條規則,無誤後,將其推送到bosun server中。
下面是一個建立Alert的例子,我們監控cpu的使用方式,如果cpu idle過低,就警示。這裡我們使用的metric是“os.cpu”。當某台機器的cpu idle持續一小時過低時,我們就發送一條警示。開啟bosun首頁,下面開始配置。
Items
點擊“Items”標籤頁。會看到bosun當前監控的所有的項。點擊“os.cpu”,頁面跳轉到“Graph”頁面。
Graph
在Graph頁面,我們能看到bosun預先載入了所有slave的圖表。我們想看單台slave的資訊,在host輸入框中,輸入我們的機器名,點擊藍色的"Query"按鈕,buson就會將指定機器的最近一個小時的cpu使用方式畫出來。
現在,我們看到了cpu利用率的曲線。在頁面的底部,有個“Queries”地區。它表示的是產生當前曲線所用的運算式。
在Queries地區,還有“Expression”和“Rule”超連結,這兩個連結直接連結到本頁面曲線的運算式和規則頁面。在本教程中,我們點擊“Expression” 連結。
Expression
在運算式頁面,我們可以通過我們的query條件,來調整結果集的大小。本頁面的查詢運算式應該類似"q("sum":rate...)" 通過這條語句,bosun就會去查詢過去一個小時內的指定機器的cpu使用方式。我們點擊“show”按鈕,可以看到這條語句的結果集。每條結果都是 timestamp和value的形式。
建立Alert,我們不太關心結果集的大小,我們對於結果集的平均值更感興趣。為了得到結果集的平均值,可以使用avg()方法,如下:
q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", "") avg(q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", ""))
我們點擊藍色的“Test”按鈕,我們就會看到結果變成單個數字,這個數字就是cpu在這段時間的平均利用率。現在我們得到了cpu平均值,可以根據這個值的大小,來監控cpu idle過低了。點擊“rule”按鈕。
Rule
在規則頁面,有兩個輸入框,Alert框和Template框。Alert框展示的就是剛才我們建立的警示規則。Template框展示的是觸發警示後的動作,如發送郵件等。當前Alert框,我們的這條規則,bosun會永遠識別成“critical”,原因是 crit和warn是boolean類型的,我們把cpu的平均值賦給它,永遠是非0值,非0值就是true。我們需要增加一些邏輯判斷,如下:
alert cpu.is.too.high { template = test $metric = q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", "") $avgcpu = avg($metric) crit = $avgcpu > 80 warn = $avgcpu > 60 }
如果機器的cpu利用率高於80%,就會觸發critical警示;如果高於60%,觸發warning警示。到現在為止,我們的這個Alert其實也沒多大用處,因為它只監控了一台機器,我們可以通過修改host的值來監控其他機器,或者將host的值設成*,來監控所有機器。如果不想監控某台機器,還可以在Alert body中填寫排除語句,但在本教程中不詳細講解了。
點擊“Test”按鈕,下方會列出所有的crit警示,warn警示和normal情況。點擊“Email”按鈕,會看到警示郵件的發送情況。預設的警示郵件模板,不太直觀,可以改成下面的:
template test { subject = {{.Last.Status}}: {{.Alert.Name}} on {{.Group.host}} body = `<p>Alert: {{.Alert.Name}} triggered on {{.Group.host}} <hr> <p><strong>Computation</strong> <table> {{range .Computations}} <tr><td><a href="{{$.Expr .Text}}">{{.Text}}</a></td><td>{{.Value}}</td></tr> {{end}} </table> <hr> {{ .Graph .Alert.Vars.metric }} <hr> <p><strong>Relevant Tags</strong> <table> {{range $k, $v := .Group}} <tr><td>{{$k}}</td><td>{{$v}}</td></tr> {{end}} </table>`}
繼續閱讀
Bosun快速入門