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)

(下面management默認內容也是,可以不配)

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項目監控

https://www.cnblogs.com/uncleyong/p/16335583.html

 

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】

 

【性能項目實戰:jmeter+k8s+微服務+skywalking+efk】匯總

詳見:https://www.cnblogs.com/uncleyong/p/15475614.html

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM