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