轉載自博客:https://blog.csdn.net/lilizhou2008/article/details/107050692
TIPS
本文基於Skywalking 6.6.0編寫,除特別注明的小節外,理論支持Skywalking 6.0+。
本文詳細探討Java Agent的配置。
Java Agent支持的配置屬性
TIPS
本表格基於Skywalking 6.6.0,官方文檔詳見:
https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md
,其他版本配置項不完全相同,請自行將鏈接中的v6.6.0
修改成你所使用的版本。
屬性名 | 描述 | 默認值 |
---|---|---|
agent.namespace |
命名空間,用於隔離跨進程傳播的header。如果進行了配置,header將為HeaderName:Namespace . |
未設置 |
agent.service_name |
在SkyWalking UI中展示的服務名。5.x版本對應Application,6.x版本對應Service。 建議:為每個服務設置個唯一的名字,服務的多個服務實例為同樣的服務名 | Your_ApplicationName |
agent.sample_n_per_3_secs |
負數或0表示不采樣,默認不采樣。SAMPLE_N_PER_3_SECS表示每3秒采樣N條。 | 未設置 |
agent.authentication |
鑒權是否開啟取決於后端的配置,可查看application.yml的詳細描述。對於大多數的場景,需要后端對鑒權進行擴展。目前僅實現了基本的鑒權功能。 | 未設置 |
agent.span_limit_per_segment |
單個segment中的span的最大個數。通過這個配置項,Skywalking可評估應用程序內存使用量。 | 300 |
agent.ignore_suffix |
如果這個集合中包含了第一個span的操作名,這個segment將會被忽略掉。 | 未設置 |
agent.is_open_debugging_class |
如果為true,skywalking會將所有經Instrument轉換過的類文件保存到/debugging 文件夾下。Skywalking團隊會要求你提供這些類文件以解決兼容性問題。 |
未設置 |
agent.active_v2_header |
是否默認使用v2版本的header。 | true |
agent.instance_uuid |
實例id。skywalking會將實例id相同的看做一個實例。如果為空,skywalking agent會生成一個32位的uuid。 | "" |
agent.instance_properties[key]=value |
添加服務實例的定制屬性。 | 未設置 |
agent.cause_exception_depth |
agent記錄的異常時,代理進入的深度 | 5 |
agent.active_v1_header |
是否默認使用v1版本的header。 | false |
agent.cool_down_threshold |
收到reset命令后,代理應等待多久(以分鍾為單位)才能重新注冊到OAP服務器。 | 10 |
agent.force_reconnection_period |
根據grpc_channel_check_interval強制重新連接grpc。 | 1 |
agent.operation_name_threshold |
operationName最大長度,不建議將此值設置為> 500。 | 500 |
collector.grpc_channel_check_interval |
檢查grpc的channel狀態的時間間隔。 | 30 |
collector.app_and_service_register_check_interval |
檢查應用和服務的注冊狀態的時間間隔。 | 3 |
collector.backend_service |
接收skywalking trace數據的后端地址 | 127.0.0.1:11800 |
collector.grpc_upstream_timeout |
grpc客戶端向上游發送數據時的超時時間,單位秒。 | 30 秒 |
logging.level |
日志級別。默認為debug。 | DEBUG |
logging.file_name |
日志文件名 | skywalking-api.log |
logging.output |
日志輸出,默認FILE。CONSOLE表示輸出到stdout。 | FILE |
logging.dir |
日志目錄。默認為空串,表示使用"system.out"輸出日志。 | "" |
logging.pattern |
日志記錄格式。所有轉換說明符: * %level 表示日志級別。* %timestamp 表示現在的時間,格式yyyy-MM-dd HH:mm:ss:SSS 。* %thread 表示當前線程的名稱。* %msg 表示消息。* %class 表示TargetClass的SimpleName。* %throwable 表示異常。* %agent_name 表示agent.service_name |
%level %timestamp %thread %class : %msg %throwable |
logging.max_file_size |
日志文件的最大大小。當日志文件大小超過這個數,歸檔當前的日志文件,將日志寫入到新文件。 | 300 * 1024 * 1024 |
logging.max_history_files |
最大歷史記錄日志文件。發生翻轉時,如果日志文件超過此值,則最早的文件將被刪除。默認情況下,負數或零表示關閉。 | -1 |
jvm.buffer_size |
收集JVM信息的buffer的大小。 | 60 * 10 |
buffer.channel_size |
buffer的channel大小。 | 5 |
buffer.buffer_size |
buffer的大小 | 300 |
dictionary.service_code_buffer_size |
The buffer size of application codes and peer | 10 * 10000 |
dictionary.endpoint_name_buffer_size |
The buffer size of endpoint names and peer | 1000 * 10000 |
plugin.peer_max_length |
Peer最大描述限制 | 200 |
plugin.mongodb.trace_param |
如果為true,記錄所有訪問MongoDB的參數信息。默認為false,表示僅記錄操作名,不記錄參數信息。 | false |
plugin.mongodb.filter_length_limit |
如果設為正數,WriteRequest.params 將被截斷為該長度,否則將被完全保存,這可能會導致性能問題。 |
256 |
plugin.elasticsearch.trace_dsl |
如果為true,記錄所有訪問ElasticSearch的DSL信息。默認為false。 | false |
plugin.springmvc.use_qualified_name_as_endpoint_name |
如果為true,endpoint的name為方法的全限定名,而不是請求的URL。默認為false。 | false |
plugin.toolit.use_qualified_name_as_operation_name |
如果為true,operation的name為方法的全限定名,而不是給定的operation name。默認為false。 | false |
plugin.mysql.trace_sql_parameters |
如果設置為true,則將收集sql的參數(通常為java.sql.PreparedStatement )。 |
false |
plugin.mysql.sql_parameters_max_length |
如果設置為正數,db.sql.parameters 將被截斷為該長度,否則將被完全保存,這可能會導致性能問題。 |
512 |
plugin.postgresql.trace_sql_parameters |
如果設置為true,則將收集sql的參數(通常為java.sql.PreparedStatement )。 |
false |
plugin.postgresql.sql_parameters_max_length |
如果設置為正數,db.sql.parameters 將被截斷為該長度,否則將被完全保存,這可能會導致性能問題。 |
512 |
plugin.solrj.trace_statement |
如果為true,則在Solr查詢請求中跟蹤所有查詢參數(包括deleteByIds和deleteByQuery) | false |
plugin.solrj.trace_ops_params |
如果為true,則跟蹤Solr請求中的所有操作參數 | false |
plugin.light4j.trace_handler_chain |
如果為true,請跟蹤Light4J的請求的所有中間件/業務handler。 | false |
plugin.opgroup.* |
支持操作名稱自定義不同插件中的組的規則。詳見 支持組規則的插件 | 未設置 |
plugin.springtransaction.simplify_transaction_definition_name |
設為true,則簡化事務定義名稱。 | false |
plugin.jdkthreading.threading_class_prefixes |
將對名稱與任意一個 THREADING_CLASS_PREFIXES (多個使用 , 分隔)匹配的線程化類( java.lang.Runnable 和 java.util.concurrent.Callable )及其子類進行 Instrument,請確保僅將窄前綴指定為您希望Instrument的前綴(安全考慮, java. 和 javax. 將被忽略) |
未設置 |
Java Agent配置方式
agent配置有多種姿勢,上面修改 agent.config
文件中的值,只是其中一種。下面專門探討agent支持的配置方式。
系統屬性(-D)
使用 -Dskywalking.
+ agent.config配置文件中的key
即可。例如:
agent.config
文件中有一個屬性名為 agent.service_name
,那么如果使用系統屬性的方式,則可以寫成
java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=你想設置的值 -jar somr-spring-boot.jar
代理選項
在JVM參數中的代理路徑之后添加屬性即可。格式:
-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]
例如:
java -javaagent:/opt/agent/skywalking-agent.jar=agent.service_name=你想設置的值 -jar somr-spring-boot.jar
系統環境變量
agent.config
文件中默認的大寫值,都可以作為環境變量引用。例如,agent.config
中有如下內容
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
這說明Skywalking會讀取名為 SW_AGENT_NAME
的環境變量。
優先級
代理選項
> 系統屬性(-D)
> 系統環境變量
> 配置文件
參考文檔
https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md