promethues 教程

簡(jiǎn)介:

prometheus 是一套開源的監(jiān)控惑朦、報(bào)警鳖目、時(shí)間序列數(shù)據(jù)庫(kù)的組合

  • 主要組件:
    a. prometheus server
    主要負(fù)責(zé)數(shù)據(jù)采集和存儲(chǔ)洲敢,提供promQL查詢語(yǔ)言的支持
    b. client Libraris/SDK
    各個(gè)的客戶端庫(kù)和sdk
    c. push Gateway
    用于支持臨時(shí)任務(wù)的推送網(wǎng)關(guān)败玉,各個(gè)客戶端可以主動(dòng)向push gateway 推送監(jiān)控指標(biāo)數(shù)據(jù)蛀恩,prometheus會(huì)到push gateway上拉取
    d. alertmanager
    告警功能
    e. exporters
    用來(lái)監(jiān)控疫铜,haproxy,StatsD,Graphite等特殊的監(jiān)控目標(biāo)双谆,并向Prometheus提供標(biāo)準(zhǔn)的監(jiān)控樣本數(shù)據(jù)
    f. 各種其他支持工具:可視化儀表盤grafana


    image.png

安裝

docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana


docker run -d -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  prom/node-exporter

docker run  -d \
  -p 9101:9090 \
  -v /Users/albert.liu/opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
  prom/prometheus --name=prometheus_dev


docker run -d \
  -p 3000:3000 \
  --name=grafana \
  -v /Users/albert.liu/opt/grafana-storage:/var/lib/grafana \
  grafana/grafana
啟動(dòng)Prometheus : 127.0.0.1:9101/graph // 默認(rèn)是9000块攒,我本地9000端口沖突修改了

grafana: 127.0.0.1:3000
node_exporter: 127.0.0.1:9100/metrics // 數(shù)據(jù)收集

配置

prometheus.yml 
 # 搜刮配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆蓋全局默認(rèn)值励稳,每15秒從該作業(yè)中刮取一次目標(biāo)
    scrape_interval: 15s
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'alertmanager'
    scrape_interval: 15s
    static_configs:
    - targets: ['alertmanager:9093']
alert.yml

數(shù)據(jù)指標(biāo)

summary 類型,摘要

# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.1207e-05
go_gc_duration_seconds{quantile="0.25"} 0.000153083
go_gc_duration_seconds{quantile="0.5"} 0.000244541
go_gc_duration_seconds{quantile="0.75"} 0.000709667
go_gc_duration_seconds{quantile="1"} 0.006791916
go_gc_duration_seconds_sum 0.077696372
image.png

exporter:

提供監(jiān)控樣本數(shù)據(jù)的程序囱井,exporter的一個(gè)實(shí)例稱為target.prometheus 通過(guò)輪詢方式定期從這些target中獲取樣本數(shù)據(jù)驹尼。

  • exporter 類型
    1. 直接采集型:內(nèi)置了相應(yīng)的程序,如kubernetes
    2. 間接采集型: 需要我們使用Prometheus提供的client library 編寫采集程序庞呕,如 node exporter
  • 規(guī)范:
    1. ‘#’ 開始通常為注釋
    2. 采集后的數(shù)據(jù)新翎,Prometheus會(huì)把他添加labels:instance="django", job="django_app" 和timestamp


      *

node-exporter

    1. 監(jiān)控linux 服務(wù)器
  • 指標(biāo):
    cpu: node_cpu_seconds_total; node_load1
    內(nèi)存(node_memory_MemTotal_bytes: 內(nèi)存總大小)
    磁盤:node_disk_
    文件系統(tǒng):node_filesystem_
    網(wǎng)絡(luò)采集:node_network_
    *3 觸發(fā)器設(shè)置:
    配置:alert.yml


    image.png
  • 檢查配置:
    docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

nginx_exporter

  1. 配置NGINX
  • nginx 開啟stub_status
  • 監(jiān)控nginx 需要with-http_stub_status_module
    檢查是否安裝了
    docker exec -it nginx nginx -V 2>&1 | grep -o with-http_stub_status_module
  • 配置:
    
    server {
    
        location /stub_status{
           stub_status on;
           accecc_log off;
           allow 0.0.0.0/0;
           deny all;
        }
    }
    
    

檢查:curl http://127.0.0.1/stub_status

  1. 安裝nginx_exporter
  2. 配置Prometheus
        - job_name: 'nginx_exporter'
         static_configs:
            - targets: ['192.168.11.11:9113']
              instance: 'test 服務(wù)'
    
image.png
  1. 添加觸發(fā)器:alert.yml


    image.png

添加監(jiān)控的流程

image.png

image.png

pushgateway

image.png
  • docker 鏡像:prom/pushgateway
    添加Prometheus 配置文件
- job_name: 'pushgateway'
   honor_labels: true // 不會(huì)覆蓋Prometheus的指標(biāo)名
   static_configs:
     - targets: ['192.168.199.218:9091']
       labels:
           instance: pushgateway
  1. 推送數(shù)據(jù)給pushgateway
    echo 'some_metric 3.14' | curl --data-binary @- http://192.168.199.218:9091/metrics/job/some_job

    // 刪除某個(gè)組下面所有數(shù)據(jù)
    curl -X DELETE http://192.168.199.218:9091/metrics/job/some_job/instance/some_instance
    // 刪除
    curl -X DELETE http://192.168.199.218:9091/metrics/job/some_job
    a. python 腳本

 pip install prometheus_client

from prometheus_client import CollectorRegistry, Gauge, push_to_gateway

collectorRegistry = CollectorRegistry()
g = Gauge('job_python', 'last python job', registry=collectorRegistry)
g.set_to_current_time()
push_to_gateway('http://192.168.199.218:9091', job='batchA', registry=collectorRegistry)

PromQL 語(yǔ)言

  • 數(shù)據(jù)類型

瞬時(shí)向量(instant vector):
區(qū)間向量
標(biāo)量
字符串


image.png
  • 瞬時(shí)向量過(guò)濾器

標(biāo)簽過(guò)濾
node_cpu_seconds_total{instance='test服務(wù)器'}


image.png
  • 操作符

1.1 二元運(yùn)算符
+、-住练、*地啰、/、%讲逛、^
瞬時(shí)向量和標(biāo)量計(jì)算
瞬時(shí)向量和瞬時(shí)向量運(yùn)算
1.2 關(guān)系運(yùn)算符
==
!= 不等于

亏吝、<、>=盏混、<=
1 > bool 0 # 結(jié)果為1 0
1 > 0 # 結(jié)果為true false

1.3 集合運(yùn)算符
and/or unless: 排除后面的

  1. 聚合操作

sum(求和)
min(),max()
avg(平均值)
stddev(標(biāo)準(zhǔn)差)
bstdvar(標(biāo)準(zhǔn)差異)
count(計(jì)數(shù))
count_values(對(duì)value 進(jìn)行計(jì)數(shù))
bottomk(樣本值最小的k個(gè)元素)
topk(樣本值最大的k個(gè)元素, 從大到小排序)
quantile(分布統(tǒng)計(jì))
without: 排除標(biāo)簽名稱
by :保留標(biāo)簽名稱蔚鸥,類sql似group by

// 統(tǒng)計(jì)cpu 和,排除了標(biāo)簽為cpu,job,mode
sum(node_cpu_seconds_total) without (cpu,job,mode)


// 統(tǒng)計(jì)cpu 和许赃,包含標(biāo)簽為cpu,job,mode
sum(node_cpu_seconds_total) by (cpu,job,mode)
  • 基于時(shí)間聚合

max_over_time(range-vector): 區(qū)間向量?jī)?nèi)每個(gè)指標(biāo)的最大值
avg_over_time(range-vector):
min_over_time(range-vector):
min_over_time(node_timex_sync_status[1m]) 1 分鐘內(nèi)止喷,最小的值

  • 向量匹配

具有相同標(biāo)簽的會(huì)進(jìn)行運(yùn)算。
使用group_left 指定左側(cè)操作數(shù)組中可以有多個(gè)匹配樣本
on()
ignoring(mode): 忽略 mode 標(biāo)簽 ,group_right 有原則

image.png

image.png
  • 內(nèi)置函數(shù)
    abs() 絕對(duì)值
    sqrp() 求平方根
    round(5.6)值四舍五入

time();時(shí)間混聊,秒

increase(node_load1[2m]) 增長(zhǎng)量
rate(node_load1[2m]) 可以直接計(jì)算區(qū)間向量v在時(shí)間窗口平均增長(zhǎng)速率
irate(): 瞬時(shí)增長(zhǎng)率弹谁,避免長(zhǎng)尾問(wèn)題。更靈敏

預(yù)測(cè)Gauge 指標(biāo)變化趨勢(shì)函數(shù)
predict_linear() 未來(lái)趨勢(shì)

up 標(biāo)簽函數(shù)
label_replace() 替換
label_join() 加入

參考資料

https://www.bilibili.com/video/BV17v4y1H76R/?p=6&spm_id_from=pageDriver&vd_source=5f155e9816129fc687a3807f7a9b1701
https://gitee.com/linge365/docker-prometheus/blob/master/prometheus/prometheus.yml

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末句喜,一起剝皮案震驚了整個(gè)濱河市预愤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咳胃,老刑警劉巖植康,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拙绊,居然都是意外死亡向图,警方通過(guò)查閱死者的電腦和手機(jī)泳秀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門标沪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嗜傅,你說(shuō)我怎么就攤上這事金句。” “怎么了吕嘀?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵违寞,是天一觀的道長(zhǎng)贞瞒。 經(jīng)常有香客問(wèn)我,道長(zhǎng)趁曼,這世上最難降的妖魔是什么军浆? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮挡闰,結(jié)果婚禮上乒融,老公的妹妹穿的比我還像新娘。我一直安慰自己摄悯,他們只是感情好赞季,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奢驯,像睡著了一般申钩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘪阁,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天撒遣,我揣著相機(jī)與錄音,去河邊找鬼罗洗。 笑死愉舔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伙菜。 我是一名探鬼主播轩缤,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贩绕!你這毒婦竟也來(lái)了火的?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淑倾,失蹤者是張志新(化名)和其女友劉穎馏鹤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娇哆,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湃累,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碍讨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片治力。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖勃黍,靈堂內(nèi)的尸體忽然破棺而出宵统,到底是詐尸還是另有隱情,我是刑警寧澤覆获,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布马澈,位于F島的核電站瓢省,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏痊班。R本人自食惡果不足惜勤婚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涤伐。 院中可真熱鬧蛔六,春花似錦、人聲如沸废亭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豆村。三九已至液兽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掌动,已是汗流浹背四啰。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粗恢,地道東北人柑晒。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像眷射,于是被迫代替她去往敵國(guó)和親匙赞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容