您的位置:首页 >聚焦 >

天天热点!Kubernetes_使用kubernetes部署prometheus+grafana监控系统(Kubernetes工作实践类)

2022-11-21 15:22:21    来源:程序员客栈
一、前言

本文属于Kubernetes工作实践类,工作中,在机器上安装好了kubernetes之后,需要同时安装好prometheus+grafana监控。

本文工程代码(node-exporter.yaml + prometheus.yaml + grafana.yaml)https://www.syjshare.com/res/PVP90A7J


(资料图片仅供参考)

二、K8s监控系统架构2.1 Prometheus简介

prometheus 官网 :https://prometheus.io/prometheus github :https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/prometheus

grafana 官网:https://grafana.com/grafana/dashboards

对于开发,官网的价值在于所有API都在这里github的价值在于下载下来,定制化修改一下,就可以打一个镜像常用功能直接百度/谷歌都有人做过,实际问题直接百度/谷歌都有人解决过

2.2 Prometheus架构2.3 Prometheus知识普及

1、支持pull、push数据添加方式2、支持k8s服务发现3、提供查询语言PromQL4、时序(time series)是由名字(Metric)以及一组key/value标签定义的5、数据类型

三、K8s监控系统搭建3.1 三类数据采集metrics

metrics 是一个接口 然后将 metrics 的数据给 普罗米修斯 ,下面介绍三类:nodeExporter通过自己的 /metrics 接口得到数据,给prometheus;静态pod通过自带的 /metrics 接口得到数据,给prometheus;

第一,K8S集群每个服务器数据

通过NodeExporter:https://github.com/prometheus/node_exporter

k8s集群每个机器node都安装一个NodeExporter(使用daemonSet部署方式就要确保每个node都安装上了)

理论支持:exporter 是一个数据采集工具,除了Node Exporter之外,还有HAProxy Exporter、MySQL Exporter、Redis Exporter和Rabbitmq Exporter。

第二,K8S集群每个组件数据:k8s每个组件都有metrics接口,如下:

ETCD:https://ip:2379/metricsAPIServer:https://ip:6443/metricsControllerManager:https://ip:10252/metricsScheduler:https://ip:10251/metrics

理论支持:k8s四个静态pod的kubectl底层都是有 restful 风格的接口支持的,所以通过 /metrics 接口获取数据是可行的。

第三,容器数据:通过cAdvisor,

3.2 Prometheus+Grafana

在master上创建prometheus目录

(1)创建命名空间ns-monitor

(2)创建node-exporternamespace.yaml node-exporter.yaml prometheus.yaml grafana.yaml ingress.yamlkubectl apply -f namespace.yamlkubectl get namespace

(3)部署prometheus pod包含rbac认证、ConfigMap等 注意 :记得修改prometheus.yaml文件中的ip为master的ip和path[PV需要使用到]

(4)部署grafana

(5)增加域名访问[没有域名好像没有灵魂] 前提 :配置好ingress controller和域名解析

3.3 实践一下:将prometheus+grafana搭建起来3.3.1 搭建

# 下载好镜像(所需要的三个镜像都可以下载到,无需科学上网)docker pull prom/node-exporter:v0.16.0docker pull prom/prometheus:latestdocker pull grafana/grafana:latest# 新建目录和命名空间,并上传三个yaml到目录中mkdir /root/ns-monitor   # 用来存放三个yaml文件kubectl create ns ns-monitor  # 配置好nfs和需要新增的目录mkdir /nfs/data/prometheusmkdir /nfs/data/grafana# 第一步,安装nfsyum install -y nfs-utils# 第二步,创建nfs目录并授予权限  /nfs/data/nginx     这个目录就是nfs ip那个目录# 创建nfs目录mkdir -p /nfs/data/# 授予权限chmod -R 777 /nfs/data# 第三步,编辑export文件并保存# 编辑export文件   对于/nfs/data目录,授予可读可写权限、根目录权限、同步数据权限vi /etc/exports  /nfs/data *(rw,no_root_squash,sync)# 使得配置生效exportfs -r# 查看生效exportfs# 第四步,启动rpcbind、nfs服务并验证# 启动rpcbind、nfs服务,并验证两个服务启动 ps -ef|grep rpcbind  ps -ef|grep nfssystemctl restart rpcbind && systemctl enable rpcbindsystemctl restart nfs && systemctl enable nfs# 查看rpc服务的注册情况rpcinfo -p localhost# showmount测试     # showmount命令用于查询NFS服务器的相关信息     -e或--exports  显示NFS服务器的输出清单。showmount -e master-ip  showmount -e 192.168.100.151

3.3.2 分步测试

注意分步验证:验证node exporter验证 普罗米修斯验证 grafana

3.3.2.1 安装 node exporter 测试好了3.3.2.2 使用kubernetes部署prometheus

关于prometheus.yaml,从界面验证各个yaml

(1) 验证 kubectl get all -n ns-monitor | kubectl get pv,pvc -A

(2) 持久化:验证 pv pvc 去 /nfs/data/prometheus 目录下

(3) configmap:验证 configmap 去service discovery

(4) rbac:验证 rbac 能运行起来就验证了 (rbac是apiserver四特性中的第二特性,如果rbac配置错误,无法apply成功)

(5) deployment-service:验证 deployment service 能看到界面就验证好了

kubectl get all -n ns-monitor 服务启动成功kubectl get pv,pvc -A 持久化绑定bound成功

验证启动:192.168.100.151:30841 (prometheus服务的 nodePort 暴露的出来端口)

http://192.168.100.151:30841/targets 查看所有的/metrics的数据被prometheus监控到了,如下:

进入 /nfs/data/prometheus ,这里表示持久化完成

3.3.2.3 grafana测试成功

最后解释一下,pv pvc 如何匹配上的

3.3.3 Grafana将同一个集群中的prometheus配置为数据源datasource3.3.4 Grafana导入Dashboard和查看Dashboard3.3.4.1 Grafana导入看板Dashboard的三种方式

所有的dashboard看板实际就是一个json文件,三个红色框框表示三种方式

第一种,将电脑本地的JSON导入到Grafana中第二种,官网下载地址:https://grafana.com/grafana/dashboards,进入到官网,将ID复制过来,点击右边的Load

第三种,直接将JSON字符串的内容复制过来,点击下面的Load

3.3.4.2 Grafana查看看板Dashboard四、尾声

finish!!!

Learn technology well, Day Day Up !

关键词: 监控系统 复制过来 数据采集

相关阅读