prometheus监控java项目(jvm等):k8s外、k8s内
前言
虽然可以使用jvisualvm之类的工具监控java项目,但是集群环境下,还是捉襟见肘,下面介绍如何用主流的prometheus来监控java项目。
java项目配置
在pom.xml中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--暴露histogram-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.5.1</version>
<!--<version>1.1.3</version>-->
</dependency>
<!-- 可选, 用于进程内存使用图表 -->
<dependency>
<groupId>io.github.mweirauch</groupId>
<artifactId>micrometer-jvm-extras</artifactId>
<version>0.2.0</version>
</dependency>
修改spring boot配置(application.yml)
server:
port: 8096 spring:
application:
name: gift management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: 'prometheus' # 暴露/actuator/prometheus
metrics:
tags:
application: ${spring.application.name} # 暴露的数据中添加application label
非k8s下java项目监控
打包:mvn clean package
启动项目:java -jar xxx.jar
请求:http://xxx:8096/qzcsbj/actuator/prometheus,查看暴露的数据

在Prometheus中添加配置:vim prometheus.yml
- job_name: "gift"
metrics_path: "/qzcsbj/actuator/prometheus"
static_configs:
- targets: ["qzcsbj:8096"]
重启prometheus:systemctl restart prometheus
访问prometheus:http://ip:9090/targets
targets下可以看到这个端点

grafana导入模板:4701
效果如下:

k8s下java项目监控
打包:mvn clean package -Dmaven.test.skip=true
打镜像:docker build -t 192.168.117.160/gifts/gift:v1 .
把镜像推送到镜像仓库:docker push 192.168.117.160/gifts/gift:v1
编写资源yaml文件:deploy和svc
vim gift.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gift-java-deploy
namespace: gift
spec:
replicas: 1
selector:
matchLabels:
k8s-app: gift
template:
metadata:
labels:
k8s-app: gift
spec:
imagePullSecrets:
- name: gifts-registry containers:
- name: gift
image: 192.168.117.160/gifts/gift:v1215
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8096 ---
apiVersion: v1
kind: Service
metadata:
name: gift-java-deploy-svc
namespace: gift
labels:
k8s-app: gift-java-deploy-svc
spec:
type: ClusterIP
selector:
k8s-app: gift
ports:
- name: gift-java-deploy-svc-api
port: 8096
targetPort: 8096
protocol: TCP
创建资源:kubectl apply -f gift.yaml

查看资源:kubectl get all -n gift

编写servicemonitor资源yaml文件:
vim gift-sm.yaml
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: java-servicemonitor
namespace: monitoring
labels:
k8s-app: gift
spec:
endpoints:
- port: gift-java-deploy-svc-api
interval: 30s
scheme: http
path: '/qzcsbj/actuator/prometheus'
selector:
matchLabels:
k8s-app: gift-java-deploy-svc
namespaceSelector:
matchNames:
- gift
创建资源:kubectl apply -f gift-sm.yaml

查看资源:kubectl get servicemonitor -n monitoring

查看prometheus端口:kubectl get svc -n monitoring

访问prometheus:http://192.168.117.162:30576/
config已经自动生成配置:搜索gift

自动发现

targets

查询数据:jvm_threads_live_threads

grafana导入模板:12856
效果:


思考:看到这个监控数据,你的思路是?

【bak】:https://www.cnblogs.com/uncleyong/p/15688404.html
【性能项目实战:jmeter+k8s+微服务+skywalking+efk】汇总
prometheus监控java项目(jvm等):k8s外、k8s内的更多相关文章
- kubernetes生态--交付prometheus监控及grafana炫酷dashboard到k8s集群
由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控: 什么是Prometheus? Prometheus是由Sou ...
- Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
转载自:https://cloud.tencent.com/developer/article/1508319 文章目录1.Micrometer 介绍2.环境.软件准备3.Spring Boot 工程 ...
- k8s中prometheus监控k8s外mysql
k8s外安装mysql https://www.cnblogs.com/uncleyong/p/10739530.html 配置MySQL Exporter采集MySQL监控数据 创建yaml文件:v ...
- 手把手教你使用 Prometheus 监控 JVM
概述 当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控 ...
- Prometheus监控k8s企业级应用
Prometheus架构图 常见的镜像 pod 备注 kube-state-metric 用来收集K8S基本状态信息的监控代理 node-exporter 专门用来收集K8S运算节点基础信息,需要部署 ...
- Prometheus 监控K8S Node监控
Prometheus 监控K8S Node监控 Prometheus社区提供的NodeExporter项目可以对主机的关键度量指标进行监控,通过Kubernetes的DeamonSet可以在各个主机节 ...
- K8s之Prometheus监控
目录 容器监控与报警 Prometheus prometheus简介 prometheus系统架构 prometheus 安装方式 容器方式安装prometheus operator部署 克隆项目 创 ...
- 利用JConsole工具监控java程序内存和JVM
一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29.218:7070/training/ 部署的应用服务器为tomcat6.028 启动tomcat服 ...
- (转)利用JConsole工具监控java程序内存和JVM
转自:http://www.cnblogs.com/luihengk/p/5446279.html 一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29 ...
随机推荐
- NPOI导出例子
public static string ExportAOrder(ExportData data) { var cellHeard = new Dictionary<string, strin ...
- eclipse导入项目jdk版本不一样
一:eclipse导入项目jdk版本不一样解决方案 参考博文: https://www.cnblogs.com/chenmingjun/p/8472885.html 选中项目右键 --> Pro ...
- 基于 NFS 搭建便捷远程硬盘
基于 NFS 搭建便捷远程硬盘 知识准备: 一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向 ...
- StringBuffer类(增删改查及长度可变原理)
1 package cn.itcast.p2.stringbuffer.demo; 2 3 public class StringBufferDemo { 4 5 public static void ...
- 机器学习-逻辑回归与SVM的联系与区别
(搬运工) 逻辑回归(LR)与SVM的联系与区别 LR 和 SVM 都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题,如LR的Softmax回归用在深度学习的多分类 ...
- ajax返回获取的值在其他地方获取
继续上个问题的后续问题,因为要获取token进行身份验证,但是又不想写死token值,通过以下方式解决: 1.定义一个分离出来的方法. 2.定义一个全局变量.局部变量. 3.把ajax改成同步的.as ...
- 使用ajax登录验证,第一次点击登录按钮无反应,第二次点击才能正常运行。
问题描述: 使用ajax进行登录验证时,第一次点击登录按钮无反应,第二次点击才能进去. 解决方法: 原来的代码 <form action="" method="po ...
- 洛谷P1060 java题解
题目描述: 解题思路: 重要度相当于价值的倍率 (物品价格*重要度=价值) 经典的背包问题 直接DP把各种情况下的最优解打表出来取最后一个就行了 代码: import java.util.Scanne ...
- 《Spring Boot 实战纪实》之过滤器
导航 什么是过滤器 Spring的过滤器 Filter定义 过滤的对象 典型应用 过滤器的使用 Filter生命周期 过滤器链 自定义敏感词过滤器 新增自定义过滤器 添加 @WebFilter注解 添 ...
- 关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
目录 关于mysql,需要掌握的基础(一): 1.了解数据库sql.数据库系统.数据库管理系统的概念. 2.了解DDL.DML.DQL语句是什么? 3.了解存储引擎.存储引擎[InnoDB 和 MyI ...