關(guān)于Prometheus
Prometheus是一套開源的監(jiān)控系統(tǒng),它將所有信息都存儲為時間序列數(shù)據(jù);因此實現(xiàn)一種Profiling監(jiān)控方式,實時分析系統(tǒng)運行的狀態(tài)、執(zhí)行時間、調(diào)用次數(shù)等,以找到系統(tǒng)的熱點,為性能優(yōu)化提供依據(jù)。
監(jiān)控方式
程序代碼收集運行數(shù)據(jù)寫入到redis,通過API接口開放給Prometheus,Prometheus定時去抓取接口上的數(shù)據(jù),形成時間系數(shù)據(jù)存入到本地。同時通過promql與開放接口可視化數(shù)據(jù)到前端。
一、采集運行數(shù)據(jù)寫入到redis
在采集數(shù)據(jù)之前,先要明白Prometheus所支持的幾種數(shù)據(jù)類型
Counter,統(tǒng)計類數(shù)據(jù)
Counter作為一種計數(shù)類數(shù)據(jù)類型,常用于接口調(diào)用次數(shù)、請求總數(shù)、當(dāng)前在線人數(shù)等等
Gauge,記錄對象或許事物的瞬時值
Gauge是最簡單的度量類型,只有一個簡單的返回值,他用來記錄一些對象或者事物的瞬時值,如CPU使用率、內(nèi)存使用情況、磁盤空間等。
Histograms,直方圖
Histrogram是用來度量數(shù)據(jù)中值的分布情況,如程序執(zhí)行時間:0-100ms、100-200ms、200-300ms、>300ms 的分布情況
在使用Prometheus監(jiān)控之前,先要明白都需要監(jiān)控哪些項,以及每一中項都應(yīng)該采用什么數(shù)據(jù)類型來表示
明白以上類型之后,就可以開始將監(jiān)控數(shù)據(jù)項寫入到redis。寫入的工具可采用開源的prometheus_client_php;github:https://github.com/Jimdo/prometheus_client_php
下載后需要用composer部署其依賴,如果你不知道composer的使用:http://www.phpcomposer.com
以下代碼記錄一個counter數(shù)據(jù)
require __DIR__ . '/../vendor/autoload.php';use Prometheus\CollectorRegistry;use Prometheus\Storage\Redis; Redis::setDefaultOptions(array('host' => 'master.redis.reg'));$adapter = new Prometheus\Storage\Redis();$registry = new CollectorRegistry($adapter);$counter = $reg