對于運維的日常工作來說,伺服器監控是必須且最基礎的一項内容。在企業基礎設施運維過程中,管理者必須能夠掌握所有伺服器的運作狀況,以便及時發現問題,盡可能減少故障的發生。通常我們會借助一些監控的軟體來擷取每個伺服器的基礎名額并進行集中的檢視、分析、監控。

市面上開源、收費的伺服器監控系統非常多,例如老牌的zabbix、nagios、NewRelic、CollectD等,近期開始流行的Telegraf、Prometheus。各類系統都有其出彩的點,例如Zabbix強大的生态、NewRelic的服務、Prometheus的雲原生友好等。伺服器監控相對中間件、業務監控更加基礎,關注點主要集中在監控的易用性、穩定性、實時性、報警豐富度、報表使用便捷度等。
本期為大家介紹如何使用阿裡雲SLS來快速建構一套完整的伺服器/主機基礎名額實時監控方案。
SLS時序存儲簡介
SLS的日志存儲引擎在2016年對外釋出,目前承接阿裡内部以及衆多企業的日志資料存儲,每天有數十PB的日志類資料寫入。其中有很大一部分屬于時序類資料或者用來計算時序名額,為了讓使用者能夠一站式完成整個DevOps生命周期的資料接入、清洗、加工、提取、存儲、可視化、監控、問題分析等過程,我們專門推出了時序存儲的功能,與日志存儲一道為大家解決各類機器資料的存儲問題。
SLS時序存儲從設計之初就是為了解決阿裡内部與衆多頭部企業客戶的時序存儲需求,并借助于阿裡内部多年的技術積累,使之可以适應絕大部分企業級時序監控/分析訴求。SLS時序存儲的特點主要有:
- 豐富上下遊:資料接入上SLS支援衆多采集方式,包括各類開源Agent以及阿裡雲内部的監控資料通道;同時存儲的時序資料支援對接各類的流計算、離線計算引擎,資料完全開放;
- 高性能:SLS存儲計算分離架構充分發揮叢集能力,尤其在大量資料下端對端的速度提升顯著;
- 免運維:SLS的時序存儲完全是服務化,無需使用者自己去運維執行個體,而且所有資料都是3副本高可靠存儲,不用擔心資料的可靠性問題;
- 開源友好:SLS的時序存儲原生支援Prometheus的寫入和查詢,并支援SQL92的分析方法,可以原生對接Grafana等可視化方案;
- 智能:SLS提供了各種 AIOps算法 ,例如多周期估算、預測、異常檢測、時序分類等各類時序算法,可以基于這些算法快速建構适應于公司業務的智能報警、診斷平台。
伺服器監控方案概述
SLS的主機監控方案非常簡單,隻需要安裝一個Logtail就可以采集各個主機的基礎名額,服務端都是雲化,無需運維,預設SLS提供了可視化的儀表盤,也可以通過Grafana來進行更加專業的可視化。
目前Logtail采集了主機常用的基礎名額,包括CPU、記憶體、網絡、磁盤等,其中對較為關鍵的名額都做了可視化,便于直接檢視。
資料接入
資料接入的流程非常簡單,隻需要在SLS控制台上操作即可完成(對于非阿裡雲的伺服器,需要在伺服器上額外執行2條指令),具體接入的方法可參見:
采集主機監控資料。
接入過程中最核心的就是給每台主機的Logtail增加一個采集配置,Logtail的采集配置可以完全雲化管理,無需登入每台伺服器手動配置。
{
"inputs": [
{
"detail": {
"IntervalMs": 30000
},
"type": "metric_system_v2"
}
]
}
可視化
在運維可視化領域Grafana是目前大家接受度最高的可視化方案,SLS為主機監控專門增加了2個Dashboard模闆,包括一張叢集級别的監控大盤和單機的詳細名額大盤。這些大盤可以一鍵導入到Grafana中。
Grafana的配置流程如下:
- 在Grafana中把SLS的時序庫作為Prometheus的資料源,設定方式可參考: Grafana可視化配置
- 導入Grafana模闆市場中的SLS模闆: 主機監控叢集名額 、 主機監控單機名額
監控資料分析與告警配置
作為一個合格的運維人員,僅僅配置完炫酷的監控儀表盤還不夠,還需要對叢集設定好足夠的告警項并能在需要排查問題的時候利用監控資料分析的文法快速定位問題。這些本質上都是對叢集的名額進行一些計算和統計。
SLS時序資料支援SQL、PromQL以及SQL+PromQL等多種查詢方式,PromQL查詢語言相對更加簡潔,SQL能夠實作的語義更加強大。而主機的監控資料相對比較簡單,建議使用PromQL或SQL+PromQL的方式。
下面介紹幾個在告警、分析中經常會用到的幾個統計方式:
- 計算所有機器的某個名額平均值,例如平均CPU
- 查找某個名額最高的N台機器,比如查找記憶體占用最高的5台機器
- 查找某個名額超過X的機器,比如找到1分鐘網絡流量超過10M的機器
- 計算某台機器的某個名額相對某個時間點的變化,比如計算某台機器磁盤使用率相比1天前的變化
這些用PromQL實作起來非常容易,可以在Grafana的Explore頁面直接調試:
- 平均CPU:
avg(cpu_util)
- 查找記憶體占用最高的5台機器:
topk(5, mem_util)
- 找出1分鐘網絡流量超過10M的機器:
(sum_over_time(net_in[1m]) + sum_over_time(net_out[1m])) > (10*1024*1024)
- 計算某台機器磁盤使用率相比1天前的變化:
disk_util{hostname="iZ2ze06ibdlxtgebgtu4xdZ"} - disk_util{hostname="iZ2ze06ibdlxtgebgtu4xdZ"} offset 1d
而告警也可以直接在Grafana上配置,可以在叢集監控的Dashboard上直接配置告警,例如下面是配置CPU叢集平均CPU超限的告警,告警規則是:每分鐘計算最近5分鐘内的叢集CPU平均使用率,如果連續5分鐘超過80%則觸發告警。
總結
服務的基礎名額監控是我們監控運維領域最基礎的工作之一,構造公司IT的全方位監控還有很多工作要做,例如中間件監控、雲産品監控、應用監控、業務監控等,而這些利用SLS的日志和時序存儲功能都可以很容易的實作,其他相關的實作我們會在後續文章中給大家呈現。
大家在使用SLS中遇到的任何問題,請加釘釘群,我們有專門的日志女仆24小時線上答疑,還有火鍋哥和燒烤哥專業支援!~ SLS微信公衆号定期會釋出各類日志、監控領域的技術分享文章并定期舉行抽獎,歡迎小夥伴們關注~
另外歡迎對大資料、分布式、機器學習等有興趣的同學加入,轉崗、内推,來者不拒,請用履歷狠狠的砸我,聯系郵箱 [email protected] !~