涉及文件下載地址:連接:https://pan.baidu.com/s/18XHK7ex_J0rzTtfW-QA2eA 密碼:0qn6
文件中須要下載的鏡像須要本身提早下載好,eg:prom/node-exporter:v0.16.0node
Prometheus官方網址,或者百度本身瞭解腦補:https://prometheus.io/ mysql
官方文檔說明連接
Prometheus是一個開源的系統監控工具。
根據配置的任務(job)以http/s週期性的收刮(scrape/pull)
指定目標(target)上的指標(metric)。目標(target)
能夠以靜態方式或者自動發現方式指定。
Prometheus將收刮(scrape)的指標(metric)保存在本地或者遠程存儲上。linux
Prometheus以pull方式來收集指標。對比push方式,
pull能夠集中配置、針對不一樣的視角搭建不一樣的監控系統web
Prometheus Server:核心組件,負責收刮和存儲時序數據(time series data),而且提供查詢接口;sql
Jobs/Exporters:客戶端,監控並採集指標,對外暴露HTTP服務(/metrics);
目前已經有不少的軟件原生就支持Prometjeus,提供/metrics,能夠直接使用;
對於像操做系統已經不提供/metrics的應用,可使用現有的exporters
或者開發本身的exporters來提供/metrics服務;docker
Pushgateway:針對push系統設計,Short-lived jobs定時將指標push到Pushgateway,再由Prometheus Server從Pushgateway上pull;api
Alertmanager:報警組件,根據實現配置的規則(rule)進行響應,例如發送郵件;數據結構
Web UI:Prometheus內置一個簡單的Web控制檯,能夠查詢指標,查看配置信息或者Service Discovery等,實際工做中,查看指標或者建立儀表盤一般使用Grafana,Prometheus做爲Grafana的數據源;app
數據結構
Prometheus按照時間序列存儲指標,每個指標都由Notation + Samples組成:
Notation:一般有指標名稱與一組label組成:
<metric name>{<label name>=<label value>, ...}
Samples:樣品,一般包含一個64位的浮點值和一個毫秒級的時間戳
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
下面是在Mac上安裝使用Prometheus+Grafana監控Kubernetes演示
連接==-==Kubernetes Dashboard 安裝,快速,簡便運行Dashboardide
環境以下:Docker for Mac 或者 Edge 版本的內置的 Kubernetes 集羣
命令查看環境信息
shenhl:~ user$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
docker-for-desktop Ready master 20d v1.9.6 <none> Docker for Mac 4.9.87-linuxkit-aufs docker://18.5.0
shenhl:~ user$ kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default kubernetes-bootcamp-5dbf48f7d4-dtn4f 1/1 Running 0 14d 10.1.0.92 docker-for-desktop
default mysql-756vx 1/1 Running 0 11d 10.1.0.96 docker-for-desktop
default myweb-494kv 1/1 Running 0 8d 10.1.0.102 docker-for-desktop
default myweb-77r2b 1/1 Running 0 8d 10.1.0.101 docker-for-desktop
default myweb-7p7h8 1/1 Running 0 8d 10.1.0.98 docker-for-desktop
default myweb-jbfs9 1/1 Running 0 8d 10.1.0.100 docker-for-desktop
default myweb-v6mnf 1/1 Running 0 8d 10.1.0.99 docker-for-desktop
docker compose-5d4f4d67b6-ttmpk 1/1 Running 0 20d 10.1.0.94 docker-for-desktop
docker compose-api-7bb7b5968f-bgvz8 1/1 Running 1 20d 192.168.65.3 docker-for-desktop
kube-system etcd-docker-for-desktop 1/1 Running 7 20d 192.168.65.3 docker-for-desktop
kube-system kube-apiserver-docker-for-desktop 1/1 Running 7 20d 192.168.65.3 docker-for-desktop
kube-system kube-controller-manager-docker-for-desktop 1/1 Running 7 20d 192.168.65.3 docker-for-desktop
kube-system kube-dns-6f4fd4bdf-bxkgg 3/3 Running 0 20d 10.1.0.95 docker-for-desktop
kube-system kube-proxy-znhpr 1/1 Running 0 20d 192.168.65.3 docker-for-desktop
kube-system kube-scheduler-docker-for-desktop 1/1 Running 7 20d 192.168.65.3 docker-for-desktop
kube-system kubernetes-dashboard-5bd6f767c7-z7zqt 1/1 Running 1 15d 10.1.0.93 docker-for-desktop
ns-monitor grafana-7bcf9c9f9-2g5bf 1/1 Running 0 8d 10.1.0.103 docker-for-desktop
ns-monitor node-exporter-vpmm8 1/1 Running 0 7h 192.168.65.3 docker-for-desktop
ns-monitor prometheus-65565d74b8-ctx7b 1/1 Running 0 8d 10.1.0.97 docker-for-desktop
shenhl:~ user$
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Kubernetes的Dashboard
在kubernetest中建立namespace叫作ns-monitor
建立文件名:namespace.yaml,內容以下:
【文件在百度雲盤可下載連接:https://pan.baidu.com/s/18XHK7ex_J0rzTtfW-QA2eA 密碼:0qn6】
apiVersion: v1
kind: Namespace
metadata:
name: ns-monitor
labels:
name: ns-monitor
1
2
3
4
5
6
在文件目錄處,執行建立命令以下:
kubectl apply -f namespace.yaml
1
在kubernetest中部署node-exporter,Node-exporter用於採集kubernetes集羣中各個節點的物理指標,好比:Memory、CPU等。能夠直接在每一個物理節點是直接安裝,這裏咱們使用DaemonSet部署到每一個節點上,使用 hostNetwork: true 和 hostPID: true 使其得到Node的物理指標信息,配置tolerations使其在master節點也啓動一個pod。
建立文件名:node-exporter.yaml文件,內容以下:
【文件在百度雲盤可下載連接:https://pan.baidu.com/s/18XHK7ex_J0rzTtfW-QA2eA 密碼:0qn6】
kind: DaemonSet
apiVersion: apps/v1beta2
metadata:
labels:
app: node-exporter
name: node-exporter
namespace: ns-monitor
spec:
revisionHistoryLimit: 10
selector:
matchLabels:
app: node-exporter
template:
metadata:
labels:
app: node-exporter
spec:
containers:
- name: node-exporter
image: prom/node-exporter:v0.16.0
ports:
- containerPort: 9100
protocol: TCP
name: http
hostNetwork: true
hostPID: true
tolerations:
- effect: NoSchedule
operator: Exists
---
kind: Service
apiVersion: v1
metadata:
labels:
app: node-exporter
name: node-exporter-service
namespace: ns-monitor
spec:
ports:
- name: http
port: 9100
nodePort: 31672
protocol: TCP
type: NodePort
selector:
app: node-exporter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
在文件目錄處,執行建立命令以下:
kubectl apply -f node-exporter.yaml
1
查看建立是否成功:
kubectl get pods -n ns-monitor -o wide
1
檢驗node-exporter是否都成功運行
http://127.0.0.1:31672/metrics或者http://127.0.0.1:9100/metrics
在kubernetest中部署Prometheus
官方參考文檔:/etc/prometheus/prometheus.yaml的配置
建立文件名prometheus.yaml,內容以下:
【文件在百度雲盤可下載連接:https://pan.baidu.com/s/18XHK7ex_J0rzTtfW-QA2eA 密碼:0qn6】
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""] # "" indicates the core API group
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs:
- get
- watch
- list
......爲節省篇幅,此處省略,請在百度雲盤下載
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
執行建立命令
kubectl apply -f prometheus.yaml
kubectl get pods -n ns-monitor -o wide
1
2
驗證prometheus的正確性:http://127.0.0.1:31710/graph 或者 http://127.0.0.1:31710/service-discovery 或者 http://127.0.0.1:31710/targets
在kubernetest中部署grafana
建立grafana.yaml文件,內容以下:
【文件在百度雲盤可下載連接:https://pan.baidu.com/s/18XHK7ex_J0rzTtfW-QA2eA 密碼:0qn6】
apiVersion: v1
kind: PersistentVolume
metadata:
name: "grafana-data-pv"
labels:
name: grafana-data-pv
release: stable
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /nfs/grafana/data
server: 192.168.65.3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-data-pvc
namespace: ns-monitor
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
selector:
matchLabels:
name: grafana-data-pv
release: stable
---
kind: Deployment
apiVersion: apps/v1beta2
metadata:
labels:
app: grafana
name: grafana
namespace: ns-monitor
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana:latest
env:
- name: GF_AUTH_BASIC_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "false"
readinessProbe:
httpGet:
path: /login
port: 3000
volumeMounts:
- mountPath: /var/lib/grafana
name: grafana-data-volume
ports:
- containerPort: 3000
protocol: TCP
volumes:
- name: grafana-data-volume
persistentVolumeClaim:
claimName: grafana-data-pvc
---
kind: Service
apiVersion: v1
metadata:
labels:
app: grafana
name: grafana-service
namespace: ns-monitor
spec:
ports:
- port: 3000
targetPort: 3000
selector:
app: grafana
type: NodePort
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
執行建立命令、並查看
kubectl apply -f grafana.yaml
kubectl get pods -n ns-monitor -o wide
1
2
驗證grafana是否成功運行:http://127.0.0.1:30591/login 默認用戶名和密碼:admin/admin
配置grafana:把prometheus配置成數據源
http://prometheus-service.ns-monitor:9090這個連接的來源:
而後導入Dashboard
再把 kubernetes的Dashboard的模板導入進來顯示:直接把JSON格式內容複製進來就行
【文件在百度雲盤可下載連接:https://pan.baidu.com/s/18XHK7ex_J0rzTtfW-QA2eA 密碼:0qn6】
{
"__inputs": [
{
"name": "DS_PROMETHEUS",
"label": "prometheus",
"description": "",
"type": "datasource",
"pluginId": "prometheus",
"pluginName": "Prometheus"
}
],
"__requires": [
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "5.0.4"
},
......爲節省篇幅,此處省略內容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dashboard中的每個Panel能夠自行編輯、保存和回滾!
若是instance下拉框顯示有問題,點擊右上方的設置(settings)~變量(Variables),
修改$instance變量的Regex值,能夠直接清空;
配置數據源、導入Dashboard、安裝插件等這些操做能夠配置到grafana.yaml文件中,
可是配置過程比較麻煩,這裏先提供在界面上操做的說明,後期須要再處理。
1
2
3
4
5
6
參考blog:https://blog.csdn.net/chenleiking/article/details/80009529 參考官網:https://prometheus.io/--------------------- 做者:common_util 來源:CSDN 原文:https://blog.csdn.net/shenhonglei1234/article/details/80503353 版權聲明:本文爲博主原創文章,轉載請附上博文連接!