k8s-部署Prometheus
阿新 • • 發佈:2020-07-17
二進位制方式部署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 .