摘要:同時有權限控制日志審計整體配置過期時間等功能。將成為趨勢前置條件要求的版本應該是因為和支持的限制的核心思想是將的部署與它監控的對象的配置分離,做到部署與監控對象的配置分離之后,就可以輕松實現動態配置。
一.多帶帶部署
二進制安裝
各版本下載地址:https://prometheus.io/download/
Docker運行
運行命令:docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
暴露服務: http://localhost:9090/
如果在Kubernetes中部署Prometheus,可以使用prometheus in kubernetes,含exporter、grafana等組件。
安裝方式:
kubectl apply --filename https://raw.githubusercontent.com/giantswarm/kubernetes-prometheus/master/manifests-all.yaml
卸載方式:
kubectl delete namespace monitoring
該方式為大多數用戶和云廠商使用的方式,可以基于Prometheus的服務發現:在annotation中設置prometheus.io/scrape為true,就可以把K8S的所有服務都加入到監控中,但在使用的過程中會有一些問題:
1.如果增加了新的exporter,如nginx-exporter,需要修改prometheus配置并重啟
2.服務本身和監控配置沒有分離
3.監控集群多實例的狀態不好管理
4.報警配置也包含在prometheus的配置中,監控與報警沒有分離,添加規則麻煩
以上問題一般的處理方式為:在prometheus上加一個控制臺,來動態配置target、報警規則,并向后端server發起修改、重啟操作。同時有權限控制、日志審計、整體配置過期時間等功能。
但如果使用了Prometheus Operator,就可以將以上大多數操作抽象為k8s中的資源提交、修改,減少上層封裝的工作量。
三.Prometheus Operator部署Prometheus-Operator是一套為了方便整合prometheus和kubernetes的開源方案,使用Prometheus-Operator可以非常簡單的在kubernetes集群中部署Prometheus服務,用戶能夠使用簡單的聲明性配置來配置和管理Prometheus實例,這些配置將響應、創建、配置和管理Prometheus監控實例。
官方地址:https://github.com/coreos/pro...
目前狀態:beta狀態,還不夠完整,但向后兼容。將成為趨勢
前置條件:要求k8s的版本>=1.8.0(應該是因為metric api和CRD支持的限制)
Operator的核心思想是將Prometheus的部署與它監控的對象的配置分離,做到部署與監控對象的配置分離之后,就可以輕松實現動態配置。使用Operator部署了Prometheus之后就可以不用再管Prometheus Server了,以后如果要添加監控對象或者添加告警規則,只需要編寫對應的ServiceMonitor和Prometheus資源就可以,不用再重啟Prometheus服務,Operator會動態的觀察配置的改動,并將其生成為對應的prometheus配置文件其中Operator可以部署、管理Prometheus Service
四種CRD作用如下:
Prometheus: 由 Operator 依據一個自定義資源kind: Prometheus類型中,所描述的內容而部署的 Prometheus Server 集群,可以將這個自定義資源看作是一種特別用來管理Prometheus Server的StatefulSets資源。
ServiceMonitor: 一個Kubernetes自定義資源(和kind: Prometheus一樣是CRD),該資源描述了Prometheus Server的Target列表,Operator 會監聽這個資源的變化來動態的更新Prometheus Server的Scrape targets并讓prometheus server去reload配置(prometheus有對應reload的http接口/-/reload)。而該資源主要通過Selector來依據 Labels 選取對應的Service的endpoints,并讓 Prometheus Server 通過 Service 進行拉取(拉)指標資料(也就是metrics信息),metrics信息要在http的url輸出符合metrics格式的信息,ServiceMonitor也可以定義目標的metrics的url。
Alertmanager:Prometheus Operator 不只是提供 Prometheus Server 管理與部署,也包含了 AlertManager,并且一樣通過一個 kind: Alertmanager 自定義資源來描述信息,再由 Operator 依據描述內容部署 Alertmanager 集群。
PrometheusRule:對于Prometheus而言,在原生的管理方式上,我們需要手動創建Prometheus的告警文件,并且通過在Prometheus配置中聲明式的加載。而在Prometheus Operator模式中,告警規則也編程一個通過Kubernetes API 聲明式創建的一個資源.告警規則創建成功后,通過在Prometheus中使用想servicemonitor那樣用ruleSelector通過label匹配選擇需要關聯的PrometheusRule即可。
安裝方式:
創建命名空間:monitoring
執行yaml文件:https://github.com/coreos/pro...
prometheus的target列表:
grafana的自帶監控圖列表:
常見問題:
因為要operator中要支持聚合api,在某些版本的集群上可能需要一些配置,如下:
安裝cfssl證書生成工具:http://www.cnblogs.com/xuling...
生成證書
cfssl gencert -ca=/etc/kubernetes/pki/ca.pem -ca-key=/etc/kubernetes/pki/ca-key.pem -config=/etc/kubernetes/pki/ca-config.json -profile=jpaas metrics-server-csr.json | cfssljson -bare metrics-server { "CN": "aggregator", "host": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "cloudnative" } ] }
配置master組件參數,以支持metric-server
vim /etc/systemd/system/kube-apiserver.service --requestheader-client-ca-file=/etc/kubernetes/pki/ca.pem --requestheader-allowed-names="aggregator" --requestheader-extra-headers-prefix="X-Remote-Extra-" --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --proxy-client-cert-file=/etc/kubernetes/pki/metrics-server.pem --proxy-client-key-file=/etc/kubernetes/pki/metrics-server-key.pem --runtime-config=api/all=true --enable-aggregator-routing=true systemctl daemon-reload systemctl restart kube-apiserver.service systemctl status kube-apiserver.service vim /etc/systemd/system/kube-controller.service --horizontal-pod-autoscaler-use-rest-clients=true systemctl daemon-reload systemctl restart kube-controller.service systemctl status kube-controller.service
啟動成功后,prometheus的target中,kubelet沒有值,401報錯
vim /etc/systemd/system/kubelet.service --authentication-token-webhook=true --authorization-mode=Webhook systemctl daemon-reload systemctl restart kubelet.service
參考文檔:
https://github.com/coreos/pro...
https://www.yinjk.cn/2018/09/...
http://www.servicemesher.com/...
本文為容器監控實踐系列文章,完整內容見:container-monitor-book
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32894.html
摘要:宋體本文從拉勾網的業務架構日志采集監控服務暴露調用等方面介紹了其基于的容器化改造實踐。宋體此外,拉勾網還有一套自研的環境的業務發布系統,不過這套發布系統未適配容器環境。寫在前面 拉勾網于 2019 年 3 月份開始嘗試將生產環境的業務從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環境的大部分業務模塊已經完成容器化改造,生產環境中,后臺管理服務已全部遷移到 UK8...
摘要:二可視化是一個開源的圖表可視化系統,簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個web服務,包括一個默認的dashboard,可以使用表達式查詢并進行圖表可視化,默認服務的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:二可視化是一個開源的圖表可視化系統,簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個web服務,包括一個默認的dashboard,可以使用表達式查詢并進行圖表可視化,默認服務的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:二可視化是一個開源的圖表可視化系統,簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個web服務,包括一個默認的dashboard,可以使用表達式查詢并進行圖表可視化,默認服務的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:根據配置文件,對接收到的警報進行處理,發出告警。在默認情況下,用戶只需要部署多套,采集相同的即可實現基本的。通過將監控與數據分離,能夠更好地進行彈性擴展。參考文檔本文為容器監控實踐系列文章,完整內容見 系統架構圖 1.x版本的Prometheus的架構圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
閱讀 2565·2023-04-25 20:05
閱讀 2891·2023-04-25 17:56
閱讀 2204·2021-10-14 09:49
閱讀 2687·2019-08-29 15:10
閱讀 2926·2019-08-29 12:25
閱讀 421·2019-08-28 18:23
閱讀 762·2019-08-26 13:26
閱讀 1375·2019-08-23 18:21