跳到主要内容
版本:1.12.0

Java profiling 数据采集

概述

light-profiling-java-collect.sh 是一个用于在 Java 应用程序上执行 profiling 的 shell 脚本。它使用 JFR 来收集应用程序的性能数据,并将其上传到 Lighthouse。

前置条件

前置条件
  1. 安装 light-agent
  2. 登录 Lighthouse 平台, 进入「数据采集」模块,获取 light-agent 安装指令和安装步骤。

环境变量说明

以下是一些重要的环境变量及其默认值和用途:

  • LIGHT_WAY_URL:
    • 默认值: http://localhost:8085
    • 用途: 指定 Lighthouse 平台所在的机器 ip,用于上传生成的 JFR 文件。
  • APP_ENV:
    • 默认值: dev
    • 用途: 指定应用的环境,如 dev、staging、prod 等。
  • APP_VERSION:
    • 默认值: 1.0.0
    • 用途: 指定应用的版本号。
  • HOST_NAME:
    • 默认值: 当前主机名
    • 用途: 指定主机名称,用于标识数据来源。
  • SERVICE_NAME:
    • 默认值: 空
    • 用途: 指定服务名称,用于标识数据来源。
  • PROFILING_DURATION:
    • 默认值: 60 秒
    • 用途: 指定 profiling 的持续时间(以秒为单位)。
  • PROFILING_EVENT:
    • 默认值: cpu,alloc,wall,lock
    • 用途: 指定 profiling 的事件类型,支持的事件类型包括 cpu、alloc、wall、 lock、live 等。
  • PROCESS_ID:
    • 默认值: 空
    • 用途: 指定需要采集的 Java 进程 ID,多个进程 ID 可以用逗号分隔。
  • PROFILING_TAGS:
    • 默认值: 空
    • 用途: 指定额外的标签,用于标识和分类数据。

如何执行

  1. 准备环境

    确保系统已安装以下工具和库:

    • bash
    • curl v- gzip
    • uuidgen
    • jps(通常随 JDK 一起安装)
  2. 设置可执行权限,确保脚本具有可执行权限。

 cd /usr/local/light-agent/profiling/java
chmod +x light-profiling-java-collect.sh
  1. 设置环境变量 根据需要设置环境变量。可以在脚本中直接设置,或者在运行脚本之前设置。
export LIGHT_WAY_URL=http://your-light-trans-url:8085     
export APP_ENV=prod
export APP_VERSION=2.0.0
export HOST_NAME=your-hostname
export SERVICE_NAME=your-service-name
export PROFILING_DURATION=120
export PROFILING_EVENT=cpu,alloc,wall
export PROCESS_ID=1234,5678
export PROFILING_TAGS=tag1,tag2
  1. 运行脚本 运行脚本以开始采集 profiling 数据。
cd /usr/local/light-agent/profiling/java
nohup ./light-profiling-java-collect.sh &
  1. 查看日志 脚本会在 runtime 目录下生成日志文件,每个进程 ID 对应一个日志文件。可以通过以下命令查看日志:
cd /usr/local/light-agent/profiling/java
cat logs/1234.log
  1. 停止脚本

脚本会无限循环运行,直到手动停止。可以使用 Ctrl+C 终止脚本。

注意事项

  • 日志文件:脚本会将日志追加到 runtime 目录下的对应文件中。如果需要清空日志文件,可以手动删除或清空这些文件。
  • 资源消耗:长时间运行脚本可能会占用较多系统资源,请根据实际情况调整 PROFILING_DURATIONPROFILING_EVENT
  • 网络连接:确保 LIGHT_WAY_URL 服务地址可达,否则上传数据会失败。Lighthouse 安装所在的机器 ip ,端口号默认是 8085。

常见问题

  • Q:为什么没有生成日志文件?

    A:确保 runtime 目录存在且有写权限。如果没有生成日志文件,可能是由于脚本中没有找到对应的 Java 进程。

  • Q:上传数据失败怎么办?

    A:检查 LIGHT_WAY_URL 服务地址是否正确,网络连接是否正常。查看脚本输出的错误信息,以便定位问题。

  • Q:如何调整 profiling 事件类型?

    A:通过设置 PROFILING_EVENT 环境变量来调整 profiling 事件类型。 例如:export PROFILING_EVENT=cpu,alloc,wall,lock。`