前言

虽然可以使用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】汇总

详见:https://www.cnblogs.com/uncleyong/p/15475614.html

prometheus监控java项目(jvm等):k8s外、k8s内的更多相关文章

  1. kubernetes生态--交付prometheus监控及grafana炫酷dashboard到k8s集群

    由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控: 什么是Prometheus? Prometheus是由Sou ...

  2. Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能

    转载自:https://cloud.tencent.com/developer/article/1508319 文章目录1.Micrometer 介绍2.环境.软件准备3.Spring Boot 工程 ...

  3. k8s中prometheus监控k8s外mysql

    k8s外安装mysql https://www.cnblogs.com/uncleyong/p/10739530.html 配置MySQL Exporter采集MySQL监控数据 创建yaml文件:v ...

  4. 手把手教你使用 Prometheus 监控 JVM

    概述 当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控 ...

  5. Prometheus监控k8s企业级应用

    Prometheus架构图 常见的镜像 pod 备注 kube-state-metric 用来收集K8S基本状态信息的监控代理 node-exporter 专门用来收集K8S运算节点基础信息,需要部署 ...

  6. Prometheus 监控K8S Node监控

    Prometheus 监控K8S Node监控 Prometheus社区提供的NodeExporter项目可以对主机的关键度量指标进行监控,通过Kubernetes的DeamonSet可以在各个主机节 ...

  7. K8s之Prometheus监控

    目录 容器监控与报警 Prometheus prometheus简介 prometheus系统架构 prometheus 安装方式 容器方式安装prometheus operator部署 克隆项目 创 ...

  8. 利用JConsole工具监控java程序内存和JVM

    一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29.218:7070/training/ 部署的应用服务器为tomcat6.028 启动tomcat服 ...

  9. (转)利用JConsole工具监控java程序内存和JVM

    转自:http://www.cnblogs.com/luihengk/p/5446279.html 一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29 ...

随机推荐

  1. 开源数据可视化BI工具SuperSet(安装)

    本次安装教程共分两大步骤,因为Superset 基于python3编写的web应用(flask) 所以要求python3环境,故首先要将linux系统自带的环境进行升级,已经是python3的可跳过- ...

  2. Java中的标签语法(类似于C语言goto循环体)

    Java中的标签语法(少用) 101到150的质数 此法类似于C语言中的GOTO循环 public static void main(String[] args) { int count=0; //标 ...

  3. 使用Hot Chocolate和.NET 6构建GraphQL应用(1)——GraphQL及示例项目介绍

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 前言 这篇文章是这个系列的第一篇,我们会简单地讨论一下GraphQL,然后介绍一下这个系列将会使用的示例项目. 关 ...

  4. 从带Per-Building数据的KML/COLLADA中创建3D Tiles

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 许多Cesium的使用者经常需要将整个城市的数十万个三维建筑可视 ...

  5. Ajax_Post用法

    Ajax_Post用法 post方法的用法其实跟get是大同小异的 唯一不同的地方就是我们需要修改server.js的文件 只需要将get修改为post即可 那么我为了方便操作我这里选择的是直接在下面 ...

  6. java内部类概述和修饰符

    1 package face_09; 2 /* 3 * 内部类访问特点: 4 * 1,内部类可以直接访问外部类的成员. 5 * 2,外部类要访问内部类,必须建立内部类的对象. 6 * 7 * 一把用于 ...

  7. Github基于Web的编辑器

    在 GitHub 存储库中使用基于 Web 的编辑器来创建和提交代码更改. 关于 GitHub 基于 Web 的编辑器 基于 Web 的编辑器引入了全新的轻量级编辑体验,可完全在您的浏览器中运行.使用 ...

  8. python删除列表重复元素

    用list类的sort方法 l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) l2.sort(key=l1.index) print l2

  9. 《HelloGitHub》第 70 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  10. spring 异常处理的方式?

    一.使用SimpleMappingExceptionResolver解析器 1.1在mvc中进行 配置. <?xml version="1.0" encoding=" ...