最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何使用Prometheus監(jiān)控JVM

本篇文章為大家展示了如何使用Prometheus監(jiān)控JVM,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)公司,為您提供網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計,對服務(wù)成都混凝土攪拌站等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗。創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務(wù),我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

概述

當(dāng)你的 Java 業(yè)務(wù)容器化上 K8S 后,如果對其進(jìn)行監(jiān)控呢?Prometheus 社區(qū)開發(fā)了 JMX Exporter 來導(dǎo)出 JVM 的監(jiān)控指標(biāo),以便使用 Prometheus 來采集監(jiān)控數(shù)據(jù)。下面將介紹如何利用 Prometheus 與 JMX Exporter 來監(jiān)控你 Java 應(yīng)用的 JVM。

什么是 JMX Exporter ?

JMX Exporter 利用 Java 的 JMX 機(jī)制來讀取 JVM 運行時的一些監(jiān)控數(shù)據(jù),然后將其轉(zhuǎn)換為 Prometheus 所認(rèn)知的 metrics 格式,以便讓 Prometheus 對其進(jìn)行監(jiān)控采集。

那么,JMX 又是什么呢?它的全稱是:Java Management Extensions。 顧名思義,是管理 Java 的一種擴(kuò)展框架,JMX Exporter 正是基于此框架來讀取 JVM 的運行時狀態(tài)的。

如何使用 JMX Exporter 暴露 JVM 監(jiān)控指標(biāo) ?

下面介紹如何通過 JMX Exporter 來暴露 Java 應(yīng)用的 JVM 監(jiān)控指標(biāo)。

JMX Exporter 的兩種用法

JMX-Exporter 提供了兩種用法:

  1. 啟動獨立進(jìn)程。JVM 啟動時指定參數(shù),暴露 JMX 的 RMI 接口,JMX-Exporter 調(diào)用 RMI 獲取 JVM 運行時狀態(tài)數(shù)據(jù),轉(zhuǎn)換為 Prometheus metrics 格式,并暴露端口讓 Prometheus 采集。

  2. JVM 進(jìn)程內(nèi)啟動(in-process)。JVM 啟動時指定參數(shù),通過 javaagent 的形式運行 JMX-Exporter 的 jar 包,進(jìn)程內(nèi)讀取 JVM 運行時狀態(tài)數(shù)據(jù),轉(zhuǎn)換為 Prometheus metrics 格式,并暴露端口讓 Prometheus 采集。

官方不推薦使用第一種方式,一方面配置復(fù)雜,另一方面因為它需要一個單獨的進(jìn)程,而這個進(jìn)程本身的監(jiān)控又成了新的問題,所以本文重點圍繞第二種用法講如何在 K8S 環(huán)境下使用 JMX Exporter 暴露 JVM 監(jiān)控指標(biāo)。

打包鏡像

使用第二種用法,啟動 JVM 時需要指定 JMX Exporter 的 jar 包文件和配置文件。jar 包是二進(jìn)制文件,不好通過 configmap 掛載,配置文件我們幾乎不需要修改,所以建議是直接將 JMX Exporter 的 jar 包和配置文件都打包到業(yè)務(wù)容器鏡像中。

首先準(zhǔn)備一個制作鏡像的目錄,放入 JMX Exporter 配置文件 prometheus-jmx-config.yaml:

---
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false

: 更多配置項請參考官方文檔。

然后準(zhǔn)備 jar 包文件,可以在 jmx_exporter 的 Github 頁面找到最新的 jar 包下載地址,下載到當(dāng)前目錄:

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.13.0/jmx_prometheus_javaagent-0.13.0.jar

再準(zhǔn)備 Dockerfile,這里以 tomcat 為例:

FROM tomcat:jdk8-openjdk-slim
ADD prometheus-jmx-config.yaml /prometheus-jmx-config.yaml
ADD jmx_prometheus_javaagent-0.13.0.jar /jmx_prometheus_javaagent-0.13.0.jar

最后編譯鏡像:

docker build . -t ccr.ccs.tencentyun.com/imroc/tomcat:jdk8

搞定!如果想要更簡單,可以利用 docker 多階段構(gòu)建,省掉手動下載 jar 包的步驟,Dockerfile 示例:

FROM ubuntu:16.04 as jar
WORKDIR /
RUN apt-get update -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget
RUN wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.13.0/jmx_prometheus_javaagent-0.13.0.jar

FROM tomcat:jdk8-openjdk-slim
ADD prometheus-jmx-config.yaml /prometheus-jmx-config.yaml
COPY --from=jar /jmx_prometheus_javaagent-0.13.0.jar /jmx_prometheus_javaagent-0.13.0.jar

部署 Java 應(yīng)用

有了打包好的鏡像,下一步我們看下如何部署應(yīng)用到 K8S,關(guān)鍵點在于如何修改 JVM 啟動參數(shù)以便啟動時加載 JMX Exporter。JVM 啟動時會讀取 JAVA_OPTS 環(huán)境變量,作為額外的啟動參數(shù),所以我們部署時可以為應(yīng)用增加一下這個環(huán)境變量,示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: ccr.ccs.tencentyun.com/imroc/tomcat:jdk8
        env:
        - name: JAVA_OPTS
          value: "-javaagent:/jmx_prometheus_javaagent-0.13.0.jar=8088:/prometheus-jmx-config.yaml"

---
apiVersion: v1
kind: Service
metadata:
  name: tomcat
  labels:
    app: tomcat
spec:
  type: ClusterIP
  ports:
  - port: 8080
    protocol: TCP
    name: http
  - port: 8088
    protocol: TCP
    name: jmx-metrics
  selector:
    app: tomcat
  • 啟動參數(shù)格式: -javaagent:=:。

  • 這里使用了 8088 端口暴露 JVM 的監(jiān)控指標(biāo),可自行更改。

添加 Prometheus 監(jiān)控配置

暴露了 JVM 的監(jiān)控指標(biāo),現(xiàn)在來配置下 Prometheus,讓監(jiān)控數(shù)據(jù)被采集到,配置示例:

    - job_name: tomcat
      scrape_interval: 5s
      kubernetes_sd_configs:
      - role: endpoints
        namespaces:
          names:
          - default
      relabel_configs:
      - action: keep
        source_labels:
        - __meta_kubernetes_service_label_app
        regex: tomcat
      - action: keep
        source_labels:
        - __meta_kubernetes_endpoint_port_name
        regex: jmx-metrics

如果是安裝了 prometheus-operator,也可以通過創(chuàng)建 ServiceMonitor 的 CRD 對象來配置 Prometheus:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: tomcat
  namespace: default
  labels:
    app: tomcat
spec:
  endpoints:
  - port: jmx-metrics
    interval: 5s
  namespaceSelector:
    matchNames:
    - default
  selector:
    matchLabels:
      app: tomcat

添加 Grafana 監(jiān)控面板

采集到了數(shù)據(jù),下面看下如何展示數(shù)據(jù),如果熟悉 Prometheus 和 Grafana,可自行根據(jù)指標(biāo)設(shè)計需要的面板,社區(qū)也有提供現(xiàn)成的,不過都有些老了,部分視圖可能展示不出來,用的比較多的是 https://grafana.com/grafana/dashboards/8563 ,可以直接導(dǎo)入,面板效果圖:

如何使用Prometheus監(jiān)控JVM

上述內(nèi)容就是如何使用Prometheus監(jiān)控JVM,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:如何使用Prometheus監(jiān)控JVM
文章來源:http://fisionsoft.com.cn/article/jgjcch.html