一、前言
鄙人就職於某安全公司,團隊的定位是研發安全產品雲匯聚平台,為用戶提供彈性伸縮的雲安全能力。前段時間產品組提出了一個監控需求,大致要求:平台對vm實行動態實時監控,輸出相應圖表界面,並提供警報(資源不足等問題而產生)等功能。
二、方案調研
經過團隊調研,目前業界流行的監控方案大致有這么幾種:基於 zabbix 的、基於 prometheus 的、基於 influxdb 等時序數據庫的。結合當前我們的業務場景來講,zabbix對我們來說有點重,而 influxdb 方案靈活但是投入的研發時間可能是比較多的,prometheus就成了我們的不二之選擇。
三、prometheus介紹
1. What is prometheus ? 下面是官網的一段原話:
Prometheus is an open-source systems monitoring and alerting toolkit originally built at SoundCloud. Since its inception in 2012, many companies and organizations have adopted Prometheus, and the project has a very active developer and user community. It is now a standalone open source project and maintained independently of any company.To emphasize this, and to clarify the project's governance structure, Prometheus joined the Cloud Native Computing Foundation in 2016 as the second hosted project,after Kubernetes.
大致就是說 prometheus是一個開源的監控,警報系統,最初呢是構建在SoundCloud之上的。。。然后很多公司組織都在用,活躍的開發者很多,社區也很多,反正很牛逼。。。這樣。
2.Components
prometheus大致有這么幾個組件組成:
1). Prometheus server: 用於抓取數據,並存儲到時序數據庫
2). client librabries:用於一些應用的定制化監控
3). push gateway:用於短生存周期的job推送
4). exporter:安裝在監控目標的機子上,為server提供數據抓取的接口,需要定制化。。當然官網也提供了很多常用的exporter ,用於mysql,redis,nginx,宿主機等等等等,有需求的可以去這里https://prometheus.io/docs/instrumenting/exporters/看看。
5). alertmanager:用於處理警報。
3.架構圖
應該不需要怎么介紹了吧,我相信大家都可以看得懂。
四、結合業務使用
有了prometheus這個強大的監控開源系統之后,我們所需要投入的工作就是查詢api的封裝和配置文件的下發。查詢api的封裝沒什么好說的,無非就是前端調用我們自己的server,我們的 server呢通過http協議去調用prometheus的api接口查詢到原始數據,然后進行組裝,最后返回給前端。 配置文件的話包含三部分吧,警報的定義,alertmanager的配置,以及prometheus的配置,這里也不好展開講,有興趣的可以去官網看看,最后給出一張我們的物理結構示意圖,供大家參考。