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 ...
随机推荐
- java基础04-数据类型扩展及面试题
java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...
- leetcode 46. 全排列 及 47. 全排列 II
46. 全排列 问题描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3 ...
- 马哈鱼血缘分析工具部署介绍--win 10
马哈鱼血缘分析工具部署介绍--win 10 随着大数据技术的发展与普及,数据治理和数据质量变得越来越重要,数据血缘分析在业界悄然兴起并得到了广泛流行,马哈鱼是国内少有的一款专业且易用的血缘分析工具.本 ...
- [开发笔记usbTOcan]系统架构设计
SYS.3 | 系统架构设计 系统架构设计过程的目的是建立一个系统体系结构设计,并确定哪些系统需求分配给系统的哪些元素,并根据确定的标准评估系统架构. 系统结构设计需要做一下工作: 开发系统架构设计. ...
- 【练习】rust中的复制语义和移动语义
1.基本类型都是复制语义的 fn main(){ let a = 123; { #[allow(unused_variables)] let b = a; //如果是移动语义,那么后续的a将不再有效 ...
- GUI系统
通常情况下,一般使用QT来制作Linux系统的GUI,但是由于我们团队对于游戏有着狂热的热爱,以及有游戏的相关开发经验. 在做过ROS与Arduino通信,Unity3d与Arduino通信后,我感觉 ...
- Scala统计一个文件所有单词出现的次数
1 import scala.io.Source 2 3 object WordCount extends App { 4 5 val path = "C:\\Users\\Administ ...
- vi与vim编辑器与解决vim编辑异常
目录 一:vi与vim编辑器 二:解决vim编辑异常 一:vi与vim编辑器 vim是vi的升级版编辑器,就是vim比vi丰富一些. 1.安装vim 命令 yum install vim -y 2.打 ...
- python12day
昨日回顾 可迭代对象: 可以更新迭代的实实在在的值. 内部含有'__iter__'方法. str.tuple.dict.set.range 优点:操作方法多,灵活直观 缺点:占用内存. 迭代器: 可以 ...
- Photoshop如何快速扣取图标
由于图标往往与背景色区别很大,因此首先使用魔棒工具快速选择出图标 有时候选择出来是图标,有时候是背景色 可以通过选择反向来调节(右键即可) ctrl + J 提取出选择的区域 这时进行等分裁剪即可 点 ...