prometheus jmx exporter + prometheus + grafana

2 篇文章 0 订阅
1 篇文章 0 订阅

一、Java 应用接入 prometheus jmx exporter

1.1 下载 prometheus jmx exporter

下载地址:https://github.com/prometheus/jmx_exporter/releases

1.2 jar 应用接入 prometheus jmx exporter

java -javaagent:jmx_prometheus_javaagent-0.18.0.jar=12345:config.yaml -jar yourJar.jar
  • mx_prometheus_javaagent-0.18.0.jar : 是Exporter包所在路径;
  • 12345 :Exporter 暴露HTTP服务端口;
  • config.yaml :Exporter 配置文件所在路径

1.2.1 一个最小化的 config.yaml:

hostPort: localhost:9999
rules:
- pattern: ".*"

常用yaml示例:https://github.com/prometheus/jmx_exporter/tree/main/example_configs

1.2.2 查看监控数据

访问 http://localhost:12345/metrics 查看监控数据
image.png

1.3 Tomcat 接入 prometheus jmx exporter

1.3.1 prometheus jmx export 准备

在 {CATALINA_HOME} 下新建 prometheus-exporter 目录,将 jmx_prometheus_javaagent-0.18.0.jartomcat.yml 放到此目录下
image.png

1.3.2 {CATALINA_HOME}/bin/catalina.sh 中添加 JVM 参数

PROMETHEUS_JMX_EXPORTER_OPTS="-javaagent:../prometheus-exporter/jmx_prometheus_javaagent-0.18.0.jar=12345:../prometheus-exporter/tomcat.yml"
JAVA_OPTS="$JAVA_OPTS $PROMETHEUS_JMX_EXPORTER_OPTS"

image.png

1.3.3 启动Tomcat

cd ${CATALINA_HOME}
./startup.sh

1.3.4 访问prometheus jmx exporter HTTP服务获取监控数据

http://ip:12345/metrics
image.png

二、prometheus 部署

2.1 docker 启动 prometheus

#!/bin/bash

run_id=`docker ps | grep "prometheus" |  awk '{print $1}'`
run_name=`docker ps | grep "prometheus" |  awk '{print $12}'`
if [ -n "$run_id" ]
then
    echo "docker $run_name is running, exit shell"
    exit 0
fi

c_id=`docker ps -a | grep "prometheus" |  awk '{print $1}'`
if [ -n "$c_id" ]
then
    echo "restarting prometheus container ..., port: 9090"
    docker start $c_id
    echo "restarting prometheus container ..., port: 9090"
else
    echo "starting prometheus container ..., port: 9090"
    docker run --name prometheus \
    -d \
    -p 9090:9090 \
    -v /Users/yangdejun/Documents/apps/docker-apps/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
    echo "startted prometheus container ..., port: 9090"
fi

2.2 访问prometheus

http://localhost:9090
image.png

2.3 修改 prometheus.yml 配置扫描 prometheus jmx exporter

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
  # 添加扫描目标
  - job_name: "Tomcat"
    static_configs:
      - targets: ["192.168.1.10:12345"]

2.4 重启 prometheus 和 Java 应用

docker restart prometheus

重启Java应用后访问prometheus即可看到应用已经接入到prometheus
image.png

三、Grafana 部署

3.1 docker 启动 Grafana

#!/bin/bash

run_id=`docker ps | grep "grafana" |  awk '{print $1}'`
run_name=`docker ps | grep "grafana" |  awk '{print $12}'`
if [ -n "$run_id" ]
then
    echo "docker $run_name is running, exit shell"
    exit 0
fi

c_id=`docker ps -a | grep "grafana" |  awk '{print $1}'`
if [ -n "$c_id" ]
then
    echo "restarting grafana container ..., port: 3000"
    docker start $c_id
    echo "restarting grafana container ..., port: 3000"
else
    echo "starting grafana container ..., port: 3000"
    docker run --name grafana \
    -d \
    -p 3000:3000 \
    grafana/grafana
    echo "startted grafana container ..., port: 3000"
fi

3.2 访问Grafana

http://localhost:3000
默认用户:admin
默认密码:admin
image.png

3.3 添加数据源

Configuration -> Data sources -> Add data source 选择 Prometheus
image.png
image.png
image.png
image.png
image.png

3.4 添加dashboard

Dashboards -> Import
image.png
image.png
image.png
image.png

3.5 官方 Dashboard 模板

https://grafana.com/grafana/dashboards/
image.png
image.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus Exporter是一种用于将JVM的指标信息暴露给Prometheus监控系统的工具。您提到的源码分析可以参考以下步骤: 1. 首先,您需要下载jmx_exporter,并将其jar包(jmx_prometheus_javaagent-0.16.1.jar)放置在Kafka的家目录下。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [prometheus(jvm_exporter监控kafka jvm)](https://blog.csdn.net/weixin_45837370/article/details/121232020)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [jmx_exporter源码分析](https://blog.csdn.net/qqqq0199181/article/details/83792364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [prometheus jmx_exporter 源码分析](https://blog.csdn.net/weixin_40455124/article/details/105693264)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值