番外篇-Prometheus入門

應(yīng)用監(jiān)控的基本組合

日志Logging[ELK]+指標(biāo)Metrics[AMP]+追蹤Tracing[SkyWalking]
通過指標(biāo)發(fā)現(xiàn)性能問題眷茁,通過追蹤定位性能蹬刷,通過日志定位出具體請求的明細(xì)參數(shù)

# 指標(biāo)的基本組合

Actuator+Micrometer+Prometheus+Grafana
Actuator: 采集內(nèi)部應(yīng)用內(nèi)部信息暴露給外部锨侯,提供原始監(jiān)控?cái)?shù)據(jù)厂置,比如健康檢查厚宰,指標(biāo)收集泰涂,應(yīng)用信息
Micrometer: 為性能數(shù)據(jù)收集提供通用的API鲫竞,包括:計(jì)時(shí)器,計(jì)數(shù)器逼蒙,可以與不同的監(jiān)控系統(tǒng)適配
Prometheus: 系統(tǒng)監(jiān)控報(bào)警框架从绘,提供多維度數(shù)據(jù)模型和靈活的查詢方式,采用Pull方式采集數(shù)據(jù)
Granfana: 數(shù)據(jù)監(jiān)控和數(shù)據(jù)統(tǒng)計(jì),可視化僵井,報(bào)警陕截,通知


# SpringBoot Actuator

- 引入SpringBoot Actuator及micrometer? ?

pom.xml

<dependency>
? ? <groupId>org.springframework.boot</groupId>
? ? <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
? ? <groupId>io.micrometer</groupId>
? ? <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

- 配置actuator

application.yml

management:
? endpoint.health.show-details: always
? endpoints:
? ? web.exposure.include: prometheus,loggers
? ? metrics.export.prometheus.enabled: true
? metrics:
? ? tags.application: flower

我們只配置了prometheus和loogers,prometheus可以監(jiān)控程序驹沿,loggers可以修改日志級別艘策,其他根據(jù)需要開啟和關(guān)閉。配置以后可以通過/actuator/prometheus進(jìn)行訪問渊季。
* 如果因?yàn)閏ontentType訪問失敗朋蔫,需要在WebMvcConfig中configureMessageConverters增加"application/openmetrics-text"的支持。

- 主要指標(biāo)

運(yùn)行時(shí)間
process_uptime_seconds{job="flower-webapi"}
jvm full GC - 24小時(shí)gc次數(shù) - 可以設(shè)置報(bào)警
increase(jvm_gc_pause_seconds_count{application="agent", cause="Metadata GC Threshold"}[24h])
jvm 內(nèi)存使用 -查看不同區(qū)域內(nèi)存却汉,合理調(diào)整jvm參數(shù)
jvm_memory_used_bytes{job="flower-webapi", area="heap"}/1024/1024
api qps - 5分鐘訪問量
sum(increase(http_server_requests_seconds_count{job="flower-webapi"}[5m])/300)

還可以查看
jvm線程數(shù)驯妄,jvm gc收集次數(shù)和收集耗時(shí)
接口請求次數(shù),請求時(shí)長合砂,日志情況


# Prometheus

- 安裝和配置

Prometheus監(jiān)控的目標(biāo)是:長期趨勢分析
Prometheus中文文檔

Prometheus配置

global:
? scrape_interval: 15s
scrape_configs:
- job_name: "flower-webapi"
? params:
? ? "product-code": ["A20001"]
? authorization:
? ? type: Bearer
? ? credentials: "eyJ0eXAiOiJ...6Z6w"
? metrics_path: "/actuator/prometheus"
? static_configs:
? - targets: ["101.200.53.244:8210"]

*此配置需要訪問權(quán)限青扔,具體credentials可以通過WebSecurityConfig設(shè)置特定角色訪問
antMatchers(securityConfig.getActuatorUrl()).hasRole(securityConfig.getActuatorRole())

Prometheus安裝

docker pull prom/prometheus
docker run --name prometheus -it -p 9090:9090 -v prometheus.yml:/etc/prometheus/prometheus.yml --network flower --network-alias flower-prom -d prom/prometheus

* prometheus.yml參照prometheus配置
* 為了讓Prometheus可以訪問其他Docker,需要在同一個(gè)網(wǎng)絡(luò)中翩伪,需要指定--network微猖,可以通過docker network create flower預(yù)先創(chuàng)建
* Prometheus可以使用多種Exporter來監(jiān)控其他類型的數(shù)據(jù),常見Exporter如下:

BlackExporter

Prometheus社區(qū)提供的官方黑盒監(jiān)控解決方案缘屹,可以通過https, https, dns, tcp, icmp方式對網(wǎng)絡(luò)進(jìn)行探測
運(yùn)行
docker run -id --name cove-probe -p 9115:9115 -v blockbox.yml:/etc/blackbox_exporter/config.yml?prom/blackbox-exporter
配置
https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md

Nginx Exporter

開啟-需要開啟Nginx sub_status功能
配置-sub_status
server {
? ? listen 9000;
? ? location /nginx_status {
? ? ? ? stub_status on;
? ? ? ? access_log off;
? ? ? ? allow all;
? ? }
}
通過curl http://localhost:9000/nginx_status進(jìn)行驗(yàn)證

運(yùn)行-exporter
docker run -p 9113:9113?--network flower--network-alias flower-nginx?? nginx/nginx-prometheus-exporter:0.10.0 -nginx.scrape-uri=http://<nginx>:8080/stub_status
通過curl http://localhost:9113/metrics進(jìn)行驗(yàn)證

參數(shù)
https://nginx.org/en/docs/http/ngx_http_stub_status_module.html

prometheus job
- job_name: "flower-nginx"
? metrics_path: "/metrics"
? static_configs:
? - targets: ["flower-nginx:9113"]

Node exporter

用于提供*NIX內(nèi)核的硬件以及系統(tǒng)指標(biāo)凛剥,可以通過--collectors.enabled執(zhí)行需要收集的功能模塊
重點(diǎn)關(guān)注cpu, memory, disk
./node_exporter --collector.disable-defaults --collector.cpu --collector.diskstats --collector.meminfo --collector.loadavg --collector.filesystem --collector.filesystem.ignored-fs-types="tmpfs" --web.listen-address=":9110"

prometheus job
- job_name: "flower_node"
? metrics_path: "/metrics"
? static_configs:
? - targets: ["ip:9110"]

主要指標(biāo)
負(fù)載
irate(node_load15{job="flower_node"}[5m])
cpu使用率
1-sum(irate(node_cpu_seconds_total{mode="idle",job="flower_node?"}[5m]))/count(node_cpu_seconds_total{mode="user",job="flower_node?"})
mem使用率
node_memory_MemAvailable_bytes{job="flower_node"}/node_memory_MemTotal_bytes{job="flower_node"}
disk使用率
1-node_filesystem_free_bytes{job="flower_node"}/node_filesystem_size_bytes{job="flower_node"}

* exporter常用指標(biāo)含義
https://www.cnblogs.com/robinunix/p/11276296.html

Docker Explorter - cavdisor

監(jiān)控docker容器
運(yùn)行
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=9300:8080 --detach=true --name=agent-docker-manage --privileged --device=/dev/kmsg --network flower --network-alias flower-docker -d google/cadvisor:latest

prometheus job
- job_name: "flower-docker"
? metrics_path: "/metrics"
? static_configs:
? - targets: ["101.200.53.244:9300"]

主要指標(biāo)
CPU使用情況
sum(rate(container_cpu_usage_seconds_total{name="flower-docker"}[5m]))*100
內(nèi)存使用情況
sum(container_memory_working_set_bytes{name="flower-docker"})/1024
容器數(shù)量-可作為預(yù)警使用
count(container_start_time_seconds{name != ""})

* 介紹Introduction - container-monitor (gitbook.io)

- 探索PromQL

metric指標(biāo)-要監(jiān)控的對象
格式:<metric name>{<label name>=<label value>,}
sample-樣本-某個(gè)時(shí)間戳的指標(biāo)的值
metric類型
Counter計(jì)數(shù)器:代表一種樣本數(shù)據(jù)單調(diào)遞增的指標(biāo)
Guage儀表盤:代表一種樣本數(shù)據(jù)可以任意變化的指標(biāo)
Histogram直方圖:在一段時(shí)間內(nèi)對數(shù)據(jù)進(jìn)行采樣
Summary摘要:表示一段時(shí)間內(nèi)的數(shù)據(jù)采樣結(jié)果


# 配置Granfana

部署
docker run -d --name agent-granfana -p 3000:3000 -v grafana.ini:/etc/grafana/grafana.ini grafana/grafana

訪問
http://ip:3000

郵件配置

[smtp]
enabled = true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#默認(rèn)是false
host = smtp.mxhichina.com:465? ?#smtp服務(wù)器的地址和端口 465|25
user = test@xxx.com? ? ? ? ? ? ? ? ? ? #你登錄郵箱的賬號
password = xxxxxxx? ? ? ? ? ? ? ? ? ? ? #你郵箱賬號的密碼
from_address = test@xxx.com? ? ? #發(fā)郵件的賬號
from_name = Grafana? ? ? ? ? ? ? ? ? ?#自定義的名字
ehlo_identity = dashboard.example.com #無關(guān)緊要的一個(gè)標(biāo)示...

*?docker配置說明

# 安全策略

- 同一機(jī)器的,使用本機(jī)地址訪問轻姿,端口不對外開發(fā)
- 同一機(jī)器的犁珠,不同Docker,可以使用同一docker網(wǎng)絡(luò)互亮,端口不用映射
- 同一專有網(wǎng)絡(luò)的犁享,使用專有網(wǎng)絡(luò)地址訪問,端口不對外開發(fā)
- 只有Granfana對外公開豹休,同時(shí)設(shè)置管理員賬號


參考文獻(xiàn)

https://mp.weixin.qq.com/s/yqMdXehLCl7-m2kcfjh6OQ


SpringBoot入門系列

番外篇-沒用的知識
番外篇-Docker入門
番外篇-Prometheus入門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炊昆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子慕爬,更是在濱河造成了極大的恐慌窑眯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件医窿,死亡現(xiàn)場離奇詭異磅甩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)姥卢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門卷要,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渣聚,“玉大人,你說我怎么就攤上這事僧叉∞戎Γ” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵瓶堕,是天一觀的道長隘道。 經(jīng)常有香客問我,道長郎笆,這世上最難降的妖魔是什么谭梗? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮宛蚓,結(jié)果婚禮上激捏,老公的妹妹穿的比我還像新娘。我一直安慰自己凄吏,他們只是感情好远舅,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痕钢,像睡著了一般图柏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上任连,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天爆办,我揣著相機(jī)與錄音,去河邊找鬼课梳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛余佃,可吹牛的內(nèi)容都是我干的暮刃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼爆土,長吁一口氣:“原來是場噩夢啊……” “哼椭懊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起步势,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤氧猬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后坏瘩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盅抚,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年倔矾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妄均。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柱锹。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖丰包,靈堂內(nèi)的尸體忽然破棺而出禁熏,到底是詐尸還是另有隱情,我是刑警寧澤邑彪,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布瞧毙,位于F島的核電站,受9級特大地震影響寄症,放射性物質(zhì)發(fā)生泄漏宙彪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一瘸爽、第九天 我趴在偏房一處隱蔽的房頂上張望您访。 院中可真熱鬧,春花似錦剪决、人聲如沸灵汪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽享言。三九已至,卻和暖如春渗鬼,著一層夾襖步出監(jiān)牢的瞬間览露,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工譬胎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留差牛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓堰乔,卻偏偏與公主長得像偏化,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子镐侯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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