使用Prometheus Operator監(jiān)控kubetnetes集群

發(fā)布時(shí)間:2024-02-26
云計(jì)算
一、簡(jiǎn)介
prometheus
prometheus 是一個(gè)開(kāi)源監(jiān)控系統(tǒng),它本身已經(jīng)成為了云原生中指標(biāo)監(jiān)控的事實(shí)標(biāo)準(zhǔn),幾乎所有 kubernetes 的核心組件以及其它云原生系統(tǒng)都以 prometheus 的指標(biāo)格式輸出自己的運(yùn)行時(shí)監(jiān)控信息。
主要特性:
使用指標(biāo)名稱(chēng)及鍵值對(duì)標(biāo)識(shí)的多維度數(shù)據(jù)模型。
采用彈性查詢(xún)語(yǔ)言promql。
不依賴(lài)分布式存儲(chǔ),為自治的單點(diǎn)服務(wù)。
使用http完成對(duì)監(jiān)控?cái)?shù)據(jù)的拉取。
通過(guò)網(wǎng)關(guān)支持時(shí)序數(shù)據(jù)的推送。
支持多種圖形和dashboard的展示。
另外在prometheus的整個(gè)生態(tài)系統(tǒng)中有各種可選組件,用于功能的擴(kuò)充。
prometheus-operator
coreos提供了一種名為operator的管理工具,他是管理特定應(yīng)用程序的控制器。通過(guò)擴(kuò)展kubernetes api以軟件的方式幫助用戶(hù)創(chuàng)建、配置和管理復(fù)雜的或又狀態(tài)的應(yīng)用程序?qū)嵗ㄈ鏴tcd、redis、mysql、prometheus等)。
它通過(guò)kubernetes的crd(custom resource definition,自定義資源定義)對(duì)prometheus和prometheus需要監(jiān)控的服務(wù)進(jìn)行部署和配置。
prometheus-operator使用下面兩種資源來(lái)配置prometheus及其要監(jiān)控的服務(wù)。
prometheus:為prometheus的deployment。
servicemonitor:用于描述prometheus監(jiān)控的服務(wù)。
首先我們先來(lái)了解下 prometheus-operator 的架構(gòu)圖:
上圖是 prometheus-operator 官方提供的架構(gòu)圖,其中 operator 是最核心的部分,作為一個(gè)控制器,他會(huì)去創(chuàng)建 prometheus 、 servicemonitor 、 alertmanager 以及 prometheusrule 4個(gè) crd 資源對(duì)象,然后會(huì)一直監(jiān)控并維持這4個(gè)資源對(duì)象的狀態(tài)。
其中創(chuàng)建的 prometheus 這種資源對(duì)象就是作為 prometheus server 存在,而 servicemonitor 就是 exporter 的各種抽象, exporter是用來(lái)提供專(zhuān)門(mén)提供 metrics 數(shù)據(jù)接口的工具, prometheus 就是通過(guò) servicemonitor 提供的 metrics 數(shù)據(jù)接口去 pull 數(shù)據(jù)的。
當(dāng)然 alertmanager 這種資源對(duì)象就是對(duì)應(yīng)的 alertmanager 的抽象,而 prometheusrule 是用來(lái)被 prometheus 實(shí)例使用的報(bào)警規(guī)則文件。
二、說(shuō)明
本文檔基于prometheus operator對(duì)prometheus監(jiān)控系統(tǒng)而進(jìn)行,完整的配置文件請(qǐng)參考https://github.com/coreos/prometheus-operator
本文使用的k8s集群是基于kubeadm搭建的,具體搭建的詳細(xì)請(qǐng)參考https://blog.51cto.com/billy98/2350660
三、部署
1. 環(huán)境準(zhǔn)備
配置prometheus-operator之前需要先準(zhǔn)備以下幾個(gè)環(huán)境:
helm環(huán)境:請(qǐng)參考https://blog.51cto.com/billy98/2338415
gluster-heketi環(huán)境:因?yàn)閜rometheus和alertmanager都是有狀態(tài)的statefulsets集群,所以需要使用到公共存儲(chǔ)。請(qǐng)參考https://blog.51cto.com/billy98/2337874
ingress環(huán)境:請(qǐng)參考https://blog.51cto.com/billy98/2337874
2. 配置域名解析
將alert.cnlinux.club、grafana.cnlinux.club、prom.cnlinux.club三個(gè)域名的a記錄解析到負(fù)責(zé)均衡的ip10.31.90.200。
3. 修改scheduler、controller-manager監(jiān)聽(tīng)地址
修改/etc/kubernetes/manifests/ 目錄下kube-controller-manager.yaml和kube-scheduler.yaml
將監(jiān)聽(tīng)地址改成--address=0.0.0.0,重啟kubelet服務(wù)
systemctl restart kubelet.service 4. 創(chuàng)建namespace
kubectl create ns monitoring5. 創(chuàng)建secret
因?yàn)閑tcd是使用https訪問(wèn)的,所以prometheus的容器中也必須要etcd的證書(shū)去監(jiān)控etcd集群,創(chuàng)建secret就是將證書(shū)掛載到prometheus容器中,后續(xù)還需要在prometheus-operator的配置文件中使用此secret。
kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/healthcheck-clien t.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key --from-file=/etc/kubernetes/pki/etcd/ca.crt 6. 配置prometheus-operator
1)首先使用helm下載prometheus-operator文件包。
helm fetch stable/prometheus-operator2)解壓下載的壓縮包
tar zxf prometheus-operator-1.8.0.tgz并修改prometheus-operator目錄下的values.yaml。
具體修改的配置如下(配置過(guò)多,其他未修改的就不再展示了):
nameoverride: palertmanager: ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx labels: {} hosts: - alert.cnlinux.club tls: [] alertmanagerspec: storage: volumeclaimtemplate: spec: storageclassname: gluster-heketi accessmodes: [readwriteonce] resources: requests: storage: 20gi selector: {}grafana: enabled: true admin #grafana登錄密碼 ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx labels: {} hosts: - grafana.cnlinux.clubkubeapiserver: enabled: true tlsconfig: servername: kubernetes insecureskipverify: true servicemonitor: joblabel: component selector: matchlabels: component: apiserver provider: kuberneteskubelet: enabled: true namespace: kube-system servicemonitor: https: truekubecontrollermanager: enabled: true endpoints: [] service: port: 10252 targetport: 10252 selector: component: kube-controller-managercoredns: enabled: true service: port: 9153 targetport: 9153 selector: k8s-app: kube-dnskubeetcd: enabled: true endpoints: [] service: port: 2379 targetport: 2379 selector: component: etcd servicemonitor: scheme: https insecureskipverify: false servername: cafile: /etc/prometheus/secrets/etcd-certs/
上一個(gè):小額高利貸會(huì)被拘留嗎
下一個(gè):共享云服務(wù)器怎么樣

銀脈花
防水防滑浴室地板的設(shè)計(jì)原則要點(diǎn)有哪些?
承重墻拆除加固的方法是什么?
什么硬盤(pán)不怕摔,什么牌子的手機(jī)不怕摔
蘋(píng)果手機(jī)打電話對(duì)方聽(tīng)不到聲音咋回事兒(蘋(píng)果手機(jī)打電話對(duì)方聽(tīng)不到聲音怎么辦)
香蕉貯藏過(guò)程黑腐病防治
電腦中安裝Adobe軟件時(shí)提示該程序已安裝的最佳解決方案
個(gè)人貧困證明怎么開(kāi)
電線電纜熱延伸試驗(yàn)儀參數(shù)設(shè)定和計(jì)算
華為手機(jī)怎么去掉主題,華為主題怎么設(shè)置
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos