k8s部署promentheus 使用 grafana监控springboot
创始人
2024-06-03 02:42:22
0

k8s部署promentheus 使用 grafana监控springboot

大纲

  • 基础准备
  • 部署springboot pod (k8s集群内)
  • 配置springboot pod DSN 域名
  • 安装promentheus (k8s集群内)
  • 安装grafana (k8s集群外)

基础准备

  • 1 k8s集群 1.17
  • 2 promentheus-2.34.0
  • 3 grafana已经安装

整体架构图如下,在k8s集群内部部署promentheus 用于收集各个业务服务的运行时JVM状态

在这里插入图片描述

部署springboot pod

springboot使用my-docker-demo-sp-user 这个项目
my-docker-demo-sp-user中已经存在两个接口 /cpu 、/memory 用于消耗cpu 和 内存 用于后续状态监控报警

@RequestMapping("/memory")public String memery() {System.out.println(list.size());new Thread(()->{while(true){list.add(new String[1024][1024]);System.out.println("加数据");}}).start();return "ok\n\n";}public String cpu(@RequestParam("s") int s) {int cpu = Runtime.getRuntime().availableProcessors();.... 省略for (int i=0;i

将 springboot 制作为镜像

制作镜像注意用到4个文件

  • config.yml 配置监控metrics
  • Dockerfile 镜像制作文件
  • my-docker-demo-sp-user.jar 打包后的jar
  • jmx_prometheus_javaagent-0.17.2.jar 用于监控暴露metrics

相关文件在 my-docker-demo-sp-user/deploy 文件夹下

注意Dockerfile 使用-javaagent 暴露metrics 端口为12345

ENTRYPOINT ["java","-javaagent:jmx_prometheus_javaagent-0.17.2.jar=12345:config.yml", "-jar","my-docker-demo-sp-user.jar"]

docker 镜像制作参考文章 《docker创建java镜像文件总结 快速上手》

在这里插入图片描述

推送镜像到阿里云私库

docker tag user-service registry.cn-hangzhou.aliyuncs.com/jimliu/user-service
docker push registry.cn-hangzhou.aliyuncs.com/jimliu/user-service

在这里插入图片描述

阿里云私库参考文章 《阿里云docker私库使用总结》

制作springboot pod部署文件

部署pod有两个关键点

  • 1 配置Pod自定义域名
  • 2 创建headless Service

Pod自定义域名参考 文章 《k8s-Pod域名学习总结》

deploy.yaml内容如下

apiVersion: apps/v1
kind: Deployment
metadata:name: user-service-deploy
spec:....省略template:metadata:labels:app: user-service   spec:     # hostname + subdomain 自定义Pod的域名hostname: user-service-hostsubdomain: user-service-inner-domaincontainers:....省略  
---apiVersion: v1
kind: Service
metadata:  name: user-service-inner-domain  # 注意name为 pod中 subdomain 的名称
spec:selector:  app: user-serviceclusterIP: None  #注意  clusterIP 为None

详细内容见 my-docker-demo-sp-user/deploy/deploy.yaml

此时springboot pod 在k8s集群内的域名如下
user-service-host.user-service-inner-domain.default.svc.cluster.local

测试Pod 部署情况以及域名情况

在这里插入图片描述

到此 springboot pod部署完成

安装promentheus

安装promentheus 需要注意一下几点

  • 1 创建一个独立namespace 与业务代码隔离
  • 2 使用ConfigMap 保存promentheus 配置信息
  • 3 指定promentheus 启动参数让其可以动态加载配置

创建Namespace与ConfigMap

ConfigMap配置如下

apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-confignamespace: promentheus
data:prometheus.yml: |global:scrape_interval:     15sevaluation_interval: 15sscrape_configs:- job_name: 'user-service-metrics'metrics_path: /metricsstatic_configs:- targets: ['user-service-host.user-service-inner-domain.default.svc.cluster.local:12345']

在这里插入图片描述

部署promentheus 服务端

关键是 添加**–web.enable-lifecycle** 参数 让prometheus热加载配置文件

spec:containers:- image: bitnami/prometheus:2.34.0name: prometheus-containerscommand:- "/opt/bitnami/prometheus/bin/prometheus" #注意prometheus命令位置args:- "--config.file=/etc/prometheus/prometheus.yml"- "--storage.tsdb.path=/prometheus"- "--storage.tsdb.retention.time=12h"- "--web.enable-lifecycle"

在这里插入图片描述

测试ok
在这里插入图片描述

测试动态添加新配置

再部署一个order-service pod

此时 order-service pod的集群内域名为 
order-service-host.order-service-inner-domain.default.svc.cluster.local

编辑prometheus configmap

kubectl edit cm prometheus-config  -n promentheus

在这里插入图片描述
在这里插入图片描述

刷新prometheus配置

curl -X POST http://192.168.0.160:9090/-/reload

在这里插入图片描述

配置 grafana 查看springboot项目监控

配置grafana 面板用于监控springboot 项目

grafana中配置JVM监控面板参考 《prometheus监控springboot项目 使用grafana展示》

配置prometheus数据源

配置数据源 使用上一步中配置的prometheus

在这里插入图片描述

添加新的面板

这里使用的是
https://grafana.com/grafana/dashboards/8563-jvm-dashboard/

在这里插入图片描述

测试监控

调用接口让cpu使用率达到 100%

http://10.244.1.46:5588/cpu?s=90

在这里插入图片描述

在grafana面板上可以看到效果

在这里插入图片描述

调用接口让内存使用率达到 100%

curl http://10.244.1.46:5588/memory

在这里插入图片描述

在grafana面板上可以看到效果

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...