k8s-部署Prometheus


二進制方式部署prometheus

https://github.com/prometheus/prometheus/releases #prometheus下載地址

https://github.com/prometheus/node_exporter/releases #node_exporter下載地址

https://github.com/prometheus/alertmanager/releases #alertmanager下載地址

https://mirrors.tuna.tsinghua.edu.cn/grafana/debian/pool/main/g/grafana/ #grafana下載地址

https://grafana.com/grafana/download #grafana官方下載地址

部署prometheus server

1、cd /usr/local/src

2、tar xvf prometheus-2.17.1.linux-amd64.tar.gz

3、ln -sv /usr/local/src/prometheus-2.17.1.linux-amd64 /usr/local/prometheus

4、cd /usr/local/prometheus

5、vim prometheus.yml
global:
  scrape_interval:     15s  #每隔15s到監控節點上獲取一次數據
  evaluation_interval: 15s  #監控規則評估頻率,比如設置了當內存使用大於70%發出報警的規則,然后每15秒來執行一次這個規則
  
scrape_configs:                    #指定所需要監控的節點
  - job_name: 'kubernetes-node'    #指定監控的node節點
    static_configs:
    - targets: ['192.168.3.144:9100','192.168.3.145:9100','192.168.3.146:9100']
  
  - job_name: 'kubernetes-master'  #指定監控的k8s-master節點
    static_configs:
    - targets: ['192.168.3.141:9100','192.168.3.142:9100','192.168.3.143:9100']  
#安裝完prometheus會默認監控本機數據,可以把監控本機的job刪除,重新指定監控本機的9100,否則監控本機的9090與9100兩項,會沖突

6、 vim /etc/systemd/system/prometheus.service       #配置prometheus的service啟動文件
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/prometheus/
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml

[Install]
WantedBy=multi-user.target

7、systemctl start prometheus.service      #prometheus起來后默認會監聽9090端口,並且會監控當前服務器的默認指標

8、systemctl enable prometheus.service

部署node exporter

收集k8s 各個node節點上的監控指標數據,各個master也需要安裝,監控master上的指標數據,監聽端口為9100;每個需要被監控的node、master節點都需要安裝

1、cd /usr/local/src

2、tar xvf node_exporter-0.18.1.linux-amd64.tar.gz

3、ln -sv /usr/local/src/node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter

4、vim /etc/systemd/system/node-exporter.service
[Unit] 
Description=Prometheus Node Exporter 
After=network.target 

[Service] 
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

5、systemctl start node-exporter.service

6、systemctl enable node-exporter.service

部署grafana

1、apt-get install -y adduser libfontconfig1     #ubuntu系統需要安裝,centos不需要;ubuntu不安裝也可以,使用此命令:apt --fix-broken install -y  強制安裝,解決依賴關系

2、dpkg -i grafana_6.7.2_amd64.deb

3、vim /etc/grafana/grafana.ini   #修改配置文件
[server]
protocol = http   #使用http協議訪問
http_port = 3000  #監聽端口
;http_addr =      #監聽本機所有地址

[database]
;type = sqlite3        #默認不配;數據庫使用的是sqlite,可以改成mysql
;host = 127.0.0.1:3306
;name = grafana
;user = root
;password =
#給grafana配置數據庫主要存儲的是在grafana上添加的圖形以及配置項的配置數據,而不是存儲Prometheus的監控數據,所以可以在一個新的服務器上,安裝grafana,把數據庫地址指向當前這台服務器所設置的數據庫地址,在另一台服務器上的grafana可以直接使用

4、systemctl start grafana-server

5、瀏覽器訪問grafana的3000端口,賬號名密碼默認都是admin

6、添加數據源,讀取Prometheus的數據
7、選擇Prometheus
8、指定Prometheus服務器的地址及端口
9、導入模板
10、去grafana官網查詢模板
11、輸入官方查看到的模板ID
12、導入模板,指定數據源,監控node資源
13、如果發現有的模板的餅圖無法顯示,需要安裝插件,在線安裝插件:
(1)grafana-cli plugins list-remote                      #列出所有插件;都是與圖形顯示相關的
(2)grafana-cli plugins install grafana-piechart-panel   #安裝餅圖顯示的插件;安裝什么插件,需要到官方的模板中,查看模板的介紹信息,介紹信息中會提示需要安裝什么
(3)service grafana-server restart

離線安裝插件:
(1)cd /var/lib/grafana/plugins   #插件項目必須克隆在grafana存放插件的目錄下
(2)git clone https://github.com/grafana/piechart-panel.git --branch release-1.3.8
(3)service grafana-server restart

https://grafana.com/grafana/plugins/grafana-piechart-panel #grafana的餅圖插件參考

容器方式部署prometheus

https://prometheus.io/docs/prometheus/latest/installation/ #docker鏡像直接啟動

1、docker run -p 9090:9090 prom/prometheus

通過operator項目部署prometheus

https://github.com/coreos/kube-prometheus #operator部署

1、cd /usr/local/src/

2、git clone https://github.com/coreos/kube-prometheus.git  #把項目必須克隆到k8s-master上

3、cd kube-prometheus/manifests/

4、kubectl apply -f setup/   #創建setup目錄下的規則、資源對象、用戶

5、grep image ./*   
#會發現當前目錄下的yml文件的鏡像地址都是在國外,需要提前把鏡像下載下來上傳到本地harbor;如alertmanager、grafana、node_exporter、prometheus等鏡像;可以嘗試鏡像能不能下載下來

6、kubectl apply -f .   #創建當前目錄下的所有 yml 文件中的對象資源

7、kubectl --namespace monitoring port-forward --address 0.0.0.0 svc/grafana 3000:3000
#指定namespace,指定端口轉發,指定監聽本機的所有IP地址(如果不指定,則只監聽127.0.0.1),指定service的名稱,將本機的3000端口映射到service的3000端口;但是訪問grafana時,只能訪問當前執行此條命令的主機,不能訪問其他機器的3000端口,因為這不是綁定nodeport,只是開啟了當前主機的端口轉發;可以使用下一步的方式綁定nodeport

8、vim grafana-service.yaml         #通過修改service的方式,綁定nodeport,允許外部訪問
apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort      #添加NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http  #grafana的deployment的yml文件中定義了容器端口是3000,並且端口名稱設置為http
    nodePort: 33000   #綁定一個宿主機的nodeport
  selector:
    app: grafana  

9、kubectl apply -f .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM