{"id":20254702,"url":"https://github.com/guancecloud/agent-attach-java","last_synced_at":"2025-10-24T10:49:13.863Z","repository":{"id":62982237,"uuid":"564199806","full_name":"GuanceCloud/agent-attach-java","owner":"GuanceCloud","description":"attach java agent","archived":false,"fork":false,"pushed_at":"2023-12-11T07:59:48.000Z","size":10732,"stargazers_count":5,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-10T09:05:12.498Z","etag":null,"topics":["agent","attach","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GuanceCloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-10T07:53:24.000Z","updated_at":"2024-09-24T03:49:18.000Z","dependencies_parsed_at":"2023-12-11T08:54:57.085Z","dependency_job_id":null,"html_url":"https://github.com/GuanceCloud/agent-attach-java","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/GuanceCloud/agent-attach-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuanceCloud%2Fagent-attach-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuanceCloud%2Fagent-attach-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuanceCloud%2Fagent-attach-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuanceCloud%2Fagent-attach-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GuanceCloud","download_url":"https://codeload.github.com/GuanceCloud/agent-attach-java/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuanceCloud%2Fagent-attach-java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280783852,"owners_count":26390277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","attach","java"],"created_at":"2024-11-14T10:34:30.791Z","updated_at":"2025-10-24T10:49:13.846Z","avatar_url":"https://github.com/GuanceCloud.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agent-attach-java\r\n\r\n## 说明\r\n\r\n默认将 dd-java-agent.jar 动态插入正在运行的 java 服务中。 也可以使用别的 agent。\r\n\r\n## 原理\r\n\r\nAttach 根本原理是使用文件 Socket 通讯, 就是往一个文件中写入 `load instrument xxx.jar=params`, 再给 jvm 一个 SIGQUIT 信号,\r\n之后 jvm 读取 socket 文件, 加载对应的 agent.\r\n\r\n## how to use\r\n\r\n使用 -h 查看：\r\n\r\n```txt\r\nroot@q-PC:agent-attach-java$ java -jar target/agent-attach-java-jar-with-dependencies.jar -h\r\njava -jar agent-attach-java.jar [-options \u003cdd options\u003e]\r\n                                [-agent-jar \u003cagent filepath\u003e]\r\n                                [-pid \u003cpid\u003e]\r\n                                [-displayName \u003cservice name/displayName\u003e]\r\n                                [-h]\r\n                                [-help]\r\n[-options]:\r\n   this is dd-java-agnet.jar env, example:\r\n       dd.agent.port=9529,dd.agent.host=localhost,dd.service=serviceName,...\r\n[-agent-jar]:\r\n   default is: /usr/local/ddtrace/dd-java-agent.jar\r\n[-pid]:\r\n   service PID String\r\n[-displayName]:\r\n   service name\r\nNote: -pid or -displayName must have a non empty !!!\r\n\r\n[-download]\r\n    guance ddtrace: https://static.guance.com/dd-image/dd-java-agent.jar\r\nexample command line:\r\njava -jar agent-attach-java.jar -options 'dd.service=test,dd.tag=v1'\\\r\n -displayName tmall.jar \\\r\n -agent-jar /usr/local/ddtrace/dd-java-agent.jar\r\n\r\n```\r\n\r\n参数说明：\r\n\r\n- \"-options\" ddtrace 参数 ：\"dd.agent.host=localhost,dd.agent.port=9529,dd.service=mytest ... \"\r\n- \"-agent-jar\" agent 路径 默认为：`/usr/local/ddtrace/dd-java-agent.jar`\r\n- \"-pid\" 进程 pid\r\n- \"-displayName\" 进程名称 比如 `-displayName tmall.jar` 注意 pid 和 displayName 必须有一个非空。\r\n- \"-download\" 观测云版本的 ddtrace 地址: `https://static.guance.com/dd-image/dd-java-agent.jar`\r\n- \"-h or -help\" 帮助\r\n\r\n## build\r\n\r\n由于从 jdk9 开始就没有 tools.jar 文件。所以在项目目录下带上了tools文件： `lib/tools.jar` 是 jdk1.8 版本的。\r\n\r\n## 建议本地编译：\r\n\r\n\r\nJDK 版本 1.8 和 1.8 以上不可以交叉使用。\r\n\r\n如使用发布版本 请使用相应的 [releases 版本](https://github.com/GuanceCloud/agent-attach-java/releases){:target=\"_blank\"}\r\n\r\n***建议下载源码*** 并编译：\r\n\r\n```shell\r\ngit clone https://github.com/GuanceCloud/agent-attach-java\r\n```\r\n\r\n如果是 JDK 1.8 版本，修改配置文件 pom.xml:\r\n\r\n```xml\r\n\u003c!--将版本修改为 1.8 --\u003e\r\n    \u003cconfiguration\u003e\r\n      \u003csource\u003e1.8\u003c/source\u003e\r\n      \u003ctarget\u003e1.8\u003c/target\u003e\r\n    \u003c/configuration\u003e\r\n    \r\n    \u003c!--将下面的注释放开，并将 tools.jar 注释掉 !!!--\u003e\r\n    \u003cdependency\u003e\r\n      \u003cgroupId\u003eio.earcam.wrapped\u003c/groupId\u003e\r\n      \u003cartifactId\u003ecom.sun.tools.attach\u003c/artifactId\u003e\r\n      \u003cversion\u003e1.8.0_jdk8u131-b11\u003c/version\u003e\r\n      \u003cscope\u003ecompile\u003c/scope\u003e\r\n      \u003ctype\u003ejar\u003c/type\u003e\r\n    \u003c/dependency\u003e\r\n```\r\n\r\n如果版本是 JDK 9、11、17 使用以下配置 pom.xml:\r\n\r\n```xml\r\n\u003c!--将目标版本修改为指定的版本--\u003e\r\n    \u003cconfiguration\u003e\r\n        \u003csource\u003e11\u003c/source\u003e\r\n        \u003ctarget\u003e11\u003c/target\u003e\r\n    \u003c/configuration\u003e\r\n\r\n\u003c!--    \u003cdependency\u003e\r\n      \u003cgroupId\u003eio.earcam.wrapped\u003c/groupId\u003e\r\n      \u003cartifactId\u003ecom.sun.tools.attach\u003c/artifactId\u003e\r\n      \u003cversion\u003e1.8.0_jdk8u131-b11\u003c/version\u003e\r\n      \u003cscope\u003ecompile\u003c/scope\u003e\r\n      \u003ctype\u003ejar\u003c/type\u003e\r\n    \u003c/dependency\u003e--\u003e\r\n    \u003cdependency\u003e\r\n      \u003cgroupId\u003ecom.sun\u003c/groupId\u003e\r\n      \u003cartifactId\u003etools\u003c/artifactId\u003e\r\n      \u003cversion\u003e1.8.0\u003c/version\u003e\r\n      \u003cscope\u003esystem\u003c/scope\u003e\r\n      \u003csystemPath\u003e${project.basedir}/lib/tools.jar\u003c/systemPath\u003e\r\n    \u003c/dependency\u003e\r\n```\r\n\r\n```shell\r\nmvn package\r\n# 使用 target/agent-attach-java-jar-with-dependencies.jar\r\nrm -f target/agent-attach-java.jar\r\nmv target/agent-attach-java-jar-with-dependencies.jar agent-attach-java.jar\r\n```\r\n\r\n## 文档\r\n\r\n文档位置: [观测云docs-attach-agent](https://docs.guance.com/developers/ddtrace-attach/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguancecloud%2Fagent-attach-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguancecloud%2Fagent-attach-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguancecloud%2Fagent-attach-java/lists"}