prometheus监控部署与使用

prometheus部署

整体架构:

组件作用:

prometheus:用于收集监控指标。
grafana:对接prometheus,将收集到的监控指标,图标化展示。
altermanager:用于对触发阈值的监控指标进行告警。
kube-state-metrics:部署在kubernetes集群中,用于收集kubernetes组件信息和对应的POD信息监控信息。
node-export:用于收集节点监控指标。

1
git clone https://github.com/stefanprodan/k8s-prom-hpa  

切换到k8s-prom-hpa目录

1
2
kubectl create -f ./prometheus

目录内包含了prometheus的配置文件和部署文件
查看prometheus

1
2
3
4
5
6
7
kubectl get pod -n monitoring
NAME READY STATUS RESTARTS AGE
prometheus-64bc56989f-qcs4p 1/1 Running 1 22h

kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus NodePort 10.104.215.207 <none> 9090:31190/TCP 22h

访问prometheus
http://node_ip:31190

prometheus内prometheus-cfg.yaml 配置了自动发生规则,会自动将组件注册。

部署kube-state-metric监控Kubernetes集群

参考:
https://github.com/kubernetes/kube-state-metrics/tree/master/docs

kube-state-metric对应的版本支持的Kubernetes版本信息

clone代码

1
git clone https://github.com/kubernetes/kube-state-metrics.git -b v1.8.0

部署kube-state-metric
在kube-state-metrics/kubernetes目录执行

1
kubectl apply -f kube-state-metrics-service-account.yaml,kube-state-metrics-cluster-role.yaml,kube-state-metrics-cluster-role-binding.yaml,kube-state-metrics-deployment.yaml,kube-state-metrics-service.yaml   

检查kube-state-metrices部署

1
2
3
4
5
kubectl  get pod -n kube-system -o wide
metrics-server-7575d9677b-fl5rc 1/1 Running 1 21h 10.244.0.14 k8s-master

curl --insecure https://10.244.0.14/healthz
ok

默认prometheus会自动发现kube-state-metrices创建的Service对应的端口和指标获取路径

在prometheus上可以targets上可以看见对应的点

部署node-export用于节点监控数据收集

使用helm-chart部署

1
helm install --name node-exporter  --namespace kube-system  prometheus-node-exporter/ 

验证是否能取到指标

1
curl http://127.0.0.1:9100/metrics

grafana部署

对接prometheus

添加对应的监控指标展示模板

配置grafana对监控指标进行展示

安装grafan

1
docker run -d --name=grafana -p 3000:3000 grafana/grafana

访问主机3000端口
默认帐号密码:admin/admin

添加DataSource,类型选择prometheus,添加prometheus的地址

添加监控展示模板,添加主机监控模板和Kubernetes集群监控模板

导入ID为8919的node监控dashboard

导入ID为6417的Kubernetes集群监控dashboard