git clone https://github.com/coreos/kube-prometheus.git
复制代码
# CRD
cd kube-prometheus/manifests/setup
kubectl apply -f .
cd kube-prometheus/manifests
kubectl apply -f .
复制代码
查看CRD kubectl get crd | grep coreos
alertmanagers.monitoring.coreos.com 2021-12-15T06:56:28Z
podmonitors.monitoring.coreos.com 2021-12-15T06:56:28Z
prometheuses.monitoring.coreos.com 2021-12-15T06:56:28Z
prometheusrules.monitoring.coreos.com 2021-12-15T06:56:28Z
servicemonitors.monitoring.coreos.com 2021-12-15T06:56:28Z
复制代码
查看pod kubectl get pod -n monitoring
alertmanager-main-0 2/2 Running 0 42d
alertmanager-main-1 2/2 Running 0 42d
alertmanager-main-2 2/2 Running 0 42d
kube-state-metrics-78b46c84d8-klllv 3/3 Running 0 42d
prometheus-adapter-5cd5798d96-kj6r5 1/1 Running 0 42d
prometheus-k8s-0 3/3 Running 1 42d
prometheus-operator-99dccdc56-lf6vm 1/1 Running 0 42d
复制代码
查看service kubectl get svc -n monitoring
alertmanager-main ClusterIP 11.1.126.171 9093/TCP 42d
alertmanager-operated ClusterIP None 9093/TCP,9094/TCP,9094/UDP 42d
kube-state-metrics ClusterIP None 8443/TCP,9443/TCP 42d
prometheus-adapter ClusterIP 11.1.178.197 443/TCP 42d
prometheus-k8s NodePort 11.1.253.224 9090:8098/TCP 42d
prometheus-operated ClusterIP None 9090/TCP 42d
prometheus-operator ClusterIP None 8080/TCP 42d
复制代码
prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
prometheus: k8s
name: prometheus-k8s
namespace: monitoring
spec:
type: NodePort
ports:
- name: web
port: 9090
nodePort: 8098
targetPort: 9090
selector:
app: prometheus
prometheus: k8s
sessionAffinity: ClientIP
复制代码
Prometheus以pod的方式运行,一旦pod挂掉会导致容器中存储的数据丢失,历史数据无法查询,所以需要持久化 节点配置ChubaoFS CSI 官方链接:chubaofs.readthedocs.io/zh_CN/lates…
部署chubao csi插件
kubectl apply -f deploy/csi-rbac.yaml
kubectl apply -f deploy/csi-controller-deployment.yaml
kubectl apply -f deploy/csi-node-daemonset.yaml
复制代码
创建StorageClass
masterAddr需要修改为自己的配置
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: chubaofs-sc-pro
provisioner: csi.chubaofs.com
reclaimPolicy: Delete
parameters:
masterAddr: "****"
owner: "****"
consulAddr: "*****"
logLevel: "info"
复制代码
节点加label
chubaofs-csi-controller=enabled
chubaofs-csi-node=enabled
复制代码
配置Prometheus
prometheus-prometheus.yaml
storage: #----添加持久化配置,指定StorageClass为上面创建的fast
volumeClaimTemplate:
spec:
storageClassName: chubaofs-sc-test #---指定为fast
resources:
requests:
storage: 200Gi
复制代码
部署:
cd /home/work/zhanglei/kube-prometheus-0.3.0/manifests/setup && kubectl apply -f .
cd /home/work/zhanglei/kube-prometheus-0.3.0/manifests && kubectl apply -f .
复制代码
用来监控一些其他插件的指标数据,采用serviceMonitor的方式监控,本文主要是用来监控一个共享GPU的插件中每个容器的GPU显存分配及使用情况。
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: kubelet
name: test-exporter
#namespace: monitoring
namespace: kube-system
spec:
clusterIP: None
ports:
- name: port
port: 10255
targetPort: port
---
apiVersion: v1
kind: Endpoints
metadata:
name: test-exporter
#namespace: monitoring
namespace: kube-system
labels:
k8s-app: kubelet
subsets:
- addresses:
- ip: 100.200.200.200
- ip: 100.200.200.201
ports:
- name: port
port: 10255
protocol: TCP
复制代码
...
endpoints:
- port: port
interval: 30s
scheme: http
path: /metrics/cadvisor
...
复制代码
grafana的部署可以直接使用prometheus-oerator中的,也可以使用docker run直接部署。本文是docker run直接部署的。
docker run -d -p 3000:3000 grafana/grafana
复制代码
【注意】这种方式部署的,完成面板搭建之后记得备份容器镜像,一面容器挂掉导致数据丢失。
匿名登录
当grafana嵌入其他系统中使用时,想要隐去登录操作,此时需要修改配置文件
[auth.anonymous]
# enable anonymous access
# 去掉注释,改为true,允许匿名访问
enabled = true
# specify organization name that should be used for unauthenticated users
# 匿名用户属于的组织
org_name = Main Org.
# specify role for unauthenticated users
# 匿名用户的角色/权限
org_role = Viewer
复制代码
如果是用docker方式启动的,通过挂载的方式修改grafana的配置文件
普通启动,挂载数据盘
docker run -d --name grafana -p 3000:3000 -v /data/grafana:/var/lib/grafana grafana/grafana
## 复制出配置文件
docker cp grafan:/etc/grafana/grafana.ini /data/grafana-data/etc/
## 修改配置文件,比如加上域名,比如修改端口为80,比如。。。
## kill重启
docker kill grafana
docker rm grafana
docker run --user root -d --name grafana -p 3000:3000 -v /data/grafana-data/etc:/etc/grafana/
复制代码
跨域访问
grafana嵌入其他系统中通常需要跨域访问,此时也需要修改配置文件
/etc/grafana/grafana.ini配置文件修改allow_embedding = true
kiosk=tv
复制代码
参考:kalacloud.com/blog/grafan…
添加用户及用户组
参考:blog.csdn.net/qq_34355232…
为dashboard添加权限管理
首先,Dashboard的权限是继承自所在Folder的权限,所以你会看到部分已有权限后面有一个小锁的标志,代表权限不能修改,如若修改,只能通过修改对应Folder的权限;也就是说,所谓Grafana Dashboard的权限控制,即Folder(文件夹)的权限控制;
如果想要给单个dashboard添加相应权限,可在"Dashboard settings"--> "Permissions"-->“Add Permission”,为某用户或小组添加权限;