From 0ec8f02de701863e00ca5a892a477aa0d4aeace3 Mon Sep 17 00:00:00 2001 From: Gunhee Lee Date: Mon, 14 Sep 2020 22:19:13 +0900 Subject: [PATCH] [doc] update configure page --- scouter.document/main/Configuration.md | 260 +++- scouter.document/main/Configuration_kr.md | 1484 ++++++++++++++++----- 2 files changed, 1348 insertions(+), 396 deletions(-) diff --git a/scouter.document/main/Configuration.md b/scouter.document/main/Configuration.md index 0c502c9d8..78e32b31d 100644 --- a/scouter.document/main/Configuration.md +++ b/scouter.document/main/Configuration.md @@ -16,7 +16,6 @@ ``` ```java - //Log @ConfigDesc("Logging TCP connection related event") public boolean log_tcp_action_enabled = false; @ConfigDesc("Logging incoming MultiPacket") @@ -49,6 +48,8 @@ public boolean log_udp_batch = false; @ConfigDesc("Logging all request handlers in starting") public boolean log_service_handler_list = false; + @ConfigDesc("Logging incoming SpanPack") + public boolean log_udp_span = false; @ConfigDesc("Logging when index traversal is too heavy.") public int log_index_traversal_warning_count = 100; @@ -105,9 +106,11 @@ public String net_http_api_cors_allow_credentials = "true"; @ConfigDesc("size of webapp connection pool to collector") - public int net_webapp_tcp_client_pool_size = 12; - @ConfigDesc("timeout of web app connection pool to collector(It depends on net_tcp_client_so_timeout_ms)") - public int net_webapp_tcp_client_pool_timeout = net_tcp_client_so_timeout_ms; + public int net_webapp_tcp_client_pool_size = 30; + @ConfigDesc("timeout of web app connection pool to collector") + public int net_webapp_tcp_client_pool_timeout = 60000; + @ConfigDesc("So timeout of web app to collector") + public int net_webapp_tcp_client_so_timeout = 30000; @ConfigDesc("Enable api access control by client ip") public boolean net_http_api_auth_ip_enabled = false; @@ -126,6 +129,8 @@ @ConfigDesc("api access allow ip addresses") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String net_http_api_allow_ips = "localhost,127.0.0.1,0:0:0:0:0:0:0:1,::1"; + public Set allowIpExact; + public List allowIpMatch; //Dir @ConfigDesc("Store directory of database") @@ -145,6 +150,9 @@ @ConfigDesc("inactive object warning level. default 0.(0:info, 1:warn, 2:error, 3:fatal)") public int object_inactive_alert_level = 0; + @ConfigDesc("Zipkin Waiting time(ms) until stopped heartbeat of object is determined to be inactive") + public int object_zipkin_deadtime_ms = 180 * 1000; + //Compress @ConfigDesc("Activating XLog data in zip file") public boolean compress_xlog_enabled = false; @@ -183,22 +191,20 @@ @ConfigDesc("Deprecated : use mgr_purge_xlog_keep_days") public int mgr_purge_xlog_without_profile_keep_days = mgr_purge_xlog_keep_days; - @ConfigDesc("Retaining date for automatic deletion. all counter data.") + @ConfigDesc("Retaining date for automatic deletion") public int mgr_purge_counter_keep_days = 70; @ConfigDesc("Retaining date for automatic deletion. realtime-counter only.") public int mgr_purge_realtime_counter_keep_days = mgr_purge_counter_keep_days; - @ConfigDesc("Retaining date for automatic deletion. tag-counter only.") public int mgr_purge_tag_counter_keep_days = mgr_purge_counter_keep_days; - @ConfigDesc("Retaining date for automatic deletion. visitor-counter only") public int mgr_purge_visitor_counter_keep_days = mgr_purge_counter_keep_days; - @ConfigDesc("Retaining date for automatic deletion. daily text dictionary only") - public int mgr_purge_daily_text_days = Math.max(mgr_purge_tag_counter_keep_days * 2, mgr_purge_xlog_keep_days * 2); + @ConfigDesc("Retaining date for automatic deletion. daily text dictionary only") + public int mgr_purge_daily_text_days = Math.max(mgr_purge_tag_counter_keep_days * 2, mgr_purge_xlog_keep_days * 2); - @ConfigDesc("Retaining date for automatic deletion. summary(stat) data only") + @ConfigDesc("Retaining date for automatic deletion. summary(stat) data only") public int mgr_purge_sum_data_days = 60; @ConfigDesc("Ignored log ID set") @@ -242,6 +248,10 @@ "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") public int _mgr_kv_store_index_default_mb = 8; + @ConfigDesc("change default memory size of xlog txid/gxid index.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_xlog_id_index_mb = 1; + //external-link @ConfigDesc("name of 3rd party ui") public String ext_link_name = "scouter-paper"; @@ -254,6 +264,10 @@ " $[to] : end time in chart by millis") public String ext_link_url_pattern = "http://my-scouter-paper-ip:6188/index.html#/paper?&address=localhost&port=6188&realtime=false&xlogElapsedTime=8000&instances=$[objHashes]&from=$[from]&to=$[to]&layout=my-layout-template-01"; + //Span + @ConfigDesc("Span Queue Size") + public int span_queue_size = 1000; + //XLog @ConfigDesc("XLog Writer Queue Size") public int xlog_queue_size = 10000; @@ -268,6 +282,18 @@ @ConfigDesc("Profile Writer Queue Size") public int profile_queue_size = 1000; + @ConfigDesc("gxid keeping count in memory for XLog consequent sampling") + public int xlog_sampling_matcher_gxid_keep_memory_count = 500000; + @ConfigDesc("xlog keeping count in memory for XLog consequent sampling") + public int xlog_sampling_matcher_xlog_keep_memory_count = 100000; + @ConfigDesc("max keeping millis of xlog for XLog consequent sampling") + public int xlog_sampling_matcher_xlog_keep_memory_millis = 5000; + + @ConfigDesc("profile keeping count (in one bucket, 500ms) in memory for XLog consequent sampling") + public int xlog_sampling_matcher_profile_keep_memory_count = 5000; + @ConfigDesc("max keeping seconds of profile for XLog consequent sampling") + public int xlog_sampling_matcher_profile_keep_memory_secs = 5; + //GeoIP @ConfigDesc("Activating IP-based city/country extraction") public boolean geoip_enabled = true; @@ -286,19 +312,18 @@ @ConfigDesc("search xlog service option - max xlog count to search per request") public int req_search_xlog_max_count = 500; - //telegraf sample config for help - @ConfigDesc("Telegraf http input enabled") + @ConfigDesc("Path to telegraf config xml file") + public String input_telegraf_config_file = CONF_DIR + "scouter-telegraf.xml"; + + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") public boolean input_telegraf_enabled = true; - @ConfigDesc("print telegraf line protocol to STDOUT") + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") public boolean input_telegraf_debug_enabled = false; - - @ConfigDesc("telegraf delta-counter normalize") + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") public boolean input_telegraf_delta_counter_normalize_default = true; - @ConfigDesc("telegraf delta-counter normalize seconds.(avgerage in sec)\n" + - "normalize per metric can be set in the option input_telegraf_$measurement$_counter_mappings") + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") public int input_telegraf_delta_counter_normalize_default_seconds = 30; - - @ConfigDesc("Waiting time(ms) until stopped heartbeat of object is determined to be inactive") + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") public int telegraf_object_deadtime_ms = 35000; @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + @@ -412,7 +437,6 @@ ``` ```java -//Network //Network @ConfigDesc("UDP local IP") public String net_local_udp_ip = null; @@ -451,7 +475,7 @@ @ConfigDesc("Redefining DS, RP type according to main object") public boolean obj_type_inherit_to_child_enabled = false; @ConfigDesc("Activating collect sub counters using JMX") - public boolean jmx_counter_enabled = true; + public boolean jmx_counter_enabled = false; //profile @ConfigDesc("Http Query String profile") @@ -470,7 +494,7 @@ @ConfigDesc("Service URL prefix for Http parameter profile") public String profile_http_parameter_url_prefix = "/"; @ConfigDesc("spring controller method parameter profile") - public boolean profile_spring_controller_method_parameter_enabled = false; + public boolean profile_spring_controller_method_parameter_enabled = true; // @Deprecated // @ConfigDesc("Activating profile summary function") @@ -496,6 +520,8 @@ public boolean profile_method_enabled = true; @ConfigDesc("Profile Buffer Size") public int profile_step_max_count = 1024; + @ConfigDesc("Profile Buffer Size") + public int profile_step_max_keep_in_memory_count = 2048; @ConfigDesc("Stack profile in occurrence of service error") public boolean profile_fullstack_service_error_enabled = false; @ConfigDesc("Stack profile in occurrence of apicall error") @@ -526,6 +552,14 @@ @ConfigDesc("") public boolean profile_fullstack_stmt_leak_enabled = false; + @ConfigDesc("Profile elastic search full query.\nIt need more payload and disk usage.") + public boolean profile_elasticsearch_full_query_enabled = false; + + @ConfigDesc("profile reactor's important checkpoint") + public boolean profile_reactor_checkpoint_enabled = true; + @ConfigDesc("profile reactor's another checkpoints") + public boolean profile_reactor_more_checkpoint_enabled = false; + //Trace @ConfigDesc("User ID based(0 : Remote IP Address, 1 : Cookie(JSESSIONID), 2 : Cookie(SCOUTER), 3 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:Scouter Cookie, 3:Header @@ -597,6 +631,8 @@ public int _trace_fullstack_socket_open_port = 0; @ConfigDesc("") public int _trace_sql_parameter_max_count = 128; + @ConfigDesc("max length of bound sql parameter on profile view(< 500)") + public int trace_sql_parameter_max_length = 20; @ConfigDesc("") public String trace_delayed_service_mgr_filename = "setting_delayed_service.properties"; @ConfigDesc("") @@ -659,12 +695,16 @@ public int xlog_error_sql_time_max_ms = 30000; @ConfigDesc("Leave an error message at XLog when UserTransaction's begin/end unpaired") public boolean xlog_error_check_user_transaction_enabled = true; - @ConfigDesc("mark as error on xlog flag if SqlException is occurred.") + @ConfigDesc("mark as error on xlog flag if SqlException is occured.") public boolean xlog_error_on_sqlexception_enabled = true; - @ConfigDesc("mark as error on xlog flag if Api call errors are occurred.") + @ConfigDesc("mark as error on xlog flag if Api call errors are occured.") public boolean xlog_error_on_apicall_exception_enabled = true; - @ConfigDesc("mark as error on xlog flag if redis error is occurred.") + @ConfigDesc("mark as error on xlog flag if redis error is occured.") public boolean xlog_error_on_redis_exception_enabled = true; + @ConfigDesc("mark as error on xlog flag if elasticsearc error is occured.") + public boolean xlog_error_on_elasticsearch_exception_enabled = true; + @ConfigDesc("mark as error on xlog flag if mongodb error is occured.") + public boolean xlog_error_on_mongodb_exception_enabled = true; //XLog hard sampling options @ConfigDesc("XLog hard sampling mode enabled\n - for the best performance but it affects all statistics data") @@ -673,6 +713,14 @@ public int _xlog_hard_sampling_rate_pct = 10; //XLog soft sampling options + @ConfigDesc("XLog sampling - ignore global consequent sampling. the commencement service's sampling option affects it's children.") + public boolean ignore_global_consequent_sampling = false; + @ConfigDesc("XLog sampling - The service of this patterns can be unsampled by the sampling rate even if parent call is sampled and on tracing.") + public String xlog_consequent_sampling_ignore_patterns= ""; + + @ConfigDesc("XLog sampling exclude patterns.") + public String xlog_sampling_exclude_patterns = ""; + @ConfigDesc("XLog sampling mode enabled") public boolean xlog_sampling_enabled = false; @ConfigDesc("XLog sampling but discard profile only not XLog.") @@ -692,10 +740,10 @@ @ConfigDesc("XLog sampling over step3 percentage(%)") public int xlog_sampling_over_rate_pct = 100; + //XLog sampling for service patterns options @ConfigDesc("XLog patterned sampling mode enabled") public boolean xlog_patterned_sampling_enabled = false; - @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String xlog_patterned_sampling_service_patterns = ""; @@ -717,6 +765,102 @@ @ConfigDesc("XLog patterned sampling over step3 percentage(%)") public int xlog_patterned_sampling_over_rate_pct = 100; + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned2_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned2_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned2_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned2_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned2_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned2_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned2_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned2_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned2_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned2_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned3_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned3_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned3_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned3_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned3_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned3_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned3_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned3_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned3_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned3_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned4_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned4_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned4_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned4_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned4_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned4_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned4_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned4_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned4_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned4_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned5_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned5_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned5_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned5_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned5_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned5_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned5_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned5_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned5_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned5_sampling_over_rate_pct = 100; + //XLog discard options @ConfigDesc("XLog discard service patterns\nNo XLog data, but apply to TPS and summary.\neg) /user/{userId},/device/*") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) @@ -782,7 +926,7 @@ public String hook_get_connection_patterns = ""; - @ConfigDesc("InitialContext Class Set") + @ConfigDesc("IntialContext Class Set") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_context_classes = "javax/naming/InitialContext"; @@ -794,7 +938,7 @@ @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_method_ignore_prefixes = "get,set"; - @ConfigDesc("Class set without Method hooking") + @ConfigDesc("Class set without Method hookingt") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_method_ignore_classes = ""; @@ -817,6 +961,9 @@ @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_service_patterns = ""; + @ConfigDesc("hooking service name use a 1st string parameter or class & method name") + public boolean hook_service_name_use_1st_string_enabled = true; + @ConfigDesc("Method set for apicall hooking") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_apicall_patterns = ""; @@ -829,7 +976,7 @@ @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_jsp_patterns = ""; - @ConfigDesc("Method set for preparedstatement hooking") + @ConfigDesc("Method set for preparestatement hooking") @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String hook_jdbc_pstmt_classes = ""; @@ -883,7 +1030,7 @@ @ConfigDesc("Deprecated. use hook_async_callrunnable_enabled") public boolean hook_async_callrunnable_enable = true; - @ConfigDesc("Hook callable and runnable for tracing async processing.\n It hook only 'hook_async_callrunnable_scan_prefixes' option contains package or classes") + @ConfigDesc("Hook callable and runnable for tracing async processing.\n It hook only 'hook_async_callrunnable_scan_prefixes' option contains pacakage or classes") public boolean hook_async_callrunnable_enabled = true; @ConfigDesc("scanning range prefixes for hooking callable, runnable implementations and lambda expressions.\n usually your application package.\n 2 or more packages can be separated by commas.") @@ -894,16 +1041,16 @@ @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) public String _hook_redis_set_key_patterns = ""; - @ConfigDesc("PRE-released option before stable release!\nhook threadpool executor for tracing async processing.") - public boolean hook_async_thread_pool_executor_enabled = false; + @ConfigDesc("hook threadpool executor for tracing async processing.") + public boolean hook_async_thread_pool_executor_enabled = true; - @ConfigDesc("Experimental! test it on staging environment of your system before enable this option.\n enable lambda expressioned class hook for detecting asynchronous processing. \nOnly classes under the package configured by 'hook_async_callrunnable_scan_package_prefixes' is hooked.") - public boolean hook_lambda_instrumentation_strategy_enabled = false; + @ConfigDesc("hystrix execution hook enabled") + public boolean hook_hystrix_enabled = false; @ConfigDesc("") public String hook_add_fields = ""; @ConfigDesc("") - public boolean _hook_service_enabled = true; + public boolean _hook_serivce_enabled = true; @ConfigDesc("") public boolean _hook_dbsql_enabled = true; @ConfigDesc("") @@ -926,6 +1073,22 @@ public boolean _hook_spring_rest_enabled = true; @ConfigDesc("") public boolean _hook_redis_enabled = true; + @ConfigDesc("") + public boolean _hook_kafka_enabled = true; + @ConfigDesc("") + public boolean _hook_elasticsearch_enabled = true; + @ConfigDesc("") + public boolean hook_mongodb_enabled = false; + @ConfigDesc("") + public boolean _hook_rabbit_enabled = true; + @ConfigDesc("") + public boolean _hook_reactive_enabled = true; + @ConfigDesc("") + public boolean _hook_coroutine_enabled = true; + @ConfigDesc("") + public boolean _hook_coroutine_debugger_hook_enabled = false; + @ConfigDesc("") + public boolean _hook_thread_name_enabled = false; @ConfigDesc("") public String _hook_direct_patch_classes = ""; @@ -967,11 +1130,36 @@ @ConfigDesc("SFA thread dump Interval(ms)") public int sfa_dump_interval_ms = 10000; - //PSTS(Periodical Stacktrace Step) + //PSTS(Preiodical Stacktrace Step) @ConfigDesc("Activating periodical stacktrace step (write fixed interval thread dump on a profile)") public boolean _psts_enabled = false; @ConfigDesc("PSTS(periodical stacktrace step) thread dump Interval(ms) - hard min limit 2000") public int _psts_dump_interval_ms = 10000; + public boolean _psts_progressive_reactor_thread_trace_enabled = true; + + //Summary + @ConfigDesc("Activating summary function") + public boolean summary_enabled = true; + @ConfigDesc("") + public boolean _summary_connection_leak_fullstack_enabled = false; + @ConfigDesc("") + public int _summary_service_max_count = 5000; + @ConfigDesc("") + public int _summary_sql_max_count = 5000; + @ConfigDesc("") + public int _summary_api_max_count = 5000; + @ConfigDesc("") + public int _summary_ip_max_count = 5000; + @ConfigDesc("") + public int _summary_useragent_max_count = 5000; + @ConfigDesc("") + public int _summary_error_max_count = 500; + @ConfigDesc("") + public int _summary_enduser_nav_max_count = 5000; + @ConfigDesc("") + public int _summary_enduser_ajax_max_count = 5000; + @ConfigDesc("") + public int _summary_enduser_error_max_count = 5000; ``` ## Host agent options diff --git a/scouter.document/main/Configuration_kr.md b/scouter.document/main/Configuration_kr.md index 1ef124cbf..f72b9a113 100644 --- a/scouter.document/main/Configuration_kr.md +++ b/scouter.document/main/Configuration_kr.md @@ -16,84 +16,409 @@ ``` ```java -//Dir -@ConfigDesc("Store directory of database") -public String db_dir = "./database"; -@ConfigDesc("Path to log directory") -public String log_dir = "./logs"; -@ConfigDesc("Path to plugin directory") -public String plugin_dir = "./plugin"; -@ConfigDesc("Path to client related directory") -public String client_dir = "./client"; - -//Log -@ConfigDesc("Retaining log according to date") -public boolean log_rotation_enabled = true; -@ConfigDesc("Keeping period of log") -public int log_keep_days = 31; - -//Network -@ConfigDesc("UDP Port") -public int net_udp_listen_port = 6100; -@ConfigDesc("TCP Port") -public int net_tcp_listen_port = 6100; -@ConfigDesc("Http Port for scouter-pulse") -public int net_http_port = 6180; - -//Object -@ConfigDesc("Waiting time(ms) until stopped heartbeat of object is determined to be inactive") -public int object_deadtime_ms = 8000; -@ConfigDesc("inactive object warning level. default 0.(0:info, 1:warn, 2:error, 3:fatal)") -public int object_inactive_alert_level = 0; - -//Management -@ConfigDesc("Activating automatic deletion function in the database") -public boolean mgr_purge_enabled = true; - -@ConfigDesc("Condition of disk usage for automatic deletion. if lack, delete profile data first exclude today data.") -public int mgr_purge_disk_usage_pct = 80; - -@ConfigDesc("Retaining date for automatic deletion. delete profile data first.") -public int mgr_purge_profile_keep_days = 10; - -@ConfigDesc("Retaining date for automatic deletion.") -public int mgr_purge_xlog_keep_days = 30; - -@ConfigDesc("Retaining date for automatic deletion. all counter data.") -public int mgr_purge_counter_keep_days = 70; - -@ConfigDesc("Retaining date for automatic deletion. realtime-counter only.") -public int mgr_purge_realtime_counter_keep_days = mgr_purge_counter_keep_days; - -@ConfigDesc("Retaining date for automatic deletion. tag-counter only.") -public int mgr_purge_tag_counter_keep_days = mgr_purge_counter_keep_days; - -@ConfigDesc("Retaining date for automatic deletion. visitor-counter only") -public int mgr_purge_visitor_counter_keep_days = mgr_purge_counter_keep_days; - -@ConfigDesc("Retaining date for automatic deletion. daily text dictionary only") -public int mgr_purge_daily_text_days = Math.max(mgr_purge_tag_counter_keep_days * 2, mgr_purge_xlog_keep_days * 2); - -@ConfigDesc("Retaining date for automatic deletion. summary(stat) data only") -public int mgr_purge_sum_data_days = 60; - -//external-link -@ConfigDesc("name of 3rd party ui") -public String ext_link_name = "scouter-paper"; -@ConfigDesc("outgoing link pattern for a 3rd party UI.(client restart required)\n" + - "Context menu in any chart shows the menu 'Open with 3rd-party UI.'\n" + - "* variable patterns : \n" + - " $[objHashes] : comma separated objHash values\n" + - " $[objType] : object type\n" + - " $[from] : start time in chart by millis\n" + - " $[to] : end time in chart by millis") -public String ext_link_url_pattern = "http://my-scouter-paper-ip:6188/index.html#/paper?&address=localhost&port=6188&realtime=false&xlogElapsedTime=8000&instances=$[objHashes]&from=$[from]&to=$[to]&layout=my-layout-template-01"; - -//GeoIP -@ConfigDesc("Activating IP-based city/country extraction") -public boolean geoip_enabled = true; -@ConfigDesc("Path to GeoIP data file") -public String geoip_data_city_file = CONF_DIR + "GeoLiteCity.dat"; + @ConfigDesc("Logging TCP connection related event") + public boolean log_tcp_action_enabled = false; + @ConfigDesc("Logging incoming MultiPacket") + public boolean log_udp_multipacket = false; + @ConfigDesc("Logging expired MultiPacket") + public boolean log_expired_multipacket = true; + @ConfigDesc("Logging all incoming packs") + public boolean log_udp_packet = false; + @ConfigDesc("Logging incoming CounterPack") + public boolean log_udp_counter = false; + @ConfigDesc("Logging incoming PerfInteractionCounterPack") + public boolean log_udp_interaction_counter = false; + @ConfigDesc("Logging incoming XLogPack") + public boolean log_udp_xlog = false; + @ConfigDesc("Logging incoming ProfilePack") + public boolean log_udp_profile = false; + @ConfigDesc("Logging incoming TextPack") + public boolean log_udp_text = false; + @ConfigDesc("Logging incoming AlertPack") + public boolean log_udp_alert = false; + @ConfigDesc("Logging incoming ObjectPack") + public boolean log_udp_object = false; + @ConfigDesc("Logging incoming StatusPack") + public boolean log_udp_status = false; + @ConfigDesc("Logging incoming StackPack") + public boolean log_udp_stack = false; + @ConfigDesc("Logging incoming SummaryPack") + public boolean log_udp_summary = false; + @ConfigDesc("Logging incoming BatchPack") + public boolean log_udp_batch = false; + @ConfigDesc("Logging all request handlers in starting") + public boolean log_service_handler_list = false; + @ConfigDesc("Logging incoming SpanPack") + public boolean log_udp_span = false; + + @ConfigDesc("Logging when index traversal is too heavy.") + public int log_index_traversal_warning_count = 100; + + @ConfigDesc("Retaining log according to date") + public boolean log_rotation_enabled = true; + @ConfigDesc("Keeping period of log") + public int log_keep_days = 31; + @ConfigDesc("Logging sql failed to parse") + public boolean log_sql_parsing_fail_enabled = false; + @ConfigDesc("") + public boolean _trace = false; + + //Network + @ConfigDesc("UDP Host") + public String net_udp_listen_ip = "0.0.0.0"; + @ConfigDesc("UDP Port") + public int net_udp_listen_port = NetConstants.SERVER_UDP_PORT; + @ConfigDesc("TCP Host") + public String net_tcp_listen_ip = "0.0.0.0"; + @ConfigDesc("TCP Port") + public int net_tcp_listen_port = NetConstants.SERVER_TCP_PORT; + @ConfigDesc("Client Socket Timeout(ms)") + public int net_tcp_client_so_timeout_ms = 8000; + @ConfigDesc("Agent Socket Timeout(ms)") + public int net_tcp_agent_so_timeout_ms = 60000; + @ConfigDesc("Transfer period(ms) of KEEP_ALIVE") + public int net_tcp_agent_keepalive_interval_ms = 5000; + @ConfigDesc("Waiting time(ms) for agent session") + public int net_tcp_get_agent_connection_wait_ms = 1000; + @ConfigDesc("UDP Packet Buffer Size") + public int net_udp_packet_buffer_size = 65535; + @ConfigDesc("UDP Receiver Buffer Size") + public int net_udp_so_rcvbuf_size = 1024 * 1024 * 4; + @ConfigDesc("") + public int _net_udp_worker_thread_count = 3; + @ConfigDesc("TCP Thread Pool Size") + public int net_tcp_service_pool_size = 100; + @ConfigDesc("Activating Http Server") + public boolean net_http_server_enabled = false; + @ConfigDesc("Http Port") + public int net_http_port = NetConstants.SERVER_HTTP_PORT; + @ConfigDesc("user extension web root") + public String net_http_extweb_dir = "./extweb"; + @ConfigDesc("Activating Scouter API") + public boolean net_http_api_enabled = false; + @ConfigDesc("Enable a swagger for HTTP API.") + public boolean net_http_api_swagger_enabled = false; + @ConfigDesc("Swagger option of host's ip or domain to call APIs.") + public String net_http_api_swagger_host_ip = ""; + @ConfigDesc("API CORS support for Access-Control-Allow-Origin") + public String net_http_api_cors_allow_origin = "*"; + @ConfigDesc("Access-Control-Allow-Credentials") + public String net_http_api_cors_allow_credentials = "true"; + + @ConfigDesc("size of webapp connection pool to collector") + public int net_webapp_tcp_client_pool_size = 30; + @ConfigDesc("timeout of web app connection pool to collector") + public int net_webapp_tcp_client_pool_timeout = 60000; + @ConfigDesc("So timeout of web app to collector") + public int net_webapp_tcp_client_so_timeout = 30000; + + @ConfigDesc("Enable api access control by client ip") + public boolean net_http_api_auth_ip_enabled = false; + @ConfigDesc("If get api caller's ip from http header.") + public String net_http_api_auth_ip_header_key; + + @ConfigDesc("Enable api access control by JSESSIONID of Cookie") + public boolean net_http_api_auth_session_enabled = false; + @ConfigDesc("api http session timeout") + public int net_http_api_session_timeout = 3600*24; + @ConfigDesc("Enable api access control by Bearer token(of Authorization http header) - get access token from /user/loginGetToken.") + public boolean net_http_api_auth_bearer_token_enabled = false; + @ConfigDesc("Enable gzip response on api call") + public boolean net_http_api_gzip_enabled = true; + + @ConfigDesc("api access allow ip addresses") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String net_http_api_allow_ips = "localhost,127.0.0.1,0:0:0:0:0:0:0:1,::1"; + public Set allowIpExact; + public List allowIpMatch; + + //Dir + @ConfigDesc("Store directory of database") + public String db_dir = "./database"; + @ConfigDesc("Path to log directory") + public String log_dir = "./logs"; + @ConfigDesc("Path to plugin directory") + public String plugin_dir = "./plugin"; + @ConfigDesc("Path to client related directory") + public String client_dir = "./client"; + @ConfigDesc("temp dir") + public String temp_dir = "./tempdata"; + + //Object + @ConfigDesc("Waiting time(ms) until stopped heartbeat of object is determined to be inactive") + public int object_deadtime_ms = 8000; + @ConfigDesc("inactive object warning level. default 0.(0:info, 1:warn, 2:error, 3:fatal)") + public int object_inactive_alert_level = 0; + + @ConfigDesc("Zipkin Waiting time(ms) until stopped heartbeat of object is determined to be inactive") + public int object_zipkin_deadtime_ms = 180 * 1000; + + //Compress + @ConfigDesc("Activating XLog data in zip file") + public boolean compress_xlog_enabled = false; + @ConfigDesc("Activating profile data in zip file") + public boolean compress_profile_enabled = false; + @ConfigDesc("") + public int _compress_write_buffer_block_count = 3; + @ConfigDesc("") + public int _compress_read_cache_block_count = 3; + @ConfigDesc("") + public long _compress_read_cache_expired_ms = DateUtil.MILLIS_PER_MINUTE; + @ConfigDesc("") + public int _compress_dailycount_header_cache_size = 3; + @ConfigDesc("") + public int _compress_write_thread = 2; + + //Auto + @ConfigDesc("") + public boolean _auto_5m_sampling = true; + + //Manager + @ConfigDesc("Activating automatic deletion function in the database") + public boolean mgr_purge_enabled = true; + @ConfigDesc("Condition of disk usage for automatic deletion. if lack, delete profile data first exclude today data.") + public int mgr_purge_disk_usage_pct = 80; + + @ConfigDesc("Retaining date for automatic deletion. delete profile data first.") + public int mgr_purge_profile_keep_days = 10; + @Deprecated + @ConfigDesc("Deprecated : use mgr_purge_profile_keep_days") + public int mgr_purge_keep_days = mgr_purge_profile_keep_days; + + @ConfigDesc("Retaining date for automatic deletion.") + public int mgr_purge_xlog_keep_days = 30; + @Deprecated + @ConfigDesc("Deprecated : use mgr_purge_xlog_keep_days") + public int mgr_purge_xlog_without_profile_keep_days = mgr_purge_xlog_keep_days; + + @ConfigDesc("Retaining date for automatic deletion") + public int mgr_purge_counter_keep_days = 70; + + @ConfigDesc("Retaining date for automatic deletion. realtime-counter only.") + public int mgr_purge_realtime_counter_keep_days = mgr_purge_counter_keep_days; + @ConfigDesc("Retaining date for automatic deletion. tag-counter only.") + public int mgr_purge_tag_counter_keep_days = mgr_purge_counter_keep_days; + @ConfigDesc("Retaining date for automatic deletion. visitor-counter only") + public int mgr_purge_visitor_counter_keep_days = mgr_purge_counter_keep_days; + + @ConfigDesc("Retaining date for automatic deletion. daily text dictionary only") + public int mgr_purge_daily_text_days = Math.max(mgr_purge_tag_counter_keep_days * 2, mgr_purge_xlog_keep_days * 2); + + @ConfigDesc("Retaining date for automatic deletion. summary(stat) data only") + public int mgr_purge_sum_data_days = 60; + + @ConfigDesc("Ignored log ID set") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public StringSet mgr_log_ignore_ids = new StringSet(); + + //db + @ConfigDesc("true for daily dictionary mode about service name. default value is false that means it's permanent.") + public boolean mgr_text_db_daily_service_enabled = false; + @ConfigDesc("true for daily dictionary mode about api name. default value is false that means it's permanent.") + public boolean mgr_text_db_daily_api_enabled = false; + @ConfigDesc("true for daily dictionary mode about user agent. default value is false that means it's permanent.") + public boolean mgr_text_db_daily_ua_enabled = false; + + @ConfigDesc("change default memory size of hash index.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_default_mb = 1; + @ConfigDesc("change memory size of hash index for service text.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_service_mb = 1; + @ConfigDesc("change memory size of hash index for apicall text.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_api_mb = 1; + @ConfigDesc("change memory size of hash index for user agent text.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_ua_mb = 1; + @ConfigDesc("change memory size of hash index for login text.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_login_mb = 1; + @ConfigDesc("change memory size of hash index for desc text.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_desc_mb = 1; + @ConfigDesc("change memory size of hash index for hashed message text.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_index_hmsg_mb = 1; + @ConfigDesc("change memory size of hash index for daily text db.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_text_db_daily_index_mb = 1; + + @ConfigDesc("change default memory size of key value store index.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_kv_store_index_default_mb = 8; + + @ConfigDesc("change default memory size of xlog txid/gxid index.(MB)" + + "[warn] modified this will break the database files.\nbackup old database files before change values.(restart required)") + public int _mgr_xlog_id_index_mb = 1; + + //external-link + @ConfigDesc("name of 3rd party ui") + public String ext_link_name = "scouter-paper"; + @ConfigDesc("outgoing link pattern for a 3rd party UI.(client restart required)\n" + + "Context menu in any chart shows the menu 'Open with 3rd-party UI.'\n" + + "* variable patterns : \n" + + " $[objHashes] : comma separated objHash values\n" + + " $[objType] : object type\n" + + " $[from] : start time in chart by millis\n" + + " $[to] : end time in chart by millis") + public String ext_link_url_pattern = "http://my-scouter-paper-ip:6188/index.html#/paper?&address=localhost&port=6188&realtime=false&xlogElapsedTime=8000&instances=$[objHashes]&from=$[from]&to=$[to]&layout=my-layout-template-01"; + + //Span + @ConfigDesc("Span Queue Size") + public int span_queue_size = 1000; + + //XLog + @ConfigDesc("XLog Writer Queue Size") + public int xlog_queue_size = 10000; + @ConfigDesc("Ignored time(ms) in retrieving XLog in real time") + public int xlog_realtime_lower_bound_ms = 0; + @ConfigDesc("Ignored time(ms) in retrieving previous XLog") + public int xlog_pasttime_lower_bound_ms = 0; +// @ConfigDesc("Ignored profile time(ms) without saving") +// public int xlog_profile_save_lower_bound_ms = 0; + + //Profile + @ConfigDesc("Profile Writer Queue Size") + public int profile_queue_size = 1000; + + @ConfigDesc("gxid keeping count in memory for XLog consequent sampling") + public int xlog_sampling_matcher_gxid_keep_memory_count = 500000; + @ConfigDesc("xlog keeping count in memory for XLog consequent sampling") + public int xlog_sampling_matcher_xlog_keep_memory_count = 100000; + @ConfigDesc("max keeping millis of xlog for XLog consequent sampling") + public int xlog_sampling_matcher_xlog_keep_memory_millis = 5000; + + @ConfigDesc("profile keeping count (in one bucket, 500ms) in memory for XLog consequent sampling") + public int xlog_sampling_matcher_profile_keep_memory_count = 5000; + @ConfigDesc("max keeping seconds of profile for XLog consequent sampling") + public int xlog_sampling_matcher_profile_keep_memory_secs = 5; + + //GeoIP + @ConfigDesc("Activating IP-based city/country extraction") + public boolean geoip_enabled = true; + @ConfigDesc("Path to GeoIP data file") + public String geoip_data_city_file = CONF_DIR + "GeoLiteCity.dat"; + + //SQL + @ConfigDesc("Activating table-based SQL compression") + public boolean sql_table_parsing_enabled = true; + + //TagCount + @ConfigDesc("Activating TagCount function") + public boolean tagcnt_enabled = true; + + //Service request options from client + @ConfigDesc("search xlog service option - max xlog count to search per request") + public int req_search_xlog_max_count = 500; + + @ConfigDesc("Path to telegraf config xml file") + public String input_telegraf_config_file = CONF_DIR + "scouter-telegraf.xml"; + + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") + public boolean input_telegraf_enabled = true; + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") + public boolean input_telegraf_debug_enabled = false; + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") + public boolean input_telegraf_delta_counter_normalize_default = true; + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") + public int input_telegraf_delta_counter_normalize_default_seconds = 30; + @ConfigDesc("Deprecated use the telegraf config view instead. This value may be ignored.") + public int telegraf_object_deadtime_ms = 35000; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "Telegraf http input of the $measurement$ enabled.\n" + + "$measurement$ is a variable to the measurement name of the line protocol.\n" + + "eg) input_telegraf_$redis_keyspace$_enabled=true") + public boolean input_telegraf_$measurement$_enabled = true; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "print telegraf line protocol of the $measurement$ to STDOUT") + public boolean input_telegraf_$measurement$_debug_enabled = false; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "If set, only the metric matching to this tag value is handled.\n" + + "It can have multiple values. comma separator means 'or' condition. eg) cpu:cpu-total,cpu:cpu0\n" + + "It also have not(!) condition. eg) cpu:!cpu-total") + @ConfigValueType(value = ValueType.COMMA_COLON_SEPARATED_VALUE, + strings = {"filtering tag name(reqiured)", "filtering tag value(reqiured)"}, + booleans = {true, true} + ) + public String input_telegraf_$measurement$_tag_filter = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "which fields of $measurement$ are mapped to scouter's counter.\n" + + "format: {line-protocol field name}:{scouter counter name}:{display name?}:{unit?}:{hasTotal?}:{normalize sec?}\n" + + "It can have multiple values.\n" + + " - {scouter counter name} can be defined in combination with the line protocol's tag variables.\n" + + "For example, if the value of 'tag1' is 'disk01' and the value of 'tag2' is 'bin', the counter name defined as 'scouter-du-$tag1$-$tag2$' is 'scouter-du-disk01-bin'.\n" + + " eg)used_memory:tg-redis-used-memory,used_memory_rss:redis-used-memory-rss,redis used rss,bytes:true\n" + + " eg)cpu:cpu-$cpu-no$ -- this example shows counter definition with tag value.\n" + + "If {line-protocol field name} is started with '&' or '&&', then It works as delta counter\n" + + "When specified as a delta type, the difference in values per second is stored. and the counter name ends with '_delta'\n" + + "double '&&' means BOTH type. AS BOTH type, the value and the difference value both are stored.\n" + + " - {normalize sec} applies only to a delta counter if the counter is a 'BOTH' type counter. (This value can have min 4 to max 60)") + @ConfigValueType(value = ValueType.COMMA_COLON_SEPARATED_VALUE, + strings = {"line protocol field\n(reqiured)", "mapping counter name\n(reqiured)", "display name", "unit", "totalizable\ndefault true", "norm. sec.\ndefault 30"}, + booleans = {true, true, false, false, false, false} + ) + public String input_telegraf_$measurement$_counter_mappings = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "define an obj Family prefix. objectType is defined with some tags.\n" + + "see input_telegraf_$measurement$_objFamily_append_tags option.") + public String input_telegraf_$measurement$_objFamily_base = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "this tags's value is appended to objFamily_base.\nIt can have multiple values. eg)tag1,tag2") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String input_telegraf_$measurement$_objFamily_append_tags = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "define an objectType prefix. objectType is defined with some tags.\n" + + "see input_telegraf_$measurement$_objType_prepend(or append)_tags option.") + public String input_telegraf_$measurement$_objType_base = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "this tags's value is prepended to objType_base.\nIt can have multiple values. eg)tag1,tag2") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String input_telegraf_$measurement$_objType_prepend_tags = "scouter_obj_type_prefix"; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "this tags's value is appended to objType_base.\nIt can have multiple values. eg)tag1,tag2") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String input_telegraf_$measurement$_objType_append_tags = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "this tags's value is object type's icon file name that the scouter client have. eg)redis") + public String input_telegraf_$measurement$_objType_icon = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "define an objectName prefix. objectName is defined with some tags.\n" + + "see input_telegraf_$measurement$_objName_append_tags option.") + public String input_telegraf_$measurement$_objName_base = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "this tags's value is appended to objName_base.\n" + + "It can have multiple values. eg)tag1,tag2") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String input_telegraf_$measurement$_objName_append_tags = ""; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "tag name to define host") + public String input_telegraf_$measurement$_host_tag = "host"; + + @ConfigDesc("[This option is just a sample. Change $measurement$ to your measurement name like $cpu$.]\n" + + "which host value defined with $measurement$_host_tag option is mapped to scouter's host.\n" + + "It can have multiple values. eg)hostValue1:scouterHost1,hostValue2:scouterHost2") + @ConfigValueType(value = ValueType.COMMA_COLON_SEPARATED_VALUE, + strings = {"telegraf host name(reqiured)", "scouter host name(reqiured)"}, + booleans = {true, true} + ) + public String input_telegraf_$measurement$_host_mappings = ""; + + //Visitor Hourly + public boolean visitor_hourly_count_enabled = true; ``` @@ -112,290 +437,729 @@ public String geoip_data_city_file = CONF_DIR + "GeoLiteCity.dat"; ``` ```java -//Network -@ConfigDesc("Collector IP") -public String net_collector_ip = "127.0.0.1"; -@ConfigDesc("Collector UDP Port") -public int net_collector_udp_port = 6100; -@ConfigDesc("Collector TCP Port") -public int net_collector_tcp_port = 6100; + //Network + @ConfigDesc("UDP local IP") + public String net_local_udp_ip = null; + @ConfigDesc("UDP local Port") + public int net_local_udp_port; + @ConfigDesc("Collector IP") + public String net_collector_ip = "127.0.0.1"; + @ConfigDesc("Collector UDP Port") + public int net_collector_udp_port = NetConstants.SERVER_UDP_PORT; + @ConfigDesc("Collector TCP Port") + public int net_collector_tcp_port = NetConstants.SERVER_TCP_PORT; + @ConfigDesc("Collector TCP Session Count") + public int net_collector_tcp_session_count = 1; + @ConfigDesc("Collector TCP Socket Timeout(ms)") + public int net_collector_tcp_so_timeout_ms = 60000; + @ConfigDesc("Collector TCP Connection Timeout(ms)") + public int net_collector_tcp_connection_timeout_ms = 3000; + @ConfigDesc("UDP Buffer Size") + public int net_udp_packet_max_bytes = 60000; + @ConfigDesc("UDP Collection Interval(ms)") + public long net_udp_collection_interval_ms = 100; + + //Object + @ConfigDesc("Deprecated. It's just an alias of monitoring_group_type which overrides this value.") + public String obj_type = ""; + @ConfigDesc("monitoring group type, commonly named as system name and a monitoring type.\neg) ORDER-JVM, WAREHOUSE-LINUX ...") + public String monitoring_group_type = ""; + @ConfigDesc("Object Name") + public String obj_name = ""; + @ConfigDesc("Host Type") + public String obj_host_type = ""; + @ConfigDesc("Host Name") + public String obj_host_name = ""; + @ConfigDesc("Activating for using object name as PID") + public boolean obj_name_auto_pid_enabled = false; + @ConfigDesc("Redefining DS, RP type according to main object") + public boolean obj_type_inherit_to_child_enabled = false; + @ConfigDesc("Activating collect sub counters using JMX") + public boolean jmx_counter_enabled = false; + + //profile + @ConfigDesc("Http Query String profile") + public boolean profile_http_querystring_enabled; + @ConfigDesc("Http Header profile") + public boolean profile_http_header_enabled; + @ConfigDesc("Service URL prefix for Http header profile") + public String profile_http_header_url_prefix = "/"; + + @ConfigDesc("http header names for profiling with comma separator") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String profile_http_header_keys = ""; + + @ConfigDesc("Http Parameter profile") + public boolean profile_http_parameter_enabled; + @ConfigDesc("Service URL prefix for Http parameter profile") + public String profile_http_parameter_url_prefix = "/"; + @ConfigDesc("spring controller method parameter profile") + public boolean profile_spring_controller_method_parameter_enabled = true; + +// @Deprecated +// @ConfigDesc("Activating profile summary function") +// public boolean profile_summary_mode_enabled = false; + + @ConfigDesc("Profiling the memory usage of each method") + public boolean profile_thread_cputime_enabled = false; + @ConfigDesc("Profiling the memory usage of each service") + public boolean profile_thread_memory_usage_enabled = true; + @ConfigDesc("ThreadStack profile for open socket") + public boolean profile_socket_open_fullstack_enabled = false; + @ConfigDesc("ThreadStack profile for a certain port of open socket") + public int profile_socket_open_fullstack_port = 0; + @ConfigDesc("SQL Map profile") + public boolean profile_sqlmap_name_enabled = true; + @ConfigDesc("DBConnection profile") + public boolean profile_connection_open_enabled = true; + @ConfigDesc("Activating stack information profile in opening DB connection") + public boolean profile_connection_open_fullstack_enabled = false; + @ConfigDesc("AutoCommit profile") + public boolean profile_connection_autocommit_status_enabled = false; + @ConfigDesc("Method profile") + public boolean profile_method_enabled = true; + @ConfigDesc("Profile Buffer Size") + public int profile_step_max_count = 1024; + @ConfigDesc("Profile Buffer Size") + public int profile_step_max_keep_in_memory_count = 2048; + @ConfigDesc("Stack profile in occurrence of service error") + public boolean profile_fullstack_service_error_enabled = false; + @ConfigDesc("Stack profile in occurrence of apicall error") + public boolean profile_fullstack_apicall_error_enabled = false; + @ConfigDesc("Stack profile in occurrence of sql error") + public boolean profile_fullstack_sql_error_enabled = false; + @ConfigDesc("Stack profile in occurrence of commit error") + public boolean profile_fullstack_sql_commit_enabled = false; + @ConfigDesc("Stack profile in occurrence of sql error") + public boolean profile_fullstack_hooked_exception_enabled = false; + + @ConfigDesc("Stack profile in occurrence of redis error") + public boolean profile_fullstack_redis_error_enabled = false; + @ConfigDesc("make unknown redis key stringify by force. (using new String(byte[])") + public boolean profile_redis_key_forcibly_stringify_enabled = false; + + @ConfigDesc("Number of stack profile lines in occurrence of error") + public int profile_fullstack_max_lines = 0; + + @ConfigDesc("Escaping literal parameters for normalizing the query") + public boolean profile_sql_escape_enabled = true; + @ConfigDesc("") + public boolean _profile_fullstack_sql_connection_enabled = false; + @ConfigDesc("") + public boolean _profile_fullstack_sql_execute_debug_enabled = false; + @ConfigDesc("") + public boolean profile_fullstack_rs_leak_enabled = false; + @ConfigDesc("") + public boolean profile_fullstack_stmt_leak_enabled = false; + + @ConfigDesc("Profile elastic search full query.\nIt need more payload and disk usage.") + public boolean profile_elasticsearch_full_query_enabled = false; + + @ConfigDesc("profile reactor's important checkpoint") + public boolean profile_reactor_checkpoint_enabled = true; + @ConfigDesc("profile reactor's another checkpoints") + public boolean profile_reactor_more_checkpoint_enabled = false; + + //Trace + @ConfigDesc("User ID based(0 : Remote IP Address, 1 : Cookie(JSESSIONID), 2 : Cookie(SCOUTER), 3 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") + public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:Scouter Cookie, 3:Header + @ConfigDesc("Setting a cookie expired time for SCOUTER cookie when trace_user_mode is 2") + public int trace_scouter_cookie_max_age = Integer.MAX_VALUE; + @ConfigDesc("Setting a cookie path for SCOUTER cookie when trace_user_mode is 2") + public String trace_user_cookie_path = "/"; + + @ConfigDesc("Tracing background thread socket") + public boolean trace_background_socket_enabled = true; + @ConfigDesc("Adding assigned header value to the service name") + public String trace_service_name_header_key; + @ConfigDesc("Adding assigned get parameter to the service name") + public String trace_service_name_get_key; + @ConfigDesc("Adding assigned post parameter to the service name") + public String trace_service_name_post_key; + @ConfigDesc("Active Thread Warning Time(ms)") + public long trace_activeserivce_yellow_time = 3000; + @ConfigDesc("Active Thread Fatal Time(ms)") + public long trace_activeservice_red_time = 8000; + @ConfigDesc("Identifying header key of Remote IP") + public String trace_http_client_ip_header_key = ""; + @ConfigDesc("Activating gxid connection in HttpTransfer") + public boolean trace_interservice_enabled = true; + @ConfigDesc("") + public String _trace_interservice_gxid_header_key = "X-Scouter-Gxid"; + @ConfigDesc("") + public boolean trace_response_gxid_enabled = false; + @ConfigDesc("") + public String _trace_interservice_callee_header_key = "X-Scouter-Callee"; + @ConfigDesc("") + public String _trace_interservice_caller_header_key = "X-Scouter-Caller"; + @ConfigDesc("") + public String _trace_interservice_caller_obj_header_key = "X-Scouter-Caller-Obj"; + @ConfigDesc("") + public String _trace_interservice_callee_obj_header_key = "X-Scouter-Callee-Obj"; + @ConfigDesc("JSession key for user ID") + public String trace_user_session_key = "JSESSIONID"; + @ConfigDesc("") + public boolean _trace_auto_service_enabled = false; + @ConfigDesc("") + public boolean _trace_auto_service_backstack_enabled = true; + @ConfigDesc("Activating trace DB2") + public boolean trace_db2_enabled = true; + + @Deprecated + @ConfigDesc("Deprecated!") + public boolean trace_webserver_enabled = false; + @Deprecated + @ConfigDesc("Deprecated!") + public String trace_webserver_name_header_key = "X-Forwarded-Host"; + @Deprecated + @ConfigDesc("Deprecated!") + public String trace_webserver_time_header_key = "X-Forwarded-Time"; + + @ConfigDesc("measure queuing time from load balancer, reverse proxy, web server...\n if set, you can open Queuing Time view.") + public boolean trace_request_queuing_enabled = false; + @ConfigDesc("the name of server that set request start time") + public String trace_request_queuing_start_host_header = "X-Request-Start-Host"; + @ConfigDesc("set request start time.\n - time format : t=microsecond (or) ts=second.milli") + public String trace_request_queuing_start_time_header = "X-Request-Start-Time"; + + @ConfigDesc("the name of server that set the trace_request_queuing_start_2nd_time_header") + public String trace_request_queuing_start_2nd_host_header = "X-Request-Start-2nd-Host"; + @ConfigDesc("set request passing time measured by 2nd layered server.\n - time format : t=microsecond (or) ts=second.milli") + public String trace_request_queuing_start_2nd_time_header = "X-Request-Start-2nd-Time"; + + @ConfigDesc("") + public int _trace_fullstack_socket_open_port = 0; + @ConfigDesc("") + public int _trace_sql_parameter_max_count = 128; + @ConfigDesc("max length of bound sql parameter on profile view(< 500)") + public int trace_sql_parameter_max_length = 20; + @ConfigDesc("") + public String trace_delayed_service_mgr_filename = "setting_delayed_service.properties"; + @ConfigDesc("") + public boolean trace_rs_leak_enabled = false; + @ConfigDesc("") + public boolean trace_stmt_leak_enabled = false; + + //Dir + @ConfigDesc("Plugin directory") + public File plugin_dir = new File(agent_dir_path + "/plugin"); + @ConfigDesc("Dump directory") + public File dump_dir = new File(agent_dir_path + "/dump"); + //public File mgr_agent_lib_dir = new File("./_scouter_"); + + //Manager + @ConfigDesc("") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String mgr_static_content_extensions = "js, htm, html, gif, png, jpg, css"; + @ConfigDesc("") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String mgr_log_ignore_ids = ""; + + //Auto dump options when active service is exceed the set threshold count. + @ConfigDesc("Activating auto dump - append dumps onto the dump file in dump directory.") + public boolean autodump_enabled = false; + @ConfigDesc("Auto dump trigger point (dump when exceeding this active service count)") + public int autodump_trigger_active_service_cnt = 10000; + @ConfigDesc("Minimum interval(ms) for operating auto dump function - hard min : 5000") + public long autodump_interval_ms = 30000; + @ConfigDesc("Auto dump level (1 : ThreadDump, 2 : active service, 3 : thread list)") + public int autodump_level = 1; // 1:ThreadDump, 2:ActiveService, 3:ThreadList + + //Auto dump options about the thread on stuck + @ConfigDesc("Dump when a thread are running over this time - 0 is disabled") + public int autodump_stuck_thread_ms = 0; + @ConfigDesc("") + public int autodump_stuck_check_interval_ms = 10000; + + //Auto dump options on exceeded process cpu + @ConfigDesc("Enable the function to generate dump file when this process cpu is over than the set threshold") + public boolean autodump_cpu_exceeded_enabled = false; + @ConfigDesc("Threshold of cpu to generate dump file") + public int autodump_cpu_exceeded_threshold_pct = 90; + @ConfigDesc("Threshold of over-cpu-threshold duration") + public int autodump_cpu_exceeded_duration_ms = 30000; + @ConfigDesc("Dump file generation interval") + public int autodump_cpu_exceeded_dump_interval_ms = 3000; + @ConfigDesc("value of how many dump is generated.") + public int autodump_cpu_exceeded_dump_cnt = 3; + + //XLog + @Deprecated + @ConfigDesc("(deprecated) XLog Ignore Time\n - for backward compatibility. Use xlog_sampling_xxx options instead") + public int xlog_lower_bound_time_ms = 0; + + //XLog error marking + @ConfigDesc("Leave an error message at XLog in case of over fetching. (fetch count)") + public int xlog_error_jdbc_fetch_max = 10000; + @ConfigDesc("Leave an error message at XLog in case of over timing query. (ms)") + public int xlog_error_sql_time_max_ms = 30000; + @ConfigDesc("Leave an error message at XLog when UserTransaction's begin/end unpaired") + public boolean xlog_error_check_user_transaction_enabled = true; + @ConfigDesc("mark as error on xlog flag if SqlException is occured.") + public boolean xlog_error_on_sqlexception_enabled = true; + @ConfigDesc("mark as error on xlog flag if Api call errors are occured.") + public boolean xlog_error_on_apicall_exception_enabled = true; + @ConfigDesc("mark as error on xlog flag if redis error is occured.") + public boolean xlog_error_on_redis_exception_enabled = true; + @ConfigDesc("mark as error on xlog flag if elasticsearc error is occured.") + public boolean xlog_error_on_elasticsearch_exception_enabled = true; + @ConfigDesc("mark as error on xlog flag if mongodb error is occured.") + public boolean xlog_error_on_mongodb_exception_enabled = true; + + //XLog hard sampling options + @ConfigDesc("XLog hard sampling mode enabled\n - for the best performance but it affects all statistics data") + public boolean _xlog_hard_sampling_enabled = false; + @ConfigDesc("XLog hard sampling rate(%) - discard data over the percentage") + public int _xlog_hard_sampling_rate_pct = 10; + + //XLog soft sampling options + @ConfigDesc("XLog sampling - ignore global consequent sampling. the commencement service's sampling option affects it's children.") + public boolean ignore_global_consequent_sampling = false; + @ConfigDesc("XLog sampling - The service of this patterns can be unsampled by the sampling rate even if parent call is sampled and on tracing.") + public String xlog_consequent_sampling_ignore_patterns= ""; + + @ConfigDesc("XLog sampling exclude patterns.") + public String xlog_sampling_exclude_patterns = ""; + + @ConfigDesc("XLog sampling mode enabled") + public boolean xlog_sampling_enabled = false; + @ConfigDesc("XLog sampling but discard profile only not XLog.") + public boolean xlog_sampling_only_profile = false; + @ConfigDesc("XLog sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_sampling_step1_ms = 100; + @ConfigDesc("XLog sampling step1 percentage(%)") + public int xlog_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_sampling_step2_ms = 1000; + @ConfigDesc("XLog sampling step2 percentage(%)") + public int xlog_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_sampling_step3_ms = 3000; + @ConfigDesc("XLog sampling step3 percentage(%)") + public int xlog_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog sampling over step3 percentage(%)") + public int xlog_sampling_over_rate_pct = 100; + + + //XLog sampling for service patterns options + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned2_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned2_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned2_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned2_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned2_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned2_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned2_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned2_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned2_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned2_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned3_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned3_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned3_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned3_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned3_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned3_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned3_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned3_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned3_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned3_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned4_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned4_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned4_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned4_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned4_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned4_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned4_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned4_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned4_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned4_sampling_over_rate_pct = 100; + + //XLog patterned sampling options for another sampling group + @ConfigDesc("XLog patterned sampling mode enabled") + public boolean xlog_patterned5_sampling_enabled = false; + @ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_patterned5_sampling_service_patterns = ""; + + @ConfigDesc("XLog patterned sampling but discard profile only not XLog.") + public boolean xlog_patterned5_sampling_only_profile = false; + @ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") + public int xlog_patterned5_sampling_step1_ms = 100; + @ConfigDesc("XLog patterned sampling step1 percentage(%)") + public int xlog_patterned5_sampling_step1_rate_pct = 3; + @ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") + public int xlog_patterned5_sampling_step2_ms = 1000; + @ConfigDesc("XLog patterned sampling step2 percentage(%)") + public int xlog_patterned5_sampling_step2_rate_pct = 10; + @ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") + public int xlog_patterned5_sampling_step3_ms = 3000; + @ConfigDesc("XLog patterned sampling step3 percentage(%)") + public int xlog_patterned5_sampling_step3_rate_pct = 30; + @ConfigDesc("XLog patterned sampling over step3 percentage(%)") + public int xlog_patterned5_sampling_over_rate_pct = 100; + + //XLog discard options + @ConfigDesc("XLog discard service patterns\nNo XLog data, but apply to TPS and summary.\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_discard_service_patterns = ""; + @ConfigDesc("Do not discard error even if it's discard pattern.") + public boolean xlog_discard_service_show_error = true; + + @ConfigDesc("XLog fully discard service patterns\nNo XLog data, No apply to TPS and summary.\neg) /user/{userId},/device/*") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String xlog_fully_discard_service_patterns = ""; + + //Alert + @ConfigDesc("Limited length of alert message") + public int alert_message_length = 3000; + @ConfigDesc("Minimum interval(ms) in fetching the same alert") + public long alert_send_interval_ms = 10000; + @ConfigDesc("PermGen usage for send alert") + public int alert_perm_warning_pct = 90; + + //Log + @ConfigDesc("") + public boolean _log_asm_enabled; + @ConfigDesc("") + public boolean _log_udp_xlog_enabled; + @ConfigDesc("") + public boolean _log_udp_object_enabled; + @ConfigDesc("") + public boolean _log_udp_counter_enabled; + @ConfigDesc("") + public boolean _log_datasource_lookup_enabled = true; + @ConfigDesc("") + public boolean _log_background_sql = false; + @ConfigDesc("Log directory") + public String log_dir = ""; + @ConfigDesc("Retaining log according to date") + public boolean log_rotation_enabled = true; + @ConfigDesc("Keeping period of log") + public int log_keep_days = 7; + @ConfigDesc("") + public boolean _trace = false; + @ConfigDesc("") + public boolean _trace_use_logger = false; + + //Hook + @ConfigDesc("Method set for argument hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_args_patterns = ""; + + @ConfigDesc("Method set for return hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_return_patterns = ""; + + @ConfigDesc("Method set for constructor hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_constructor_patterns = ""; + + @ConfigDesc("Method set for dbconnection hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_connection_open_patterns = ""; + + @ConfigDesc("Method set for getconnection hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_get_connection_patterns = ""; -@ConfigDesc("Escaping literal parameters for normalizing the query") -public boolean profile_sql_escape_enabled = true; - -//Naming / grouping -@ConfigDesc("Deprecated. It's just an alias of system_group_id which overrides this value.") -public String obj_type = ""; -@ConfigDesc("monitoring group type, commonly named as system name and a monitoring type.\neg) ORDER-JVM, WAREHOUSE-LINUX ...") -public String monitoring_group_type = ""; -public String obj_name = ""; -@ConfigDesc("Host Type") -public String obj_host_type = ""; -@ConfigDesc("Host Name") -public String obj_host_name = ""; -@ConfigDesc("Activating for using object name as PID") - -//profile -@ConfigDesc("Http Query String profile") -public boolean profile_http_querystring_enabled; -@ConfigDesc("Http Header profile") -public boolean profile_http_header_enabled; -@ConfigDesc("Service URL prefix for Http header profile") -public String profile_http_header_url_prefix = "/"; -@ConfigDesc("spring controller method parameter profile") -public boolean profile_spring_controller_method_parameter_enabled = false; -@ConfigDesc("http header names for profiling with comma separator") -public String profile_http_header_keys = ""; -@ConfigDesc("Calculating CPU time by profile") -public boolean profile_thread_cputime_enabled = false; - -//Trace -@ConfigDesc("Adding assigned header value to the service name") -public String trace_service_name_header_key; -@ConfigDesc("Adding assigned get parameter to the service name") -public String trace_service_name_get_key; -@ConfigDesc("Adding assigned post parameter to the service name") -public String trace_service_name_post_key; - -@ConfigDesc("warning color marking threshold duration(ms) on active service view") -public long trace_activeserivce_yellow_time = 3000; -@ConfigDesc("fatal color marking threshold duration(ms) on active service view") -public long trace_activeservice_red_time = 8000; - -@ConfigDesc("Identifying header key of Remote IP") -public String trace_http_client_ip_header_key = ""; - -@ConfigDesc("Activating gxid connection in HttpTransfer") -public boolean trace_interservice_enabled = false; - -@ConfigDesc("Session key for user counting") -public String trace_user_session_key = "JSESSIONID"; - -@ConfigDesc("") -public String trace_delayed_service_mgr_filename = "setting_delayed_service.properties"; - -//trace request queuing -@ConfigDesc("measure queuing time from load balancer, reverse proxy, web server...\n if set, you can open Queuing Time view.") -public boolean trace_request_queuing_enabled = false; -@ConfigDesc("the name of server that set request start time") -public String trace_request_queuing_start_host_header = "X-Request-Start-Host"; -@ConfigDesc("set request start time.\n - time format : t=microsecond (or) ts=second.milli") -public String trace_request_queuing_start_time_header = "X-Request-Start-Time"; - -@ConfigDesc("the name of server that set the trace_request_queuing_start_2nd_time_header") -public String trace_request_queuing_start_2nd_host_header = "X-Request-Start-2nd-Host"; -@ConfigDesc("set request passing time measured by 2nd layered server.\n - time format : t=microsecond (or) ts=second.milli") -public String trace_request_queuing_start_2nd_time_header = "X-Request-Start-2nd-Time"; - -//Dir -@ConfigDesc("Plugin directory") -public File plugin_dir = new File(agent_dir_path + "/plugin"); -@ConfigDesc("Dump directory") -public File dump_dir = new File(agent_dir_path + "/dump"); -//public File mgr_agent_lib_dir = new File("./_scouter_"); - -//Auto dump options when active service count is exceed the set threshold. -@ConfigDesc("Activating auto dump - append dumps onto the dump file in dump directory.") -public boolean autodump_enabled = false; -@ConfigDesc("Auto dump trigger point (dump when exceeding this active service count)") -public int autodump_trigger_active_service_cnt = 10000; -@ConfigDesc("Minimum interval(ms) for operating auto dump function - hard min : 5000") -public long autodump_interval_ms = 30000; -@ConfigDesc("Auto dump level (1 : ThreadDump, 2 : active service, 3 : thread list)") -public int autodump_level = 1; // 1:ThreadDump, 2:ActiveService, 3:ThreadList - -//generate thread dump if stucked threads exsist -@ConfigDesc("Dump when a thread are running over this time - 0 is disabled") -public int autodump_stuck_thread_ms = 0; -@ConfigDesc("") -public int autodump_stuck_check_interval_ms = 10000; - -//Auto dump options on exceeded process cpu -@ConfigDesc("Enable the function to generate dump file when this process cpu is over than the set threshold") -public boolean autodump_cpu_exceeded_enabled = false; -@ConfigDesc("Threshold of cpu to generate dump file") -public int autodump_cpu_exceeded_threshold_pct = 90; -@ConfigDesc("Threshold of over-cpu-threshold duration") -public int autodump_cpu_exceeded_duration_ms = 30000; -@ConfigDesc("Dump file generation interval") -public int autodump_cpu_exceeded_dump_interval_ms = 3000; -@ConfigDesc("value of how many dump is generated.") -public int autodump_cpu_exceeded_dump_cnt = 3; - -//Log -@ConfigDesc("Log directory") -public String log_dir = ""; -@ConfigDesc("Retaining log according to date") -public boolean log_rotation_enabled = true; -@ConfigDesc("Keeping period of log") -public int log_keep_days = 7; - -//Detect spring Rest url -@ConfigDesc("use @RequestMapping value as service name on a spring REST web appplicaiton.") -public boolean _hook_spring_rest_enabled = false; - -//Hook method -@ConfigDesc("Method set for method hooking") -public String hook_method_patterns = ""; - -@ConfigDesc("Prefix ignrore Method hooking") -public String hook_method_ignore_prefixes = "get,set"; -@ConfigDesc("Class set without Method hookingt") -public String hook_method_ignore_classes = ""; -@ConfigDesc("") -public String hook_method_exclude_patterns = ""; -@ConfigDesc("Activating public Method hooking") -public boolean hook_method_access_public_enabled = true; -@ConfigDesc("Activating private Method hooking") -public boolean hook_method_access_private_enabled = false; -@ConfigDesc("Activating protected Method hooking") -public boolean hook_method_access_protected_enabled = false; -@ConfigDesc("Activating default Method hooking") -public boolean hook_method_access_none_enabled = false; - -//this option should be used only if the apllication is non-servlet. -//In case of servlet web application, detect HttpServlet.service() method as hook-service-patterns automatically. -@ConfigDesc("Method set for service hooking") -public String hook_service_patterns = ""; - -//Hook options for pulgin -@ConfigDesc("Method set for argument hooking") -public String hook_args_patterns = ""; -@ConfigDesc("Method set for return hooking") -public String hook_return_patterns = ""; -@ConfigDesc("Method set for constructor hooking") -public String hook_constructor_patterns = ""; - -//hook for exception handling -public String hook_exception_class_patterns = ""; -@ConfigDesc("Exception class exlude patterns") -public String hook_exception_exlude_class_patterns = ""; -@ConfigDesc("Exception handler patterns - exceptions passed to these methods are treated as error on xlog view. (ex) my.app.myHandler.handleException") -public String hook_exception_handler_method_patterns = ""; - -//XLog -//XLog error marking -@ConfigDesc("Leave an error message at XLog in case of over fetching. (fetch count)") -public int xlog_error_jdbc_fetch_max = 10000; -@ConfigDesc("Leave an error message at XLog in case of over timing query. (ms)") -public int xlog_error_sql_time_max_ms = 30000; -@ConfigDesc("Leave an error message at XLog when UserTransaction's begin/end unpaired") -public boolean xlog_error_check_user_transaction_enabled = true; -@ConfigDesc("mark as error on xlog flag if SqlException is occured.") -public boolean xlog_error_on_sqlexception_enabled = true; -@ConfigDesc("mark as error on xlog flag if Api call errors are occured.") -public boolean xlog_error_on_apicall_exception_enabled = true; - -//XLog hard sampling options -@ConfigDesc("XLog hard sampling mode enabled\n - for the best performance but it affects all statistics data") -public boolean _xlog_hard_sampling_enabled = false; -@ConfigDesc("XLog hard sampling rate(%) - discard data over the percentage") -public int _xlog_hard_sampling_rate_pct = 10; - -//XLog soft sampling options -@ConfigDesc("XLog sampling mode enabled") -public boolean xlog_sampling_enabled = false; -@ConfigDesc("XLog sampling but discard profile only not XLog.") -public boolean xlog_sampling_only_profile = false; -@ConfigDesc("XLog sampling bound millisecond - step1(lowest : range - from 0 to here)") -public int xlog_sampling_step1_ms = 100; -@ConfigDesc("XLog sampling step1 percentage(%)") -public int xlog_sampling_step1_rate_pct = 3; -@ConfigDesc("XLog sampling bound millisecond - step2(range - from step1 to here)") -public int xlog_sampling_step2_ms = 1000; -@ConfigDesc("XLog sampling step2 percentage(%)") -public int xlog_sampling_step2_rate_pct = 10; -@ConfigDesc("XLog sampling bound millisecond - step3(highest : range - from step2 to here)") -public int xlog_sampling_step3_ms = 3000; -@ConfigDesc("XLog sampling step3 percentage(%)") -public int xlog_sampling_step3_rate_pct = 30; -@ConfigDesc("XLog sampling over step3 percentage(%)") -public int xlog_sampling_over_rate_pct = 100; - -//XLog sampling for service patterns options -@ConfigDesc("XLog patterned sampling mode enabled") -public boolean xlog_patterned_sampling_enabled = false; -@ConfigDesc("XLog patterned sampling service patterns\neg) /user/{userId},/device/*") -public String xlog_patterned_sampling_service_patterns = ""; -@ConfigDesc("XLog patterned sampling but discard profile only not XLog.") -public boolean xlog_patterned_sampling_only_profile = false; -@ConfigDesc("XLog patterned sampling bound millisecond - step1(lowest : range - from 0 to here)") -public int xlog_patterned_sampling_step1_ms = 100; -@ConfigDesc("XLog patterned sampling step1 percentage(%)") -public int xlog_patterned_sampling_step1_rate_pct = 3; -@ConfigDesc("XLog patterned sampling bound millisecond - step2(range - from step1 to here)") -public int xlog_patterned_sampling_step2_ms = 1000; -@ConfigDesc("XLog patterned sampling step2 percentage(%)") -public int xlog_patterned_sampling_step2_rate_pct = 10; -@ConfigDesc("XLog patterned sampling bound millisecond - step3(highest : range - from step2 to here)") -public int xlog_patterned_sampling_step3_ms = 3000; -@ConfigDesc("XLog patterned sampling step3 percentage(%)") -public int xlog_patterned_sampling_step3_rate_pct = 30; -@ConfigDesc("XLog patterned sampling over step3 percentage(%)") -public int xlog_patterned_sampling_over_rate_pct = 100; - - -//Async processing support -@ConfigDesc("Hook for supporting async servlet") -public boolean hook_async_servlet_enabled = true; -@ConfigDesc("startAsync impl. method patterns") -public String hook_async_servlet_start_patterns = ""; -@ConfigDesc("asyncContext dispatch impl. method patterns") -public String hook_async_context_dispatch_patterns = ""; - -@ConfigDesc("spring async execution submit patterns") -public String hook_spring_async_submit_patterns = ""; -@ConfigDesc("spring async execution hook enabled") -public boolean hook_spring_async_enabled = true; - -@ConfigDesc("PRE-released option before stable release!\nhook threadpool executor for tracing async processing.") -public boolean hook_async_thread_pool_executor_enabled = false; - -@ConfigDesc("Hook callable and runnable for tracing async processing.\n It hook only 'hook_async_callrunnable_scan_prefixes' option contains pacakage or classes") -public boolean hook_async_callrunnable_enabled = true; -@ConfigDesc("scanning range prefixes for hooking callable, runnable implementations and lambda expressions.\n usually your application package.\n 2 or more packages can be separated by commas.") -public String hook_async_callrunnable_scan_package_prefixes = ""; - -@ConfigDesc("Experimental! test it on staging environment of your system before enable this option.\n enable lambda expressioned class hook for detecting asyncronous processing. \nOnly classes under the package configured by 'hook_async_callrunnable_scan_package_prefixes' is hooked.") -public boolean hook_lambda_instrumentation_strategy_enabled = false; -//Control -@ConfigDesc("Activating Reject service") -public boolean control_reject_service_enabled = false; -@ConfigDesc("Minimum count of rejecting active service") -public int control_reject_service_max_count = 10000; -@ConfigDesc("Activating Reject URL") -public boolean control_reject_redirect_url_enabled = false; -@ConfigDesc("Reject Text") -public String control_reject_text = "too many request!!"; -@ConfigDesc("Reject URL") -public String control_reject_redirect_url = "/error.html"; - -// SFA(Stack Frequency Analyzer) -@ConfigDesc("Activating period threaddump function") -public boolean sfa_dump_enabled = false; -@ConfigDesc("SFA thread dump Interval(ms)") -public int sfa_dump_interval_ms = 10000; - -//Trace -@ConfigDesc("User ID based(0 : Remote IP Address, 1 : Cookie(JSESSIONID), 2 : Cookie(SCOUTER), 3 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") -public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:Scouter Cookie, 3:Header -@ConfigDesc("Setting a cookie expired time for SCOUTER cookie when trace_user_mode is 2") -public int trace_scouter_cookie_max_age = Integer.MAX_VALUE; -@ConfigDesc("Setting a cookie path for SCOUTER cookie when trace_user_mode is 2") -public String trace_user_cookie_path = "/"; - -@ConfigDesc("Path to file creation directory of process ID file") -public String counter_object_registry_path = "/tmp/scouter"; - -@ConfigDesc("think time (ms) of recent user") -public long counter_recentuser_valid_ms = DateUtil.MILLIS_PER_FIVE_MINUTE; - -@ConfigDesc("PermGen usage for send alert") -public int alert_perm_warning_pct = 90; - -@ConfigDesc("") -public String mgr_static_content_extensions = "js, htm, html, gif, png, jpg, css"; + @ConfigDesc("IntialContext Class Set") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_context_classes = "javax/naming/InitialContext"; + + @ConfigDesc("Method set for method hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_method_patterns = ""; + + @ConfigDesc("Prefix without Method hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_method_ignore_prefixes = "get,set"; + + @ConfigDesc("Class set without Method hookingt") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_method_ignore_classes = ""; + + @ConfigDesc("") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_method_exclude_patterns = ""; + + @ConfigDesc("Activating public Method hooking") + public boolean hook_method_access_public_enabled = true; + @ConfigDesc("Activating private Method hooking") + public boolean hook_method_access_private_enabled = false; + @ConfigDesc("Activating protected Method hooking") + public boolean hook_method_access_protected_enabled = false; + @ConfigDesc("Activating none Method hooking") + public boolean hook_method_access_none_enabled = false; + @ConfigDesc("Activating lambda Method hooking") + public boolean hook_method_lambda_enable = true; + + @ConfigDesc("Method set for service hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_service_patterns = ""; + + @ConfigDesc("hooking service name use a 1st string parameter or class & method name") + public boolean hook_service_name_use_1st_string_enabled = true; + + @ConfigDesc("Method set for apicall hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_apicall_patterns = ""; + + @ConfigDesc("Method set for apicallinfo hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_apicall_info_patterns = ""; + + @ConfigDesc("Method set for jsp hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_jsp_patterns = ""; + + @ConfigDesc("Method set for preparestatement hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_jdbc_pstmt_classes = ""; + + @ConfigDesc("Method set for statement hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_jdbc_stmt_classes = ""; + + @ConfigDesc("Method set for resultset hooking") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_jdbc_rs_classes = ""; + + @ConfigDesc("Method set for dbconnection wrapping") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_jdbc_wrapping_driver_patterns = ""; + + @ConfigDesc("Exception class patterns - These will seem as error on xlog view.\n (ex) my.app.BizException,my.app.exception.*Exception") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_exception_class_patterns = ""; + + @ConfigDesc("Exception class exclude patterns") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_exception_exclude_class_patterns = ""; + + @ConfigDesc("Exception handler patterns\n - exceptions passed to these methods are treated as error on xlog view.\n (ex) my.app.myHandler.handleException") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_exception_handler_method_patterns = ""; + + @ConfigDesc("Exception handler exclude class name patterns(can not include star-* in patterns)\n - (ex) my.app.MyManagedException,MyBizException") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_exception_handler_exclude_class_patterns = ""; + + @ConfigDesc("Hook for supporting async servlet") + public boolean hook_async_servlet_enabled = true; + + @ConfigDesc("startAsync impl. method patterns") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_async_servlet_start_patterns = ""; + + @ConfigDesc("asyncContext dispatch impl. method patterns") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_async_context_dispatch_patterns = ""; + + @ConfigDesc("spring async execution submit patterns") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_spring_async_submit_patterns = ""; + + @ConfigDesc("spring async execution hook enabled") + public boolean hook_spring_async_enabled = true; + + @Deprecated + @ConfigDesc("Deprecated. use hook_async_callrunnable_enabled") + public boolean hook_async_callrunnable_enable = true; + + @ConfigDesc("Hook callable and runnable for tracing async processing.\n It hook only 'hook_async_callrunnable_scan_prefixes' option contains pacakage or classes") + public boolean hook_async_callrunnable_enabled = true; + + @ConfigDesc("scanning range prefixes for hooking callable, runnable implementations and lambda expressions.\n usually your application package.\n 2 or more packages can be separated by commas.") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String hook_async_callrunnable_scan_package_prefixes = ""; + + @ConfigDesc("redis key setting patterns.\n refer to org.springframework.data.redis.core.AbstractOperations#rawKey") + @ConfigValueType(ValueType.COMMA_SEPARATED_VALUE) + public String _hook_redis_set_key_patterns = ""; + + @ConfigDesc("hook threadpool executor for tracing async processing.") + public boolean hook_async_thread_pool_executor_enabled = true; + + @ConfigDesc("hystrix execution hook enabled") + public boolean hook_hystrix_enabled = false; + + @ConfigDesc("") + public String hook_add_fields = ""; + @ConfigDesc("") + public boolean _hook_serivce_enabled = true; + @ConfigDesc("") + public boolean _hook_dbsql_enabled = true; + @ConfigDesc("") + public boolean _hook_dbconn_enabled = true; + @ConfigDesc("") + public boolean _hook_cap_enabled = true; + @ConfigDesc("") + public boolean _hook_methods_enabled = true; + @ConfigDesc("") + public boolean _hook_apicall_enabled = true; + @ConfigDesc("") + public boolean _hook_socket_enabled = true; + @ConfigDesc("") + public boolean _hook_jsp_enabled = true; + @ConfigDesc("") + public boolean _hook_async_enabled = true; + @ConfigDesc("") + public boolean _hook_usertx_enabled = true; + @ConfigDesc("") + public boolean _hook_spring_rest_enabled = true; + @ConfigDesc("") + public boolean _hook_redis_enabled = true; + @ConfigDesc("") + public boolean _hook_kafka_enabled = true; + @ConfigDesc("") + public boolean _hook_elasticsearch_enabled = true; + @ConfigDesc("") + public boolean hook_mongodb_enabled = false; + @ConfigDesc("") + public boolean _hook_rabbit_enabled = true; + @ConfigDesc("") + public boolean _hook_reactive_enabled = true; + @ConfigDesc("") + public boolean _hook_coroutine_enabled = true; + @ConfigDesc("") + public boolean _hook_coroutine_debugger_hook_enabled = false; + @ConfigDesc("") + public boolean _hook_thread_name_enabled = false; + + @ConfigDesc("") + public String _hook_direct_patch_classes = ""; + + @ConfigDesc("") + public String _hook_boot_prefix = null; + @ConfigDesc("for warning a big Map type object that have a lot of entities.\n It may increase system load. be careful to enable this option.") + public boolean _hook_map_impl_enabled = false; + @ConfigDesc("") + public int _hook_map_impl_warning_size = 50000; + + //Control + @ConfigDesc("Activating Reject service") + public boolean control_reject_service_enabled = false; + @ConfigDesc("Minimum count of rejecting active service") + public int control_reject_service_max_count = 10000; + @ConfigDesc("Activating Reject URL") + public boolean control_reject_redirect_url_enabled = false; + @ConfigDesc("Reject Text") + public String control_reject_text = "too many request!!"; + @ConfigDesc("Reject URL") + public String control_reject_redirect_url = "/error.html"; + + // Counter + @ConfigDesc("Activating collect counter") + public boolean counter_enabled = true; + @ConfigDesc("think time (ms) of recent user") + public long counter_recentuser_valid_ms = DateUtil.MILLIS_PER_FIVE_MINUTE; + @ConfigDesc("Path to file creation directory of process ID file") + public String counter_object_registry_path = "/tmp/scouter"; + @ConfigDesc("Activating custom jmx") + public boolean counter_custom_jmx_enabled = false; + @ConfigDesc("Activating interaction counter") + public boolean counter_interaction_enabled = false; + + // SFA(Stack Frequency Analyzer) + @ConfigDesc("Activating period threaddump function") + public boolean sfa_dump_enabled = false; + @ConfigDesc("SFA thread dump Interval(ms)") + public int sfa_dump_interval_ms = 10000; + + //PSTS(Preiodical Stacktrace Step) + @ConfigDesc("Activating periodical stacktrace step (write fixed interval thread dump on a profile)") + public boolean _psts_enabled = false; + @ConfigDesc("PSTS(periodical stacktrace step) thread dump Interval(ms) - hard min limit 2000") + public int _psts_dump_interval_ms = 10000; + public boolean _psts_progressive_reactor_thread_trace_enabled = true; + + //Summary + @ConfigDesc("Activating summary function") + public boolean summary_enabled = true; + @ConfigDesc("") + public boolean _summary_connection_leak_fullstack_enabled = false; + @ConfigDesc("") + public int _summary_service_max_count = 5000; + @ConfigDesc("") + public int _summary_sql_max_count = 5000; + @ConfigDesc("") + public int _summary_api_max_count = 5000; + @ConfigDesc("") + public int _summary_ip_max_count = 5000; + @ConfigDesc("") + public int _summary_useragent_max_count = 5000; + @ConfigDesc("") + public int _summary_error_max_count = 500; + @ConfigDesc("") + public int _summary_enduser_nav_max_count = 5000; + @ConfigDesc("") + public int _summary_enduser_ajax_max_count = 5000; + @ConfigDesc("") + public int _summary_enduser_error_max_count = 5000; ``` ## Host agent options