<h1>Bosun快速入門</h1>docker
<p>本文檔是Bosun的快速安裝文檔。根據本文檔,你能夠搭建一個完整的bosun服務,能夠把指定機器的各類信息聚合起來,而且實現相關信息的報警。</p>瀏覽器
<h2>Bosun</h2>測試
<p>這篇文檔中,bosun的安裝依賴docker。若是不但願使用docker,能夠從 bosun.org中自行下載bosun二進制文件,可是這樣就須要本身安裝OpenTSDB和HBase。</p>設計
<h2>Docker</h2>code
<h3>安裝Docker</h3>orm
<p>若是系統中沒有安裝Docker,能夠參考此處進行安裝 <a href="https://docs.docker.com/installation/">https://docs.docker.com/installation/</a>。 安裝完畢後,不要忘記將docker守護進程起開。</p>server
<h3>安裝Boson</h3>教程
<p>一旦docker安裝完畢,可使用下面的命令安裝bosun,可能須要sudo權限。</p>進程
<pre><code> docker run -d -p 8070:8070 stackexchange/bosun </code></pre>ip
<p>這條命令,告訴docker進程爲bosun啓動一個後臺進程,端口是8070。稍等15秒,bosun服務啓動完畢,這樣bosun的server端就搭建並啓動完畢,咱們可使用瀏覽器進行訪問了,<a href="http://yourip:8070">http://yourip:8070</a></p>
<h3>向Bosun中推送數據</h3>
<p>即便沒有任何的slave,buson server自身也會產生不少的數據。下面也會講如何啓動bosun slave。</p>
<h3>bosun檢查數據</h3>
<p>假設bosun slave已經啓動,server和slave已經經過8070端口創建了鏈接,那麼bosun server就會收到slave的各類信息。咱們能夠經過<a href="http://docker-server-ip:8070/items">http://docker-server-ip:8070/items</a>來查看當前已經鏈接上的slave節點。若是看到一堆的參數,那麼恭喜,bosun正在收集數據。在頁面的底部或者第二列展現的是當前正在產生數據的slave節點。點擊某個slave,而後點擊「Available Metrics」,就會看到當前slave能夠被監控的數據類型,如cpu、內存等等。</p>
<h3>新建Alert</h3>
<p>如今咱們的server已經在收集各類信息了,但監控系統的關鍵做用在於當異常狀況發生時,系統會給出報警。報警也是bosun重點支持的。</p>
<p>Bosun提供一套工做流,它使設計、測試、推送一條報警更簡單。咱們看到bosun首頁的導航條,包括"Items", "Graph", "Expression", "Rule"和"Test Config",其實這也是咱們新建一條Alert的步驟。通常狀況下,咱們須要先選擇一條item(metric),這是Alert的基礎。而後,咱們觀察這條item繪製的曲線,瞭解它的動態。以後,咱們將這個曲線轉化成表達式,再次這個表達式整理成規則。以後,咱們能夠測試這條規則,無誤後,將其推送到bosun server中。</p>
<p>下面是一個新建Alert的例子,咱們監控cpu的使用狀況,若是cpu idle太低,就報警。這裏咱們使用的metric是「os.cpu」。當某臺機器的cpu idle持續一小時太低時,咱們就發送一條報警。打開bosun首頁,下面開始配置。</p>
<h4>Items</h4>
<p>點擊「Items」標籤頁。會看到bosun當前監控的全部的項。點擊「os.cpu」,頁面跳轉到「Graph」頁面。</p>
<h3>Graph</h3>
<p>在Graph頁面,咱們能看到bosun預加載了全部slave的圖表。咱們想看單臺slave的信息,在host輸入框中,輸入咱們的機器名,點擊藍色的"Query"按鈕,buson就會將指定機器的最近一個小時的cpu使用狀況畫出來。</p>
<p>如今,咱們看到了cpu利用率的曲線。在頁面的底部,有個「Queries」區域。它表示的是生成當前曲線所用的表達式。<br/> 在Queries區域,還有「Expression」和「Rule」超連接,這兩個連接直接連接到本頁面曲線的表達式和規則頁面。在本教程中,咱們點擊「Expression」 連接。</p>
<h3>Expression</h3>
<p>在表達式頁面,咱們能夠經過咱們的query條件,來調整結果集的大小。本頁面的查詢表達式應該相似"q("sum":rate...)" 經過這條語句,bosun就會去查詢過去一個小時內的指定機器的cpu使用狀況。咱們點擊「show」按鈕,能夠看到這條語句的結果集。每條結果都是 timestamp和value的形式。</p>
<p>新建Alert,咱們不太關心結果集的大小,咱們對於結果集的平均值更感興趣。爲了獲得結果集的平均值,可使用avg()方法,以下:</p>
<pre><code> 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", "")) </code></pre>
<p>咱們點擊藍色的「Test」按鈕,咱們就會看到結果變成單個數字,這個數字就是cpu在這段時間的平均利用率。如今咱們獲得了cpu平均值,能夠根據這個值的大小,來監控cpu idle太低了。點擊「rule」按鈕。</p>
<h3>Rule</h3>
<p>在規則頁面,有兩個輸入框,Alert框和Template框。Alert框展現的就是剛纔咱們新建的報警規則。Template框展現的是觸發報警後的動做,如發送郵件等。當前Alert框,咱們的這條規則,bosun會永遠識別成「critical」,緣由是 crit和warn是boolean類型的,咱們把cpu的平均值賦給它,永遠是非0值,非0值就是true。咱們須要增長一些邏輯判斷,以下:</p>
<pre><code> 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 } </code></pre>
<p>若是機器的cpu利用率高於80%,就會觸發critical報警;若是高於60%,觸發warning報警。到如今爲止,咱們的這個Alert其實也沒多大用處,由於它只監控了一臺機器,咱們能夠經過修改host的值來監控其餘機器,或者將host的值設成*,來監控全部機器。若是不想監控某臺機器,還能夠在Alert body中填寫排除語句,但在本教程中不詳細講解了。</p>
<p>點擊「Test」按鈕,下方會列出全部的crit報警,warn報警和normal狀況。點擊「Email」按鈕,會看到報警郵件的發送狀況。默認的報警郵件模板,不太直觀,能夠改爲下面的:</p>
<pre><code> 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>` } </code></pre>
<a href="http://www.yeetrack.com/?p=1047">繼續閱讀</a>