前言
對于阿裡雲使用者來說,阿裡雲監控是一個很不錯的産品,首先它在配額内使用是免費的!免費的!免費的!重要的事情說三遍。他的功能類似于 zabbix,但是比 zabbix 提供了更多的監控項,基本上在雲上使用的資源都可以通過雲監控來實時監控。而它提供的開箱即用方式,天然內建雲資源,并提供多種告警方式,免去了監控與告警系統搭建與維護的繁瑣,并且減少了資源的消耗,比購買 ECS 自己搭建 zabbix 要少消耗很多資源。同時阿裡雲監控和阿裡雲其他服務一樣,也提供了比較完整的 OpenApi 以及各種語言的 sdk,可以基于阿裡雲的 OpenApi 将其與自己的系統內建。我們之前也是這麼做的,但是随着監控項的增加,以及經常需要在辦公場地監控投屏的專項監控頁,光憑我們的運維開發工程師使用 vue 寫速度明顯跟不上,而且頁面的美觀程度也差很多。
手寫前端 VS Grafana
手寫前端雖然可定制化程度更高,但是需要消耗大量精力進行調試,對于運維人員,哪怕是運維開發也是吃不消的(前端小哥哥和小姐姐是不會來幫你的,下圖就是我去年拿 vue 寫的僞 Grafana 展示頁面,花費了大約一周時間在調整這些前端元素)。

Grafana 則标準化程度很高,展示也更加符合大衆審美,某些定制化需求可以通過自定義 DataSource 或者 AJAX 插件的 iframe 模式完成。開發後端 DataSource 肯定就沒有前端調整 css 那麼痛苦和耗時了,整體配置開發一個這樣的頁面可能隻消耗一人天就能完成。而在新産品上線時,建構一個專項監控展示頁面速度就更快了,幾分鐘内就能完成。
關于阿裡雲監控
雲監控(CloudMonitor)是一項針對阿裡雲資源和網際網路應用進行監控的服務。
雲監控為雲上使用者提供開箱即用的企業級開放型一站式監控解決方案。涵蓋 IT 設施基礎監控,外網網絡品質撥測監控,基于事件、自定義名額、日志的業務監控。為您全方位提供更高效、更全面、更省錢的監控服務。通過提供跨産品、跨地域的應用分組管理模型和報警模闆,幫助您快速建構支援幾十種雲産品、管理數萬執行個體的高效監控報警管理體系。通過提供 Dashboard,幫助您快速建構自定義業務監控大盤。使用雲監控,不但可以幫助您提升您的系統服務可用時長,還可以降低企業 IT 運維監控成本。
雲監控服務可用于收集擷取阿裡雲資源的監控名額或使用者自定義的監控名額,探測服務可用性,以及針對名額設定警報。使您全面了解阿裡雲上的資源使用情況、業務的運作狀況和健康度,并及時收到異常報警做出反應,保證應用程式順暢運作。
關于 Grafana
Grafana 是一個跨平台的開源的度量分析和可視化工具,可以通過将采集的資料查詢然後可視化的展示,并及時通知。由于雲監控的 Grafana 還沒有支援告警,是以我們這裡隻用了 Grafana 的可視化功能,而告警本身就是雲監控自帶的,是以也不需要依賴 Grafana 來實作。而我們的 Prometheus 也使用了 Grafana 進行資料可視化,是以有現成的 Grafana-Server 使用。
阿裡雲監控對接 Grafana
首先 Grafana 服務的部署方式這裡就不做介紹了,請使用較新版本的 Grafana,最好是 5.5.0+。後文中也有我開源的基于阿裡雲雲監控的 Grafana 的 helm chart,可以使用 helm 安裝,并會直接導入雲監控的名額,這個會在後文中介紹。
安裝阿裡雲監控插件
進入插件目錄進行安裝
cd /var/lib/grafana/plugins/
git clone https://github.com/aliyun/aliyun-cms-grafana.git
service grafana-server restart
如果是使用 docker 或者部署在 k8s 叢集,這裡也可以使用環境變量在 Grafana 部署的時候進行安裝
...
spec:
containers:
- env:
- name: GF_INSTALL_PLUGINS # 多個插件請使用,隔開
value: grafana-simple-json-datasource,https://github.com/aliyun/aliyun-cms-grafana/archive/master.zip;aliyun-cms-grafana
...
您也可以下載下傳 aliyun-cms-grafana.zip 插件解壓後,上傳伺服器的 Grafana 的 plugins 目錄下,重新開機 grafana-server 即可。
配置雲監控 DataSource
- Grafana 啟動後,進入
頁面,選擇Configuration
Tab 頁,單擊右上方的DataSource
,添加資料源。Add data source
- 選中
,單擊CMS Grafana Service
。select
使用 Grafana 展示阿裡雲監控名額 - 填寫配置項,URL 根據雲監控所在地域填寫,并且填寫阿裡雲賬号的 accessKeyId 和 accessSecret,完成後單擊
Save&Test
使用 Grafana 展示阿裡雲監控名額
建立 Dashboard
- 單擊
->Create
Dashboard
Add Query
- 配置圖示,資料源選擇之前添加的
,然後文檔中的配置項填入名額即可(這裡要注意的是,雲監控 API 給傳回的隻有執行個體 ID,并沒有自定義的執行個體名稱,這裡需要手動将其填入CMS Grafana Service
中;而且隻支援輸入單個 Dimension,若輸入多個,預設選第一個,由于這些問題才有了後續我開發的Y - column describe
的動機)。cms-grafana-builder
使用 Grafana 展示阿裡雲監控名額 - 配置參考 雲産品監控項 ,
使用 Grafana 展示阿裡雲監控名額
使用 helm chart 的方式部署 Grafana
項目位址:
https://github.com/sunny0826/cms-grafana-buildercms-grafana-builder
由于上文中的問題,我們需要手動選擇每個執行個體 ID 到 Dimension 中,并且還要講該執行個體的名稱鍵入
Y - column describe
中,十分的繁瑣,根本不可能大批量的輸入。
這就是我開發這個 Grafana 名額參數生成器的原因,起初隻是一個 python 腳本,用來将我們要監控的名額組裝成一個 Grafana 可以使用 json 檔案,之後結合 Grafana 的容器化部署方法,将其做成了一個 helm chart。可以在啟動的時候自動将需要的參數生成,并且每日會對所有名額進行更新,這樣就不用每次新購或者釋放掉資源後還需要再跑一遍腳本。
部署
隻需要将項目拉取下來運作
helm install
指令
helm install my-release kk-grafana-cms \
--namespace {your_namespace} \
--set access_key_id={your_access_key_id} \
--set access_secret={your_access_secret} \
--set region_id={your_aliyun_region_id} \
--set password={admin_password}
更多詳情見
github README,歡迎提 issue 交流。
名額選擇
在部署成功後,可修改 ConfigMap:
grafana-cms-metric
,然後修改對應的監控名額項。
效果
ECS:
RDS:
EIP:
Redis:
後記
為了滿足公司需求,後續還開發 DataSource 定制部分,用于公司監控大屏的展示,這部分是另一個項目,不在這個項目裡,就不細說了,之後有機會總結後再進行分享。