摘要:同時有權(quán)限控制日志審計整體配置過期時間等功能。將成為趨勢前置條件要求的版本應該是因為和支持的限制的核心思想是將的部署與它監(jiān)控的對象的配置分離,做到部署與監(jiān)控對象的配置分離之后,就可以輕松實現(xiàn)動態(tài)配置。
一.多帶帶部署
二進制安裝
各版本下載地址: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
該方式為大多數(shù)用戶和云廠商使用的方式,可以基于Prometheus的服務發(fā)現(xiàn):在annotation中設置prometheus.io/scrape為true,就可以把K8S的所有服務都加入到監(jiān)控中,但在使用的過程中會有一些問題:
1.如果增加了新的exporter,如nginx-exporter,需要修改prometheus配置并重啟
2.服務本身和監(jiān)控配置沒有分離
3.監(jiān)控集群多實例的狀態(tài)不好管理
4.報警配置也包含在prometheus的配置中,監(jiān)控與報警沒有分離,添加規(guī)則麻煩
以上問題一般的處理方式為:在prometheus上加一個控制臺,來動態(tài)配置target、報警規(guī)則,并向后端server發(fā)起修改、重啟操作。同時有權(quán)限控制、日志審計、整體配置過期時間等功能。
但如果使用了Prometheus Operator,就可以將以上大多數(shù)操作抽象為k8s中的資源提交、修改,減少上層封裝的工作量。
三.Prometheus Operator部署Prometheus-Operator是一套為了方便整合prometheus和kubernetes的開源方案,使用Prometheus-Operator可以非常簡單的在kubernetes集群中部署Prometheus服務,用戶能夠使用簡單的聲明性配置來配置和管理Prometheus實例,這些配置將響應、創(chuàng)建、配置和管理Prometheus監(jiān)控實例。
官方地址:https://github.com/coreos/pro...
目前狀態(tài):beta狀態(tài),還不夠完整,但向后兼容。將成為趨勢
前置條件:要求k8s的版本>=1.8.0(應該是因為metric api和CRD支持的限制)
Operator的核心思想是將Prometheus的部署與它監(jiān)控的對象的配置分離,做到部署與監(jiān)控對象的配置分離之后,就可以輕松實現(xiàn)動態(tài)配置。使用Operator部署了Prometheus之后就可以不用再管Prometheus Server了,以后如果要添加監(jiān)控對象或者添加告警規(guī)則,只需要編寫對應的ServiceMonitor和Prometheus資源就可以,不用再重啟Prometheus服務,Operator會動態(tài)的觀察配置的改動,并將其生成為對應的prometheus配置文件其中Operator可以部署、管理Prometheus Service
四種CRD作用如下:
Prometheus: 由 Operator 依據(jù)一個自定義資源kind: Prometheus類型中,所描述的內(nèi)容而部署的 Prometheus Server 集群,可以將這個自定義資源看作是一種特別用來管理Prometheus Server的StatefulSets資源。
ServiceMonitor: 一個Kubernetes自定義資源(和kind: Prometheus一樣是CRD),該資源描述了Prometheus Server的Target列表,Operator 會監(jiān)聽這個資源的變化來動態(tài)的更新Prometheus Server的Scrape targets并讓prometheus server去reload配置(prometheus有對應reload的http接口/-/reload)。而該資源主要通過Selector來依據(jù) Labels 選取對應的Service的endpoints,并讓 Prometheus Server 通過 Service 進行拉取(拉)指標資料(也就是metrics信息),metrics信息要在http的url輸出符合metrics格式的信息,ServiceMonitor也可以定義目標的metrics的url。
Alertmanager:Prometheus Operator 不只是提供 Prometheus Server 管理與部署,也包含了 AlertManager,并且一樣通過一個 kind: Alertmanager 自定義資源來描述信息,再由 Operator 依據(jù)描述內(nèi)容部署 Alertmanager 集群。
PrometheusRule:對于Prometheus而言,在原生的管理方式上,我們需要手動創(chuàng)建Prometheus的告警文件,并且通過在Prometheus配置中聲明式的加載。而在Prometheus Operator模式中,告警規(guī)則也編程一個通過Kubernetes API 聲明式創(chuàng)建的一個資源.告警規(guī)則創(chuàng)建成功后,通過在Prometheus中使用想servicemonitor那樣用ruleSelector通過label匹配選擇需要關聯(lián)的PrometheusRule即可。
安裝方式:
創(chuàng)建命名空間:monitoring
執(zhí)行yaml文件:https://github.com/coreos/pro...
prometheus的target列表:
grafana的自帶監(jiān)控圖列表:
常見問題:
因為要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組件參數(shù),以支持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/...
本文為容器監(jiān)控實踐系列文章,完整內(nèi)容見:container-monitor-book
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/32894.html
摘要:宋體本文從拉勾網(wǎng)的業(yè)務架構(gòu)日志采集監(jiān)控服務暴露調(diào)用等方面介紹了其基于的容器化改造實踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺管理服務已全部遷移到 UK8...
摘要:二可視化是一個開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個web服務,包括一個默認的dashboard,可以使用表達式查詢并進行圖表可視化,默認服務的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:二可視化是一個開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個web服務,包括一個默認的dashboard,可以使用表達式查詢并進行圖表可視化,默認服務的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:二可視化是一個開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個web服務,包括一個默認的dashboard,可以使用表達式查詢并進行圖表可視化,默認服務的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:根據(jù)配置文件,對接收到的警報進行處理,發(fā)出告警。在默認情況下,用戶只需要部署多套,采集相同的即可實現(xiàn)基本的。通過將監(jiān)控與數(shù)據(jù)分離,能夠更好地進行彈性擴展。參考文檔本文為容器監(jiān)控實踐系列文章,完整內(nèi)容見 系統(tǒng)架構(gòu)圖 1.x版本的Prometheus的架構(gòu)圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
閱讀 2568·2023-04-25 20:05
閱讀 2891·2023-04-25 17:56
閱讀 2207·2021-10-14 09:49
閱讀 2689·2019-08-29 15:10
閱讀 2928·2019-08-29 12:25
閱讀 425·2019-08-28 18:23
閱讀 763·2019-08-26 13:26
閱讀 1376·2019-08-23 18:21