prometheus(普罗米修斯)
Prometheus github 地址:https://github.com/coreos/kube-prometheus
官方文档:https://prometheus.io/docs/introduction/overview/
1. 组件说明
1)MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如kubectl,hpa,scheduler等。
2)PrometheusOperator:是一个系统监测和警报工具箱,用来存储监控数据。
3)NodeExporter:用于各node的关键度量指标状态数据。
4)KubeStateMetrics:收集kubernetes集群内资源对象数据,制定告警规则。
5)Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输。
6)Grafana:是可视化数据统计和监控平台
2. 构建记录
包含了Grafana
# 1)下载相关配置文件
git clone https://github.com/coreos/kube-prometheus.git
cd kube-prometheus/manifests/
下面是手动方式安装,helm安装更方便,已经下载到本地了,直接上传。
manifests目录下都是需要部署的所有yaml文件
需要修改几个yaml文件
# 2) 修改 grafana-service.yaml 文件,使用 nodeport 方式访问 grafana
# vim grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: grafana
name: grafana
namespace: monitoring
spec:
type: NodePort #添加内容
ports:
- name: http
port: 3000
targetPort: http
nodePort: 30100 #添加内容
selector:
app: grafana
# 3)修改 prometheus-service.yaml,改为 nodePort
# vim prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
prometheus: k8s
name: prometheus-k8s
namespace: monitoring
spec:
type: NodePort #添加
ports:
- name: web
port: 9090
targetPort: web
nodePort: 30200 #添加
selector:
app: prometheus
prometheus: k8s
sessionAffinity: ClientIP
# 4)修改 alertmanager-service.yaml,改为 nodePort
# vim alertmanager-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
alertmanager: main
name: alertmanager-main
namespace: monitoring
spec:
type: NodePort #添加
ports:
- name: web
port: 9093
targetPort: web
nodePort: 30300 #添加
selector:
alertmanager: main
app: alertmanager
sessionAffinity: ClientIP
我们看一下grafana-deployment.yaml文件
看到会去这个地址下载镜像,能否下载成功不一定,所以最好本地上传
上传给其他节点也执行一遍
# 开始执行安装 注意:执行之前必须把promutheus相关镜像导入本地镜像仓库(三个节点都必须导入),当然也可以从网络下载,但是必须解决外网访问的问题。
cd /root/k8s/prometheus/kube-prometheus/manifests
kubectl apply -f . #多运行几遍,以便于查看是否安装成功
进入manifests目录下,执行安装:
看到报错
# 找不到命名空间,解决方法如下
#1、直接创建monitoring命令空间
kubectl create namespace monitoring
#2、通过yml文件创建monitoring命令空间
apiVersion: v1
kind: Namespace
metadata:
name: monitoring
labels:
name: monitoring
创建对应namespaces:
可以多执行几次kubectl apply -f .
# 查看是否安装成功
kubectl get pod -n monitoring
# 测试监控node节点
kubectl top node
# 测试监控pod
kubectl top pod
# prometheus访问测试
# prometheus 对应的 nodeport 端口为 30200,访问http://MasterIP:30200
# 通过访问http://MasterIP:30200/target可以看到 prometheus 已经成功连接上了 k8s 的 apiserver
# grafana访问测试,添加数据来源:默认已经添加好
# http://10.0.0.11:30100/login
# admin admin (默认要修改密码)
grafana还没连上k8s,一旦连上,需要等待一会儿,就会有很多数据: