Prometheus部署监控容器
Prometheus架構(gòu)描述
? ? Prometheus 是一個(gè)非常優(yōu)秀的監(jiān)控工具。準(zhǔn)確的說,應(yīng)該是監(jiān)控方案。Prometheus 提供了監(jiān)控?cái)?shù)據(jù)搜集、存儲(chǔ)、處理、可視化和告警一套完整的解決方案
? ??Prometheus 最大的亮點(diǎn)和先進(jìn)性是它的多維數(shù)據(jù)模型
? ?
? Prometheus Server
? ? ? ??Prometheus Server 負(fù)責(zé)從 Exporter 拉取和存儲(chǔ)監(jiān)控?cái)?shù)據(jù),并提供一套靈活的查詢語言(PromQL)供用戶使用
? Exporter
? ? ? ??Exporter 負(fù)責(zé)收集目標(biāo)對象(host, container…)的性能數(shù)據(jù),并通過 HTTP 接口供 Prometheus Server 獲取
?可視化組件
? ? ?監(jiān)控?cái)?shù)據(jù)的可視化展現(xiàn)對于監(jiān)控方案至關(guān)重要。以前 Prometheus 自己開發(fā)了一套工具,不過后來廢棄了,因?yàn)殚_源社區(qū)出現(xiàn)了更為優(yōu)秀的產(chǎn)品 Grafana。Grafana 能夠與 Prometheus 無縫集成,提供完美的數(shù)據(jù)展示能力
?Alertmanager
? ? ?用戶可以定義基于監(jiān)控?cái)?shù)據(jù)的告警規(guī)則,規(guī)則會(huì)觸發(fā)告警。一旦 Alermanager 收到告警,會(huì)通過預(yù)定義的方式發(fā)出告警通知。支持的方式包括 Email、PagerDuty、Webhook 等.
?
Prometheus數(shù)據(jù)存儲(chǔ)模型
? ? ?Prometheus 只需要定義一個(gè)全局的指標(biāo)?container_memory_usage_bytes,然后通過添加不同的維度數(shù)據(jù)來滿足不同的業(yè)務(wù)需求
? ??
?
?
? 1.通過維度對數(shù)據(jù)進(jìn)行說明,附加更多的業(yè)務(wù)信息,進(jìn)而滿足不同業(yè)務(wù)的需求.同時(shí)維度是可以動(dòng)態(tài)添加的,比如再給數(shù)據(jù)加上一個(gè)?user?維度,就可以按用戶來統(tǒng)計(jì)容器內(nèi)存使用量了
? 2.Prometheus 豐富的查詢語言能夠靈活、充分地挖掘數(shù)據(jù)的價(jià)值.前面示例中的 avg、sum、by 只是查詢語言中很小的一部分功能.Prometheus 對多維數(shù)據(jù)進(jìn)行分片、聚合的強(qiáng)大能力
?
Prometheus搭建實(shí)例
? ? 1. Prometheus Server
? ? ? ? ?Prometheus Server 本身也將以容器的方式運(yùn)行在 host 192.168.11.133 上
? ? 2. Exporter
? ? ? ? ?Prometheus 有很多現(xiàn)成的 Exporter,完整列表請參考?https://prometheus.io/docs/instrumenting/exporters/
? ? ? ? 使用:
? ? ? ? ? ? ? ? Node Exporter? ?負(fù)責(zé)收集 host 硬件和操作系統(tǒng)數(shù)據(jù)
? ? ? ? ? ? ? ? cAdvisor? ? ? ? ? ? 負(fù)責(zé)收集容器數(shù)據(jù)
? ? 3.Grafana
? ? ? ? 顯示多維數(shù)據(jù),Grafana 本身也將以容器方式運(yùn)行在 host 192.168.11.133 上
?
1.安裝node Exporter收集主機(jī)數(shù)據(jù)? ?需要在每個(gè)主機(jī)上都安裝
docker run -d -p 9100:9100 \ -v "/proc:/host/proc" \ -v "/sys:/host/sys" \ -v "/:/rootfs" \ --net=host \ prom/node-exporter \ --path.procfs /host/proc \ --path.sysfs /host/sys \ --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"#Node Exporter 啟動(dòng)后,將通過 9100 提供 host 的監(jiān)控?cái)?shù)據(jù) http://192.168.11.133:9100/metrics node exporter安裝?
2.安裝cAdvisor收集容器數(shù)據(jù)? 每個(gè)跑容器的主機(jī)上都需要安裝
docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ --net=host \ google/cadvisor:latest[root@node3 ~]# mount -o remount,rw '/sys/fs/cgroup' [root@node3 ~]# ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu cAdvisor安裝?
3.選擇一臺(tái)主機(jī)安裝Prometheus Server
docker run -d -p 9090:9090 \ -v /root/prometheus.yml:/etc/prometheus/prometheus.yml \ --name prometheus \ --net=host \ prom/prometheus Prometheus server安裝 global:scrape_interval: 15s # By default, scrape targets every 15 seconds.# Attach these labels to any time series or alerts when communicating with# external systems (federation, remote storage, Alertmanager).external_labels:monitor: 'codelab-monitor'# A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'# Override the global default and scrape targets from this job every 5 seconds.scrape_interval: 5sstatic_configs:- targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.11.134:8080','192.168.11.134:9100'] prometheus.yml?static_configs:? ?指定從哪些 exporter 抓取數(shù)據(jù).這里指定了兩臺(tái) host 上的 Node Exporter 和 cAdvisor
?
?
? ?所有?Target?的?State?都是?UP,說明 Prometheus Server 能夠正常獲取監(jiān)控?cái)?shù)據(jù)
?
4.安裝Grafana? 選擇和Prometheus Server同一臺(tái)主機(jī)
docker run -d -i -p 3000:3000 \ -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \ -e "GF_SECURITY_ADMIN_PASSWORD=secret" \ --net=host \ grafana/grafana-e "GF_SECURITY_ADMIN_PASSWORD=secret 指定了 Grafana admin用戶密碼 secret grafana安裝?
5.使用Grafana展示Prometheus Server的數(shù)據(jù)
?
1.添加data source
2.下載dashboard
? ? 訪問??https://grafana.com/dashboards?dataSource=prometheus&search=docker??下載這些現(xiàn)成的 Dashboard 每個(gè)Dashboard就是一個(gè)json文件
? ??
3.添加dashboard
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yxh168/p/9646554.html
總結(jié)
以上是生活随笔為你收集整理的Prometheus部署监控容器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: delphi frame 添加 cre
- 下一篇: pip强制更新包版本