当前位置: 首页 > news >正文

prometheus监控kubernetes集群并使用 grafana展示数据

目录

Prometheus组成及架构

prometheus核心组件

1.Prometheus Server

2.Exporters

3.Alertmanager

4.Pushgateway

数据流程

在k8s中部署Prometheus+Grafana+钉钉告警+邮件告警

将kube-Prometheus包下载后传入虚拟机

tar -xzv kube-promethus.zip

cd 进入

ll 显示目录

至此prometheus以及钉钉告警、邮件告警修改完毕,先按步骤部署即可

1.创建pv

2.cd kube-state-metrics

3.cd node-export

4.cd alertmanager

5.cd prometheus-server

6.部署Grafana

7.现在为 Grafana添加一个数据源为Prometheus

8.添加模板


Prometheus组成及架构

prometheus核心组件

1.Prometheus Server

整个监控系统的核心 ,有以下功能

数据采集 :

通过http协议主动从目标服务器pull(拉取)指标数据,也可以通过 Pushgateway接受推送数据

数据存储:

将采集的时序数据存储到本地的时序数库,默认保留15天

查询与聚合提供PromeQL的查询语言,支持实时分析聚合数据

告警与评估

根据定义的告警规则计算是否触发告警,并将告警发送给Alertmanager

2.Exporters

用于将非Prometheus的数据类型转换为Prometheus可识别的格式,如

主机监控:

node_exporter(收集CPU、内存、磁盘等主机指标)

应用监控:

如myspl_exporter(MySQL)、redis_exporter(redis)、blackbox_exporter(HTTP/ICMP探测)

自定义:

开发符合Prometheus规范的HTTP接口,暴露应用内不指标(如业务接口调用量)

3.Alertmanager

告警分组:

将同类的告警合并(如多台服务器同时触发高CPU告警)

告警抑制:

当某个告警触发后,抑制其他相关的次要告警(如服务器宕机后,抑制其上应用告警)

告警路由:

根据规则将告警发送到不同的接收端(如邮件、Slack、PagerDuty、企业微信、钉钉等)

4.Pushgateway

可选组件,用于接收短期任务(如 CI/CD 作业)的指标数据,再由 Prometheus 定期从 Pushgateway 拉取。(因 Prometheus 原生是 Pull 模式,短期任务可能在被拉取前结束,故需 Pushgateway 中转)

数据流程

  1. 目标服务通过 Exporter 暴露指标接口(或通过 Pushgateway 推送数据)。
  2. Prometheus Server 定期拉取指标并存储到 TSDB。
  3. 用户通过 PromQL 或 Grafana 查询数据。
  4. Prometheus 评估告警规则,触发时将告警发送给 Alertmanager。
  5. Alertmanager 处理告警并路由到指定接收端。

在k8s中部署Prometheus+Grafana+钉钉告警+邮件告警

需要自己部署好nfs环境最好在主节点

将kube-Prometheus包下载后传入虚拟机

此目录中文件全部可用,但需修改nfs的目录路径,已经nfs的IP、钉钉的Webhook,secret和邮件的收件人和发送人

tar -xzv kube-promethus.zip

cd 进入

ll 显示目录

1  cd alertmanager

vim alertmanager-configmap.yml

2  alertmanager 目录只需修改此文件,现在退出至上一目录

进入钉钉应用

选择一个群,进入设置,点击添加机器人,选择加签,选择添加即可

再次点击机器人,下面会用到webhook和secret

cd ..

cd dingding

vim dingtalk-configmap.yaml 修改图中标出的url和secret

dingding修改完毕,现在退至上一目录

3.  cd nfs-pv/

vim pv-demo.yml

4.  nfs-pv 目录修改完毕,退出至上一目录

cd promethus-server

vim promethus-configmap.yml

至此prometheus以及钉钉告警、邮件告警修改完毕,先按步骤部署即可

1.创建pv

cd nfs-pv

kubectl apply -f ./

我因为之前已经创建好了,所以这里显示unchanged,正常显示的是created

kubectl get pv 查看创建的pv 我的status是Bound因为已经绑定了pvc,正应该是Available

2.cd kube-state-metrics

kubectl apply -f .

同上,我的是unchanged,正常为created

kubectl get pod -n kube-system 查看pod状态 正常应为 reday 2/2 runing

若出现pod状态为ErrImagePull ,则使用describe 查看pod状态

kubectl describe pod kube-state-metrics-769d7f8b8b-rf2h2(换成自己的pod)命令查看报错

发现镜像拉不下来,则使用 -o wide 看pod分配到哪个节点,文章下面有对应的包

下载后传到虚拟机上在使用 docker load -i 包名 即可拉取镜像

等待2分钟再次观察pod的状态,发现变为runing

3.cd node-export

启动次pod时,注意使用的控制器时Daemonset,则每个节点都需要运行一个pod,但是master节点一般会有污点(为了提高master的管理效率,一般不在master上运行pod),所以我们需要清理污点

首先看master的污点类型

kubectl describe nodes master名称 | grep Taint

过滤结果大概率为 node-role.kubernetes.io/master:NoSchedule

去除污点

将污点去除

kubectl taint nodes master名称 node-role.kubernetes.io/master:NoSchedule- (注意这个减号,是去除的意思)

然后执行

kubectl apply -f ./

依旧同上

查看pod状态

kubectl get pod -n kube-system -o wide

会有三个pod运行,且master、k8s-node01、k8s-node02各运行一个

若状态有问题,describe查看报错,若镜像 拉不下来,先给每个节点添加一个8.8.8.8的DNS,

vim /etc/sysconfig/network-scripts/ifcfg-ens33 编辑此文件添加一个DNS

保存退出后重启网络

systemctl restart network

等待两分中,若不行,使用下面方法

下载包(文章下面有),再传到每个虚拟机,执行docker load -i 即可

查看svc

kubectl get svc -n kube-system

4.cd alertmanager

kubectl apply -f ./

同上

查看pod是否创建

kubectl get pods -l "k8s-app=alertmanager" -n kube-system

查看svc

kubectl get svc -n kube-system

5.cd prometheus-server

kubectl apply -f ./

同上

查看pod和svc是否成功创建

kubectl get pods -l "k8s-app=prometheus" -n kube-system

kubectl get svc -n kube-system

至此Prometheus部署完毕,测试是否可用

访问任意节点的IP+30090端口

例如:192.168.80.147:30090

6.部署Grafana

cd grafana

kuebctl apply -f ./

同上

查看pod和svc状况

kubectl get pod -n kube-system | grep monitoring-grafana

kubectl get svc -n kube-system | grep monitoring-grafana

至此Grafana部署完毕

测试访问192.168.810.147:32325

能进入代表部署成功

7.现在为 Grafana添加一个数据源为Prometheus

点击Connections 连接

点击 data sources数据源

搜索prometheus

点进去

添加prometneus的svc IP和端口

IP为prometheus的svc内部集群IP 端口为9090

添加好之后滑到最下面保存即可

8.添加模板

进入此网站搜索node,选择第一个,进入后下载最新的

Grafana dashboards | Grafana Labs

然后回到刚才的Grafana主页的home

选择Dashborad

点击右上角的 +

选择import dashborad

点击导入模板,选择刚才下载的模板,我这有三个,你们只有一个刚才下载的

选择数据源为 prometheus

点击import导入即可

http://www.lryc.cn/news/627116.html

相关文章:

  • Web 安全之延迟攻击(Delay Attack)详解
  • Windows 命令行:dir 命令
  • VG技术下,美术在资源制作时的规范
  • 读者写者问题
  • 深入理解C++ std::shared_ptr:现代C++内存管理的艺术与实践
  • Python文件操作与异常处理详解 :基础方法、注意事项及os模块常用功能
  • MySQL数据库安全配置核心指南
  • [激光原理与应用-316]:光学设计 - SolidWorks 、AutoCAD、Zemax三者的比较与协同
  • Python 数据可视化:Matplotlib 与 Seaborn 实战
  • 计算机网络--HTTP协议
  • Redis(以Django为例,含具体操作步骤)
  • 项目1其二(验证码、jwt)
  • Python如何将两个列表转化为一个字典
  • Spring Boot 实战:从项目搭建到部署优化
  • react state变化生命周期钩子
  • 【ansible】4.实施任务控制
  • VMware Workstation | 安装Ubuntu20.04.5
  • Linux基础介绍-3——第一阶段
  • 领码方案:通用物联网数据采集低代码集成平台——万物智联时代的黄金钥匙
  • 解决 nginx: [warn] “ssl_stapling“ ignored, issuer certificate not found 报错
  • 计算机视觉 图片处理 在骨架化过程中,每次迭代都会从图像的边缘移除一层像素,直到只剩下单像素宽度的骨架
  • RAG优化进阶 - LinkAI智能体平台的知识库落地实践
  • 数据库架构开发知识库体系
  • 【JavaEE】(17) MyBatis 基础
  • 趣打印高级版--手机打印软件!软件支持多种不同的连接方式,打印神器有这一个就够了!
  • sourcetree 拉取代码
  • HTML--pre标签的作用
  • SpringCloud微服务架构入门指南
  • 8 webUI中-Controlnet(控制与约束)的应用分类与使用方法
  • CentOS 系统 Java 开发测试环境搭建手册