├── docs ├── zh │ ├── 6.1.0 │ │ ├── setup │ │ │ ├── backend │ │ │ │ ├── backend-token-auth.md │ │ │ │ ├── backend-k8s.md │ │ │ │ ├── slow-db-statement.md │ │ │ │ ├── backend-start-up-mode.md │ │ │ │ ├── ui-setup.md │ │ │ │ ├── advanced-deployment.md │ │ │ │ ├── backend-init-mode.md │ │ │ │ ├── backend-ip-port.md │ │ │ │ ├── backend-telemetry.md │ │ │ │ ├── trace-sampling.md │ │ │ │ ├── backend-setting-override.md │ │ │ │ └── metric-exporter.md │ │ │ ├── service-agent │ │ │ │ └── java-agent │ │ │ │ │ ├── agent-optional-plugins │ │ │ │ │ ├── Spring-annotation-plugin.md │ │ │ │ │ ├── Oracle-Resin-plugins.md │ │ │ │ │ └── trace-ignore-plugin.md │ │ │ │ │ ├── Opentracing.md │ │ │ │ │ ├── Specified-agent-config.md │ │ │ │ │ ├── How-to-disable-plugin.md │ │ │ │ │ ├── TLS.md │ │ │ │ │ ├── Application-toolkit-trace.md │ │ │ │ │ ├── Namespace.md │ │ │ │ │ ├── Application-toolkit-log4j-2.x.md │ │ │ │ │ ├── Application-toolkit-log4j-1.x.md │ │ │ │ │ ├── Token-auth.md │ │ │ │ │ ├── Application-toolkit-logback-1.x.md │ │ │ │ │ └── Application-toolkit-trace-cross-thread.md │ │ │ ├── istio │ │ │ │ └── README.md │ │ │ ├── README.md │ │ │ └── envoy │ │ │ │ └── README.md │ │ ├── FAQ │ │ │ ├── Why-have-traces-no-others.md │ │ │ ├── Too-many-gRPC-logs.md │ │ │ ├── kafka-plugin.md │ │ │ ├── Upgrade.md │ │ │ ├── README.md │ │ │ ├── Protoc-Plugin-Fails-When-Build.md │ │ │ ├── Import-Project-Eclipse-RequireItems-Exception.md │ │ │ └── EnhanceRequireObjectCache-Cast-Exception.md │ │ ├── protocols │ │ │ └── JVM-Protocol.md │ │ ├── concepts-and-designs │ │ │ ├── ui-overview.md │ │ │ ├── manual-sdk.md │ │ │ ├── README.md │ │ │ ├── backend-overview.md │ │ │ ├── service-mesh-probe.md │ │ │ ├── service-agent.md │ │ │ ├── probe-introduction.md │ │ │ └── project-goals.md │ │ ├── guides │ │ │ ├── backend-oal-scripts.md │ │ │ ├── write-oal.md │ │ │ ├── inventory-extension.md │ │ │ ├── storage-extention.md │ │ │ └── Component-library-settings.md │ │ ├── README.md │ │ └── Screenshots.md │ ├── 6.2.0 │ │ ├── setup │ │ │ ├── backend │ │ │ │ ├── backend-token-auth.md │ │ │ │ ├── backend-k8s.md │ │ │ │ ├── slow-db-statement.md │ │ │ │ ├── ui-setup.md │ │ │ │ ├── backend-start-up-mode.md │ │ │ │ ├── advanced-deployment.md │ │ │ │ ├── backend-init-mode.md │ │ │ │ ├── backend-ip-port.md │ │ │ │ ├── backend-telemetry.md │ │ │ │ ├── trace-sampling.md │ │ │ │ ├── backend-setting-override.md │ │ │ │ └── metric-exporter.md │ │ │ ├── service-agent │ │ │ │ └── java-agent │ │ │ │ │ ├── agent-optional-plugins │ │ │ │ │ ├── Spring-annotation-plugin.md │ │ │ │ │ ├── Oracle-Resin-plugins.md │ │ │ │ │ └── trace-ignore-plugin.md │ │ │ │ │ ├── Opentracing.md │ │ │ │ │ ├── Specified-agent-config.md │ │ │ │ │ ├── How-to-disable-plugin.md │ │ │ │ │ ├── TLS.md │ │ │ │ │ ├── Namespace.md │ │ │ │ │ ├── Application-toolkit-log4j-2.x.md │ │ │ │ │ ├── Application-toolkit-log4j-1.x.md │ │ │ │ │ ├── Token-auth.md │ │ │ │ │ ├── Application-toolkit-logback-1.x.md │ │ │ │ │ ├── Application-toolkit-trace.md │ │ │ │ │ └── Application-toolkit-trace-cross-thread.md │ │ │ ├── istio │ │ │ │ └── README.md │ │ │ └── envoy │ │ │ │ └── als_setting.md │ │ ├── FAQ │ │ │ ├── Why-have-traces-no-others.md │ │ │ ├── Too-many-gRPC-logs.md │ │ │ ├── kafka-plugin.md │ │ │ ├── Upgrade.md │ │ │ ├── README.md │ │ │ ├── Protoc-Plugin-Fails-When-Build.md │ │ │ ├── Import-Project-Eclipse-RequireItems-Exception.md │ │ │ └── EnhanceRequireObjectCache-Cast-Exception.md │ │ ├── protocols │ │ │ └── JVM-Protocol.md │ │ ├── concepts-and-designs │ │ │ ├── ui-overview.md │ │ │ ├── manual-sdk.md │ │ │ ├── README.md │ │ │ ├── backend-overview.md │ │ │ ├── service-mesh-probe.md │ │ │ ├── service-agent.md │ │ │ ├── probe-introduction.md │ │ │ └── project-goals.md │ │ ├── guides │ │ │ ├── backend-oal-scripts.md │ │ │ ├── write-oal.md │ │ │ ├── inventory-extension.md │ │ │ ├── storage-extention.md │ │ │ └── Component-library-settings.md │ │ ├── README.md │ │ └── Screenshots.md │ ├── 6.3.0 │ │ ├── setup │ │ │ ├── backend │ │ │ │ ├── backend-token-auth.md │ │ │ │ ├── backend-k8s.md │ │ │ │ ├── slow-db-statement.md │ │ │ │ ├── ui-setup.md │ │ │ │ ├── endpoint-grouping-rules.md │ │ │ │ ├── backend-start-up-mode.md │ │ │ │ ├── advanced-deployment.md │ │ │ │ ├── backend-init-mode.md │ │ │ │ ├── backend-ip-port.md │ │ │ │ ├── backend-telemetry.md │ │ │ │ ├── trace-sampling.md │ │ │ │ ├── backend-setting-override.md │ │ │ │ └── metric-exporter.md │ │ │ ├── service-agent │ │ │ │ └── java-agent │ │ │ │ │ ├── agent-optional-plugins │ │ │ │ │ ├── Spring-annotation-plugin.md │ │ │ │ │ ├── Oracle-Resin-plugins.md │ │ │ │ │ └── trace-ignore-plugin.md │ │ │ │ │ ├── Opentracing.md │ │ │ │ │ ├── Specified-agent-config.md │ │ │ │ │ ├── How-to-disable-plugin.md │ │ │ │ │ ├── TLS.md │ │ │ │ │ ├── Namespace.md │ │ │ │ │ ├── Application-toolkit-log4j-2.x.md │ │ │ │ │ ├── Application-toolkit-log4j-1.x.md │ │ │ │ │ ├── Token-auth.md │ │ │ │ │ ├── op_name_group_rule.md │ │ │ │ │ ├── Application-toolkit-logback-1.x.md │ │ │ │ │ └── Application-toolkit-trace.md │ │ │ ├── istio │ │ │ │ └── README.md │ │ │ └── envoy │ │ │ │ └── als_setting.md │ │ ├── FAQ │ │ │ ├── Why-have-traces-no-others.md │ │ │ ├── Too-many-gRPC-logs.md │ │ │ ├── kafka-plugin.md │ │ │ ├── Upgrade.md │ │ │ ├── time-and-timezone.md │ │ │ ├── Unexpected-endpoint-register.md │ │ │ ├── README.md │ │ │ ├── Protoc-Plugin-Fails-When-Build.md │ │ │ └── Import-Project-Eclipse-RequireItems-Exception.md │ │ ├── protocols │ │ │ ├── JVM-Protocol.md │ │ │ └── Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md │ │ ├── concepts-and-designs │ │ │ ├── ui-overview.md │ │ │ ├── manual-sdk.md │ │ │ ├── README.md │ │ │ ├── backend-overview.md │ │ │ ├── service-mesh-probe.md │ │ │ ├── service-agent.md │ │ │ ├── probe-introduction.md │ │ │ └── project-goals.md │ │ ├── guides │ │ │ ├── backend-oal-scripts.md │ │ │ ├── write-oal.md │ │ │ ├── backend-profile-export.md │ │ │ ├── inventory-extension.md │ │ │ ├── storage-extention.md │ │ │ └── Component-library-settings.md │ │ ├── README.md │ │ └── Screenshots.md │ ├── 8.0.0 │ │ ├── FAQ │ │ │ ├── MQ-involved-architecture.png │ │ │ ├── Why-have-traces-no-others.md │ │ │ ├── Too-many-gRPC-logs.md │ │ │ ├── kafka-plugin.md │ │ │ ├── Hour-Day-Metrics-Stopping.md │ │ │ ├── time-and-timezone.md │ │ │ ├── v3-version-upgrade.md │ │ │ ├── Unexpected-endpoint-register.md │ │ │ ├── v8-version-upgrade.md │ │ │ ├── Protoc-Plugin-Fails-When-Build.md │ │ │ ├── why_mq_not_involved.md │ │ │ ├── Import-Project-Eclipse-RequireItems-Exception.md │ │ │ ├── v6-version-upgrade.md │ │ │ └── README.md │ │ ├── protocols │ │ │ ├── JVM-Protocol.md │ │ │ ├── Skywalking-Cross-Process-Correlation-Headers-Protocol-v1.md │ │ │ ├── Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md │ │ │ └── Trace-Data-Protocol-v3.md │ │ ├── concepts-and-designs │ │ │ ├── ui-overview.md │ │ │ ├── manual-sdk.md │ │ │ ├── meter.md │ │ │ ├── README.md │ │ │ ├── service-mesh-probe.md │ │ │ ├── backend-overview.md │ │ │ ├── service-agent.md │ │ │ ├── probe-introduction.md │ │ │ └── project-goals.md │ │ ├── guides │ │ │ ├── backend-oal-scripts.md │ │ │ ├── backend-profile-export.md │ │ │ ├── inventory-extension.md │ │ │ ├── storage-extention.md │ │ │ └── Component-library-settings.md │ │ └── setup │ │ │ ├── service-agent │ │ │ └── java-agent │ │ │ │ ├── agent-optional-plugins │ │ │ │ ├── Spring-annotation-plugin.md │ │ │ │ ├── Oracle-Resin-plugins.md │ │ │ │ ├── trace-ignore-plugin.md │ │ │ │ └── Kotlin-Coroutine-plugin.md │ │ │ │ ├── Opentracing.md │ │ │ │ ├── How-to-disable-plugin.md │ │ │ │ ├── Specified-agent-config.md │ │ │ │ ├── Namespace.md │ │ │ │ ├── Application-toolkit-log4j-1.x.md │ │ │ │ ├── Token-auth.md │ │ │ │ ├── op_name_group_rule.md │ │ │ │ └── TLS.md │ │ │ ├── backend │ │ │ ├── backend-k8s.md │ │ │ ├── slow-db-statement.md │ │ │ ├── ttl.md │ │ │ ├── ui-setup.md │ │ │ ├── backend-start-up-mode.md │ │ │ ├── apdex-threshold.md │ │ │ ├── endpoint-grouping-rules.md │ │ │ ├── backend-ip-port.md │ │ │ ├── backend-init-mode.md │ │ │ ├── uninstrumented-gateways.md │ │ │ ├── advanced-deployment.md │ │ │ ├── trace-sampling.md │ │ │ ├── backend-token-auth.md │ │ │ ├── backend-setting-override.md │ │ │ ├── grpc-ssl.md │ │ │ └── backend-ui-setup.md │ │ │ ├── istio │ │ │ └── README.md │ │ │ └── envoy │ │ │ ├── examples │ │ │ └── metrics │ │ │ │ ├── Makefile │ │ │ │ └── docker-compose.yaml │ │ │ └── als_setting.md │ └── 5.0.0-beta │ │ ├── FAQ │ │ ├── Kafka-plugin-CN.md │ │ ├── Why-have-traces-no-others-CN.md │ │ ├── Too-many-gRPC-logs-CN.md │ │ ├── Protoc-Plugin-Fails-When-Build-CN.md │ │ └── EnhanceRequireObjectCache-Cast-Exception-CN.md │ │ ├── Quick-start-CN.md │ │ ├── Application-toolkit-CN.md │ │ ├── Opentracing-CN.md │ │ ├── How-to-disable-plugin-CN.md │ │ ├── Application-toolkit-trace-CN.md │ │ ├── Application-toolkit-log4j-2.x-CN.md │ │ ├── Setting-override-CN.md │ │ ├── Application-toolkit-log4j-1.x-CN.md │ │ ├── Optional-plugins-CN.md │ │ ├── Direct-uplink-CN.md │ │ ├── Application-toolkit-logback-1.x-CN.md │ │ ├── Namespace-CN.md │ │ ├── Screenshots.md │ │ ├── Token-auth-CN.md │ │ ├── Deploy-backend-in-standalone-mode-CN.md │ │ ├── TLS-CN.md │ │ └── Application-toolkit-trace-cross-thread-CN.md ├── .vuepress │ └── config.js └── README.md ├── .gitignore ├── .travis.yml └── package.json /docs/zh/6.1.0/setup/backend/backend-token-auth.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-token-auth.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-token-auth.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | package-lock.json 4 | dist 5 | -------------------------------------------------------------------------------- /docs/.vuepress/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | base: "/document-cn-translation-of-skywalking/", 3 | dest: "dist" 4 | } 5 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/MQ-involved-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoping378/document-cn-translation-of-skywalking/master/docs/zh/8.0.0/FAQ/MQ-involved-architecture.png -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/Why-have-traces-no-others.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - Agent和Collector的日志中没有异常 3 | - UI除Trace查询页面外,其它页面无数据 4 | 5 | ### 原因 6 | Collector和被监控应用的系统主机时间,没有同步。 7 | 8 | ### 解决方法 9 | 同步各主机操作系统时间。 10 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/Why-have-traces-no-others.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - Agent和Collector的日志中没有异常 3 | - UI除Trace查询页面外,其它页面无数据 4 | 5 | ### 原因 6 | Collector和被监控应用的系统主机时间,没有同步。 7 | 8 | ### 解决方法 9 | 同步各主机操作系统时间。 10 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/Why-have-traces-no-others.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - Agent和Collector的日志中没有异常 3 | - UI除Trace查询页面外,其它页面无数据 4 | 5 | ### 原因 6 | Collector和被监控应用的系统主机时间,没有同步。 7 | 8 | ### 解决方法 9 | 同步各主机操作系统时间。 10 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/Why-have-traces-no-others.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - Agent和Collector的日志中没有异常。 3 | - UI除Trace查询页面外,其它页面无数据。 4 | 5 | ### 原因 6 | Collector和被监控应用的系统主机时间,没有同步。 7 | 8 | ### 解决方法 9 | 确保各主机操作系统时间是保持同步的。 10 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/Too-many-gRPC-logs.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Console中被GRPC日志刷屏 3 | 4 | ### 原因 5 | Skywalking采用了GRPC框架发送数据,GRPC框架读取log的配置文件进行日志输出。 6 | 7 | ### 解决方法 8 | 在log的配置文件中添加对`org.apache.skywalking.apm.dependencies`包的过滤 9 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/Too-many-gRPC-logs.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Console中被GRPC日志刷屏 3 | 4 | ### 原因 5 | Skywalking采用了GRPC框架发送数据,GRPC框架读取log的配置文件进行日志输出。 6 | 7 | ### 解决方法 8 | 在log的配置文件中添加对`org.apache.skywalking.apm.dependencies`包的过滤 9 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/Too-many-gRPC-logs.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Console中被GRPC日志刷屏 3 | 4 | ### 原因 5 | Skywalking采用了GRPC框架发送数据,GRPC框架读取log的配置文件进行日志输出。 6 | 7 | ### 解决方法 8 | 在log的配置文件中添加对`org.apache.skywalking.apm.dependencies`包的过滤 9 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/Too-many-gRPC-logs.md: -------------------------------------------------------------------------------- 1 | # 问题 2 | 3 | 控制台中太多 GRPC 日志 4 | 5 | ## 原因 6 | 7 | Skywalking 采用了 GRPC 框架发送数据,GRPC 框架读取日志配置文件进行日志输出。 8 | 9 | ## 解决方法 10 | 11 | 在日志配置文件中添加对 `org.apache.skywalking.apm.dependencies` 包的过滤 12 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/kafka-plugin.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Kafka消费端trace断裂 3 | 4 | ### 原因 5 | Kafka探针只是追踪了对Kafka的拉取动作,而整个后续处理过程不是由kafka consumer发起。所以需要在消费处理的发起点,进行手动埋点。 6 | 7 | ### 解决方法 8 | 可以通过Application Toolkit中的 `@Trace` 标注,或者OpenTracing API进行手动埋点。 9 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/kafka-plugin.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Kafka消费端trace断裂 3 | 4 | ### 原因 5 | Kafka探针只是追踪了对Kafka的拉取动作,而整个后续处理过程不是由kafka consumer发起。所以需要在消费处理的发起点,进行手动埋点。 6 | 7 | ### 解决方法 8 | 可以通过Application Toolkit中的 `@Trace` 标注,或者OpenTracing API进行手动埋点。 9 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/kafka-plugin.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Kafka消费端trace断裂 3 | 4 | ### 原因 5 | Kafka探针只是追踪了对Kafka的拉取动作,而整个后续处理过程不是由kafka consumer发起。所以需要在消费处理的发起点,进行手动埋点。 6 | 7 | ### 解决方法 8 | 可以通过Application Toolkit中的 `@Trace` 标注,或者OpenTracing API进行手动埋点。 9 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/kafka-plugin.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Kafka消费端trace断裂 3 | 4 | ### 原因 5 | Kafka探针只是追踪了对Kafka的拉取动作,而整个后续处理过程不是由kafka consumer发起。所以需要在消费处理的发起点,进行手动埋点。 6 | 7 | ### 解决方法 8 | 可以通过Application Toolkit中的 `@Trace` 标注,或者OpenTracing API进行手动埋点。 9 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/FAQ/Kafka-plugin-CN.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | Kafka消息消费端链路断裂 3 | 4 | ### 原因 5 | Kafka探针只是追踪了对Kafka的拉取动作,而整个后续处理过程不是由kafka consumer发起。故,需要在消费处理的发起点,进行手动埋点。 6 | 7 | ### 解决方法 8 | 可以通过Application Toolkit中的 `@Trace` 标注,或者OpenTracing API进行手动埋点。 9 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/FAQ/Why-have-traces-no-others-CN.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - Agent和Collector正常工作,没有异常日志 3 | - 已经对系统进行过访问,Trace查询有数据 4 | - UI除Trace查询页面外,其他页面无数据 5 | 6 | ### 原因 7 | Collector和被监控应用的系统主机时间,没有同步。 8 | 9 | ### 解决方法 10 | 同步各主机操作系统时间。 11 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/protocols/JVM-Protocol.md: -------------------------------------------------------------------------------- 1 | # JVM 指标服务 2 | 3 | ## 摘要 4 | 5 | JVM 指标的上行数据包括每秒对 PermSize, HeapSize, CPU, Memory 等等指标的测量值. 6 | 7 | [gRPC 服务定义](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/JVMMetricsService.proto) 8 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/protocols/JVM-Protocol.md: -------------------------------------------------------------------------------- 1 | # JVM 指标服务 2 | 3 | ## 摘要 4 | 5 | JVM 指标的上行数据包括每秒对 PermSize, HeapSize, CPU, Memory 等等指标的测量值. 6 | 7 | [gRPC 服务定义](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/JVMMetricsService.proto) 8 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/protocols/JVM-Protocol.md: -------------------------------------------------------------------------------- 1 | # JVM 指标服务 2 | 3 | ## 摘要 4 | 5 | JVM 指标的上行数据包括每秒对 PermSize, HeapSize, CPU, Memory 等指标的测量值. 6 | 7 | [gRPC 服务定义](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/JVMMetricsService.proto) 8 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/FAQ/Too-many-gRPC-logs-CN.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | 1. 加载探针并启动应用 3 | 2. Console中被GRPC日志刷屏 4 | 5 | ### 原因 6 | Skywalking采用了GRPC框架发送数据,GRPC框架读取log的配置文件进行日志输出。 7 | 8 | ### 解决方法 9 | 在log的配置文件中添加对`org.apache.skywalking.apm.dependencies`包的过滤 10 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/protocols/JVM-Protocol.md: -------------------------------------------------------------------------------- 1 | # JVM 指标服务 2 | 3 | ## 摘要 4 | 5 | JVM 指标的上行数据包括每秒对 PermSize, PermSize, HeapSize, CPU, Memory 等等指标的测量值. 6 | 7 | [gRPC 服务定义](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/JVMMetricsService.proto) 8 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/backend-k8s.md: -------------------------------------------------------------------------------- 1 | # 在kubernetes中部署backend 2 | 3 | 按照[deploying SkyWalking backend to Kubernetes cluster](https://github.com/apache/skywalking-kubernetes#deploy-skywalking-backend-to-kubernetes-cluster) 4 | 中的说明在kubernetes集群中部署oap和ui。 5 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-k8s.md: -------------------------------------------------------------------------------- 1 | # 在kubernetes中部署backend 2 | 3 | 按照[deploying SkyWalking backend to Kubernetes cluster](https://github.com/apache/skywalking-kubernetes#deploy-skywalking-backend-to-kubernetes-cluster) 4 | 中的说明在kubernetes集群中部署oap和ui。 5 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-k8s.md: -------------------------------------------------------------------------------- 1 | # 在kubernetes中部署backend 2 | 3 | 按照[deploying SkyWalking backend to Kubernetes cluster](https://github.com/apache/skywalking-kubernetes#deploy-skywalking-backend-to-kubernetes-cluster) 4 | 中的说明在kubernetes集群中部署oap和ui。 5 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/ui-overview.md: -------------------------------------------------------------------------------- 1 | # 可视化 2 | SkyWalking 原生 UI 提供了一种默认的可视化方案. 3 | 它提供了关于总览, 服务, 服务实例, 端点, 追踪和报警相关的观测图, 4 | 包括了拓扑图, 依赖图, 热点图等等. 5 | 6 | 而且,我们已经知道,我们的许多用户在产品中已经集成了SkyWalking。 7 | 如果你也想这样做,请参考[skywalk查询协议](../protocols/README.md#query-protocol)。 8 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/guides/backend-oal-scripts.md: -------------------------------------------------------------------------------- 1 | # 官方 OAL 脚本 2 | 在阅读本文档前请先阅读 [OAL 简介](../concepts-and-designs/oal.md). 3 | 4 | 8.0版本以后 oal脚本存放目录 '/config/oal/*.oal' 5 | 你可以修改相关内容,重启OAP服务,即可生效。 6 | 7 | 此脚本中命名的所有指标都可以用于报警和UI查询. 8 | 9 | 注意! 10 | 11 | 建议基于自定义指标构建的自定义UI功能才能添加或删除一些指标,否则UI可能会有问题。 -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/agent-optional-plugins/Spring-annotation-plugin.md: -------------------------------------------------------------------------------- 1 | ## Spring注解插件 2 | 这个插件可以实现对被`@Bean`, `@Service`, `@Component` and `@Repository`注解标注的bean的所有方法的追踪。 3 | 4 | - 为什么这个插件是可选的? 5 | 6 | 追踪bean的所有方法会创建大量的span,这会导致耗费更多的CPU、内存和网络带宽。 7 | 当前如果你想追踪尽可能多的方法,请确保系统负载可以支撑你这么做。 8 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/agent-optional-plugins/Spring-annotation-plugin.md: -------------------------------------------------------------------------------- 1 | ## Spring注解插件 2 | 这个插件可以实现对被`@Bean`, `@Service`, `@Component` and `@Repository`注解标注的bean的所有方法的追踪。 3 | 4 | - 为什么这个插件是可选的? 5 | 6 | 追踪bean的所有方法会创建大量的span,这会导致耗费更多的CPU、内存和网络带宽。 7 | 当前如果你想追踪尽可能多的方法,请确保系统负载可以支撑你这么做。 8 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/agent-optional-plugins/Spring-annotation-plugin.md: -------------------------------------------------------------------------------- 1 | ## Spring注解插件 2 | 这个插件可以实现对被`@Bean`, `@Service`, `@Component` and `@Repository`注解标注的bean的所有方法的追踪。 3 | 4 | - 为什么这个插件是可选的? 5 | 6 | 追踪bean的所有方法会创建大量的span,这会导致耗费更多的CPU、内存和网络带宽。 7 | 当前如果你想追踪尽可能多的方法,请确保系统负载可以支撑你这么做。 8 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/agent-optional-plugins/Spring-annotation-plugin.md: -------------------------------------------------------------------------------- 1 | ## Spring注解插件 2 | 这个插件可以实现对被`@Bean`, `@Service`, `@Component` and `@Repository`注解标注的bean的所有方法的追踪。 3 | 4 | - 为什么这个插件是可选的? 5 | 6 | 追踪bean的所有方法会创建大量的span,这会导致耗费更多的CPU、内存和网络带宽。 7 | 当前如果你想追踪尽可能多的方法,请确保系统负载可以支撑更多的请求。 8 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/Upgrade.md: -------------------------------------------------------------------------------- 1 | # 升级的常见问题解答 2 | ## 版本 3.x -> 5.0.0-alpha 3 | ### Collector 4 | ### 现象 5 | UI上没数据。 6 | 7 | ### 原因 8 | 从3.2.6升级到5.0.0,Elasticsearch的索引由于已经存在所以没有重新创建,但是它们和5.0.0-alpha不兼容。 9 | 注册服务名时,ES将按默认类型字符串创建此列,这是错误的。 10 | 11 | ### 解决方法 12 | 清理elasticsearch中的数据文件夹,重新启动elasticsearch、collector和监控应用程序。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/Upgrade.md: -------------------------------------------------------------------------------- 1 | # 升级的常见问题解答 2 | ## 版本 3.x -> 5.0.0-alpha 3 | ### Collector 4 | ### 现象 5 | UI上没数据。 6 | 7 | ### 原因 8 | 从3.2.6升级到5.0.0,Elasticsearch的索引由于已经存在所以没有重新创建,但是它们和5.0.0-alpha不兼容。 9 | 注册服务名时,ES将按默认类型字符串创建此列,这是错误的。 10 | 11 | ### 解决方法 12 | 清理elasticsearch中的数据文件夹,重新启动elasticsearch、collector和监控应用程序。 -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/Upgrade.md: -------------------------------------------------------------------------------- 1 | # 升级的常见问题解答 2 | ## 版本 3.x -> 5.0.0-alpha 3 | ### Collector 4 | ### 现象 5 | UI上没数据。 6 | 7 | ### 原因 8 | 从3.2.6升级到5.0.0,Elasticsearch的索引由于已经存在所以没有重新创建,但是它们和5.0.0-alpha不兼容。 9 | 注册服务名时,ES将按默认类型字符串创建此列,这是错误的。 10 | 11 | ### 解决方法 12 | 清理elasticsearch中的数据文件夹,重新启动elasticsearch、collector和监控应用程序。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/Hour-Day-Metrics-Stopping.md: -------------------------------------------------------------------------------- 1 | # 为什么小时和日指标在升级到7.x后停止更新? 2 | 3 | 这是6.x->7.x升级时遇到的情况 4 | 阅读 ElasticSearch存储的[采样数据封装特性](../setup/backend/backend-storage.md#downsampling-data-packing) 5 | 6 | 用户可以简单地删除所有过期的' *-day_xxxxx '和' *-hour_xxxxx ' (' xxxxx '是时间戳)索引。 7 | skywalk只使用“metrics name-xxxxx”和“metrics name-month_xxxxx”索引. -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/agent-optional-plugins/Oracle-Resin-plugins.md: -------------------------------------------------------------------------------- 1 | ## Oracle和Resin插件 2 | 由于Oracle和Resin许可的原因,没有在Apache发行包中提供这些插件。 3 | 如果你想了解细节,请阅读[Apache许可法律文件](https://www.apache.org/legal/resolved.html) 4 | 5 | 由于许可的限制或不兼容,这些插件发布在第三方仓库中。可以到[SkyAPM java插件扩展仓库](https://github.com/SkyAPM/java-plugin-extensions)获得这些插件。 6 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/agent-optional-plugins/Oracle-Resin-plugins.md: -------------------------------------------------------------------------------- 1 | ## Oracle和Resin插件 2 | 由于Oracle和Resin许可的原因,没有在Apache发行包中提供这些插件。 3 | 如果你想了解细节,请阅读[Apache许可法律文件](https://www.apache.org/legal/resolved.html) 4 | 5 | 由于许可的限制或不兼容,这些插件发布在第三方仓库中。可以到[SkyAPM java插件扩展仓库](https://github.com/SkyAPM/java-plugin-extensions)获得这些插件。 6 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/agent-optional-plugins/Oracle-Resin-plugins.md: -------------------------------------------------------------------------------- 1 | ## Oracle和Resin插件 2 | 由于Oracle和Resin许可的原因,没有在Apache发行包中提供这些插件。 3 | 如果你想了解细节,请阅读[Apache许可法律文件](https://www.apache.org/legal/resolved.html) 4 | 5 | 由于许可的限制或不兼容,这些插件发布在第三方仓库中。可以到[SkyAPM java插件扩展仓库](https://github.com/SkyAPM/java-plugin-extensions)获得这些插件。 6 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/agent-optional-plugins/Oracle-Resin-plugins.md: -------------------------------------------------------------------------------- 1 | ## Oracle和Resin插件 2 | 由于Oracle和Resin许可的原因,没有在Apache发行包中提供这些插件。 3 | 如果你想了解细节,请阅读[Apache许可法律文件](https://www.apache.org/legal/resolved.html) 4 | 5 | 由于许可的限制或不兼容,这些插件发布在第三方仓库中。可以到[SkyAPM java插件扩展仓库](https://github.com/SkyAPM/java-plugin-extensions)获得这些插件。 6 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/time-and-timezone.md: -------------------------------------------------------------------------------- 1 | # UI中为什么看不到任何数据? 2 | 3 | UI不能显示数据有三个主要原因: 4 | 5 | 1. 没有发送任何追踪到采集器. 6 | 2. 追踪已发送,但容器的时区不正确. 7 | 3. 追踪已在收集器中,但是您没有在UI中选择正确的时间框架. 8 | 9 | ## 无追踪 10 | 11 | 确认检查代理的日志,看看它们是否连接到采集器,并发送追踪. 12 | 13 | 14 | ## 容器中的时区不正确 15 | 16 | 确认检查你的容器里的时区. 17 | 18 | 19 | ## UI没有显示任何数据 20 | 21 | 确保配置UI显示的时间框架. 22 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/time-and-timezone.md: -------------------------------------------------------------------------------- 1 | # UI中为什么看不到任何数据? 2 | 3 | UI不能显示数据有三个主要原因: 4 | 5 | 1. 没有发送任何追踪到采集器. 6 | 2. 追踪已发送,但容器的时区不正确. 7 | 3. 追踪已在收集器中,但是您没有在UI中选择正确的时间框架. 8 | 9 | ## 无追踪 10 | 11 | 确认检查代理的日志,看看它们是否连接到采集器,并发送追踪. 12 | 13 | 14 | ## 容器中的时区不正确 15 | 16 | 确认检查你的容器里的时区. 17 | 18 | 19 | ## UI没有显示任何数据 20 | 21 | 确保配置UI显示的时间框架. 22 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Quick-start-CN.md: -------------------------------------------------------------------------------- 1 | # 部署步骤 2 | 1. 下载`apache-skywalking-apm-incubating-x.y.z.tar.gz` 或 `apache-skywalking-apm-incubating-x.y.z.zip` 3 | 1. 部署 Backend 4 | 1. [单机模式](Deploy-backend-in-standalone-mode-CN.md) 5 | 1. [集群模式](Deploy-backend-in-cluster-mode-CN.md) 6 | 1. 部署 Java Agent,[doc](Deploy-skywalking-agent-CN.md) 7 | 1. 重启并访问系统功能,查看UI即可。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/v3-version-upgrade.md: -------------------------------------------------------------------------------- 1 | # 版本 3.x -> 5.0.0-alpha 升级的常见问题解答 2 | 3 | ## Collector 4 | 5 | ### 现象 6 | 7 | UI 上没数据。 8 | 9 | ### 原因 10 | 11 | 从 3.2.6 升级到 5.0.0,Elasticsearch 的索引由于已经存在所以没有重新创建,但是它们和 5.0.0-alpha 不兼容。注册服务名时,ES 将按默认类型字符串创建此列,这是错误的。 12 | 13 | ### 解决方法 14 | 15 | 清理 elasticsearch 中的数据文件夹,重新启动 elasticsearch、collector 和监控应用程序。 16 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-k8s.md: -------------------------------------------------------------------------------- 1 | # 在kubernetes中部署 2 | 3 | 按照[deploying SkyWalking backend to Kubernetes cluster](https://github.com/apache/skywalking-kubernetes#deploy-skywalking-backend-to-kubernetes-cluster) 4 | 中的说明在kubernetes集群中部署oap和ui。 5 | 6 | 请仔细阅读[README.md](https://github.com/apache/skywalking-kubernetes#deploy-skywalking-backend-to-kubernetes-cluster) -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/Unexpected-endpoint-register.md: -------------------------------------------------------------------------------- 1 | # 不注册本地span和退出span 2 | 3 | 从6.6.0开始,SkyWalking取消了本地span和退出span寄存器。如果旧的java代理(6.6.0之前)仍然在运行,并且注册到6.6.0+后端,您将面临以下警告消息. 4 | ``` 5 | class=RegisterServiceHandler, message = Unexpected endpoint register, endpoint isn't detected from server side. 6 | ``` 7 | 8 | 这不会损害后端或导致任何问题。这提醒您,您的代理或其他客户端应该遵循新的协议要求. 9 | 10 | 您可以使用 `log4j2.xml` 轻松地过滤此警告消息. -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/Unexpected-endpoint-register.md: -------------------------------------------------------------------------------- 1 | # 不注册本地span和退出span 2 | 3 | 从6.6.0开始,SkyWalking取消了本地span和退出span寄存器。如果旧的java代理(6.6.0之前)仍然在运行,并且注册到6.6.0+后端,您将面临以下警告消息. 4 | ``` 5 | class=RegisterServiceHandler, message = Unexpected endpoint register, endpoint isn't detected from server side. 6 | ``` 7 | 8 | 这不会损害后端或导致任何问题。这提醒您,您的代理或其他客户端应该遵循新的协议要求. 9 | 10 | 您可以使用 `log4j2.xml` 轻松地过滤此警告消息. -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/v8-version-upgrade.md: -------------------------------------------------------------------------------- 1 | # V8 版本升级 2 | 3 | SkyWalking v8 版本开始使用 [v3 协议](../protocols/README.md),所以,不兼容上个发行版本。打算在 v8 系列版本中升级的用户可以遵循本指南。 4 | 5 | 为了更好的可扩展性,v8 版本中移除了 v6 和 v7 的注册,请根据以下方式升级。 6 | 7 | 1. 使用不同的存储或者一个新的 namespace 。此外,还可以考虑删除所有与 SkyWalking 相关的存储索引/表。 8 | 2. 部署整个集群,并公开一个新的网络地址。 9 | 3. 如果您正在使用语言代理,也要升级新的代理,与此同时,确保代理支持不同的语言。 10 | 11 | 并为新的 SkyWalking OAP 集群设置后端地址。 12 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/slow-db-statement.md: -------------------------------------------------------------------------------- 1 | # 慢SQL语句设置 2 | 慢SQL语句对于找出依赖数据库的系统瓶颈具有重要意义。 3 | 4 | 慢SQL语句基于采样,现在,核心样本是每10分钟最慢的前50个。但这些语句的持续时间必须比阈值慢。 5 | 6 | 设置格式如下,单位为毫秒。 7 | > database-type:thresholdValue,database-type2:thresholdValue2 8 | 9 | 默认设置是`default:200,mongodb:100`。`Reserved DB type`是**默认的**,作为所有数据库类型的默认阈值,明确设置了的除外。 10 | 11 | **注意**,阈值不应该太小,比如`1ms`。从功能上讲,它是有效的,但如果你系统的大多数访问时间都小于1ms,会导致OAP性能问题, -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/slow-db-statement.md: -------------------------------------------------------------------------------- 1 | # 缓慢的数据库语句 2 | 缓慢的数据库语句对于找出依赖数据库的系统瓶颈具有重要意义。 3 | 4 | 缓慢的数据库语句基于采样,现在,核心样本是每10分钟最慢的前50个。但这些语句的持续时间必须比阈值慢。 5 | 6 | 设置格式如下,单位为毫秒。 7 | > database-type:thresholdValue,database-type2:thresholdValue2 8 | 9 | 默认设置是`default:200,mongodb:100`。`Reserved DB type`是**默认的**,作为所有数据库类型的默认阈值,明确设置了的除外。 10 | 11 | **注意**,阈值不应该太小,比如`1ms`。从功能上讲,它是有效的,但如果你系统的大多数访问时间都小于1ms,会导致OAP性能问题, -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/slow-db-statement.md: -------------------------------------------------------------------------------- 1 | # 缓慢的数据库语句 2 | 缓慢的数据库语句对于找出依赖数据库的系统瓶颈具有重要意义。 3 | 4 | 缓慢的数据库语句基于采样,现在,核心样本是每10分钟最慢的前50个。但这些语句的持续时间必须比阈值慢。 5 | 6 | 设置格式如下,单位为毫秒。 7 | > database-type:thresholdValue,database-type2:thresholdValue2 8 | 9 | 默认设置是`default:200,mongodb:100`。`Reserved DB type`是**默认的**,作为所有数据库类型的默认阈值,明确设置了的除外。 10 | 11 | **注意**,阈值不应该太小,比如`1ms`。从功能上讲,它是有效的,但如果你系统的大多数访问时间都小于1ms,会导致OAP性能问题, -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/slow-db-statement.md: -------------------------------------------------------------------------------- 1 | # 缓慢的数据库语句 2 | 缓慢的数据库语句对于找出依赖数据库的系统瓶颈具有重要意义。 3 | 4 | 缓慢的数据库语句基于采样,现在,核心样本是每10分钟最慢的前50个。但这些语句的持续时间必须比阈值慢。 5 | 6 | 设置格式如下,单位为毫秒。 7 | > database-type:thresholdValue,database-type2:thresholdValue2 8 | 9 | 默认设置是`default:200,mongodb:100`。`Reserved DB type`是**默认的**,作为所有数据库类型的默认阈值,明确设置了的除外。 10 | 11 | **注意**,阈值不应该太小,比如`1ms`。从功能上讲,它是有效的,但如果你系统的大多数访问时间都小于1ms,会导致OAP性能问题, -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/ui-overview.md: -------------------------------------------------------------------------------- 1 | # 可视化 2 | 3 | SkyWalking 原生 UI 提供了一种默认的可视化方案. 4 | 它提供了关于总览, 服务, 服务实例, 端点, 追踪和报警相关的观测图, 5 | 包括了拓扑图, 依赖图, 热点图等等. 6 | 7 | 对于大多数开源用户, 这个 UI 方案应该足以满足需求. 8 | 当然你还可以使用其他开源的可视化方案. 9 | 参考 [UI 设置](../setup/backend/ui-setup.md). 10 | 11 | 我们还了解到, 许多用户已经将 SkyWalking 集成到他们自己的产品中了. 12 | 如果你也想将 SkyWalking 集成到自己的产品中, 13 | 请使用 [SkyWalking 查询协议](../protocols/README.md#query-protocol). 14 | 15 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/ui-overview.md: -------------------------------------------------------------------------------- 1 | # 可视化 2 | 3 | SkyWalking 原生 UI 提供了一种默认的可视化方案. 4 | 它提供了关于总览, 服务, 服务实例, 端点, 追踪和报警相关的观测图, 5 | 包括了拓扑图, 依赖图, 热点图等等. 6 | 7 | 对于大多数开源用户, 这个 UI 方案应该足以满足需求. 8 | 当然你还可以使用其他开源的可视化方案. 9 | 参考 [UI 设置](../setup/backend/ui-setup.md). 10 | 11 | 我们还了解到, 许多用户已经将 SkyWalking 集成到他们自己的产品中了. 12 | 如果你也想将 SkyWalking 集成到自己的产品中, 13 | 请使用 [SkyWalking 查询协议](../protocols/README.md#query-protocol). 14 | 15 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/ui-overview.md: -------------------------------------------------------------------------------- 1 | # 可视化 2 | 3 | SkyWalking 原生 UI 提供了一种默认的可视化方案. 4 | 它提供了关于总览, 服务, 服务实例, 端点, 追踪和报警相关的观测图, 5 | 包括了拓扑图, 依赖图, 热点图等等. 6 | 7 | 对于大多数开源用户, 这个 UI 方案应该足以满足需求. 8 | 当然你还可以使用其他开源的可视化方案. 9 | 参考 [UI 设置](../setup/backend/ui-setup.md). 10 | 11 | 我们还了解到, 许多用户已经将 SkyWalking 集成到他们自己的产品中了. 12 | 如果你也想将 SkyWalking 集成到自己的产品中, 13 | 请使用 [SkyWalking 查询协议](../protocols/README.md#query-protocol). 14 | 15 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Application-toolkit-CN.md: -------------------------------------------------------------------------------- 1 | # 什么是sky-walking应用程序工具包? 2 | Sky-walking应用程序工具包是一系列的类库,由skywalking团队提供。通过这些类库,你可以在你的应用程序内,访问sky-walking的一些内部信息. 3 | 4 | _**最为重要的是**_, 即使你移除skywalking的探针,或者不激活探针,这些类库也不会对应用程序有任何影响,也不会影响性能. 5 | 6 | # 工具包提供以下核心能力 7 | 1. 将追踪信息和log组件集成,如log4j, log4j2 和 logback 8 | 1. 兼容CNCF OpenTracing标准的手动埋点 9 | 1. 使用Skywalking专有的标注和交互性API 10 | 11 | _**注意**: 所有的应用程序工具包都托管在bitray.com/jcenter. 同时请确保你使用的开发工具包和skywalking的agent探针版本一致._ -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/README.md: -------------------------------------------------------------------------------- 1 | # 常见问题解答 2 | 下面是一些已知或常见的问题解答。欢迎您贡献自己的问题解答。 3 | 4 | ## 编译时 5 | * [Protoc plugin在maven build时失败](Protoc-Plugin-Fails-When-Build.md) 6 | * [导入工程到eclipse时,相关项没找到](Import-Project-Eclipse-RequireItems-Exception.md) 7 | 8 | ## 运行时 9 | * [UI中只有traces](Why-have-traces-no-others.md) 10 | * [控制台GRPC的日志太多](Too-many-gRPC-logs.md) 11 | * [Kafka消费端trace断裂](kafka-plugin.md) 12 | * [Agent或collector版本升级](Upgrade.md) 13 | * [EnhanceRequireObjectCache类转换异常](EnhanceRequireObjectCache-Cast-Exception.md) -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Opentracing.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-opentracing 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | 11 | * 使用我们的OpenTracing tracer实现 12 | ```java 13 | Tracer tracer = new SkywalkingTracer(); 14 | Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); 15 | 16 | ``` 17 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Opentracing.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-opentracing 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | 11 | * 使用我们的OpenTracing tracer实现 12 | ```java 13 | Tracer tracer = new SkywalkingTracer(); 14 | Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); 15 | 16 | ``` 17 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Opentracing.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-opentracing 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | 11 | * 使用我们的OpenTracing tracer实现 12 | ```java 13 | Tracer tracer = new SkywalkingTracer(); 14 | Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); 15 | 16 | ``` 17 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/Opentracing.md: -------------------------------------------------------------------------------- 1 | * 使用 maven 或 gradle 引入 toolkit 依赖。 2 | 3 | ```xml 4 | 5 | org.apache.skywalking 6 | apm-toolkit-opentracing 7 | {project.release.version} 8 | 9 | ``` 10 | 11 | * 使用我们的 OpenTracing tracer 实现 12 | 13 | ```java 14 | Tracer tracer = new SkywalkingTracer(); 15 | Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); 16 | ``` 17 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "8" 5 | 6 | script: 7 | - npm run build 8 | 9 | deploy: 10 | provider: pages 11 | skip_cleanup: true 12 | github_token: "$GITHUB_TOKEN" 13 | keep_history: false 14 | local_dir: dist 15 | target_branch: gh-pages 16 | name: kezhenxu94 17 | email: kezhenxu94@apache.org 18 | on: 19 | branch: master 20 | 21 | notifications: 22 | email: 23 | recipients: 24 | - kezhenxu94@apache.org 25 | on_success: change 26 | on_failure: always 27 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/ui-setup.md: -------------------------------------------------------------------------------- 1 | # UI 2 | Skywalking UI的发行版已经包含在我们的Apache官方版本中。 3 | 4 | ## 启动 5 | 启动脚本也在`/bin/webappService.sh`(.bat). UI 运行一个java进程,用的zuul框架。 6 | 7 | ## 设置 8 | UI的设置文件是发行包里的`webapp/webapp.yml`。它由三个部分组成。 9 | 10 | 1. 监听端口 11 | 1. Backend连接信息 12 | 13 | ```yaml 14 | server: 15 | port: 8080 16 | 17 | collector: 18 | path: /graphql 19 | ribbon: 20 | ReadTimeout: 10000 21 | # Point to all backend's restHost:restPort, split by , 22 | listOfServers: 10.2.34.1:12800,10.2.34.2:12800 23 | 24 | ``` 25 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/ui-setup.md: -------------------------------------------------------------------------------- 1 | # UI 2 | Skywalking UI的发行版已经包含在我们的Apache官方版本中。 3 | 4 | ## 启动 5 | 启动脚本也在`/bin/webappService.sh`(.bat). UI 运行一个java进程,用的zuul框架。 6 | 7 | ## 设置 8 | UI的设置文件是发行包里的`webapp/webapp.yml`。它由三个部分组成。 9 | 10 | 1. 监听端口 11 | 1. Backend连接信息 12 | 13 | ```yaml 14 | server: 15 | port: 8080 16 | 17 | collector: 18 | path: /graphql 19 | ribbon: 20 | ReadTimeout: 10000 21 | # Point to all backend's restHost:restPort, split by , 22 | listOfServers: 10.2.34.1:12800,10.2.34.2:12800 23 | 24 | ``` 25 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/ttl.md: -------------------------------------------------------------------------------- 1 | # TTL 2 | 在 SkyWalkin 中, 除了元数据外, 有两种类型的观测数据 3 | 1. 记录, 包括 trace 和告警. 未来可能还包括日志. 4 | 2. 指标, 包括如 p99/p95/p90/p75/p50, 热点图, 成功率, cpm(rpm) 等. 5 | 指标又根据 分钟/小时/天/月 维度, 在存储中划分为不同索引或表. 6 | 7 | 针对不同的类型, 你有以下设置: 8 | ```yaml 9 | # 设置指标数据的超时. 超时到期后,指标数据将自动删除. 10 | recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3} # Unit is day 11 | metricsDataTTL: ${SW_CORE_RECORD_DATA_TTL:7} # Unit is day 12 | ``` 13 | 14 | - `recordDataTTL` 影响的**记录**数据,包括跟踪和报警. 15 | - `metricsDataTTL` 影响的所有指标,包括服务、实例、端点指标和拓扑映射指标. 16 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Opentracing-CN.md: -------------------------------------------------------------------------------- 1 | * 使用 maven 和 gradle 依赖相应的工具包 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-opentracing 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 使用OpenTracing的标准API和桥接器,使用手动埋点 11 | ```java 12 | Tracer tracer = new org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer(); 13 | Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); 14 | 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/istio/README.md: -------------------------------------------------------------------------------- 1 | # 与 Istio 协作 2 | 3 | 本文是关于如何将 Istio 的度量指标发送到 SkyWalking OAP 服务的介绍. 4 | 5 | ## 前提 6 | 7 | Istio 已经安装在 kubernetes 集群中. 参考 [Istio 快速启动](https://istio.io/docs/setup/kubernetes/quick-start/) 8 | 进行安装. 9 | 10 | ## 部署 SkyWalking backend 11 | 12 | 参考 [在 kubernetes 中部署后端](../backend/backend-k8s.md)一文在 kubernetes 集群中安装. 13 | 14 | ## 设置 Istio 向 OAP 发送度量指标 15 | 16 | 按照 [设置 Istio 向 OAP 发送度量指标](https://github.com/apache/skywalking-kubernetes#setup-istio-to-send-metrics-to-oap) 17 | 中的指南设置 Istio 与 OAP 进行协作. 18 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/istio/README.md: -------------------------------------------------------------------------------- 1 | # 与 Istio 协作 2 | 3 | 本文是关于如何将 Istio 的度量指标发送到 SkyWalking OAP 服务的介绍. 4 | 5 | ## 前提 6 | 7 | Istio 已经安装在 kubernetes 集群中. 参考 [Istio 快速启动](https://istio.io/docs/setup/kubernetes/quick-start/) 8 | 进行安装. 9 | 10 | ## 部署 SkyWalking backend 11 | 12 | 参考 [在 kubernetes 中部署后端](../backend/backend-k8s.md)一文在 kubernetes 集群中安装. 13 | 14 | ## 设置 Istio 向 OAP 发送度量指标 15 | 16 | 按照 [设置 Istio 向 OAP 发送度量指标](https://github.com/apache/skywalking-kubernetes#setup-istio-to-send-metrics-to-oap) 17 | 中的指南设置 Istio 与 OAP 进行协作. 18 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/istio/README.md: -------------------------------------------------------------------------------- 1 | # 与 Istio 协作 2 | 3 | 本文是关于如何将 Istio 的度量指标发送到 SkyWalking OAP 服务的介绍. 4 | 5 | ## 前提 6 | 7 | Istio 已经安装在 kubernetes 集群中. 参考 [Istio 快速启动](https://istio.io/docs/setup/kubernetes/quick-start/) 8 | 进行安装. 9 | 10 | ## 部署 SkyWalking backend 11 | 12 | 参考 [在 kubernetes 中部署后端](../backend/backend-k8s.md)一文在 kubernetes 集群中安装. 13 | 14 | ## 设置 Istio 向 OAP 发送度量指标 15 | 16 | 按照 [设置 Istio 向 OAP 发送度量指标](https://github.com/apache/skywalking-kubernetes#setup-istio-to-send-metrics-to-oap) 17 | 中的指南设置 Istio 与 OAP 进行协作. 18 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/ui-setup.md: -------------------------------------------------------------------------------- 1 | # UI 2 | Skywalking UI的发行版已经包含在我们的Apache官方版本中。 3 | 4 | ## 启动 5 | 启动脚本也在`/bin/webappService.sh`(.bat). UI 运行一个java进程,用的zuul框架。 6 | 7 | ## 设置 8 | UI的设置文件是发行包里的`webapp/webapp.yml`。它由三个部分组成。 9 | 10 | 1. 监听端口 11 | 2. 配置转发连接信息 12 | 13 | ```yaml 14 | server: 15 | port: 8080 16 | 17 | collector: 18 | path: /graphql 19 | ribbon: 20 | ReadTimeout: 10000 21 | # Point to all backend's restHost:restPort, split by , 22 | listOfServers: 10.2.34.1:12800,10.2.34.2:12800 23 | 24 | ``` 25 | 26 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-start-up-mode.md: -------------------------------------------------------------------------------- 1 | # 启动模式 2 | 在不同的部署工具(如K8S)中,可能需要不同的启动模式。 3 | 我们还提供另外两种可选的启动模式。 4 | 5 | ## 默认模式 6 | 默认模式。如果需要,进行初始化工作,启动监听并提供服务。 7 | 8 | 运行 `/bin/oapService.sh`(.bat) 来启动这个模式。也可以在使用 `startup.sh`(.bat)来启动。 9 | 10 | ## 初始化模式 11 | 在此模式下,OAP服务器启动以执行初始化工作,然后退出。 12 | 您可以使用此模式初始化存储,例如ElasticSearch索引、MySQL和TIDB表,和init数据。 13 | 14 | 运行 `/bin/oapServiceInit.sh`(.bat) 来启动这个模式。 15 | 16 | ## 非初始化模式 17 | 在此模式下,OAP服务器不进行初始化。 18 | 但它等待存在弹性搜索索引、mysql和tidb表,开始倾听并提供服务。意味着此OAP服务希望别的OAP服务器进行初始化。 19 | 20 | 运行 `/bin/oapServiceNoInit.sh`(.bat) 来启动这个模式。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/README.md: -------------------------------------------------------------------------------- 1 | # 常见问题解答 2 | 下面是一些已知或常见的问题解答。欢迎您贡献自己的问题解答。 3 | 4 | ## 编译时 5 | * [Protoc plugin在maven build时失败](Protoc-Plugin-Fails-When-Build.md) 6 | * [导入工程到eclipse时,相关项没找到](Import-Project-Eclipse-RequireItems-Exception.md) 7 | 8 | ## 运行时 9 | * [UI中只有traces](Why-have-traces-no-others.md) 10 | * [控制台GRPC的日志太多](Too-many-gRPC-logs.md) 11 | * [Kafka消费端trace断裂](kafka-plugin.md) 12 | * [Agent或collector版本升级](Upgrade.md) 13 | * [EnhanceRequireObjectCache类转换异常](EnhanceRequireObjectCache-Cast-Exception.md) 14 | * [ElasticSearch 服务器性能常见问题, 包括 ERROR CODE:429](ES-Server-FAQ.md) -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/README.md: -------------------------------------------------------------------------------- 1 | # 常见问题解答 2 | 下面是一些已知或常见的问题解答。欢迎您贡献自己的问题解答。 3 | 4 | ## 编译时 5 | * [Protoc plugin在maven build时失败](Protoc-Plugin-Fails-When-Build.md) 6 | * [导入工程到eclipse时,相关项没找到](Import-Project-Eclipse-RequireItems-Exception.md) 7 | 8 | ## 运行时 9 | * [UI中只有traces](Why-have-traces-no-others.md) 10 | * [控制台GRPC的日志太多](Too-many-gRPC-logs.md) 11 | * [Kafka消费端trace断裂](kafka-plugin.md) 12 | * [Agent或collector版本升级](Upgrade.md) 13 | * [EnhanceRequireObjectCache类转换异常](EnhanceRequireObjectCache-Cast-Exception.md) 14 | * [ElasticSearch 服务器性能常见问题, 包括 ERROR CODE:429](ES-Server-FAQ.md) -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/endpoint-grouping-rules.md: -------------------------------------------------------------------------------- 1 | # 端点分组参数化 2 | 在大多数情况下,端点应该通过语言代理、服务网格可观察性解决方案或仪表系统的配置自动检测。 3 | 有一些特殊的情况,特别是当人们使用REST样式的URI时,应用程序代码将参数放在端点名称中,例如将订单id放在URI中,如/prod/ORDER123和/prod/ORDER123。 4 | 但从逻辑上讲,人们希望他们可以有一个端点名,如prod/{order-id}。这是为端点分组参数化而设计的特性。 5 | 目前,用户可以通过静态YAML文件中的 endpoint_name_grouping 来设置分组规则。或使用[动态配置](dynamic-config.md)初始化和更新端点分组规则。 6 | # 配置格式 7 | 无论是静态本地文件还是动态配置值,它们都共享相同的YAML格式。 8 | grouping: 9 | # 服务端点将遵循以下规则 10 | - service-name: serviceA 11 | rules: 12 | # 通过正则表达式匹配时的逻辑名称 13 | - endpoint-name: /prod/{id} 14 | regex: \/prod\/.+ -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/How-to-disable-plugin-CN.md: -------------------------------------------------------------------------------- 1 | # Disable plugins 2 | 删除plugin目录下的相关jar包:`skywalking-agent/plugins/*.jar` 3 | 4 | ``` 5 | +-- skywalking-agent 6 | +-- activations 7 | apm-toolkit-log4j-1.x-activation.jar 8 | apm-toolkit-log4j-2.x-activation.jar 9 | apm-toolkit-logback-1.x-activation.jar 10 | ... 11 | +-- config 12 | agent.config 13 | +-- plugins 14 | apm-dubbo-plugin.jar 15 | apm-feign-default-http-9.x.jar 16 | apm-httpClient-4.x-plugin.jar 17 | ..... 18 | skywalking-agent.jar 19 | ``` -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/backend-start-up-mode.md: -------------------------------------------------------------------------------- 1 | # 启动模式 2 | 在不同的部署工具(如K8S)中,可能需要不同的启动模式。 3 | 我们还提供另外两种可选的启动模式。 4 | 5 | ## Default mode 6 | Default mode。 如果需要,进行初始化工作,启动listen并提供服务。 7 | 8 | 运行 `/bin/oapService.sh`(.bat) 来启动这个模式。也可以在使用 `startup.sh`(.bat)来启动。 9 | 10 | ## Init mode 11 | 在此模式下,OAP服务器启动以执行初始化工作,然后退出。 12 | 您可以使用此模式初始化存储,例如ElasticSearch索引、MySQL和TIDB表,和init数据。 13 | 14 | 运行 `/bin/oapServiceInit.sh`(.bat) 来启动这个模式。 15 | 16 | ## No-init mode 17 | 在此模式下,OAP服务器不进行初始化。 18 | 但它等待存在弹性搜索索引、mysql和tidb表,开始倾听并提供服务。意味着此OAP服务希望别的OAP服务器进行初始化。 19 | 20 | 运行 `/bin/oapServiceNoInit.sh`(.bat) 来启动这个模式。 -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Specified-agent-config.md: -------------------------------------------------------------------------------- 1 | # 通过系统属性定位agent配置文件 2 | 3 | ## 支持的版本 4 | 5 | 5.0.0-RC+ 6 | 7 | ## 什么是通过系统属性定位agent配置文件? 8 | 默认地,agent会定位到`/config`目录下的`agent.config`。 9 | 如果用户通过系统属性设置了指定的agent配置文件,agent将会根据设置去加载文件。 10 | 另外,这个功能与[配置覆盖](Setting-override.md)并不冲突。 11 | 12 | ## 覆盖优先级 13 | 指定的agent配置文件 > 默认的agent配置文件 14 | 15 | ## 如何使用 16 | 17 | 指定的配置文件的内容格式必须与默认的配置文件相同。 18 | 19 | 20 | **使用 `System.Properties(-D)` 设置指定的配置文件路径** 21 | 22 | ``` 23 | -Dskywalking_config=/path/to/agent.config 24 | ``` 25 | `/path/to/agent.config` 是指定的配置文件的绝对路径。 26 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-start-up-mode.md: -------------------------------------------------------------------------------- 1 | # 启动模式 2 | 在不同的部署工具(如K8S)中,可能需要不同的启动模式。 3 | 我们还提供另外两种可选的启动模式。 4 | 5 | ## Default mode 6 | Default mode。 如果需要,进行初始化工作,启动listen并提供服务。 7 | 8 | 运行 `/bin/oapService.sh`(.bat) 来启动这个模式。也可以在使用 `startup.sh`(.bat)来启动。 9 | 10 | ## Init mode 11 | 在此模式下,OAP服务器启动以执行初始化工作,然后退出。 12 | 您可以使用此模式初始化存储,例如ElasticSearch索引、MySQL和TIDB表,和init数据。 13 | 14 | 运行 `/bin/oapServiceInit.sh`(.bat) 来启动这个模式。 15 | 16 | ## No-init mode 17 | 在此模式下,OAP服务器不进行初始化。 18 | 但它等待存在弹性搜索索引、mysql和tidb表,开始倾听并提供服务。意味着此OAP服务希望别的OAP服务器进行初始化。 19 | 20 | 运行 `/bin/oapServiceNoInit.sh`(.bat) 来启动这个模式。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Specified-agent-config.md: -------------------------------------------------------------------------------- 1 | # 通过系统属性定位agent配置文件 2 | 3 | ## 支持的版本 4 | 5 | 5.0.0-RC+ 6 | 7 | ## 什么是通过系统属性定位agent配置文件? 8 | 默认地,agent会定位到`/config`目录下的`agent.config`。 9 | 如果用户通过系统属性设置了指定的agent配置文件,agent将会根据设置去加载文件。 10 | 另外,这个功能与[配置覆盖](Setting-override.md)并不冲突。 11 | 12 | ## 覆盖优先级 13 | 指定的agent配置文件 > 默认的agent配置文件 14 | 15 | ## 如何使用 16 | 17 | 指定的配置文件的内容格式必须与默认的配置文件相同。 18 | 19 | 20 | **使用 `System.Properties(-D)` 设置指定的配置文件路径** 21 | 22 | ``` 23 | -Dskywalking_config=/path/to/agent.config 24 | ``` 25 | `/path/to/agent.config` 是指定的配置文件的绝对路径。 26 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-start-up-mode.md: -------------------------------------------------------------------------------- 1 | # 启动模式 2 | 在不同的部署工具(如K8S)中,可能需要不同的启动模式。 3 | 我们还提供另外两种可选的启动模式。 4 | 5 | ## Default mode 6 | Default mode。 如果需要,进行初始化工作,启动listen并提供服务。 7 | 8 | 运行 `/bin/oapService.sh`(.bat) 来启动这个模式。也可以在使用 `startup.sh`(.bat)来启动。 9 | 10 | ## Init mode 11 | 在此模式下,OAP服务器启动以执行初始化工作,然后退出。 12 | 您可以使用此模式初始化存储,例如ElasticSearch索引、MySQL和TIDB表,和init数据。 13 | 14 | 运行 `/bin/oapServiceInit.sh`(.bat) 来启动这个模式。 15 | 16 | ## No-init mode 17 | 在此模式下,OAP服务器不进行初始化。 18 | 但它等待存在弹性搜索索引、mysql和tidb表,开始倾听并提供服务。意味着此OAP服务希望别的OAP服务器进行初始化。 19 | 20 | 运行 `/bin/oapServiceNoInit.sh`(.bat) 来启动这个模式。 -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Specified-agent-config.md: -------------------------------------------------------------------------------- 1 | # 通过系统属性定位agent配置文件 2 | 3 | ## 支持的版本 4 | 5 | 5.0.0-RC+ 6 | 7 | ## 什么是通过系统属性定位agent配置文件? 8 | 默认地,agent会定位到`/config`目录下的`agent.config`。 9 | 如果用户通过系统属性设置了指定的agent配置文件,agent将会根据设置去加载文件。 10 | 另外,这个功能与[配置覆盖](Setting-override.md)并不冲突。 11 | 12 | ## 覆盖优先级 13 | 指定的agent配置文件 > 默认的agent配置文件 14 | 15 | ## 如何使用 16 | 17 | 指定的配置文件的内容格式必须与默认的配置文件相同。 18 | 19 | 20 | **使用 `System.Properties(-D)` 设置指定的配置文件路径** 21 | 22 | ``` 23 | -Dskywalking_config=/path/to/agent.config 24 | ``` 25 | `/path/to/agent.config` 是指定的配置文件的绝对路径。 26 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/envoy/als_setting.md: -------------------------------------------------------------------------------- 1 | # 通过 ALS 观测服务网格 2 | 3 | Envoy [ALS(access log service)](https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto) 4 | 提供了 RPC 路由的完整日志, 包括 HTTP 和 TCP. 5 | 6 | 你需要以下三步来开启 ALS. 7 | 8 | 1. 到目前为止, Istio pilot 还不支持开启 ALS, 所以你需要修改 pilot 代码. 9 | 1. 开启 SkyWalking [envoy 接收器](../backend/backend-receivers.md). 10 | 1. 激活 ALS k8s-mesh 分析 11 | 12 | ```yaml 13 | envoy-metric: 14 | default: 15 | alsHTTPAnalysis: 16 | - k8s-mesh 17 | ``` 18 | 19 | 需要注意的是, 仅在 Envoy 受 Istio 控制的情况下才使用此功能. 20 | 否则, 你需要自己实现 `ALSHTTPAnalysis` 并且将其注册到接收器. 21 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/envoy/als_setting.md: -------------------------------------------------------------------------------- 1 | # 通过 ALS 观测服务网格 2 | 3 | Envoy [ALS(access log service)](https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto) 4 | 提供了 RPC 路由的完整日志, 包括 HTTP 和 TCP. 5 | 6 | 你需要以下三步来开启 ALS. 7 | 8 | 1. 到目前为止, Istio pilot 还不支持开启 ALS, 所以你需要修改 pilot 代码. 9 | 1. 开启 SkyWalking [envoy 接收器](../backend/backend-receivers.md). 10 | 1. 激活 ALS k8s-mesh 分析 11 | 12 | ```yaml 13 | envoy-metric: 14 | default: 15 | alsHTTPAnalysis: 16 | - k8s-mesh 17 | ``` 18 | 19 | 需要注意的是, 仅在 Envoy 受 Istio 控制的情况下才使用此功能. 20 | 否则, 你需要自己实现 `ALSHTTPAnalysis` 并且将其注册到接收器. 21 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/How-to-disable-plugin.md: -------------------------------------------------------------------------------- 1 | # 禁用插件 2 | 从`skywalking-agent/plugins/*.jar`中删除或移除指定插件的jar包即可。 3 | 4 | ``` 5 | +-- skywalking-agent 6 | +-- activations 7 | apm-toolkit-log4j-1.x-activation.jar 8 | apm-toolkit-log4j-2.x-activation.jar 9 | apm-toolkit-logback-1.x-activation.jar 10 | ... 11 | +-- config 12 | agent.config 13 | +-- plugins 14 | apm-dubbo-plugin.jar 15 | apm-feign-default-http-9.x.jar 16 | apm-httpClient-4.x-plugin.jar 17 | ..... 18 | skywalking-agent.jar 19 | ``` -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/How-to-disable-plugin.md: -------------------------------------------------------------------------------- 1 | # 禁用插件 2 | 从`skywalking-agent/plugins/*.jar`中删除或移除指定插件的jar包即可。 3 | 4 | ``` 5 | +-- skywalking-agent 6 | +-- activations 7 | apm-toolkit-log4j-1.x-activation.jar 8 | apm-toolkit-log4j-2.x-activation.jar 9 | apm-toolkit-logback-1.x-activation.jar 10 | ... 11 | +-- config 12 | agent.config 13 | +-- plugins 14 | apm-dubbo-plugin.jar 15 | apm-feign-default-http-9.x.jar 16 | apm-httpClient-4.x-plugin.jar 17 | ..... 18 | skywalking-agent.jar 19 | ``` -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/How-to-disable-plugin.md: -------------------------------------------------------------------------------- 1 | # 禁用插件 2 | 从`skywalking-agent/plugins/*.jar`中删除或移除指定插件的jar包即可。 3 | 4 | ``` 5 | +-- skywalking-agent 6 | +-- activations 7 | apm-toolkit-log4j-1.x-activation.jar 8 | apm-toolkit-log4j-2.x-activation.jar 9 | apm-toolkit-logback-1.x-activation.jar 10 | ... 11 | +-- config 12 | agent.config 13 | +-- plugins 14 | apm-dubbo-plugin.jar 15 | apm-feign-default-http-9.x.jar 16 | apm-httpClient-4.x-plugin.jar 17 | ..... 18 | skywalking-agent.jar 19 | ``` -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/How-to-disable-plugin.md: -------------------------------------------------------------------------------- 1 | # 禁用插件 2 | 从`skywalking-agent/plugins/*.jar`中删除或移除指定插件的jar包即可。 3 | 4 | ``` 5 | +-- skywalking-agent 6 | +-- activations 7 | apm-toolkit-log4j-1.x-activation.jar 8 | apm-toolkit-log4j-2.x-activation.jar 9 | apm-toolkit-logback-1.x-activation.jar 10 | ... 11 | +-- config 12 | agent.config 13 | +-- plugins 14 | apm-dubbo-plugin.jar 15 | apm-feign-default-http-9.x.jar 16 | apm-httpClient-4.x-plugin.jar 17 | ..... 18 | skywalking-agent.jar 19 | ``` -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/TLS.md: -------------------------------------------------------------------------------- 1 | # 支持传输层安全性协议(TLS) 2 | 在互联网中传输数据时,传输层安全性协议(TLS)是一种很常见的安全解决方案。 3 | 在一些SkyWalking使用案例中,用户有如下使用背景: 4 | 5 | > 目标应用在一个区域(也称为VPC),同时,SkyWalking后端在另一个区域(VPC)。 6 | > 7 | > 因此,安全性需求是很有必要的。 8 | 9 | ## 鉴权模式 Mode 10 | 只支持 **no mutual auth**. 11 | - 如果你对如何产生秘钥文件不了解的话,使用这个[脚本](../../../../../tools/TLS/tls_key_generate.sh)。 12 | - 找到`ca.crt`,在客户端使用。 13 | - 找到`server.crt`和`server.pem`,在服务器端使用。 14 | 15 | ## 开启并配置TLS 16 | 17 | ### agent配置 18 | - 将`ca.crt`放到agent包的`/ca`文件夹下。注意,`/ca`文件夹并没有在分发包中创建,请自己创建它。 19 | 20 | 当agent检测到`/ca/ca.crt`后,会自动开启TLS。 21 | 22 | 请确保不会访问到区域(VPC)外的其他端口,比如防火墙、代理。 23 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/TLS.md: -------------------------------------------------------------------------------- 1 | # 支持传输层安全性协议(TLS) 2 | 在互联网中传输数据时,传输层安全性协议(TLS)是一种很常见的安全解决方案。 3 | 在一些SkyWalking使用案例中,用户有如下使用背景: 4 | 5 | > 目标应用在一个区域(也称为VPC),同时,SkyWalking后端在另一个区域(VPC)。 6 | > 7 | > 因此,安全性需求是很有必要的。 8 | 9 | ## 鉴权模式 Mode 10 | 只支持 **no mutual auth**. 11 | - 如果你对如何产生秘钥文件不了解的话,使用这个[脚本](../../../../../tools/TLS/tls_key_generate.sh)。 12 | - 找到`ca.crt`,在客户端使用。 13 | - 找到`server.crt`和`server.pem`,在服务器端使用。 14 | 15 | ## 开启并配置TLS 16 | 17 | ### agent配置 18 | - 将`ca.crt`放到agent包的`/ca`文件夹下。注意,`/ca`文件夹并没有在分发包中创建,请自己创建它。 19 | 20 | 当agent检测到`/ca/ca.crt`后,会自动开启TLS。 21 | 22 | 请确保不会访问到区域(VPC)外的其他端口,比如防火墙、代理。 23 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/TLS.md: -------------------------------------------------------------------------------- 1 | # 支持传输层安全性协议(TLS) 2 | 在互联网中传输数据时,传输层安全性协议(TLS)是一种很常见的安全解决方案。 3 | 在一些SkyWalking使用案例中,用户有如下使用背景: 4 | 5 | > 目标应用在一个区域(也称为VPC),同时,SkyWalking后端在另一个区域(VPC)。 6 | > 7 | > 因此,安全性需求是很有必要的。 8 | 9 | ## 鉴权模式 Mode 10 | 只支持 **no mutual auth**. 11 | - 如果你对如何产生秘钥文件不了解的话,使用这个[脚本](../../../../../tools/TLS/tls_key_generate.sh)。 12 | - 找到`ca.crt`,在客户端使用。 13 | - 找到`server.crt`和`server.pem`,在服务器端使用。 14 | 15 | ## 开启并配置TLS 16 | 17 | ### agent配置 18 | - 将`ca.crt`放到agent包的`/ca`文件夹下。注意,`/ca`文件夹并没有在分发包中创建,请自己创建它。 19 | 20 | 当agent检测到`/ca/ca.crt`后,会自动开启TLS。 21 | 22 | 请确保不会访问到区域(VPC)外的其他端口,比如防火墙、代理。 23 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Application-toolkit-trace-CN.md: -------------------------------------------------------------------------------- 1 | * 使用 maven 和 gradle 依赖相应的工具包 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-trace 6 | ${skywalking.version} 7 | 8 | ``` 9 | 10 | * 随时使用 `TraceContext.traceId()` API,在应用程序的任何地方获取traceId. 11 | ```java 12 | import TraceContext; 13 | ... 14 | 15 | modelAndView.addObject("traceId", TraceContext.traceId()); 16 | ``` 17 | _示例代码,仅供参考_ 18 | 19 | * 对任何需要追踪的方法,使用 `@Trace` 标注,则此方法会被加入到追踪链中。 20 | * 在被追踪的方法中自定义 tag. 21 | ```java 22 | ActiveSpan.tag("my_tag", "my_value"); 23 | ``` 24 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/Specified-agent-config.md: -------------------------------------------------------------------------------- 1 | # 通过系统属性动态定义agent配置文件 2 | 3 | ## 支持的版本 4 | 5 | 5.0.0-RC+ 6 | 7 | ## 什么是通过系统属性动态定义agent配置文件? 8 | 默认地,agent会定位到`/config`目录下的`agent.config`。 9 | 如果用户通过系统属性设置了指定的agent配置文件,agent将会根据设置去加载文件。 10 | 另外,这个功能与[配置覆盖](Setting-override.md)并不冲突。 11 | 12 | ## 覆盖优先级 13 | 指定的agent配置文件 > 默认的agent配置文件 14 | 15 | ## 如何使用 16 | 17 | 指定的配置文件的内容格式必须与默认的配置文件相同。 18 | 19 | 20 | **使用 `System.Properties(-D)` 设置指定的配置文件路径** 21 | 22 | ``` 23 | -Dskywalking_config=/path/to/agent.config 24 | ``` 25 | `/path/to/agent.config` 是指定的配置文件的绝对路径。 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Application-toolkit-trace.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-trace 6 | ${skywalking.version} 7 | 8 | ``` 9 | 10 | * 使用 `TraceContext.traceId()` API得到traceId 11 | ```java 12 | import TraceContext; 13 | ... 14 | 15 | modelAndView.addObject("traceId", TraceContext.traceId()); 16 | ``` 17 | _仅为示例代码_ 18 | 19 | * 在你想追踪的方法上添加`@Trace`注解。添加后,你就可以在方法调用栈中查看到span的信息。 20 | * 在被追踪的方法的上下文周期内添加自定义tag。 21 | ```java 22 | ActiveSpan.tag("my_tag", "my_value"); 23 | ``` 24 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/FAQ/Protoc-Plugin-Fails-When-Build-CN.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | maven编译加载protoc-plugins插件产生如下错误: 3 | ``` 4 | [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile-custom (default) on project apm-network: Unable to copy the file to \incubator-skywalking\apm-network\target\protoc-plugins: \incubator-skywalking\apm-network\target\protoc-plugins\protoc-3.3.0-linux-x86_64.exe (另一个程序正在使用此文件,进程无法访问。) -> [Help 1] 5 | ``` 6 | 7 | ### 原因 8 | Protobuf编译器依赖于glibc环境,部分linux操作系统未安装或未升级该函数库会产生该问题。 9 | 10 | ### 解决方法 11 | 检查并升级最新版本glibc库,若使用容器镜像环境推荐含有最新版本glibc的alpine系统。请参考官方手册:http://www.gnu.org/software/libc/documentation.html 12 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/ui-setup.md: -------------------------------------------------------------------------------- 1 | # UI 2 | Skywalking UI的发行版已经包含在我们的Apache官方版本中。 3 | 4 | ## 启动 5 | 启动脚本也在`/bin/webappService.sh`(.bat). UI 运行一个java进程,用的zuul框架。 6 | 7 | ## 设置 8 | UI的设置文件是发行包里的`webapp/webapp.yml`。它由三个部分组成。 9 | 10 | 1. 监听端口 11 | 1. Backend连接信息 12 | 1. 认证设置 13 | 14 | ```yaml 15 | server: 16 | port: 8080 17 | 18 | collector: 19 | path: /graphql 20 | ribbon: 21 | ReadTimeout: 10000 22 | # Point to all backend's restHost:restPort, split by , 23 | listOfServers: 10.2.34.1:12800,10.2.34.2:12800 24 | 25 | security: 26 | user: 27 | # username 28 | admin: 29 | # password 30 | password: admin 31 | 32 | ``` 33 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/manual-sdk.md: -------------------------------------------------------------------------------- 1 | # 手动打点 SDK 2 | 3 | 我们尚未正式提供手动打点 SDK, 欢迎贡献以下语言的 SDK: 4 | - Go 5 | - Python 6 | - C++ 7 | 8 | ## SkyWalking 的数据格式和传播协议是什么 9 | 10 | 从[协议文档](../protocols/README.md)中了解这些协议的详情. 11 | 12 | ## SkyWalking 能够提供以上语言的 OpenCensus 导出器吗 13 | 14 | 写作本文档的时候, **不能**. 因为 OpenCensus 没有提供上下文可扩展的机制, 在操作 span 的时候也没有钩子(hook)机制. 15 | 而 SkyWalking 要依赖这些来传播除 trace id 和 span id 之外的更多内容. 16 | 17 | 我们已经进行了讨论, 参考[Issue](https://github.com/census-instrumentation/opencensus-specs/issues/70), 18 | 在 OpenCensus 官方提供了以上所缺的功能之后, 我们就可以提供相应的导出器了. 19 | 20 | ## Zipkin 打点 SDK 怎么样 21 | 22 | 参考[Zipkin 接收器](../setup/backend/backend-receivers.md)的**选择接收器**一节. 23 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Namespace.md: -------------------------------------------------------------------------------- 1 | # 命名空间 2 | 3 | ## 背景 4 | SkyWalking是一个监控工具,会从分布式系统中收集度量值。在真实世界中,大型分布式系统包含了成百上千的服务和服务实例。在这种情况下,很有可能不止一个小组、甚至不止一个公司在维护和监控分布式系统。每个小组或公司掌管着不同的部分,它们不希望也不应该共享它们的度量值。 5 | 6 | 命名空间正是基于以上背景提出的,用于追踪监控系统的隔离。 7 | 8 | ## 设置命名空间 9 | ### 在agent配置文件中设置agent.namespace 10 | ```properties 11 | # The agent namespace 12 | # agent.namespace=default-namespace 13 | ``` 14 | 15 | `agent.namespace`的默认值为空。 16 | 17 | **影响** 18 | SkyWalking的默认header为`sw3`。更多细节可查看[文档](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md). 19 | 设置`agent.namespace`后,header变为`namespace-sw3`。 20 | 21 | 当两边使用了不同的命名空间时,跨进程传播链将断掉。 22 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/manual-sdk.md: -------------------------------------------------------------------------------- 1 | # 手动打点 SDK 2 | 3 | 我们尚未正式提供手动打点 SDK, 欢迎贡献以下语言的 SDK: 4 | - Go 5 | - Python 6 | - C++ 7 | 8 | ## SkyWalking 的数据格式和传播协议是什么 9 | 10 | 从[协议文档](../protocols/README.md)中了解这些协议的详情. 11 | 12 | ## SkyWalking 能够提供以上语言的 OpenCensus 导出器吗 13 | 14 | 写作本文档的时候, **不能**. 因为 OpenCensus 没有提供上下文可扩展的机制, 在操作 span 的时候也没有钩子(hook)机制. 15 | 而 SkyWalking 要依赖这些来传播除 trace id 和 span id 之外的更多内容. 16 | 17 | 我们已经进行了讨论, 参考[Issue](https://github.com/census-instrumentation/opencensus-specs/issues/70), 18 | 在 OpenCensus 官方提供了以上所缺的功能之后, 我们就可以提供相应的导出器了. 19 | 20 | ## Zipkin 打点 SDK 怎么样 21 | 22 | 参考[Zipkin 接收器](../setup/backend/backend-receivers.md)的**选择接收器**一节. 23 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Namespace.md: -------------------------------------------------------------------------------- 1 | # 命名空间 2 | 3 | ## 背景 4 | SkyWalking是一个监控工具,会从分布式系统中收集度量值。在真实世界中,大型分布式系统包含了成百上千的服务和服务实例。在这种情况下,很有可能不止一个小组、甚至不止一个公司在维护和监控分布式系统。每个小组或公司掌管着不同的部分,它们不希望也不应该共享它们的度量值。 5 | 6 | 命名空间正是基于以上背景提出的,用于追踪监控系统的隔离。 7 | 8 | ## 设置命名空间 9 | ### 在agent配置文件中设置agent.namespace 10 | ```properties 11 | # The agent namespace 12 | # agent.namespace=default-namespace 13 | ``` 14 | 15 | `agent.namespace`的默认值为空。 16 | 17 | **影响** 18 | SkyWalking的默认header为`sw3`。更多细节可查看[文档](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md). 19 | 设置`agent.namespace`后,header变为`namespace-sw3`。 20 | 21 | 当两边使用了不同的命名空间时,跨进程传播链将断掉。 22 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/manual-sdk.md: -------------------------------------------------------------------------------- 1 | # 手动打点 SDK 2 | 3 | 我们尚未正式提供手动打点 SDK, 欢迎贡献以下语言的 SDK: 4 | - Go 5 | - Python 6 | - C++ 7 | 8 | ## SkyWalking 的数据格式和传播协议是什么 9 | 10 | 从[协议文档](../protocols/README.md)中了解这些协议的详情. 11 | 12 | ## SkyWalking 能够提供以上语言的 OpenCensus 导出器吗 13 | 14 | 写作本文档的时候, **不能**. 因为 OpenCensus 没有提供上下文可扩展的机制, 在操作 span 的时候也没有钩子(hook)机制. 15 | 而 SkyWalking 要依赖这些来传播除 trace id 和 span id 之外的更多内容. 16 | 17 | 我们已经进行了讨论, 参考[Issue](https://github.com/census-instrumentation/opencensus-specs/issues/70), 18 | 在 OpenCensus 官方提供了以上所缺的功能之后, 我们就可以提供相应的导出器了. 19 | 20 | ## Zipkin 打点 SDK 怎么样 21 | 22 | 参考[Zipkin 接收器](../setup/backend/backend-receivers.md)的**选择接收器**一节. 23 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Namespace.md: -------------------------------------------------------------------------------- 1 | # 命名空间 2 | 3 | ## 背景 4 | SkyWalking是一个监控工具,会从分布式系统中收集度量值。在真实世界中,大型分布式系统包含了成百上千的服务和服务实例。在这种情况下,很有可能不止一个小组、甚至不止一个公司在维护和监控分布式系统。每个小组或公司掌管着不同的部分,它们不希望也不应该共享它们的度量值。 5 | 6 | 命名空间正是基于以上背景提出的,用于追踪监控系统的隔离。 7 | 8 | ## 设置命名空间 9 | ### 在agent配置文件中设置agent.namespace 10 | ```properties 11 | # The agent namespace 12 | # agent.namespace=default-namespace 13 | ``` 14 | 15 | `agent.namespace`的默认值为空。 16 | 17 | **影响** 18 | SkyWalking的默认header为`sw3`。更多细节可查看[文档](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md). 19 | 设置`agent.namespace`后,header变为`namespace-sw3`。 20 | 21 | 当两边使用了不同的命名空间时,跨进程传播链将断掉。 22 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/manual-sdk.md: -------------------------------------------------------------------------------- 1 | # 手动打点 SDK 2 | 3 | 我们尚未正式提供手动打点 SDK, 欢迎贡献以下语言的 SDK: 4 | - Go 5 | - Python 6 | - C++ 7 | 8 | ## SkyWalking 的数据格式和传播协议是什么 9 | 10 | 从[协议文档](../protocols/README.md)中了解这些协议的详情. 11 | 12 | ## SkyWalking 能够提供以上语言的 OpenCensus 导出器吗 13 | 14 | 写作本文档的时候, **不能**. 因为 OpenCensus 没有提供上下文可扩展的机制, 在操作 span 的时候也没有钩子(hook)机制. 15 | 而 SkyWalking 要依赖这些来传播除 trace id 和 span id 之外的更多内容. 16 | 17 | 我们已经进行了讨论, 参考[Issue](https://github.com/census-instrumentation/opencensus-specs/issues/70), 18 | 在 OpenCensus 官方提供了以上所缺的功能之后, 我们就可以提供相应的导出器了. 19 | 20 | ## Zipkin 打点 SDK 怎么样 21 | 22 | 参考[Zipkin 接收器](../setup/backend/backend-receivers.md)的**选择接收器**一节. 23 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/apdex-threshold.md: -------------------------------------------------------------------------------- 1 | # 应用性能指数 2 | 3 | 4 | 应用性能指数(APDEX)是基于设置阈值的响应时间度量。它表示令人满意与不满意的响应时间比率。响应时间是指从一个请求到返回的完整请求。 5 | 6 | 用户定义一个响应时间阈值T,在T或更短时间内处理的所有用户的请求响应。 7 | 8 | 举个例子, 如果T是1.2秒,响应在0.5秒内完成,那么用户就满意了。所有响应 9 | 大于1.2秒的用户不满意请求。超过4.8(默认T*4)秒的响应会让用户感到沮丧. 10 | 11 | 指标值T定义在文件'service-apdex-threshold.yml'或者 查看[动态配置](dynamic-config.md). 12 | “default”项将应用配置中未定义的服务. 13 | 14 | ## 配置格式 15 | 16 | 配置必须包含服务名称和相关的维度定义: 17 | 18 | ```yml 19 | # default threshold is 500ms 20 | default: 500 21 | # example: 22 | # the threshold of service "tomcat" is 1s 23 | # tomcat: 1000 24 | # the threshold of service "springboot1" is 50ms 25 | # springboot1: 50 26 | ``` 27 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Application-toolkit-log4j-2.x-CN.md: -------------------------------------------------------------------------------- 1 | * 使用 maven 和 gradle 依赖相应的工具包 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-2.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在log4j2.xml中的pattern 配置节,配置`[%traceId]` 11 | ```xml 12 | 13 | 14 | 15 | 16 | 17 | ``` 18 | * 当你使用`-javaagent`参数激活sky-walking的探针, 如果当前上下文中存在traceid,log4j2将在输出**traceId**。如果探针没有被激活,将输出`TID: N/A`. 19 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/guides/backend-oal-scripts.md: -------------------------------------------------------------------------------- 1 | # 官方 OAL 脚本 2 | 3 | 在阅读本文档前请先阅读 [OAL 简介](../concepts-and-designs/oal.md). 4 | 5 | 在 SkyWalking 发行版压缩包中, `generated-analysis-x.y.z.jar/official_analysis.oal` 文件是 6 | 官方的 OAL 脚本, 在源代码仓库中也有文件 [official_analysis.oal](../../../oap-server/generated-analysis/src/main/resources/official_analysis.oal). 7 | 8 | **注意**: 尽管此文件包含在发行版压缩包中, 但是它并不会影响运行时的任何东西. 9 | 你需要使用 OAL 代码生成工具来从这个文件中构建出真实的分析代码. 10 | 所有生成的代码都位于 **oap-server/generated-analysis/target/generated-sources** 下的 `oal` 文件夹. 11 | 12 | 所有在这个脚本中使用到的度量指标名称都可以在报警和界面查询中使用. 当然, 你也可以修改此脚本并重新生成 13 | 分析流程和度量指标, 比如添加过滤条件. 14 | 15 | 如果你想尝试添加或删除度量指标, 用户界面可能会遭到破坏, 我们建议只有当你想自己构建一个用户界面的时候, 16 | 才做这些修改. 17 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/guides/backend-oal-scripts.md: -------------------------------------------------------------------------------- 1 | # 官方 OAL 脚本 2 | 3 | 在阅读本文档前请先阅读 [OAL 简介](../concepts-and-designs/oal.md). 4 | 5 | 在 SkyWalking 发行版压缩包中, `generated-analysis-x.y.z.jar/official_analysis.oal` 文件是 6 | 官方的 OAL 脚本, 在源代码仓库中也有文件 [official_analysis.oal](../../../oap-server/generated-analysis/src/main/resources/official_analysis.oal). 7 | 8 | **注意**: 尽管此文件包含在发行版压缩包中, 但是它并不会影响运行时的任何东西. 9 | 你需要使用 OAL 代码生成工具来从这个文件中构建出真实的分析代码. 10 | 所有生成的代码都位于 **oap-server/generated-analysis/target/generated-sources** 下的 `oal` 文件夹. 11 | 12 | 所有在这个脚本中使用到的度量指标名称都可以在报警和界面查询中使用. 当然, 你也可以修改此脚本并重新生成 13 | 分析流程和度量指标, 比如添加过滤条件. 14 | 15 | 如果你想尝试添加或删除度量指标, 用户界面可能会遭到破坏, 我们建议只有当你想自己构建一个用户界面的时候, 16 | 才做这些修改. 17 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/guides/backend-oal-scripts.md: -------------------------------------------------------------------------------- 1 | # 官方 OAL 脚本 2 | 3 | 在阅读本文档前请先阅读 [OAL 简介](../concepts-and-designs/oal.md). 4 | 5 | 在 SkyWalking 发行版压缩包中, `generated-analysis-x.y.z.jar/official_analysis.oal` 文件是 6 | 官方的 OAL 脚本, 在源代码仓库中也有文件 [official_analysis.oal](../../../oap-server/generated-analysis/src/main/resources/official_analysis.oal). 7 | 8 | **注意**: 尽管此文件包含在发行版压缩包中, 但是它并不会影响运行时的任何东西. 9 | 你需要使用 OAL 代码生成工具来从这个文件中构建出真实的分析代码. 10 | 所有生成的代码都位于 **oap-server/generated-analysis/target/generated-sources** 下的 `oal` 文件夹. 11 | 12 | 所有在这个脚本中使用到的度量指标名称都可以在报警和界面查询中使用. 当然, 你也可以修改此脚本并重新生成 13 | 分析流程和度量指标, 比如添加过滤条件. 14 | 15 | 如果你想尝试添加或删除度量指标, 用户界面可能会遭到破坏, 我们建议只有当你想自己构建一个用户界面的时候, 16 | 才做这些修改. 17 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/endpoint-grouping-rules.md: -------------------------------------------------------------------------------- 1 | # 端点分组参数化 2 | 在大多数情况下,端点应该通过语言代理、服务网格可观察性解决方案或仪表系统的配置自动检测。 3 | 有一些特殊的情况,特别是当人们使用REST样式的URI时,应用程序代码将参数放在端点名称中,例如将订单id放在URI中,如/prod/ORDER123和/prod/ORDER123。 4 | 但从逻辑上讲,人们希望他们可以有一个端点名,如prod/{order-id}。这是为端点分组参数化而设计的特性。 5 | 目前,用户可以通过静态YAML文件中的 endpoint_name_grouping 来设置分组规则。或使用[动态配置](dynamic-config.md)初始化和更新端点分组规则。 6 | # 配置格式 7 | 无论是静态本地文件还是动态配置值,它们都共享相同的YAML格式。 8 | ```yaml 9 | grouping: 10 | # Endpoint of the service would follow the following rules 11 | - service-name: serviceA 12 | rules: 13 | # Logic name when the regex expression matched. 14 | - endpoint-name: /prod/{id} 15 | regex: \/prod\/.+ 16 | ``` -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/Protoc-Plugin-Fails-When-Build.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - maven构建时,protoc-plugins插件出现如下错误: 3 | ``` 4 | [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile-custom (default) on project apm-network: Unable to copy the file to \skywalking\apm-network\target\protoc-plugins: \skywalking\apm-network\target\protoc-plugins\protoc-3.3.0-linux-x86_64.exe (The process cannot access the file because it is being used by another process) -> [Help 1]``` 5 | ``` 6 | 7 | ### 原因 8 | - Protobuf编译器依赖于glibc环境,而系统上没有安装它或安装的旧版本。 9 | 10 | ### 解决方法 11 | - 检查并升级最新版本glibc库,若使用容器镜像环境推荐含有最新版本glibc的alpine系统。请参考官方手册:http://www.gnu.org/software/libc/documentation.html 12 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-2.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在log4j2.xml的pattern中配置`[%traceId]` 11 | ```xml 12 | 13 | 14 | 15 | 16 | 17 | ``` 18 | * 当你使用`-javaagent`激活skywalking tracer后,log4j2将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 19 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/Protoc-Plugin-Fails-When-Build.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - maven构建时,protoc-plugins插件出现如下错误: 3 | ``` 4 | [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile-custom (default) on project apm-network: Unable to copy the file to \skywalking\apm-network\target\protoc-plugins: \skywalking\apm-network\target\protoc-plugins\protoc-3.3.0-linux-x86_64.exe (The process cannot access the file because it is being used by another process) -> [Help 1]``` 5 | ``` 6 | 7 | ### 原因 8 | - Protobuf编译器依赖于glibc环境,而系统上没有安装它或安装的旧版本。 9 | 10 | ### 解决方法 11 | - 检查并升级最新版本glibc库,若使用容器镜像环境推荐含有最新版本glibc的alpine系统。请参考官方手册:http://www.gnu.org/software/libc/documentation.html 12 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-2.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在log4j2.xml的pattern中配置`[%traceId]` 11 | ```xml 12 | 13 | 14 | 15 | 16 | 17 | ``` 18 | * 当你使用`-javaagent`激活skywalking tracer后,log4j2将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 19 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/Protoc-Plugin-Fails-When-Build.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - maven构建时,protoc-plugins插件出现如下错误: 3 | ``` 4 | [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile-custom (default) on project apm-network: Unable to copy the file to \skywalking\apm-network\target\protoc-plugins: \skywalking\apm-network\target\protoc-plugins\protoc-3.3.0-linux-x86_64.exe (The process cannot access the file because it is being used by another process) -> [Help 1]``` 5 | ``` 6 | 7 | ### 原因 8 | - Protobuf编译器依赖于glibc环境,而系统上没有安装它或安装的旧版本。 9 | 10 | ### 解决方法 11 | - 检查并升级最新版本glibc库,若使用容器镜像环境推荐含有最新版本glibc的alpine系统。请参考官方手册:http://www.gnu.org/software/libc/documentation.html 12 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-2.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在log4j2.xml的pattern中配置`[%traceId]` 11 | ```xml 12 | 13 | 14 | 15 | 16 | 17 | ``` 18 | * 当你使用`-javaagent`激活skywalking tracer后,log4j2将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 19 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/Protoc-Plugin-Fails-When-Build.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - maven构建时,protoc-plugins插件出现如下错误: 3 | ``` 4 | [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile-custom (default) on project apm-network: Unable to copy the file to \skywalking\apm-network\target\protoc-plugins: \skywalking\apm-network\target\protoc-plugins\protoc-3.3.0-linux-x86_64.exe (The process cannot access the file because it is being used by another process) -> [Help 1]``` 5 | ``` 6 | 7 | ### 原因 8 | - Protobuf编译器依赖于glibc环境,而系统上没有安装它或安装的旧版本。 9 | 10 | ### 解决方法 11 | - 检查并升级最新版本glibc库,若使用容器镜像环境推荐含有最新版本glibc的alpine系统。请参考官方手册:http://www.gnu.org/software/libc/documentation.html 12 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/Namespace.md: -------------------------------------------------------------------------------- 1 | # 命名空间 2 | 3 | ## 背景 4 | SkyWalking是一种监控工具,可从分布式系统收集指标。在真实世界中,大型分布式系统包含了成百上千的服务和服务实例。 5 | 在这种情况下,很有可能不止一个小组、甚至不止一个公司在维护和监控分布式系统。 6 | 每个小组或公司掌管着不同的部分,他们不希望也不应该共享他们的指标。 7 | 8 | 命名空间正是基于以上背景提出的,用于追踪监控系统的隔离。 9 | 10 | ## 设置命名空间 11 | ### 在agent配置文件中设置agent.namespace 12 | ```properties 13 | # The agent namespace 14 | # agent.namespace=default-namespace 15 | ``` 16 | 17 | `agent.namespace`的默认值为空。 18 | 19 | **影响** 20 | SkyWalking的默认header为 `sw8`, 更多细节可查看 [文档](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md). 21 | 设置`agent.namespace`后,header变为 `namespace-sw8`. 22 | 23 | 当两边使用了不同的命名空间时,跨进程传播链将被断开。 24 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-ip-port.md: -------------------------------------------------------------------------------- 1 | # IP和端口设置 2 | Backend使用IP和端口绑定,以支持具有多个IP的操作系统。 绑定/监听IP和端口由核心模块指定。 3 | ```yaml 4 | core: 5 | default: 6 | restHost: 0.0.0.0 7 | restPort: 12800 8 | restContextPath: / 9 | gRPCHost: 0.0.0.0 10 | gRPCPort: 11800 11 | ``` 12 | 有两对IP/port,分别提供给gRPC和HTTP的rest服务。 13 | 14 | - 大多数agent和探针使用GRPC服务以获得更好的性能和代码可读性。 15 | - 少数agent使用REST服务,因为该语言可能不支持GRPC。 16 | - 用户界面使用REST服务,但数据始终采用graphql格式。 17 | 18 | 19 | ## 注意 20 | ### IP绑定 21 | 如果有些用户不熟悉IP绑定,您应该知道,当IP绑定完成后,客户端只能使用此IP访问服务。例如,绑定了`172.09.13.28`,即使是在此计算机中,必须使用`172.09.13.28`而不是`127.0.0.1`或`localhost`来访问服务。 22 | ### 模块提供者指定的IP和端口 23 | 核心模块的IP和端口默认有核心模块提供。但某些模块提供者可能提供其它的IP和端口设置,这很正常。比如一些接收模块。 -------------------------------------------------------------------------------- /docs/zh/6.1.0/guides/write-oal.md: -------------------------------------------------------------------------------- 1 | # 编写 OAL (观测性分析语言) 脚本 2 | 3 | 阅读 [OAL 概述](../concepts-and-designs/oal.md) 以了解 OAL 脚本。 4 | 5 | ## 在源代码中查找 oal 脚本 6 | 7 | 官方 official_analysis.oal 在[这里](https://github.com/apache/skywalking/blob/master/oap-server/generated-analysis/src/main/resources/official_analysis.oal). 8 | 9 | ## 生成工具 10 | 11 | `oap-server/generate-tool` 模块包含编译工具的源代码。该工具已经集成在 maven 编译阶段。所以, 除非您想要更改工具源代码, 否则无需进行任何设置。 12 | 13 | 运行 `./mvnw compile` 或 `./mvnw package`, 生成的 oal 脚本代码位于 `oap-server/generate-tool/target/generated-sources/oal/*`. 14 | 15 | ## 编写并重新编译 16 | 17 | 您可以更改 `official_analysis.oal` 脚本, 然后重新编译代码. 18 | 生成的代码位于 `oap-server/generated-analysis/target/generated-sources/oal`. 19 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/advanced-deployment.md: -------------------------------------------------------------------------------- 1 | # 高级部署 2 | OAP服务器在集群环境中相互通信。 3 | 在集群模式中,可通过不同的角色运行。 4 | - Mixed(默认) 5 | - Receiver 6 | - Aggregator 7 | 8 | 有时,用户希望集群中的节点承担明确的角色。可以参考以下: 9 | ## Mixed 10 | 默认角色,OAP需承担以下责任: 11 | 1. 接收agent的跟踪或指标。 12 | 1. 做L1聚合 13 | 1. 内部通信(发送/接收) 14 | 1. 做L2聚合 15 | 1. 持久化数据 16 | 1. 报警 17 | ## Receiver 18 | OAP需承担以下责任: 19 | 1. 接收代理跟踪或指标 20 | 1. 做L1聚合 21 | 1. 内部通信(发送) 22 | ## Aggregator 23 | OAP需承担以下责任: 24 | 1. 内部沟通(接收) 25 | 1. 做L2聚合 26 | 1. 持久化数据 27 | 1. 告警 28 | 29 | ___ 30 | 这些角色是基于安全和网络策略的复杂部署需求而设计的。 31 | 32 | ## Kubernetes 33 | 如果你正在使用我们原生的[Kubernetes coordinator](backend-cluster.md# Kubernetes),`labelSelector` 34 | 的设置可用于`Aggregator`角色。根据你的需求选择正确的OAP部署。 35 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/backend-init-mode.md: -------------------------------------------------------------------------------- 1 | # 初始化模式 2 | Skywalking后端支持多个存储实施器。它们中的大多数,比如Elastic Search, Database可以在启动时自动初始化存储。 3 | 4 | 但是根据存储情况,会有一些意外的情况发生,比如 5 | `由于多个后端实例同时启动,会同时创建Elastic Search的索引。` 6 | 当出现一个Change,Elastic Search的API会被阻塞并且不报异常。 7 | 在类似K8S这样的容器管理平台上,发生的几率更大。 8 | 9 | 这就是您需要**初始化模式**启动的地方。 10 | 11 | ## 解决方法 12 | 在其它实例启动前,只有一个实例可以在**初始化模式**运行。 13 | 完成所有初始化步骤后,该实例将优雅地退出。 14 | 15 | 使用`oapServiceInit.sh`/`oapServiceInit.bat`来启动backend。你可以看到下面的log 16 | > 2018-11-09 23:04:39,465 - org.apache.skywalking.oap.server.starter.OAPServerStartUp -2214 [main] INFO [] - OAP starts up in init mode successfully, exit now... 17 | 18 | ## Kubernetes 19 | 这种模式下的初始化将包含在我们的kubernetes脚本和helm中。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/guides/write-oal.md: -------------------------------------------------------------------------------- 1 | # 编写 OAL (观测性分析语言) 脚本 2 | 3 | 阅读 [OAL 概述](../concepts-and-designs/oal.md) 以了解 OAL 脚本。 4 | 5 | ## 在源代码中查找 oal 脚本 6 | 7 | 官方 official_analysis.oal 在[这里](https://github.com/apache/skywalking/blob/master/oap-server/generated-analysis/src/main/resources/official_analysis.oal). 8 | 9 | ## 生成工具 10 | 11 | `oap-server/generate-tool` 模块包含编译工具的源代码。该工具已经集成在 maven 编译阶段。所以, 除非您想要更改工具源代码, 否则无需进行任何设置。 12 | 13 | 运行 `./mvnw compile` 或 `./mvnw package`, 生成的 oal 脚本代码位于 `oap-server/generate-tool/target/generated-sources/oal/*`. 14 | 15 | ## 编写并重新编译 16 | 17 | 您可以更改 `official_analysis.oal` 脚本, 然后重新编译代码. 18 | 生成的代码位于 `oap-server/generated-analysis/target/generated-sources/oal`. 19 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/advanced-deployment.md: -------------------------------------------------------------------------------- 1 | # 高级部署 2 | OAP服务器在集群环境中相互通信。 3 | 在集群模式中,可通过不同的角色运行。 4 | - Mixed(默认) 5 | - Receiver 6 | - Aggregator 7 | 8 | 有时,用户希望集群中的节点承担明确的角色。可以参考以下: 9 | ## Mixed 10 | 默认角色,OAP需承担以下责任: 11 | 1. 接收agent的跟踪或指标。 12 | 1. 做L1聚合 13 | 1. 内部通信(发送/接收) 14 | 1. 做L2聚合 15 | 1. 持久化数据 16 | 1. 报警 17 | ## Receiver 18 | OAP需承担以下责任: 19 | 1. 接收代理跟踪或指标 20 | 1. 做L1聚合 21 | 1. 内部通信(发送) 22 | ## Aggregator 23 | OAP需承担以下责任: 24 | 1. 内部沟通(接收) 25 | 1. 做L2聚合 26 | 1. 持久化数据 27 | 1. 告警 28 | 29 | ___ 30 | 这些角色是基于安全和网络策略的复杂部署需求而设计的。 31 | 32 | ## Kubernetes 33 | 如果你正在使用我们原生的[Kubernetes coordinator](backend-cluster.md# Kubernetes),`labelSelector` 34 | 的设置可用于`Aggregator`角色。根据你的需求选择正确的OAP部署。 35 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-init-mode.md: -------------------------------------------------------------------------------- 1 | # 初始化模式 2 | Skywalking后端支持多个存储实施器。它们中的大多数,比如Elastic Search, Database可以在启动时自动初始化存储。 3 | 4 | 但是根据存储情况,会有一些意外的情况发生,比如 5 | `由于多个后端实例同时启动,会同时创建Elastic Search的索引。` 6 | 当出现一个Change,Elastic Search的API会被阻塞并且不报异常。 7 | 在类似K8S这样的容器管理平台上,发生的几率更大。 8 | 9 | 这就是您需要**初始化模式**启动的地方。 10 | 11 | ## 解决方法 12 | 在其它实例启动前,只有一个实例可以在**初始化模式**运行。 13 | 完成所有初始化步骤后,该实例将优雅地退出。 14 | 15 | 使用`oapServiceInit.sh`/`oapServiceInit.bat`来启动backend。你可以看到下面的log 16 | > 2018-11-09 23:04:39,465 - org.apache.skywalking.oap.server.starter.OAPServerStartUp -2214 [main] INFO [] - OAP starts up in init mode successfully, exit now... 17 | 18 | ## Kubernetes 19 | 这种模式下的初始化将包含在我们的kubernetes脚本和helm中。 -------------------------------------------------------------------------------- /docs/zh/6.3.0/guides/write-oal.md: -------------------------------------------------------------------------------- 1 | # 编写 OAL (观测性分析语言) 脚本 2 | 3 | 阅读 [OAL 概述](../concepts-and-designs/oal.md) 以了解 OAL 脚本。 4 | 5 | ## 在源代码中查找 oal 脚本 6 | 7 | 官方 official_analysis.oal 在[这里](https://github.com/apache/skywalking/blob/master/oap-server/generated-analysis/src/main/resources/official_analysis.oal). 8 | 9 | ## 生成工具 10 | 11 | `oap-server/generate-tool` 模块包含编译工具的源代码。该工具已经集成在 maven 编译阶段。所以, 除非您想要更改工具源代码, 否则无需进行任何设置。 12 | 13 | 运行 `./mvnw compile` 或 `./mvnw package`, 生成的 oal 脚本代码位于 `oap-server/generate-tool/target/generated-sources/oal/*`. 14 | 15 | ## 编写并重新编译 16 | 17 | 您可以更改 `official_analysis.oal` 脚本, 然后重新编译代码. 18 | 生成的代码位于 `oap-server/generated-analysis/target/generated-sources/oal`. 19 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/advanced-deployment.md: -------------------------------------------------------------------------------- 1 | # 高级部署 2 | OAP服务器在集群环境中相互通信。 3 | 在集群模式中,可通过不同的角色运行。 4 | - Mixed(默认) 5 | - Receiver 6 | - Aggregator 7 | 8 | 有时,用户希望集群中的节点承担明确的角色。可以参考以下: 9 | ## Mixed 10 | 默认角色,OAP需承担以下责任: 11 | 1. 接收agent的跟踪或指标。 12 | 1. 做L1聚合 13 | 1. 内部通信(发送/接收) 14 | 1. 做L2聚合 15 | 1. 持久化数据 16 | 1. 报警 17 | ## Receiver 18 | OAP需承担以下责任: 19 | 1. 接收代理跟踪或指标 20 | 1. 做L1聚合 21 | 1. 内部通信(发送) 22 | ## Aggregator 23 | OAP需承担以下责任: 24 | 1. 内部沟通(接收) 25 | 1. 做L2聚合 26 | 1. 持久化数据 27 | 1. 告警 28 | 29 | ___ 30 | 这些角色是基于安全和网络策略的复杂部署需求而设计的。 31 | 32 | ## Kubernetes 33 | 如果你正在使用我们原生的[Kubernetes coordinator](backend-cluster.md# Kubernetes),`labelSelector` 34 | 的设置可用于`Aggregator`角色。根据你的需求选择正确的OAP部署。 35 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-init-mode.md: -------------------------------------------------------------------------------- 1 | # 初始化模式 2 | Skywalking后端支持多个存储实施器。它们中的大多数,比如Elastic Search, Database可以在启动时自动初始化存储。 3 | 4 | 但是根据存储情况,会有一些意外的情况发生,比如 5 | `由于多个后端实例同时启动,会同时创建Elastic Search的索引。` 6 | 当出现一个Change,Elastic Search的API会被阻塞并且不报异常。 7 | 在类似K8S这样的容器管理平台上,发生的几率更大。 8 | 9 | 这就是您需要**初始化模式**启动的地方。 10 | 11 | ## 解决方法 12 | 在其它实例启动前,只有一个实例可以在**初始化模式**运行。 13 | 完成所有初始化步骤后,该实例将优雅地退出。 14 | 15 | 使用`oapServiceInit.sh`/`oapServiceInit.bat`来启动backend。你可以看到下面的log 16 | > 2018-11-09 23:04:39,465 - org.apache.skywalking.oap.server.starter.OAPServerStartUp -2214 [main] INFO [] - OAP starts up in init mode successfully, exit now... 17 | 18 | ## Kubernetes 19 | 这种模式下的初始化将包含在我们的kubernetes脚本和helm中。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/protocols/Skywalking-Cross-Process-Correlation-Headers-Protocol-v1.md: -------------------------------------------------------------------------------- 1 | # SkyWalking跨进程传播的头部协议 2 | * 版本 1.0 3 | 4 | 跨进程传播的头部协议用于通过利用以下功能来传输自定义数据:[跨进程传播的头部协议](Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md). 5 | 6 | 这是用于语言跟踪程序实现的可选和附加协议。所有跟踪器实现都可以考虑实现此目的。 7 | 跨进程相关标头密钥为 `sw8-correlation`。该值是 `encoded(key):encoded(value)` 列表,其中元素由 `,` 分割, 例如 `base64(string key):base64(string value),base64(string key2):base64(string value2)`. 8 | 9 | ## 语言API的建议 10 | 推荐的不同语言API实现。 11 | 12 | 1. `TraceContext#putCorrelation` 和 `TraceContext#getCorrelation` 建议使用键/值字符串编写和读取关联上下文。 13 | 2. 如果不存在,则应添加密钥。 14 | 3. 以后的写入应覆盖先前的值。 15 | 4. 所有键的总数应小于3,每个值的长度应小于128字节。 16 | 5. 当跟踪上下文跨线程和进程传播时,上下文也应传播。 17 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-init-mode.md: -------------------------------------------------------------------------------- 1 | # 初始化模式 2 | Skywalking后端支持多个存储实施器。它们中的大多数,比如Elastic Search, Database可以在启动时自动初始化存储。 3 | 4 | 但是根据存储情况,会有一些意外的情况发生,比如 5 | `由于多个后端实例同时启动,这些实例会同时在同一个Elastic Search中创建索引。`, 6 | 当出现一个Change,Elastic Search的API会被阻塞并且不报异常。 7 | 在类似K8S这样的容器管理平台上,发生的几率更大。 8 | 9 | 这就是您需要 **初始化模式** 启动的地方。 10 | 11 | ## 解决方法 12 | 在其它实例启动前,只有一个实例可以在**初始化模式**运行。 13 | 完成所有初始化步骤后,该实例将优雅地退出。 14 | 15 | 使用 `oapServiceInit.sh`/`oapServiceInit.bat` 来启动backend。你可以看到下面的log 16 | > 2018-11-09 23:04:39,465 - org.apache.skywalking.oap.server.starter.OAPServerStartUp -2214 [main] INFO [] - OAP starts up in init mode successfully, exit now... 17 | 18 | ## Kubernetes 19 | 这种模式下的初始化将包含在我们的kubernetes脚本和helm中。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/uninstrumented-gateways.md: -------------------------------------------------------------------------------- 1 | # 无法打点的网关/代理 2 | 3 | SkyWalking agent 插件启动时无法对网关进行打点,但它们是可以在 `gateways.yml` 或者通过[动态配置](dynamic-config.md)设置。他们不能自动在后端注册的原因是没有合适的代理插件,例如,没有代理插件的 Nginx, haproxy 等。因此,为了可视化真实的拓扑,我们提供了一种手动配置网关/代理的方法。 4 | 5 | ## 配置格式 6 | 7 | 配置内容包括网关的名字和其他实例: 8 | 9 | ```yml 10 | gateways: 11 | - name: proxy0 # the name is not used for now 12 | instances: 13 | - host: 127.0.0.1 # the host/ip of this gateway instance 14 | port: 9099 # the port of this gateway instance, defaults to 80 15 | ``` 16 | 17 | **注意** 实例的`host`必须是客户端实际使用的,例如如果 `proxyA` 实例有两个 IP `192.168.1.110` 和 `192.168.1.111`,两个都代理目标服务,客户端连接 `192.168.1.110`,那么配置 `192.168.1.111` 作为 `host` 是无法工作的配置项。 18 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/backend-ip-port.md: -------------------------------------------------------------------------------- 1 | # IP和端口设置 2 | Backend使用IP和端口绑定,以支持具有多个IP的操作系统。 3 | 绑定/监听IP和端口由核心模块指定。 4 | ```yaml 5 | core: 6 | default: 7 | restHost: 0.0.0.0 8 | restPort: 12800 9 | restContextPath: / 10 | gRPCHost: 0.0.0.0 11 | gRPCPort: 11800 12 | ``` 13 | 有两对IP/port,分别提供给gRPC和HTTP的rest服务。 14 | 15 | - 大多数agent和探针使用GRPC服务以获得更好的性能和代码可读性。 16 | - 少数agent使用REST服务,因为该语言可能不支持GRPC。 17 | - 用户界面使用REST服务,但数据始终采用graphql格式。 18 | 19 | 20 | ## 注意 21 | ### IP绑定 22 | 如果有些用户不熟悉IP绑定,您应该知道,当IP绑定完成后,客户端只能使用此IP访问服务。例如,绑定了`172.09.13.28`,即使是在此计算机中,必须使用`172.09.13.28`而不是`127.0.0.1`或`localhost`来访问服务。 23 | 24 | ### 模块提供者指定的IP和端口 25 | 核心模块的IP和端口默认有核心模块提供。但某些模块提供者可能提供其它的IP和端口设置,这很正常。比如一些接收模块。. 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-ip-port.md: -------------------------------------------------------------------------------- 1 | # IP和端口设置 2 | Backend使用IP和端口绑定,以支持具有多个IP的操作系统。 3 | 绑定/监听IP和端口由核心模块指定。 4 | ```yaml 5 | core: 6 | default: 7 | restHost: 0.0.0.0 8 | restPort: 12800 9 | restContextPath: / 10 | gRPCHost: 0.0.0.0 11 | gRPCPort: 11800 12 | ``` 13 | 有两对IP/port,分别提供给gRPC和HTTP的rest服务。 14 | 15 | - 大多数agent和探针使用GRPC服务以获得更好的性能和代码可读性。 16 | - 少数agent使用REST服务,因为该语言可能不支持GRPC。 17 | - 用户界面使用REST服务,但数据始终采用graphql格式。 18 | 19 | 20 | ## 注意 21 | ### IP绑定 22 | 如果有些用户不熟悉IP绑定,您应该知道,当IP绑定完成后,客户端只能使用此IP访问服务。例如,绑定了`172.09.13.28`,即使是在此计算机中,必须使用`172.09.13.28`而不是`127.0.0.1`或`localhost`来访问服务。 23 | 24 | ### 模块提供者指定的IP和端口 25 | 核心模块的IP和端口默认有核心模块提供。但某些模块提供者可能提供其它的IP和端口设置,这很正常。比如一些接收模块。. 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-ip-port.md: -------------------------------------------------------------------------------- 1 | # IP和端口设置 2 | Backend使用IP和端口绑定,以支持具有多个IP的操作系统。 3 | 绑定/监听IP和端口由核心模块指定。 4 | ```yaml 5 | core: 6 | default: 7 | restHost: 0.0.0.0 8 | restPort: 12800 9 | restContextPath: / 10 | gRPCHost: 0.0.0.0 11 | gRPCPort: 11800 12 | ``` 13 | 有两对IP/port,分别提供给gRPC和HTTP的rest服务。 14 | 15 | - 大多数agent和探针使用GRPC服务以获得更好的性能和代码可读性。 16 | - 少数agent使用REST服务,因为该语言可能不支持GRPC。 17 | - 用户界面使用REST服务,但数据始终采用graphql格式。 18 | 19 | 20 | ## 注意 21 | ### IP绑定 22 | 如果有些用户不熟悉IP绑定,您应该知道,当IP绑定完成后,客户端只能使用此IP访问服务。例如,绑定了`172.09.13.28`,即使是在此计算机中,必须使用`172.09.13.28`而不是`127.0.0.1`或`localhost`来访问服务。 23 | 24 | ### 模块提供者指定的IP和端口 25 | 核心模块的IP和端口默认有核心模块提供。但某些模块提供者可能提供其它的IP和端口设置,这很正常。比如一些接收模块。. 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Setting-override-CN.md: -------------------------------------------------------------------------------- 1 | # 覆盖配置 2 | ## 版本支持 3 | 5.0.0-beta + 4 | 5 | _探针的覆盖配置从 3.2.5版本就已经支持_ 6 | 7 | ## 什么是覆盖配置? 8 | 默认情况下, SkyWalking 探针读取`agent.config` 配置文件, 服务端读取配置文件 `application.yml` . 9 | 覆盖配置表示用户可以通过启动参数(-D)来覆盖这些配置文件里面的配置. 10 | 11 | ## 配置优先级 12 | 启动参数配置(-D) > 配置文件 13 | 14 | ## 覆盖 15 | ### 探针 16 | 使用 `skywalking.` + key 的格式进行配置,覆盖配置文件中的配置. 17 | 18 | - 为什么需要这个前缀? 19 | 探针和目标应用共享系统启动参数(环境)的配置,使用这个前缀可以避免变量冲突. 20 | ### Collector 21 | 使用配置文件中相同的 key ,在启动参数中覆盖`collector`中的配置. 22 | 例如: 23 | - `application.yml`的配置: 24 | ```yaml 25 | agent_gRPC: 26 | gRPC: 27 | host: localhost 28 | port: 11800 29 | ``` 30 | 31 | - 在启动脚本中使用如下启动参数配置将端口设置为31200. 32 | ``` 33 | -Dagent_gRPC.gRPC.port=31200 34 | ``` -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md: -------------------------------------------------------------------------------- 1 | * 通过maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 配置layout 11 | ```properties 12 | log4j.appender.CONSOLE.layout=TraceIdPatternLayout 13 | ``` 14 | 15 | * 在`layout.ConversionPattern`中设置`%T` (在2.0-2016中,你应该使用%x,[为什么做了修改?](https://github.com/wu-sheng/sky-walking/issues/77) ) 16 | ```properties 17 | log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n 18 | ``` 19 | 20 | * 当你使用`-javaagent`激活skywalking tracer后,log4j将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 21 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md: -------------------------------------------------------------------------------- 1 | * 通过maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 配置layout 11 | ```properties 12 | log4j.appender.CONSOLE.layout=TraceIdPatternLayout 13 | ``` 14 | 15 | * 在`layout.ConversionPattern`中设置`%T` (在2.0-2016中,你应该使用%x,[为什么做了修改?](https://github.com/wu-sheng/sky-walking/issues/77) ) 16 | ```properties 17 | log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n 18 | ``` 19 | 20 | * 当你使用`-javaagent`激活skywalking tracer后,log4j将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 21 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md: -------------------------------------------------------------------------------- 1 | * 通过maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 配置layout 11 | ```properties 12 | log4j.appender.CONSOLE.layout=TraceIdPatternLayout 13 | ``` 14 | 15 | * 在`layout.ConversionPattern`中设置`%T` (在2.0-2016中,你应该使用%x,[为什么做了修改?](https://github.com/wu-sheng/sky-walking/issues/77) ) 16 | ```properties 17 | log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n 18 | ``` 19 | 20 | * 当你使用`-javaagent`激活skywalking tracer后,log4j将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 21 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md: -------------------------------------------------------------------------------- 1 | * 通过maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 配置layout 11 | ```properties 12 | log4j.appender.CONSOLE.layout=TraceIdPatternLayout 13 | ``` 14 | 15 | * 在`layout.ConversionPattern`中设置`%T` (在2.0-2016中,你应该使用%x,[为什么做了修改?](https://github.com/wu-sheng/sky-walking/issues/77) ) 16 | ```properties 17 | log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n 18 | ``` 19 | 20 | * 当你使用`-javaagent`激活skywalking tracer后,log4j将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A`。 21 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Application-toolkit-log4j-1.x-CN.md: -------------------------------------------------------------------------------- 1 | * 使用 maven 和 gradle 依赖相应的工具包 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-log4j-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 配置layout 11 | ```properties 12 | log4j.appender.CONSOLE.layout=TraceIdPatternLayout 13 | ``` 14 | 15 | * 在`layout.ConversionPattern`中设置 `%T`来展示traceid ( 在 2.0-2016版本中, 你应该设置为 %x, [为什么改变配置,请参考相关issue?](https://github.com/wu-sheng/sky-walking/issues/77) ) 16 | ```properties 17 | log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n 18 | ``` 19 | 20 | * 当你使用`-javaagent`参数激活sky-walking的探针, 如果当前上下文中存在traceid,log4j将在输出**traceId**。如果探针没有被激活,将输出`TID: N/A`. 21 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/advanced-deployment.md: -------------------------------------------------------------------------------- 1 | # 高级部署 2 | 3 | OAP 服务器在集群环境中相互通信。在集群模式中,可通过不同的角色运行。 4 | 5 | - Mixed(默认) 6 | - Receiver 7 | - Aggregator 8 | 9 | 有时,用户希望集群中的节点承担明确的角色。可以参考以下: 10 | 11 | ## 混合(Mixed) 12 | 13 | 默认角色,OAP 需承担以下责任: 14 | 15 | 1. 接收 agent 的跟踪或指标 16 | 2. 做一级(L1)聚合 17 | 3. 内部通信(发送/接收) 18 | 4. 做二级(L2)聚合 19 | 5. 持久化数据 20 | 6. 告警 21 | 22 | ## 接收(Receiver) 23 | 24 | OAP 需承担以下责任: 25 | 26 | 1. 接收代理跟踪或指标 27 | 2. 做一级(L1)聚合 28 | 3. 内部通信(发送) 29 | 30 | ## 聚合(Aggregator) 31 | 32 | OAP需承担以下责任: 33 | 34 | 1. 内部沟通(接收) 35 | 2. 做一级(L2)聚合 36 | 3. 持久化数据 37 | 4. 告警 38 | 39 | ___ 40 | 这些角色是基于安全和网络策略的复杂部署需求而设计的。 41 | 42 | ## Kubernetes 43 | 44 | 如果你正在使用我们原生的[Kubernetes coordinator](backend-cluster.md#kubernetes),`labelSelector` 的设置可用于 `Aggregator` 角色选择规则。根据你的需求选择合适的 OAP 部署方式。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/istio/README.md: -------------------------------------------------------------------------------- 1 | # 与 Istio 协作 2 | 3 | 介绍如何将 Istio 的度量指标发送到 SkyWalking OAP 服务. 4 | 5 | ## 前提 6 | 7 | Istio 已经安装在 kubernetes 集群中. 参考 [Istio 快速启动](https://istio.io/docs/setup/kubernetes/quick-start/) 8 | 完成安装. 9 | 10 | ## 部署 SkyWalking 后台 11 | 12 | 参考 [K8S 中部署后端](../backend/backend-k8s.md) 一文在 K8S 中安装 OAP Server。 13 | 14 | ## 设置 Istio 向 OAP 发送度量指标 15 | 16 | 我们的脚本基于 Istio 1.3.3 编写 17 | 18 | ### 1. 安装 Istio 指标模板 19 | 20 | `kubectl apply -f https://raw.githubusercontent.com/istio/istio/1.3.3/mixer/template/metric/template.yaml` 21 | 22 | ### 2. 安装 SkyWalking 适配器 23 | 24 | `kubectl apply -f skywalkingadapter.yml` 25 | 26 | 在 [此处](yaml/skywalkingadapter.yml) 查找 `skywalkingadapter.yml` 27 | 28 | 注意,由于 Istio Mixer 默认时关闭的,我们建议你考虑我们的 [ALS 方案](../envoy/als_setting.md) 29 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/guides/backend-profile-export.md: -------------------------------------------------------------------------------- 1 | #概要文件原始数据的导出工具 2 | 当可视化不能通过官方UI很好地工作时,用户可以提交问题报告. 该工具帮助用户打包原始概要数据,以帮助社区在用户案例中定位问题. 3 | 注意,这个报告包括类名、方法名、行号等。在提交之前,请确保这不会导致您的系统泄露. 4 | ## 使用命令行导出 5 | 1. 通过遵循您的用例来创建 `tools/profile-exporter/application.yml` 文件,并设置存储. 6 | 1. 准备资料 7 | - 概要文件任务 ID: 概要文件任务 ID 8 | - 追踪 ID: 概要文件错误追踪 ID 9 | - 导出目录: 数据导出的目录 10 | 1. 进入 Skywalking 根路径 11 | 1. 执行 shell 命令 12 | ```bash 13 | bash tools/profile-exporter/profile_exporter.sh --taskid={profileTaskId} --traceid={traceId} {exportDir} 14 | ``` 15 | 1. 执行 shell 后将生成 `{traceId}.tar.gz` 文件. 16 | 17 | ## 导出的数据内容 18 | 1. `basic.yml`: 包含追踪中已分析段的完整信息. 19 | 1. `snapshot.data`: 当前段中所有监控线程的快照数据. 20 | 21 | ## 上报概要文件的问题 22 | 1. 提供从该工具生成的导出数据. 23 | 1. 提供span操作名,分析模式(包含或不包含子节点). 24 | 1. 问题描述. (如果有UI截屏,效果会更好) 25 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/guides/backend-profile-export.md: -------------------------------------------------------------------------------- 1 | #概要文件原始数据的导出工具 2 | 当可视化不能通过官方UI很好地工作时,用户可以提交问题报告. 该工具帮助用户打包原始概要数据,以帮助社区在用户案例中定位问题. 3 | 注意,这个报告包括类名、方法名、行号等。在提交之前,请确保这不会导致您的系统泄露. 4 | ## 使用命令行导出 5 | 1. 通过遵循您的用例来创建 `tools/profile-exporter/application.yml` 文件,并设置存储. 6 | 2. 准备资料 7 | - 概要文件任务 ID: 概要文件任务 ID 8 | - 追踪 ID: 概要文件错误追踪 ID 9 | - 导出目录: 数据导出的目录 10 | 3. 进入 Skywalking 根路径 11 | 4. 执行 shell 命令 12 | ```bash 13 | bash tools/profile-exporter/profile_exporter.sh --taskid={profileTaskId} --traceid={traceId} {exportDir} 14 | ``` 15 | 5. 执行 shell 后将生成 `{traceId}.tar.gz` 文件. 16 | 17 | ## 导出的数据内容 18 | 1. `basic.yml`: 包含追踪中已分析段的完整信息. 19 | 2. `snapshot.data`: 当前段中所有监控线程的快照数据. 20 | 21 | ## 上报概要文件的问题 22 | 1. 提供从该工具生成的导出数据. 23 | 2. 提供span操作名,分析模式(包含或不包含子节点). 24 | 3. 问题描述. (如果有UI截屏,效果会更好) 25 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Token-auth.md: -------------------------------------------------------------------------------- 1 | # 令牌鉴权 2 | 3 | ## 令牌 4 | 在当前版本中,令牌为简单的字符串。 5 | 6 | ### 设置令牌 7 | 在agent.config文件中设置令牌 8 | ```properties 9 | # Authentication active is based on backend setting, see application.yml for more details. 10 | agent.authentication = xxxx 11 | ``` 12 | 13 | 同时,开启[后端令牌鉴权](../../backend/backend-token-auth.md). 14 | 15 | ## 鉴权失败 16 | Collector会对从agent来的每一个请求进行验证,仅允许令牌匹配上的请求通过。 17 | 18 | 如果令牌不对,你会在agent日志中看到如下错误。 19 | ``` 20 | org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED 21 | ``` 22 | 23 | ## FAQ 24 | ### 我能使用令牌鉴权代替TLS吗? 25 | 不能,也不应该。从技术的角度,当然是可以的,令牌和TLS都用于不可信的网络环境。在不可信网络下,TLS与令牌相比应当优先考虑。只有在使用TLS时,令牌才是可信的。在非TLS网络中,在发送令牌时,很容易被窃取。 26 | 27 | ### 支持其他鉴权机制吗?比如ak/sk? 28 | 目前不支持。但是我们真诚感谢其他伙伴对此特性贡献力量。 29 | 30 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Token-auth.md: -------------------------------------------------------------------------------- 1 | # 令牌鉴权 2 | 3 | ## 令牌 4 | 在当前版本中,令牌为简单的字符串。 5 | 6 | ### 设置令牌 7 | 在agent.config文件中设置令牌 8 | ```properties 9 | # Authentication active is based on backend setting, see application.yml for more details. 10 | agent.authentication = xxxx 11 | ``` 12 | 13 | 同时,开启[后端令牌鉴权](../../backend/backend-token-auth.md). 14 | 15 | ## 鉴权失败 16 | Collector会对从agent来的每一个请求进行验证,仅允许令牌匹配上的请求通过。 17 | 18 | 如果令牌不对,你会在agent日志中看到如下错误。 19 | ``` 20 | org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED 21 | ``` 22 | 23 | ## FAQ 24 | ### 我能使用令牌鉴权代替TLS吗? 25 | 不能,也不应该。从技术的角度,当然是可以的,令牌和TLS都用于不可信的网络环境。在不可信网络下,TLS与令牌相比应当优先考虑。只有在使用TLS时,令牌才是可信的。在非TLS网络中,在发送令牌时,很容易被窃取。 26 | 27 | ### 支持其他鉴权机制吗?比如ak/sk? 28 | 目前不支持。但是我们真诚感谢其他伙伴对此特性贡献力量。 29 | 30 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Token-auth.md: -------------------------------------------------------------------------------- 1 | # 令牌鉴权 2 | 3 | ## 令牌 4 | 在当前版本中,令牌为简单的字符串。 5 | 6 | ### 设置令牌 7 | 在agent.config文件中设置令牌 8 | ```properties 9 | # Authentication active is based on backend setting, see application.yml for more details. 10 | agent.authentication = xxxx 11 | ``` 12 | 13 | 同时,开启[后端令牌鉴权](../../backend/backend-token-auth.md). 14 | 15 | ## 鉴权失败 16 | Collector会对从agent来的每一个请求进行验证,仅允许令牌匹配上的请求通过。 17 | 18 | 如果令牌不对,你会在agent日志中看到如下错误。 19 | ``` 20 | org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED 21 | ``` 22 | 23 | ## FAQ 24 | ### 我能使用令牌鉴权代替TLS吗? 25 | 不能,也不应该。从技术的角度,当然是可以的,令牌和TLS都用于不可信的网络环境。在不可信网络下,TLS与令牌相比应当优先考虑。只有在使用TLS时,令牌才是可信的。在非TLS网络中,在发送令牌时,很容易被窃取。 26 | 27 | ### 支持其他鉴权机制吗?比如ak/sk? 28 | 目前不支持。但是我们真诚感谢其他伙伴对此特性贡献力量。 29 | 30 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/Token-auth.md: -------------------------------------------------------------------------------- 1 | # 令牌认证 2 | 3 | ## 令牌 4 | 5 | 当前版本,令牌考虑使用一个简单的字符串。 6 | 7 | ### 设置令牌 8 | 9 | 在 agent.config 中设置令牌 10 | 11 | ```properties 12 | # 认证由后台设定激活,更多详情查看 application.yml 。 13 | agent.authentication = xxxx 14 | ``` 15 | 16 | 同时,开启[后端令牌认证](../../backend/backend-token-auth.md). 17 | 18 | ## 认证失败 19 | 20 | Skywalking OAP 会对从 agent 来的每一个请求进行验证,仅允许令牌匹配上的请求通过。 21 | 22 | 如果令牌不正确,将会在 agent 端看到如下日志 23 | 24 | ```java 25 | org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED 26 | ``` 27 | 28 | ## FAQ 29 | 30 | ### 可以使用令牌认证替代 TSL 吗 31 | 32 | 不能,在技术方面,你当然可以,但是令牌和 TLS 用于不受信任的网络环境。在这种情况下, TLS 具有更高的优先级。令牌只能在 TLS 保护下受信任。如果你在 非 TLS 的网络中发送,令牌很容易被窃取。 33 | 34 | ### 是否支持其他身份验证机制? 例如 ak/sk 35 | 36 | 现在没有,但是我们希望有人可以贡献这个特性。 37 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/backend-telemetry.md: -------------------------------------------------------------------------------- 1 | # Backend的telemetry 2 | 默认情况下, telemetry功能是关闭的,像这样: 3 | ```yaml 4 | telemetry: 5 | none: 6 | ``` 7 | 8 | ## Prometheus 9 | Prometheus可做为telemetry功能的实现者。 10 | 使用这个,prometheus可以从Skywalking的backend收集度量。 11 | 12 | 13 | 将`prometheus`设置为provider。端点在开放在`http://0.0.0.0:1234/`和`http://0.0.0.0:1234/metrics`。 14 | ```yaml 15 | telemetry: 16 | prometheus: 17 | ``` 18 | 19 | 根据需要设置主机和端口。 20 | ```yaml 21 | telemetry: 22 | prometheus: 23 | host: 127.0.0.1 24 | port: 1543 25 | ``` 26 | 27 | ### Grafana可视化 28 | 提供了两种grafana仪表盘的设置。 29 | 1. 当SkyWalking 和追踪agent一起使用时,参考[SkyWalking trace-mode dashboard](telemetry/trace-mode-grafana.json)。 30 | 1. 当SkyWalking 和service mesh telemetry(包括istio和envoy)一起使用时,参考[SkyWalking mesh-mode dashboard](telemetry/mesh-mode-grafana.json)。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-telemetry.md: -------------------------------------------------------------------------------- 1 | # Backend的telemetry 2 | 默认情况下, telemetry功能是关闭的,像这样: 3 | ```yaml 4 | telemetry: 5 | none: 6 | ``` 7 | 8 | ## Prometheus 9 | Prometheus可做为telemetry功能的实现者。 10 | 使用这个,prometheus可以从Skywalking的backend收集度量。 11 | 12 | 13 | 将`prometheus`设置为provider。端点在开放在`http://0.0.0.0:1234/`和`http://0.0.0.0:1234/metrics`。 14 | ```yaml 15 | telemetry: 16 | prometheus: 17 | ``` 18 | 19 | 根据需要设置主机和端口。 20 | ```yaml 21 | telemetry: 22 | prometheus: 23 | host: 127.0.0.1 24 | port: 1543 25 | ``` 26 | 27 | ### Grafana可视化 28 | 提供了两种grafana仪表盘的设置。 29 | 1. 当SkyWalking 和追踪agent一起使用时,参考[SkyWalking trace-mode dashboard](telemetry/trace-mode-grafana.json)。 30 | 1. 当SkyWalking 和service mesh telemetry(包括istio和envoy)一起使用时,参考[SkyWalking mesh-mode dashboard](telemetry/mesh-mode-grafana.json)。 -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-telemetry.md: -------------------------------------------------------------------------------- 1 | # Backend的telemetry 2 | 默认情况下, telemetry功能是关闭的,像这样: 3 | ```yaml 4 | telemetry: 5 | none: 6 | ``` 7 | 8 | ## Prometheus 9 | Prometheus可做为telemetry功能的实现者。 10 | 使用这个,prometheus可以从Skywalking的backend收集度量。 11 | 12 | 13 | 将`prometheus`设置为provider。端点在开放在`http://0.0.0.0:1234/`和`http://0.0.0.0:1234/metrics`。 14 | ```yaml 15 | telemetry: 16 | prometheus: 17 | ``` 18 | 19 | 根据需要设置主机和端口。 20 | ```yaml 21 | telemetry: 22 | prometheus: 23 | host: 127.0.0.1 24 | port: 1543 25 | ``` 26 | 27 | ### Grafana可视化 28 | 提供了两种grafana仪表盘的设置。 29 | 1. 当SkyWalking 和追踪agent一起使用时,参考[SkyWalking trace-mode dashboard](telemetry/trace-mode-grafana.json)。 30 | 1. 当SkyWalking 和service mesh telemetry(包括istio和envoy)一起使用时,参考[SkyWalking mesh-mode dashboard](telemetry/mesh-mode-grafana.json)。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md: -------------------------------------------------------------------------------- 1 | ## 支持忽略自定义的trace 2 | `apm-trace-ignore-plugin` 是可选插件。 3 | 4 | ## 介绍 5 | - 这个插件的目的是过滤掉你希望被忽略的endpoint。 6 | - 你可以设置多个URL路径模式。匹配到的endpoint将会不会被追踪。 7 | - 当前的匹配规则遵循`Ant Path`匹配样式,比如`/path/*`,`/path/**`,`/path/?`。 8 | - 将`apm-trace-ignore-plugin-x.jar`复制到`agent/plugins`,重启`agent`,插件将会生效。 9 | 10 | ## 如何配置 11 | 有两种方式配置要忽略的endpoint的模式。通过系统环境变量配置有更高的优先级。 12 | 1. 通过设置系统环境变量配置。增加 `skywalking.trace.ignore_path` 到系统环境变量中,值是要忽略的路径。多个路径之间用`,`分隔。 13 | 2. 将`/agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config` 复制到 `/agent/config/` 目录下, 增加过滤规则。 14 | ``` 15 | trace.ignore_path=/your/path/1/**,/your/path/2/** 16 | ``` 17 | 18 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/op_name_group_rule.md: -------------------------------------------------------------------------------- 1 | # 操作名称分组规则 2 | agent 自动检测出的操作名称是变化莫测的, 有时,目标应用程序在其中携带参数,这主要是由于URI中包含的参数. 3 | 大多数情况下这些操作名也称为端点名. 4 | 例如 /api/checkTicket/tk/{userToken}. 5 | 6 | 我们利用框架中的参数形成路径解决了大多数情况,比如SpringMVC、Webflux等. 7 | 在这种情况下,通过这种方式是无法检测到的,因此我们必须要求用户手动设置组规则. 8 | 9 | 与其他 agent 配置一样,支持通过 agent.config 设置所有规则,系统属性和系统环境. 10 | - 配置格式, `plugin.opgroup.`插件名称`.rule[`规则名称`]`=正则表达式 11 | 12 | 支持具有不同键值,即单个插件有多个配置项,例如 13 | 1. plugin.opgroup.resttemplate.rule[/rule1]=/path1 14 | 1. plugin.opgroup.resttemplate.rule[/rule2]=/path2 15 | 1. plugin.opgroup.resttemplate.rule[/rule2]=/path3 16 | 17 | 我们有以下插件支持操作名称分组. 18 | 19 | | Plugin | Config Key | Example | 20 | |:----:|:-----:|:----| 21 | |RestTemplate| plugin.opgroup.resttemplate.rule | plugin.opgroup.resttemplate.rule[/user/auth/{token}]=`\/user\/auth\/.*` | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/op_name_group_rule.md: -------------------------------------------------------------------------------- 1 | # 操作名称分组规则 2 | agent 自动检测出的操作名称是变化莫测的, 有时,目标应用程序在其中携带参数,这主要是由于URI中包含的参数. 3 | 大多数情况下这些操作名也称为端点名. 4 | 例如 /api/checkTicket/tk/{userToken}. 5 | 6 | 我们利用框架中的参数形成路径解决了大多数情况,比如SpringMVC、Webflux等. 7 | 在这种情况下,通过这种方式是无法检测到的,因此我们必须要求用户手动设置组规则. 8 | 9 | 与其他 agent 配置一样,支持通过 agent.config 设置所有规则,系统属性和系统环境. 10 | - 配置格式, `plugin.opgroup.`插件名称`.rule[`规则名称`]`=正则表达式 11 | 12 | 支持具有不同键值,即单个插件有多个配置项,例如 13 | 1. plugin.opgroup.resttemplate.rule[/rule1]=/path1 14 | 2. plugin.opgroup.resttemplate.rule[/rule2]=/path2 15 | 3. plugin.opgroup.resttemplate.rule[/rule2]=/path3 16 | 17 | 我们有以下插件支持操作名称分组. 18 | 19 | | Plugin | Config Key | Example | 20 | |:----:|:-----:|:----| 21 | |RestTemplate| plugin.opgroup.resttemplate.rule | plugin.opgroup.resttemplate.rule[/user/auth/{token}]=`\/user\/auth\/.*` | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Optional-plugins-CN.md: -------------------------------------------------------------------------------- 1 | # 可选插件 2 | 可选插件可以由源代码或者agent下的`optional-plugins`文件夹中提供。 3 | 4 | 为了使用这些插件,你需要自己编译源代码,或将某些插件复制到`/plugins`。 5 | 6 | ## Spring bean 插件 7 | 这个插件允许在Spring上下文中追踪带有`@Bean`、 `@Service`、`@Component`和`@Repository`注解的bean的所有方法。 8 | 9 | - 为什么这个插件是可选的? 10 | 在Spring上下文中追踪所有方法会创建很多的span,也会消耗更多的CPU,内存和网络。 11 | 当然你希望包含尽可能多的span,但请确保你的系统有效负载能够支持这些。 12 | 13 | ## Oracle and Resin 插件 14 | 由于Oracle和Resin的License,这些插件无法在Apache发行版中提供。 15 | 如果你想了解详细信息,请阅读 [Apache license legal document](https://www.apache.org/legal/resolved.html) 16 | 17 | - 我们应该如何在本地构建这些可选插件? 18 | 19 | 1. Resin 3: 下载Resin 3.0.9 并且把jar放在`/ci-dependencies/resin-3.0.9.jar`. 20 | 1. Resin 4: 下载Resin 4.0.41 并且把jar放在`/ci-dependencies/resin-4.0.41.jar`. 21 | 1. Oracle: 下载Oracle OJDBC-14 Driver 10.2.0.4.0 并且把jar放在`/ci-dependencies/ojdbc14-10.2.0.4.0.jar`. 22 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/why_mq_not_involved.md: -------------------------------------------------------------------------------- 1 | # 为什么SkyWalking体系中没有使用MQ? 2 | 大多数人在第一次接触SkyWalking时会有这样的疑问. 3 | 他们认为MQ在性能和支持高吞吐量方面应该更好 4 | 5 | SkyWalking基于以下几点原因考虑 6 | 7 | ### MQ是OAP后端通信的好方法还是正确方法? 8 | 当人们思考当OAP集群不够强大或者宕机时,这个问题就产生了. 9 | 但在回答这个问题之前,我想先问几个问题。 10 | 11 | 1. 为什么你认为OAP不够强大?事实并非如此,数据分析的速度赶不上生产者(代理)。那么添加新的部署需求的意义是什么呢? 12 | 13 | 2. 也许你会说,有效载荷有时会比平常高。但是,我的问题是,它会高多少? 14 | 15 | 3. 如果不足40%,您将为新的MQ集群使用多少资源?将它们移动到新的OAP和ES节点怎么样? 16 | 17 | 4. 如果高于40%,比如70%-2倍?然后,我可以说,MQ浪费的资源比节省的资源多。 18 | 19 | 您的MQ将支持2 -3倍的有效负载,通常花费额外的10%-20%的时间。在这种情况下, 20 | 21 | 如果有效负载/吞吐量如此之高,OAP集群能够及时处理么。我想说,在OAP集群处理完毕之前可能下一个高峰已经到来。 22 | 23 | 除了这些分析,因为你花费了这么多的资源所以必须采集100%的数据? 24 | 比这更好, 25 | 我们可以考虑在后端添加更好的动态跟踪采样机制, 26 | 当吞吐量超过阈值时,逐步将采样率激活到100%->10%, 27 | 这意味着你可以让OAP和ES比平常强大3倍,只是忽略高峰时的部分数据而已。 28 | 29 | ### MQ度量数据导出器怎么样? 30 | 我想说,它已经在那里可用了。导出模块与gRPC默认机制是存在的。为该模块提供新的实现者是很容易的。 31 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md: -------------------------------------------------------------------------------- 1 | ## 支持忽略自定义的traceSupport custom trace ignore 2 | `apm-trace-ignore-plugin`是可选插件。 3 | 4 | ## 介绍 5 | - 这个插件的目的是过滤掉你希望被忽略的endpoint。 6 | - 你可以设置多个URL路径模式。匹配到的endpoint将会不会被追踪。 7 | - 当前的匹配规则遵循`Ant Path`匹配样式,比如`/path/*`,`/path/**`,`/path/?`。 8 | - 将`apm-trace-ignore-plugin-x.jar`复制到`agent/plugins`,重启`agent`,插件将会生效。 9 | 10 | ## 如何配置 11 | 有两种方式配置要忽略的endpoint的模式。通过系统环境变量配置有更高的优先级。 12 | 1. 通过设置系统环境变量配置。增加 `skywalking.trace.ignore_path` 到系统环境变量中,值是要忽略的路径。多个路径之间用`,`分隔。 13 | 2. 将`/agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config` 复制到 `/agent/config/` 目录下, 增加过滤规则。 14 | ``` 15 | trace.ignore_path=/your/path/1/**,/your/path/2/** 16 | ``` 17 | 18 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md: -------------------------------------------------------------------------------- 1 | ## 支持忽略自定义的traceSupport custom trace ignore 2 | `apm-trace-ignore-plugin`是可选插件。 3 | 4 | ## 介绍 5 | - 这个插件的目的是过滤掉你希望被忽略的endpoint。 6 | - 你可以设置多个URL路径模式。匹配到的endpoint将会不会被追踪。 7 | - 当前的匹配规则遵循`Ant Path`匹配样式,比如`/path/*`,`/path/**`,`/path/?`。 8 | - 将`apm-trace-ignore-plugin-x.jar`复制到`agent/plugins`,重启`agent`,插件将会生效。 9 | 10 | ## 如何配置 11 | 有两种方式配置要忽略的endpoint的模式。通过系统环境变量配置有更高的优先级。 12 | 1. 通过设置系统环境变量配置。增加 `skywalking.trace.ignore_path` 到系统环境变量中,值是要忽略的路径。多个路径之间用`,`分隔。 13 | 2. 将`/agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config` 复制到 `/agent/config/` 目录下, 增加过滤规则。 14 | ``` 15 | trace.ignore_path=/your/path/1/**,/your/path/2/** 16 | ``` 17 | 18 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md: -------------------------------------------------------------------------------- 1 | ## 支持忽略自定义的traceSupport custom trace ignore 2 | `apm-trace-ignore-plugin`是可选插件。 3 | 4 | ## 介绍 5 | - 这个插件的目的是过滤掉你希望被忽略的endpoint。 6 | - 你可以设置多个URL路径模式。匹配到的endpoint将会不会被追踪。 7 | - 当前的匹配规则遵循`Ant Path`匹配样式,比如`/path/*`,`/path/**`,`/path/?`。 8 | - 将`apm-trace-ignore-plugin-x.jar`复制到`agent/plugins`,重启`agent`,插件将会生效。 9 | 10 | ## 如何配置 11 | 有两种方式配置要忽略的endpoint的模式。通过系统环境变量配置有更高的优先级。 12 | 1. 通过设置系统环境变量配置。增加 `skywalking.trace.ignore_path` 到系统环境变量中,值是要忽略的路径。多个路径之间用`,`分隔。 13 | 2. 将`/agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config` 复制到 `/agent/config/` 目录下, 增加过滤规则。 14 | ``` 15 | trace.ignore_path=/your/path/1/**,/your/path/2/** 16 | ``` 17 | 18 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/meter.md: -------------------------------------------------------------------------------- 1 | # 仪表系统 2 | 仪表系统是另一种流计算模式,特别是对于度量标准数据。 在 [观测分析语言](oal.md)中, 有明确的 3 | [范围 定义](scope-definitions.md), 包含原生对象。 仪表系统专注于数据类型本身,并为最终用户提供更大的灵活性来定义范围实体。 4 | 5 | 仪表系统对后端的不同接收器开放,请参阅[后端设置文档](../setup/backend/backend-setup.md) 以获取更多详细信息。 6 | 7 | 仪表系统中声明的每个指标应包括以下属性 8 | 1. **指标名称**。 全局唯一名称,应避免与OAL变量名称重复。 9 | 2. **函数名称**。 用于该指标的函数,基于该函数实现的分布式聚合,值计算和采样计算。同样,数据结构也由函数确定,例如Avg函数返回Long型。 10 | 3. **范围类型**。 与 观测分析语言 中不同, 在仪表系统中存在很多逻辑范围定义, 只要求类型可以使用。 11 | 类型值包括服务,实例和端点,就像我们在概述中介绍的那样。 12 | 当使用指标数据值生成指标数据时,需要范围实体名称的值,例如服务名称。 13 | 14 | 注意,必须在引导阶段声明指标,而运行阶段无法更改。 15 | 16 | 仪表系统支持以下绑定功能 17 | - **avg**。计算具有相同度量标准名称的每个实体的平均值。 18 | - **histogram**。 汇总可配置存储桶中的计数,存储桶是可配置的,但必须在声明阶段分配。 19 | - **percentile**.。阅读 [percentile的维基百科解释](https://en.wikipedia.org/wiki/Percentile). 与OAL不同,我们默认提供50/75/90/95/99; 20 | 在仪表系统功能中,百分位数功能接受多个等级,其等级应在(0,100)范围内。 21 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/Import-Project-Eclipse-RequireItems-Exception.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - 导入skywalking工程到eclipse,遇到如下异常 3 | > Software being installed: Checkstyle configuration plugin for 4 | > M2Eclipse 1.0.0.201705301746 5 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 6 | > 1.0.0.201705301746) Missing requirement: Checkstyle configuration plugin for M2Eclipse 1.0.0.201705301746 7 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 8 | > 1.0.0.201705301746) requires 'net.sf.eclipsecs.core 5.2.0' but it could not be found 9 | 10 | ### 原因 11 | 没有安装Eclipse Checkstyle Plug-in插件 12 | 13 | ### 解决方法 14 | 下载Eclipse Checkstyle Plug-in插件(版本:8.7.0.201801131309),地址:[https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect](https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect)。 15 | 插件说明: 16 | 此插件将JAVA的代码审计功能集成到了Eclipse中。该插件向用户实时反馈违反编码风格和可能出错的代码构造规则。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/Import-Project-Eclipse-RequireItems-Exception.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - 导入skywalking工程到eclipse,遇到如下异常 3 | > Software being installed: Checkstyle configuration plugin for 4 | > M2Eclipse 1.0.0.201705301746 5 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 6 | > 1.0.0.201705301746) Missing requirement: Checkstyle configuration plugin for M2Eclipse 1.0.0.201705301746 7 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 8 | > 1.0.0.201705301746) requires 'net.sf.eclipsecs.core 5.2.0' but it could not be found 9 | 10 | ### 原因 11 | 没有安装Eclipse Checkstyle Plug-in插件 12 | 13 | ### 解决方法 14 | 下载Eclipse Checkstyle Plug-in插件(版本:8.7.0.201801131309),地址:[https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect](https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect)。 15 | 插件说明: 16 | 此插件将JAVA的代码审计功能集成到了Eclipse中。该插件向用户实时反馈违反编码风格和可能出错的代码构造规则。 -------------------------------------------------------------------------------- /docs/zh/6.3.0/FAQ/Import-Project-Eclipse-RequireItems-Exception.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | - 导入skywalking工程到eclipse,遇到如下异常 3 | > Software being installed: Checkstyle configuration plugin for 4 | > M2Eclipse 1.0.0.201705301746 5 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 6 | > 1.0.0.201705301746) Missing requirement: Checkstyle configuration plugin for M2Eclipse 1.0.0.201705301746 7 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 8 | > 1.0.0.201705301746) requires 'net.sf.eclipsecs.core 5.2.0' but it could not be found 9 | 10 | ### 原因 11 | 没有安装Eclipse Checkstyle Plug-in插件 12 | 13 | ### 解决方法 14 | 下载Eclipse Checkstyle Plug-in插件(版本:8.7.0.201801131309),地址:[https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect](https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect)。 15 | 插件说明: 16 | 此插件将JAVA的代码审计功能集成到了Eclipse中。该插件向用户实时反馈违反编码风格和可能出错的代码构造规则。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/Import-Project-Eclipse-RequireItems-Exception.md: -------------------------------------------------------------------------------- 1 | ### 问题描述 2 | - 导入skywalking工程到eclipse,遇到如下异常 3 | > Software being installed: Checkstyle configuration plugin for 4 | > M2Eclipse 1.0.0.201705301746 5 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 6 | > 1.0.0.201705301746) Missing requirement: Checkstyle configuration plugin for M2Eclipse 1.0.0.201705301746 7 | > (com.basistech.m2e.code.quality.checkstyle.feature.feature.group 8 | > 1.0.0.201705301746) requires 'net.sf.eclipsecs.core 5.2.0' but it could not be found 9 | 10 | ### 原因 11 | 没有安装Eclipse Checkstyle Plug-in插件 12 | 13 | ### 解决方法 14 | 下载Eclipse Checkstyle Plug-in插件(版本:8.7.0.201801131309),地址:[https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect](https://sourceforge.net/projects/eclipse-cs/?source=typ_redirect)。 15 | 插件说明: 16 | 此插件将JAVA的代码审计功能集成到了Eclipse中。该插件向用户实时反馈违反编码风格和可能出错的代码构造规则。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/TLS.md: -------------------------------------------------------------------------------- 1 | # 支持传输层安全性协议(TLS) 2 | 3 | 在互联网中传输数据时,传输层安全性协议(TLS)是一种很常见的安全解决方案。 4 | 5 | 在一些 SkyWalking 使用案例中,用户有如下使用背景: 6 | 7 | Transport Layer Security (TLS) is a very common security way when transport data through Internet. 8 | In some use cases, end users report the background: 9 | 10 | > 目标(正在被监控)应用在一个区域(也称为VPC),同时,SkyWalking 后端在另一个区域(VPC)。 11 | > 因此,安全性需求是很有必要的。 12 | 13 | ## 认证模式 14 | 15 | 只支持 **no mutual auth**. 16 | 17 | - 如果你对如何产生秘钥文件不了解的话,使用这个[脚本](../../../../../tools/TLS/tls_key_generate.sh)。 18 | - 找到 `ca.crt` ,在客户端使用。 19 | - 找到 `server.crt` ,`server.pem` 和 `ca.crt`,在服务器端使用。 阅读[gRPC SSL](../../backend/grpc-ssl.md) 了解更多。 20 | 21 | ## 开启并配置 TLS 22 | 23 | ### Agent 配置 24 | 25 | - 将 `ca.crt` 放到 agent 包的 `/ca` 文件夹下. 注意, `/ca` 文件夹并没有在分发包中创建,请自行创建它。 26 | 27 | 当 agent 检测到 `/ca/ca.crt` 后,会自动开启 TLS。 28 | 29 | 请确保不会访问到区域(VPC)外的其他端口,比如防火墙、代理。 30 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Direct-uplink-CN.md: -------------------------------------------------------------------------------- 1 | # 服务直连(Direct uplink) 2 | ## 版本支持 3 | 5.0.0-beta + 4 | 5 | ## 什么是服务直连(Direct uplink)? 6 | 默认情况下, `SkyWalking`探针使用 名称服务(naming service,即通过名称获取服务地址)的形式获取 `collector`的地址连接gRPC服务. 7 | 8 | **服务直连** 意味着在名称服务不可用或者低可用的情况下,在探针端直接使用设置的gRPC的地址进行连接. 9 | 10 | ## 为什么需要这样做? 11 | 如果探针通过以下代理上报数据: 12 | 1. 私有云(VPCs) 13 | 1. 公网(Internet) 14 | 1. 不同的子网(subnet). 15 | 1. Ip,Port代理 16 | 17 | ## 探针配置 18 | 1. 去掉配置 `collector.servers` . 19 | 2. 在 `agent.config`中按照如下配置 20 | ``` 21 | # Collector agent_gRPC/grpc 地址. 22 | # 仅仅当不配置的"collector.servers"的时候生效,作为第二种配置地址选择. 23 | # 如果使用此配置,自动发现服务将无法使用,探针将直接使用此地址进行数据上报. 24 | # 仅仅当探针端无法连接到`collector`的集群 ip地址时,我们才推荐使用这种配置,比如: 25 | # 1. 探针和 `collector`在不同的私有云当中. 26 | # 2. 探针通过外网上报数据到 `collector`. 27 | # collector.direct_servers=www.skywalking.service.io 28 | ``` 29 | 30 | 3. 可以只用域名或者IP:PORT形式(逗号分割) 来设置`collector.direct_servers`. 31 | 32 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "document-cn-translation-of-skywalking", 3 | "version": "0.0.1", 4 | "description": "SkyWalking 文档社区翻译版", 5 | "contributors": [ 6 | "wu-sheng (https://github.com/wu-sheng)", 7 | "kezhenxu94 (https://github.com/kezhenxu94)", 8 | "KAMIJYOUDOUMA (https://github.com/KAMIJYOUDOUMA)", 9 | "thelight1 (https://github.com/thelight1)" 10 | ], 11 | "repository": "https://github.com/SkyAPM/document-cn-translation-of-skywalking", 12 | "scripts": { 13 | "clean": "rimraf dist/*", 14 | "dev": "vuepress dev docs", 15 | "build": "vuepress build docs" 16 | }, 17 | "license": "Apache 2.0", 18 | "devDependencies": { 19 | "vuepress": "^0.14.9" 20 | }, 21 | "dependencies": { 22 | "markdown-it": "^8.4.1", 23 | "markdown-it-emoji": "^1.4.0", 24 | "markdown-it-katex": "^2.0.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # SkyWalking 文档中文版(社区提供) 2 | 3 | 此文档源自 Apache SkyWalking [官方文档](https://github.com/apache/skywalking/blob/master/docs/README.md)。 4 | 由社区志愿者提供翻译和更新。 5 | 6 | **所有文档内容仅供参考,所有描述以英文官方文档为准。** 7 | 8 | ## 贡献者 9 | 10 | - [@kezhenxu94](https://github.com/kezhenxu94) 11 | - [@KAMIJYOUDOUMA](https://github.com/KAMIJYOUDOUMA) 12 | - [@thelight1](https://github.com/thelight1) 13 | - [@SataQiu](https://github.com/SataQiu) 14 | - [@dagmom](https://github.com/dagmom) 15 | 16 | ## 版本 17 | 18 | 此文档为部分版本提供中文翻译版本, 各版本文档分别如下: 19 | 20 | 21 | - [8.0.0](zh/8.0.0/README.md) 22 | 23 | - [6.3.0](zh/6.3.0/README.md) 24 | 25 | - [6.2.0](zh/6.2.0/README.md) 26 | 27 | - [6.1.0](zh/6.1.0/README.md) 28 | 29 | - [5.0.0-beta](zh/5.0.0-beta/README.md) 30 | 31 | ## 参与项目 32 | 33 | 中文版文档托管在[GitHub](https://skyapm.github.io/document-cn-translation-of-skywalking/),欢迎大家参与文档翻译和更新工作。 34 | 35 | ## LICENSE 36 | 37 | Apache 2.0 38 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/guides/inventory-extension.md: -------------------------------------------------------------------------------- 1 | # 后端存储实体扩展 2 | SkyWalking 包含四种存储实体. 3 | - 服务存储(Service Inventory) 4 | - 服务实例存储(Service Instance Inventory) 5 | - 端点存储(Endpoint Inventory) 6 | - 网络地址存储(Network Address Inventory) 7 | 8 | 所有指标, 拓扑结构, 追踪和报警都跟这些实体 ID 相关联. 9 | 10 | 为了了解 **服务(Service)**, **服务实例(Service Instance)** 和 **端点(Endpoint)** 相关概念, 11 | 请阅读[项目介绍](../concepts-and-designs/overview.md#why-use-skywalking). 12 | 13 | 对于 **网络地址存储** 来说, 它代表了所有网络地址, 格式诸如: ip:端口, 主机名, 域名, 这些都可以通过特定编程语言 agent 和探针自动探测。 14 | 15 | ## 扩展 16 | 目前后端内核只支持了 **服务存储** 扩展. 17 | 服务以 JSON 的格式提供了字段 `properties`, 通常被用于特定的服务(如数据库, 缓存, 消息队列等), 而很少用于业务服务. 18 | 19 | 为了保持代码一致以及对查询和可视化友好, 该 JSON 属性需要遵循指定规则. 20 | 21 | ### 数据库 22 | 23 | 1. 节点类型 == **数据库**. NodeType == **Database(1)** 24 | 2. JSON 属性包含以下 Key. 25 | - `database`. 数据库名称, 如 MySQL, PostgreSQL. 26 | - `db.type`. 数据库类型, 如 sql db, redis db. 27 | - `db.instance`. 数据库实例名称. 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/guides/inventory-extension.md: -------------------------------------------------------------------------------- 1 | # 后端存储实体扩展 2 | 3 | SkyWalking 包含四种存储实体. 4 | 5 | - 服务存储(Service Inventory) 6 | - 服务实例存储(Service Instance Inventory) 7 | - 端点存储(Endpoint Inventory) 8 | - 网络地址存储(Network Address Inventory) 9 | 10 | 所有指标, 拓扑结构, 追踪和报警都跟这些实体 ID 相关联. 11 | 12 | 为了了解 **服务(Service)**, **服务实例(Service Instance)** 和 **端点(Endpoint)** 相关概念, 13 | 请阅读[项目介绍](../concepts-and-designs/overview.md#why-use-skywalking). 14 | 15 | 对于 **网络地址存储** 来说, 它代表了所有网络地址, 格式诸如: ip:端口, 主机名, 域名, 这些都可以通过特定编程语言 agent 和探针自动探测. 16 | 17 | ## 扩展 18 | 19 | 目前后端内核只支持了 **服务存储** 扩展. 20 | 服务以 JSON 的格式提供了字段 `properties`, 通常被用于特定的服务(如数据库, 缓存, 消息队列等), 而很少用于业务服务. 21 | 22 | 为了保持代码一致以及对查询和可视化友好, 该 JSON 属性需要遵循指定规则. 23 | 24 | ### 数据库 25 | 26 | 1. 节点类型 == **数据库**. NodeType == **Database(1)** 27 | 1. JSON 属性包含以下 Key. 28 | - `database`. 数据库名称, 如 MySQL, PostgreSQL. 29 | - `db.type`. 数据库类型, 如 sql db, redis db. 30 | - `db.instance`. 数据库实例名称. 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/guides/inventory-extension.md: -------------------------------------------------------------------------------- 1 | # 后端存储实体扩展 2 | 3 | SkyWalking 包含四种存储实体. 4 | 5 | - 服务存储(Service Inventory) 6 | - 服务实例存储(Service Instance Inventory) 7 | - 端点存储(Endpoint Inventory) 8 | - 网络地址存储(Network Address Inventory) 9 | 10 | 所有指标, 拓扑结构, 追踪和报警都跟这些实体 ID 相关联. 11 | 12 | 为了了解 **服务(Service)**, **服务实例(Service Instance)** 和 **端点(Endpoint)** 相关概念, 13 | 请阅读[项目介绍](../concepts-and-designs/overview.md#why-use-skywalking). 14 | 15 | 对于 **网络地址存储** 来说, 它代表了所有网络地址, 格式诸如: ip:端口, 主机名, 域名, 这些都可以通过特定编程语言 agent 和探针自动探测. 16 | 17 | ## 扩展 18 | 19 | 目前后端内核只支持了 **服务存储** 扩展. 20 | 服务以 JSON 的格式提供了字段 `properties`, 通常被用于特定的服务(如数据库, 缓存, 消息队列等), 而很少用于业务服务. 21 | 22 | 为了保持代码一致以及对查询和可视化友好, 该 JSON 属性需要遵循指定规则. 23 | 24 | ### 数据库 25 | 26 | 1. 节点类型 == **数据库**. NodeType == **Database(1)** 27 | 1. JSON 属性包含以下 Key. 28 | - `database`. 数据库名称, 如 MySQL, PostgreSQL. 29 | - `db.type`. 数据库类型, 如 sql db, redis db. 30 | - `db.instance`. 数据库实例名称. 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/guides/inventory-extension.md: -------------------------------------------------------------------------------- 1 | # 后端存储实体扩展 2 | 3 | SkyWalking 包含四种存储实体. 4 | 5 | - 服务存储(Service Inventory) 6 | - 服务实例存储(Service Instance Inventory) 7 | - 端点存储(Endpoint Inventory) 8 | - 网络地址存储(Network Address Inventory) 9 | 10 | 所有指标, 拓扑结构, 追踪和报警都跟这些实体 ID 相关联. 11 | 12 | 为了了解 **服务(Service)**, **服务实例(Service Instance)** 和 **端点(Endpoint)** 相关概念, 13 | 请阅读[项目介绍](../concepts-and-designs/overview.md#why-use-skywalking). 14 | 15 | 对于 **网络地址存储** 来说, 它代表了所有网络地址, 格式诸如: ip:端口, 主机名, 域名, 这些都可以通过特定编程语言 agent 和探针自动探测. 16 | 17 | ## 扩展 18 | 19 | 目前后端内核只支持了 **服务存储** 扩展. 20 | 服务以 JSON 的格式提供了字段 `properties`, 通常被用于特定的服务(如数据库, 缓存, 消息队列等), 而很少用于业务服务. 21 | 22 | 为了保持代码一致以及对查询和可视化友好, 该 JSON 属性需要遵循指定规则. 23 | 24 | ### 数据库 25 | 26 | 1. 节点类型 == **数据库**. NodeType == **Database(1)** 27 | 1. JSON 属性包含以下 Key. 28 | - `database`. 数据库名称, 如 MySQL, PostgreSQL. 29 | - `db.type`. 数据库类型, 如 sql db, redis db. 30 | - `db.instance`. 数据库实例名称. 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Application-toolkit-logback-1.x-CN.md: -------------------------------------------------------------------------------- 1 | * 使用 maven 和 gradle 依赖相应的工具包 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-logback-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在logback.xml中的`Pattern`配制节中,设置`%tid` 11 | ```xml 12 | 13 | 14 | 15 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n 16 | 17 | 18 | 19 | ``` 20 | 21 | * 当你使用`-javaagent`参数激活sky-walking的探针, 如果当前上下文中存在traceid,logback将在输出**traceId**。如果探针没有被激活,将输出`TID: N/A`. 22 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Namespace-CN.md: -------------------------------------------------------------------------------- 1 | # 命名空间 2 | ## 版本支持 3 | 5.0.0-beta + 4 | 5 | ## 需求背景 6 | SkyWalking是一个用于从分布式系统收集指标的监控工具。 在实际环境中,一个非常大的分布式系统包括数百个应用程序,数千个应用程序实例。 在这种情况下,更大可能的不止一个组, 7 | 甚至还有一家公司正在维护和监控分布式系统。 他们每个人都负责不同的部分,不能共享某些指标。 8 | 9 | 在这种情况下,命名空间就应运而生了,它用来隔离追踪和监控数据. 10 | 11 | ## 配置命名空间 12 | ### 在探针配置中配置 agent.namespace 13 | ```properties 14 | # The agent namespace 15 | # agent.namespace=default-namespace 16 | ``` 17 | 18 | 默认情况下 `agent.namespace` 是没有配置的. 19 | 20 | **影响** 21 | 默认情况下,SkyWalking 设置的key是 `sw3`, 更多信息查看[文档](Skywalking-Cross-Process-Propagation-Headers-Protocol-CN-v1.md). 22 | 配置好 `agent.namespace` 之后, key 就被设置为`namespace:sw3`. 23 | 24 | 当双方使用不同的名称空间时,跨进程传播链会中断。 25 | 26 | ### collector 中设置命名空间 27 | ```yml 28 | configuration: 29 | default: 30 | namespace: xxxxx 31 | ``` 32 | 33 | **影响** 34 | 1. 如果使用 `zookeeper`开启了集群模式,`zookeeper`的路径会变为带有命名空间前缀的的路径. 35 | 1. 如果使用`Elasticsearch` 进行存储,所有的`type` 名称会带有命名空间的前缀. 36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-logback-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在logback.xml的`Pattern`中配置`%tid` 11 | ```xml 12 | 13 | 14 | 15 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n 16 | 17 | 18 | 19 | ``` 20 | 21 | * 当你使用`-javaagent`激活skywalking tracer后,logback将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A` 22 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-logback-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在logback.xml的`Pattern`中配置`%tid` 11 | ```xml 12 | 13 | 14 | 15 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n 16 | 17 | 18 | 19 | ``` 20 | 21 | * 当你使用`-javaagent`激活skywalking tracer后,logback将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A` 22 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-logback-1.x 6 | {project.release.version} 7 | 8 | ``` 9 | 10 | * 在logback.xml的`Pattern`中配置`%tid` 11 | ```xml 12 | 13 | 14 | 15 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n 16 | 17 | 18 | 19 | ``` 20 | 21 | * 当你使用`-javaagent`激活skywalking tracer后,logback将会输出**traceId**(如果存在的话)。如果tracer未激活,输出将是`TID: N/A` 22 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/trace-sampling.md: -------------------------------------------------------------------------------- 1 | # 服务器端的跟踪采样 2 | 3 | 当我们运行一个分布式跟踪系统时,跟踪会给我们带来详细的信息,但在存储消耗很大。开放服务器端跟踪采样机制, 4 | 服务度量、服务实例、端点和拓扑和以前一样,都是准确的,只是不把所有的跟踪数据存起来。 5 | 6 | 当然,即使您打开采样,跟踪也会尽可能保持一致。**一致**意味着,一旦跟踪段已被agent收集并报告, 7 | 后端将尽力不破坏跟踪。查看[推荐](#推荐)来了解我们称它为`as consistent as possible`和`do their best to don't break the trace`的原因。 8 | 9 | ## 设定采样率 10 | 11 | 在**receiver-trace**接受者中,你可以找到`sampleRate`设置。 12 | 13 | ```yaml 14 | receiver-trace: 15 | default: 16 | ... 17 | sampleRate: ${SW_TRACE_SAMPLE_RATE:1000} # 采样率精度为1/10000。 10000表示默认为100%采样。 18 | ``` 19 | 20 | `sampleRate` 可让你设置Backend的采样率。 21 | 采样率精度为1/10000。10000表示默认为100%样本。 22 | 23 | ## 推荐 24 | 25 | 您可以给的不同的后端实例设置不同的'sampleRate'值,但我们建议你设置成一样。 26 | 27 | 当你设置不同的值时, 28 | 29 | * Backend-Instance**A**.sampleRate = 35 30 | * Backend-Instance**B**.sampleRate = 55 31 | 32 | 我们假设agent向Backend报告了所有跟踪段,然后,全局35%的跟踪将被收集并保存在一致/完整的存储中,所有跨度都是如此。 33 | 报告给后端实例**B**的20%跟踪段也将保存在存储器中,但可能会遗漏一些跟踪段, 因为它们被报告给后端实例**A**并被忽略。 -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Screenshots.md: -------------------------------------------------------------------------------- 1 | - Overview dashboard 2 | 3 | 4 | - Discovery topological graph of application clusters automatically. 5 | 6 | 7 | - Application overview 8 | 9 | 10 | - Process(VM) metrics 11 | 12 | 13 | - Service metrics 14 | 15 | 16 | - Trace 17 | 18 | 19 | 20 | 21 | - Alarm 22 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/README.md: -------------------------------------------------------------------------------- 1 | # 概念与设计 2 | 3 | 了解概念与设计能够帮助你理解 SkyWalking 以及相关领域。 4 | 5 | - 什么是 SkyWalking? 6 | - [总览与核心概念](overview.md). 提供高层次的描述和介绍,包括项目解决的问题。 7 | - [项目目标](project-goals.md). 阐述了 SkyWalking 所重点关注的目标和为此提供的特性. 8 | 9 | 阅读完以上文档后, 你应该对 SkyWalking 的基本目标有所了解. 接下来你可以选择以下文章中你感兴趣的, 深入阅读. 10 | 11 | - 探针 12 | - [介绍](probe-introduction.md). 引导读者理解探针是什么, 存在多少种不同的探测以及为什么需要它们。 13 | - [服务自动打点代理工具](service-agent.md). 介绍自动 instrument 代理程序的功能以及 SkyWalking 已经支持哪些语言。 14 | - [手动打点 SDK](manual-sdk.md). 介绍了手动打点 SDK 在 SkyWalking 生态系统中的作用。 15 | - [服务网格探针](service-mesh-probe.md). 介绍了如何从服务网格和代理探针接收遥测数据。 16 | - 后台 17 | - [总览](backend-overview.md). 提供了有关 OAP 后台的高层次的介绍。 18 | - [可观测性分析语言](oal.md). 介绍了为聚合行为定义而设计的核心语言。 19 | - [OAP 中使用查询](../protocols/README.md#query-protocol). 提供了一套基于可观察性分析语言指标定义的查询协议。 20 | - UI 21 | - [总览](ui-overview.md). 对 SkyWalking 的用户界面进行简短介绍。 22 | - CLI 23 | - [SkyWalking CLI](https://github.com/apache/skywalking-cli). Skywalking 命令行交互工具. 24 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/envoy/examples/metrics/Makefile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | up: 18 | docker-compose up -d 19 | 20 | down: 21 | docker-compose down 22 | 23 | .PHONY: up down 24 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/service-mesh-probe.md: -------------------------------------------------------------------------------- 1 | # 服务网格探针 2 | 3 | 服务网格探针使用了服务网格实现者中提供的可扩展机制,比如 Istio。 4 | 5 | ## 什么是服务网格 6 | 7 | 下面的解释来自Istio文档。 8 | 9 | > 服务网格通常用于描述组成此类应用程序的微服务网络以及它们之间的交互。随着服务网格的大小和复杂性的增长,它会变得更难理解和管理。它需要包括发现、负载平衡、故障恢复、度量和监视以及更复杂的操作需求A/B测试、金丝雀发布、限流、访问控制和端到端身份验证。 10 | 11 | ## 探针从哪里采集数据 12 | 13 | Istio 是一个非常典型的服务网格的设计和实现。它定义了 **控制平面** 和 **数据平面**,被广泛使用。下面是 Istio 的架构 : 14 | 15 | ![Istio 架构](https://istio.io/latest/docs/ops/deployment/architecture/arch.svg) 16 | 17 | 服务网格探针可以选择从 **控制平面** 和 **数据平面** 采集数据。在 Istio 中,指的是从 Mixer(Control Panel) 或者 Envoy sidecar(Data Panel) 中采集遥测数据。探针从客户端和服务器端收集每个请求的两个遥测实体,它们其实是相同的数据。 18 | 19 | ## 服务网格如何使后端工作 20 | 21 | 从探针中,您可以看到在这种探针中一定没有相关的跟踪,那么为什么 SkyWalking 平台仍然可以工作? 22 | 23 | 服务网格探针从每个请求收集遥测数据,因此它知道源、目标、端点、延迟和状态。通过这些,后端可以通过将这些调用合并为行来描述整个拓扑图,以及每个节点通过传入请求的度量。后端解析跟踪数据,请求相同的度量数据。因此,正确的表述是: 24 | 25 | **服务网格度量就是跟踪解析器生成的度量。他们是相同的。** 26 | 27 | ## 下一步 28 | 29 | - 如果你想使用服务网格探针,阅读 [SkyWalking 关于服务网格的设定](../setup/README.md#on-service-mesh) 文档. 30 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/README.md: -------------------------------------------------------------------------------- 1 | # 概念与设计 2 | 3 | 了解 SkyWalking 的概念与设计能够帮助大家从总体上了解 SkyWalking 以及进一步学习 SkyWalking. 4 | 5 | - 什么是 SkyWalking? 6 | - [核心概念与概览](overview.md) 一文对 SkyWalking 进行高层次的概述和介绍, 包括 SkyWalking 所要解决的问题. 7 | - [项目目标](project-goals.md) 一文阐述了 SkyWalking 所重点关注的目标和为此提供的特性. 8 | 9 | 阅读完以上文档后, 你应该对 SkyWalking 的基本目标有所了解. 接下来你可以选择以下文章中你感兴趣的, 深入阅读. 10 | 11 | - 探针 12 | - [简介](probe-introduction.md) 一文将引导读者理解什么是探针, 目前有多少已支持的探针以及为什么我们需要它们. 13 | - [服务自动打点代理工具](service-agent.md) 介绍了自动打点代理工具具体做了什么, 以及目前 SkyWalking 已经支持自动打点的编程语言. 14 | - [手动打点 SDK](manual-sdk.md) 介绍了手动打点 SDK 在 SkyWalking 生态中所扮演的角色. 15 | - [服务网格(Service Mesh)探针](service-mesh-probe.md) 介绍了 SkyWalking 为何需要以及如何从服务网格和代理探针接收遥测数据的. 16 | - 后端 17 | - [总览](backend-overview.md) 一文从高层次对观测分析平台(Observability Analysis Platform, OAP)进行介绍. 18 | - [观测分析语言(Observability Analysis Language)](oal.md) 介绍了一些用于聚合行为定义的核心语言. 19 | - [OAP 中的查询](../protocols/README.md#query-protocol) 基于观测分析语言的指标定义, 涵盖了一系列查询协议. 20 | - 用户界面(UI) 21 | - [总览](ui-overview.md) 对 SkyWalking 的用户界面进行简短介绍. 22 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/README.md: -------------------------------------------------------------------------------- 1 | # 概念与设计 2 | 3 | 了解 SkyWalking 的概念与设计能够帮助大家从总体上了解 SkyWalking 以及进一步学习 SkyWalking. 4 | 5 | - 什么是 SkyWalking? 6 | - [核心概念与概览](overview.md) 一文对 SkyWalking 进行高层次的概述和介绍, 包括 SkyWalking 所要解决的问题. 7 | - [项目目标](project-goals.md) 一文阐述了 SkyWalking 所重点关注的目标和为此提供的特性. 8 | 9 | 阅读完以上文档后, 你应该对 SkyWalking 的基本目标有所了解. 接下来你可以选择以下文章中你感兴趣的, 深入阅读. 10 | 11 | - 探针 12 | - [简介](probe-introduction.md) 一文将引导读者理解什么是探针, 目前有多少已支持的探针以及为什么我们需要它们. 13 | - [服务自动打点代理工具](service-agent.md) 介绍了自动打点代理工具具体做了什么, 以及目前 SkyWalking 已经支持自动打点的编程语言. 14 | - [手动打点 SDK](manual-sdk.md) 介绍了手动打点 SDK 在 SkyWalking 生态中所扮演的角色. 15 | - [服务网格(Service Mesh)探针](service-mesh-probe.md) 介绍了 SkyWalking 为何需要以及如何从服务网格和代理探针接收遥测数据的. 16 | - 后端 17 | - [总览](backend-overview.md) 一文从高层次对观测分析平台(Observability Analysis Platform, OAP)进行介绍. 18 | - [观测分析语言(Observability Analysis Language)](oal.md) 介绍了一些用于聚合行为定义的核心语言. 19 | - [OAP 中的查询](../protocols/README.md#query-protocol) 基于观测分析语言的指标定义, 涵盖了一系列查询协议. 20 | - 用户界面(UI) 21 | - [总览](ui-overview.md) 对 SkyWalking 的用户界面进行简短介绍. 22 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/README.md: -------------------------------------------------------------------------------- 1 | # 概念与设计 2 | 3 | 了解 SkyWalking 的概念与设计能够帮助大家从总体上了解 SkyWalking 以及进一步学习 SkyWalking. 4 | 5 | - 什么是 SkyWalking? 6 | - [核心概念与概览](overview.md) 一文对 SkyWalking 进行高层次的概述和介绍, 包括 SkyWalking 所要解决的问题. 7 | - [项目目标](project-goals.md) 一文阐述了 SkyWalking 所重点关注的目标和为此提供的特性. 8 | 9 | 阅读完以上文档后, 你应该对 SkyWalking 的基本目标有所了解. 接下来你可以选择以下文章中你感兴趣的, 深入阅读. 10 | 11 | - 探针 12 | - [简介](probe-introduction.md) 一文将引导读者理解什么是探针, 目前有多少已支持的探针以及为什么我们需要它们. 13 | - [服务自动打点代理工具](service-agent.md) 介绍了自动打点代理工具具体做了什么, 以及目前 SkyWalking 已经支持自动打点的编程语言. 14 | - [手动打点 SDK](manual-sdk.md) 介绍了手动打点 SDK 在 SkyWalking 生态中所扮演的角色. 15 | - [服务网格(Service Mesh)探针](service-mesh-probe.md) 介绍了 SkyWalking 为何需要以及如何从服务网格和代理探针接收遥测数据的. 16 | - 后端 17 | - [总览](backend-overview.md) 一文从高层次对观测分析协议(Observability Analysis Protocol, OAP)后端进行介绍. 18 | - [观测分析语言(Observability Analysis Language)](oal.md) 介绍了一些用于聚合行为定义的核心语言. 19 | - [OAP 中的查询](../protocols/README.md#query-protocol) 基于观测分析语言的指标定义, 涵盖了一系列查询协议. 20 | - 用户界面(UI) 21 | - [总览](ui-overview.md) 对 SkyWalking 的用户界面进行简短介绍. 22 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/backend-overview.md: -------------------------------------------------------------------------------- 1 | # 观测分析平台(Observability Analysis Platform, OAP) 2 | 3 | 观测分析平台(Observability Analysis Platform, OAP)是一个从 SkyWalking 6.x 开始出现的新概念. 4 | OAP 取代了整个旧的 SkyWalking 后端. OAP 的能力如下所述. 5 | 6 | ## OAP 的能力 7 | 8 | OAP 从多种数据源接收数据, 这些数据分为两大类, **链路追踪**和**度量指标**. 9 | 10 | - **链路追踪**. 包括 SkyWalking 原生数据格式, Zipkin V1 和 V2 数据格式, 以及 Jaeger 数据格式. 11 | - **度量指标**. SkyWalking 集成了服务网格平台, 如 Istio, Envoy 和 Linkerd, 并在数据面板和控制面板进行观测. 12 | 此外, SkyWalking 原生代理还可以运行在度量模式, 这极大提升了性能. 13 | 14 | 使用集成方案的同时, SkyWalking 还提供了可视化集成来对追踪和日志进行绑定, 这是通过使用 trace id 和 span id 实现的. 15 | 16 | 所有的服务都是通过 gRPC 和 HTTP 协议实现, 使得未来集成那些尚未支持的生态系统更加容易. 17 | 18 | ## OAP 中的链路追踪 19 | 20 | OAP 中的链路追踪有两种处理. 21 | 1. 在 SkyWalking 5.x 中传统的方式. 格式化追踪数据. OAP 通过分析数据段获得度量指标, 并将度量数据推送到聚合流. 22 | 2. 仅仅将追踪视为某种日志, 只提供存储和可视化能力. 23 | 24 | 同样的, SkyWalking 接收来自其他系统的追踪数据格式, 如 Zipkin, Jeager, OpenCensus. 25 | 这些格式也可以由以上两种方式进行处理. 26 | 27 | ## OAP 中的度量指标 28 | 29 | OAP 中的度量指标是 6.x 版本中全新的功能. 通过连接的节点之间的度量, 构建分布式系统的观测数据, 且不需要追踪数据. 30 | 31 | 度量数据在 OAP 集群中以流的模式进行聚合. 参考[观测分析语言](oal.md), 该文介绍了如何使用简单的脚本形式进行数据聚合和分析. 32 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/backend-overview.md: -------------------------------------------------------------------------------- 1 | # 观测分析平台(Observability Analysis Platform, OAP) 2 | 3 | 观测分析平台(Observability Analysis Platform, OAP)是一个从 SkyWalking 6.x 开始出现的新概念. 4 | OAP 取代了整个旧的 SkyWalking 后端. OAP 的能力如下所述. 5 | 6 | ## OAP 的能力 7 | 8 | OAP 从多种数据源接收数据, 这些数据分为两大类, **链路追踪**和**度量指标**. 9 | 10 | - **链路追踪**. 包括 SkyWalking 原生数据格式, Zipkin V1 和 V2 数据格式, 以及 Jaeger 数据格式. 11 | - **度量指标**. SkyWalking 集成了服务网格平台, 如 Istio, Envoy 和 Linkerd, 并在数据面板和控制面板进行观测. 12 | 此外, SkyWalking 原生代理还可以运行在度量模式, 这极大提升了性能. 13 | 14 | 使用集成方案的同时, SkyWalking 还提供了可视化集成来对追踪和日志进行绑定, 这是通过使用 trace id 和 span id 实现的. 15 | 16 | 所有的服务都是通过 gRPC 和 HTTP 协议实现, 使得未来集成那些尚未支持的生态系统更加容易. 17 | 18 | ## OAP 中的链路追踪 19 | 20 | OAP 中的链路追踪有两种处理. 21 | 1. 在 SkyWalking 5.x 中传统的方式. 格式化追踪数据. OAP 通过分析数据段获得度量指标, 并将度量数据推送到聚合流. 22 | 2. 仅仅将追踪视为某种日志, 只提供存储和可视化能力. 23 | 24 | 同样的, SkyWalking 接收来自其他系统的追踪数据格式, 如 Zipkin, Jeager, OpenCensus. 25 | 这些格式也可以由以上两种方式进行处理. 26 | 27 | ## OAP 中的度量指标 28 | 29 | OAP 中的度量指标是 6.x 版本中全新的功能. 通过连接的节点之间的度量, 构建分布式系统的观测数据, 且不需要追踪数据. 30 | 31 | 度量数据在 OAP 集群中以流的模式进行聚合. 参考[观测分析语言](oal.md), 该文介绍了如何使用简单的脚本形式进行数据聚合和分析. 32 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/backend-overview.md: -------------------------------------------------------------------------------- 1 | # 观测分析平台(Observability Analysis Platform, OAP) 2 | 3 | 观测分析平台(Observability Analysis Platform, OAP)是一个从 SkyWalking 6.x 开始出现的新概念. 4 | OAP 取代了整个旧的 SkyWalking 后端. OAP 的能力如下所述. 5 | 6 | ## OAP 的能力 7 | 8 | OAP 从多种数据源接收数据, 这些数据分为两大类, **链路追踪**和**度量指标**. 9 | 10 | - **链路追踪**. 包括 SkyWalking 原生数据格式, Zipkin V1 和 V2 数据格式, 以及 Jaeger 数据格式. 11 | - **度量指标**. SkyWalking 集成了服务网格平台, 如 Istio, Envoy 和 Linkerd, 并在数据面板和控制面板进行观测. 12 | 此外, SkyWalking 原生代理还可以运行在度量模式, 这极大提升了性能. 13 | 14 | 使用集成方案的同时, SkyWalking 还提供了可视化集成来对追踪和日志进行绑定, 这是通过使用 trace id 和 span id 实现的. 15 | 16 | 所有的服务都是通过 gRPC 和 HTTP 协议实现, 使得未来集成那些尚未支持的生态系统更加容易. 17 | 18 | ## OAP 中的链路追踪 19 | 20 | OAP 中的链路追踪有两种处理. 21 | 1. 在 SkyWalking 5.x 中传统的方式. 格式化追踪数据. OAP 通过分析数据段获得度量指标, 并将度量数据推送到聚合流. 22 | 2. 仅仅将追踪视为某种日志, 只提供存储和可视化能力. 23 | 24 | 同样的, SkyWalking 接收来自其他系统的追踪数据格式, 如 Zipkin, Jeager, OpenCensus. 25 | 这些格式也可以由以上两种方式进行处理. 26 | 27 | ## OAP 中的度量指标 28 | 29 | OAP 中的度量指标是 6.x 版本中全新的功能. 通过连接的节点之间的度量, 构建分布式系统的观测数据, 且不需要追踪数据. 30 | 31 | 度量数据在 OAP 集群中以流的模式进行聚合. 参考[观测分析语言](oal.md), 该文介绍了如何使用简单的脚本形式进行数据聚合和分析. 32 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/service-agent/java-agent/agent-optional-plugins/Kotlin-Coroutine-plugin.md: -------------------------------------------------------------------------------- 1 | # Skywalking支持Kotlin插件 2 | Skywalking支持Kotlin编写的自动工具支持插件. 3 | 4 | ## 简述 5 | SkyWalking 提供跟踪上下文在线程内的传播。为了支持Kotlin协同程序,我们提供了这个附加插件 6 | 7 | ## 实现原理 8 | 我们知道,Kotlin coroutine通过“CoroutineDispatcher”来切换执行线程。 9 | 10 | 01. 在分派延续之前,创建当前上下文的快照. 11 | 02. 然后在线程切换后创建协程跨度,标记跨度与快照. 12 | 03. 在新线程中创建的每个新span都是这个协同程序span的子跨度。我们可以用轨迹把这些联系起来。 13 | 04. 在原来的runnable执行之后,我们需要停止协同程序跨度来清理线程状态。 14 | 15 | ## 一些截图 16 | ### 运行没有插件 17 | 我们运行一个基于Kotlin协同程序的gRPC服务器,而不需要这个协同程序插件。 18 | 您可以发现,一个调用(client -> server1 -> server2)被分割为两条跟踪路径。 19 | 20 | 01. 没有退出span的Server1和server2链路. 21 | ![不包含kotlin插件](http://skywalking.apache.org/screenshots/7.0.0/kotlin/coroutine/without-coroutine-plugin-server1.jpg) 22 | 02. Server2链路. 23 | ![不包含kotlin插件](http://skywalking.apache.org/screenshots/7.0.0/kotlin/coroutine/without-coroutine-plugin-server2.jpg) 24 | 25 | ### 使用插件运行 26 | 无需手动更改代码,只需安装插件。我们可以发现跨是连在一起的。我们可以得到一个客户电话的所有信息. 27 | ![包含kotlin插件](http://skywalking.apache.org/screenshots/7.0.0/kotlin/coroutine/run-with-coroutine-plugin.jpg) 28 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-token-auth.md: -------------------------------------------------------------------------------- 1 | # 令牌认证 2 | 3 | ## 支持版本 4 | 5 | 7.0.0 以上 6 | 7 | ## 为什么在我们拥有TLS之后还需要令牌身份验证 8 | 9 | TLS 是关于传输安全的, 用于确保网络是可信的。令牌身份验证是关于监控应用数据是**可信**的。 10 | 11 | ## 令牌 12 | 13 | 当前版本,令牌考虑使用一个简单的字符串。 14 | 15 | ### 设置令牌 16 | 17 | #### 1. 在 agent.config 中设置令牌 18 | 19 | ```properties 20 | # 认证由后台设定激活,更多详情查看 application.yml 。 21 | agent.authentication = ${SW_AGENT_AUTHENTICATION:xxxx} 22 | ``` 23 | 24 | #### 2. 在 `application.yml` 中设置令牌 25 | 26 | ```yaml 27 | ······ 28 | receiver-sharing-server: 29 | default: 30 | authentication: ${SW_AUTHENTICATION:""} 31 | ······ 32 | ``` 33 | 34 | ## 认证失败 35 | 36 | Skywalking OAP 验证每个来自 agent 的请求,只允许令牌与 `application.yml` 中配置一致请求通过。 37 | 38 | 如果令牌不正确,将会在 agent 端看到如下日志 39 | 40 | ```java 41 | org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED 42 | ``` 43 | 44 | ## FAQ 45 | 46 | ### 可以使用令牌认证替代 TSL 吗 47 | 48 | 不能,在技术方面,你当然可以,但是令牌和 TLS 用于不受信任的网络环境。在这种情况下, TLS 具有更高的优先级。令牌只能在 TLS 保护下受信任。如果你在 非 TLS 的网络中发送,令牌很容易被窃取。 49 | 50 | ### 是否支持其他身份验证机制? 例如 ak/sk 51 | 52 | 现在没有,但是我们希望有人可以贡献这个特性。 53 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/service-mesh-probe.md: -------------------------------------------------------------------------------- 1 | # 服务网格探针(Server Mesh Probe) 2 | 3 | 服务网格探针利用了服务网格实现者的可扩展机制, 如 Istio. 4 | 5 | ## 什么是服务网格? 6 | 7 | 以下是来自 Istio 文档中对服务网格的解释: 8 | > 术语"服务网格"通常用来描述一种微服务网络, 这些微服务构成了一个完整的应用以及他们之间的交互. 9 | 随着服务网格不断增大, 复杂性不断增加, 可能会使其难以理解和管理. 10 | 服务网格的需求可能包含服务发现, 负载均衡, 失败探测, 性能指标以及监控, 通常可能还有更复杂的 11 | 操作性需求, 如 AB 测试, 灰度发布, 频率限制, 访问控制以及端到端鉴权. 12 | 13 | ## 探针从哪里收集数据? 14 | 15 | Istio 是一个非常典型的服务网格设计和实现, 它定义了**控制面板**和**数据面板**, 受到广泛应用. 16 | 以下是 Istio 的架构: 17 | 18 | 19 | 20 | 服务网格探针可以选择从**控制面板**或**数据面板**收集数据. 对应到 Istio 中, 则是从 Mixer(控制面板) 21 | 或 Envoy sidecar(数据面板) 收集遥测数据. 底层上它们都是相同的数据, 探针会从每个请求的服务端和客户端 22 | 收集两方面的遥测实体. 23 | 24 | ## 后端是如何在服务网格奏效的? 25 | 26 | 从探针方面来看, 你知道服务网格探针中肯定没有和链路追踪相关的东西, 那么为什么 SkyWalking 平台还能正常工作? 27 | 28 | 服务网格探针从每一个请求那里收集遥测数据, 因此它知道请求的源, 目标, 端点, 耗时以及状态. 29 | 通过把这些调用关系以及每个节点的性能指标进行结合, 后端能够构造出一张完整的拓扑图. 30 | 后端同时还从解析链路追踪数据那里获得同样的指标数据. 因此完整的描述如下: 31 | **服务网格指标正是链路追踪解析器产生的指标数据, 它们是一样的.** 32 | 33 | ## 下一步? 34 | 35 | - 如果你想使用服务网格探针, 请阅读[在服务网格中配置 SkyWalking](../setup/README.md#on-service-mesh) 一文. 36 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/service-mesh-probe.md: -------------------------------------------------------------------------------- 1 | # 服务网格探针(Server Mesh Probe) 2 | 3 | 服务网格探针利用了服务网格实现者的可扩展机制, 如 Istio. 4 | 5 | ## 什么是服务网格? 6 | 7 | 以下是来自 Istio 文档中对服务网格的解释: 8 | > 术语"服务网格"通常用来描述一种微服务网络, 这些微服务构成了一个完整的应用以及他们之间的交互. 9 | 随着服务网格不断增大, 复杂性不断增加, 可能会使其难以理解和管理. 10 | 服务网格的需求可能包含服务发现, 负载均衡, 失败探测, 性能指标以及监控, 通常可能还有更复杂的 11 | 操作性需求, 如 AB 测试, 灰度发布, 频率限制, 访问控制以及端到端鉴权. 12 | 13 | ## 探针从哪里收集数据? 14 | 15 | Istio 是一个非常典型的服务网格设计和实现, 它定义了**控制面板**和**数据面板**, 受到广泛应用. 16 | 以下是 Istio 的架构: 17 | 18 | 19 | 20 | 服务网格探针可以选择从**控制面板**或**数据面板**收集数据. 对应到 Istio 中, 则是从 Mixer(控制面板) 21 | 或 Envoy sidecar(数据面板) 收集遥测数据. 底层上它们都是相同的数据, 探针会从每个请求的服务端和客户端 22 | 收集两方面的遥测实体. 23 | 24 | ## 后端是如何在服务网格奏效的? 25 | 26 | 从探针方面来看, 你知道服务网格探针中肯定没有和链路追踪相关的东西, 那么为什么 SkyWalking 平台还能正常工作? 27 | 28 | 服务网格探针从每一个请求那里收集遥测数据, 因此它知道请求的源, 目标, 端点, 耗时以及状态. 29 | 通过把这些调用关系以及每个节点的性能指标进行结合, 后端能够构造出一张完整的拓扑图. 30 | 后端同时还从解析链路追踪数据那里获得同样的指标数据. 因此完整的描述如下: 31 | **服务网格指标正是链路追踪解析器产生的指标数据, 它们是一样的.** 32 | 33 | ## 下一步? 34 | 35 | - 如果你想使用服务网格探针, 请阅读[在服务网格中配置 SkyWalking](../setup/README.md#on-service-mesh) 一文. 36 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/service-mesh-probe.md: -------------------------------------------------------------------------------- 1 | # 服务网格探针(Server Mesh Probe) 2 | 3 | 服务网格探针利用了服务网格实现者的可扩展机制, 如 Istio. 4 | 5 | ## 什么是服务网格? 6 | 7 | 以下是来自 Istio 文档中对服务网格的解释: 8 | > 术语"服务网格"通常用来描述一种微服务网络, 这些微服务构成了一个完整的应用以及他们之间的交互. 9 | 随着服务网格不断增大, 复杂性不断增加, 可能会使其难以理解和管理. 10 | 服务网格的需求可能包含服务发现, 负载均衡, 失败探测, 性能指标以及监控, 通常可能还有更复杂的 11 | 操作性需求, 如 AB 测试, 灰度发布, 频率限制, 访问控制以及端到端鉴权. 12 | 13 | ## 探针从哪里收集数据? 14 | 15 | Istio 是一个非常典型的服务网格设计和实现, 它定义了**控制面板**和**数据面板**, 受到广泛应用. 16 | 以下是 Istio 的架构: 17 | 18 | 19 | 20 | 服务网格探针可以选择从**控制面板**或**数据面板**收集数据. 对应到 Istio 中, 则是从 Mixer(控制面板) 21 | 或 Envoy sidecar(数据面板) 收集遥测数据. 底层上它们都是相同的数据, 探针会从每个请求的服务端和客户端 22 | 收集两方面的遥测实体. 23 | 24 | ## 后端是如何在服务网格奏效的? 25 | 26 | 从探针方面来看, 你知道服务网格探针中肯定没有和链路追踪相关的东西, 那么为什么 SkyWalking 平台还能正常工作? 27 | 28 | 服务网格探针从每一个请求那里收集遥测数据, 因此它知道请求的源, 目标, 端点, 耗时以及状态. 29 | 通过把这些调用关系以及每个节点的性能指标进行结合, 后端能够构造出一张完整的拓扑图. 30 | 后端同时还从解析链路追踪数据那里获得同样的指标数据. 因此完整的描述如下: 31 | **服务网格指标正是链路追踪解析器产生的指标数据, 它们是一样的.** 32 | 33 | ## 下一步? 34 | 35 | - 如果你想使用服务网格探针, 请阅读[在服务网格中配置 SkyWalking](../setup/README.md#on-service-mesh) 一文. 36 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/backend-overview.md: -------------------------------------------------------------------------------- 1 | # 观测分析平台 2 | 3 | OAP 观测分析平台(Observability Analysis Platform)是一个从 SkyWalking 6.x 开始出现的新概念. 4 | OAP 取代了整个旧的 SkyWalking 后端. OAP 的能力如下所述. 5 | 6 | ## OAP 能力 7 | 8 | OAP 从多种数据源接收数据, 这些数据分为两大类, **链路追踪** 和 **度量指标** . 9 | 10 | - **链路追踪**. 包括 SkyWalking 原生数据格式, Zipkin V1 和 V2 数据格式, 以及 Jaeger 数据格式. 11 | - **度量指标**. SkyWalking 集成了服务网格平台, 如 Istio, Envoy 和 Linkerd, 并在数据面板和控制面板进行观测。此外, SkyWalking 原生代理还可以运行在度量模式, 这极大提升了性能。 12 | 13 | 可以同时使用提供的任何集成解决方案,比如 SkyWalking 日志插件或工具包, SkyWalking 还提供了可视化集成来对追踪和日志进行绑定, 这是通过使用 trace id 和 span id 实现的. 14 | 15 | 通常所有的服务都是通过 gRPC 和 HTTP 协议实现, 使得未来集成那些尚未支持的生态系统更加容易. 16 | 17 | ## OAP 中的链路追踪 18 | 19 | 链路追踪在 OAP 中的有两种处理. 20 | 21 | 1. 在 SkyWalking 5.x 中传统的方式. 以 SkyWalking 的 segment 和 span 来格式化追踪数据,甚至包括 Zipkin 数据格式化。OAP 通过分析数据段获得度量指标, 并将度量数据推送到聚合流。 22 | 2. 考虑仅仅将追踪视为某种日志, 只提供存储和可视化能力. 23 | 24 | 同样的, SkyWalking 接收来自其他系统的追踪数据格式, 如 Zipkin, Jaeger, OpenCensus. 这些格式也可以由以上两种方式进行处理. 25 | 26 | ## OAP 中的度量指标 27 | 28 | OAP 中的度量指标是 6.x 版本中全新的功能. 通过连接的节点之间的度量数据, 构建分布式系统的观测数据, 且不需要追踪数据. 29 | 30 | 度量数据在 OAP 集群中以流的模式进行聚合. 参考[观测分析语言](oal.md), 该文介绍了如何使用简单的脚本形式进行数据聚合和分析。 31 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Token-auth-CN.md: -------------------------------------------------------------------------------- 1 | # 基于 Token 认证 2 | ## 版本支持 3 | 5.0.0-beta + 4 | 5 | ## 在使用了TLS 认证之后,为何还需要基于 Token 的认证? 6 | TLS 是保证传输层的安全,保证传输的网络是可信的. 7 | 基于 token 的认证是为了保证应用的监控数据是 **可信的**. 8 | 9 | ## Token 10 | 在现在的版本中, Token是一个简单的字符串. 11 | 12 | ### 设置 Token 13 | 1. 在 agent.config 文件中设置 Token 14 | ```properties 15 | # Authentication active is based on backend setting, see application.yml for more details. 16 | agent.authentication = xxxx 17 | ``` 18 | 19 | 2. 在 `application.yml` 文件中设置 token 20 | ```yaml 21 | agent_gRPC: 22 | gRPC: 23 | host: localhost 24 | port: 11800 25 | 26 | #Set your own token to active auth 27 | authentication: xxxxxx 28 | ``` 29 | 30 | ## 认证失败 31 | collector验证来自探针的每个请求,只有 token 正确,验证才能通过。 32 | 33 | 如果token不正确,您将在探针端的日志看到如下日志: 34 | ``` 35 | org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED 36 | ``` 37 | 38 | ## FAQ 39 | ### 我可以只使用token认证而不用TLS? 40 | 不行. 从技术层面来说, 当然可以.但是token 和 TLS 用于不被信任的网络环境. 在这种情况下, TLS显得更加重要, token 认证仅仅在 TLS 认证的之后才能被信任, 41 | 如果在一个没有 TLS 的网络环节中, token非常容易被拦截和窃取. 42 | 43 | ### 现在skywalking是否支持其他的认证机制? 比如 ak/sk? 44 | 现在还不支持,但是如果有人愿意提供这些这些新特性,我们表示感谢. 45 | 46 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/envoy/als_setting.md: -------------------------------------------------------------------------------- 1 | # 通过 ALS 观测服务网格 2 | 3 | Envoy [ALS(access log service)](https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto) 提供了 RPC 路由的完整日志, 包括 HTTP 和 TCP. 4 | 5 | 方案由 [Sheng Wu](https://github.com/wu-sheng), [Hongtao Gao](https://github.com/hanahmily), [Lizan Zhou](https://github.com/lizan) 和 [Dhi Aurrahman](https://github.com/dio) 在 2019/5/17 启动实现,并在 [KubeCon China 2019](https://kccncosschn19eng.sched.com/event/NroB/observability-in-service-mesh-powered-by-envoy-and-apache-skywalking-sheng-wu-lizan-zhou-tetrate) 提出。这里有 [视频](https://www.youtube.com/watch?v=tERm39ju9ew) 记录。 6 | 7 | SkyWalking 是全球范围内第一个介绍这种基于 ALS 的解决方案的开源项目。这为网格服务提供了一种低负载但有相同可观测性的新方法。 8 | 9 | 你需要以下三步来开启 ALS: 10 | 11 | 1. 在 Istio 中打开 Envoy 访问日志服务,详见 [ProxyConfig 中启用 **envoyAccessLogService**](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#ProxyConfig) 12 | 2. 打开 SkyWalking [Envoy 接收器](../backend/backend-receivers.md). 13 | 3. 激活 ALS k8s-mesh 分析,配置如下 14 | 15 | ```yaml 16 | envoy-metric: 17 | default: 18 | alsHTTPAnalysis: "k8s-mesh" 19 | ``` 20 | 21 | 多个值使用 `,` 分隔 22 | 23 | 提示,只有当 Envoy 受 Istio 控制时才可以使用,并且在 K8S 环境下。 OAP 需要所有 pods 都有读 K8S API 服务的权限。 24 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/trace-sampling.md: -------------------------------------------------------------------------------- 1 | # 服务器端的跟踪采样 2 | 当我们运行一个分布式跟踪系统时,跟踪会给我们带来详细的信息,但在存储消耗很大。开放服务器端跟踪采样机制,服务度量、服务实例、端点和拓扑和以前一样,都是准确的,只是不把所有的跟踪数据存起来。 3 | 4 | 当然,即使您打开采样,跟踪也会尽可能保持一致。**一致**意味着,一旦跟踪段已被agent收集并报告,Backend将尽力不破坏跟踪。查看[推荐](#推荐)来了解我们称它为`as consistent as possible`和`do their best to don't break the trace`的原因。 5 | 6 | ## 设定采样率 7 | 在**receiver-trace**接受者中,你可以找到`sampleRate`设置。 8 | 9 | ```yaml 10 | receiver-trace: 11 | default: 12 | bufferPath: ../trace-buffer/ # Path to trace buffer files, suggest to use absolute path 13 | bufferOffsetMaxFileSize: 100 # Unit is MB 14 | bufferDataMaxFileSize: 500 # Unit is MB 15 | bufferFileCleanWhenRestart: false 16 | sampleRate: ${SW_TRACE_SAMPLE_RATE:1000} # The sample rate precision is 1/10000. 10000 means 100% sample in default. 17 | ``` 18 | 19 | `sampleRate` 可让你设置Backend的采样率。 20 | 采样率精度为1/10000。10000表示默认为100%样本。 21 | 22 | # 推荐 23 | 您可以给的不同的Backend实例设置不同的'sampleRate'值,但我们建议你设置成一样。 24 | 25 | 当你设置不同的值时, 26 | * Backend-Instance**A**.sampleRate = 35 27 | * Backend-Instance**B**.sampleRate = 55 28 | 29 | 我们假设agent向Backend报告了所有跟踪段,然后,全局35%的跟踪将被收集并保存在一致/完整的存储中,所有跨度都是如此。报告给后端实例**B** *的20%跟踪段也将保存在存储器中,但可能会遗漏一些跟踪段, 因为它们被报告给后端实例**A**并被忽略。 -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/trace-sampling.md: -------------------------------------------------------------------------------- 1 | # 服务器端的跟踪采样 2 | 当我们运行一个分布式跟踪系统时,跟踪会给我们带来详细的信息,但在存储消耗很大。开放服务器端跟踪采样机制,服务度量、服务实例、端点和拓扑和以前一样,都是准确的,只是不把所有的跟踪数据存起来。 3 | 4 | 当然,即使您打开采样,跟踪也会尽可能保持一致。**一致**意味着,一旦跟踪段已被agent收集并报告,Backend将尽力不破坏跟踪。查看[推荐](#推荐)来了解我们称它为`as consistent as possible`和`do their best to don't break the trace`的原因。 5 | 6 | ## 设定采样率 7 | 在**receiver-trace**接受者中,你可以找到`sampleRate`设置。 8 | 9 | ```yaml 10 | receiver-trace: 11 | default: 12 | bufferPath: ../trace-buffer/ # Path to trace buffer files, suggest to use absolute path 13 | bufferOffsetMaxFileSize: 100 # Unit is MB 14 | bufferDataMaxFileSize: 500 # Unit is MB 15 | bufferFileCleanWhenRestart: false 16 | sampleRate: ${SW_TRACE_SAMPLE_RATE:1000} # The sample rate precision is 1/10000. 10000 means 100% sample in default. 17 | ``` 18 | 19 | `sampleRate` 可让你设置Backend的采样率。 20 | 采样率精度为1/10000。10000表示默认为100%样本。 21 | 22 | # 推荐 23 | 您可以给的不同的Backend实例设置不同的'sampleRate'值,但我们建议你设置成一样。 24 | 25 | 当你设置不同的值时, 26 | * Backend-Instance**A**.sampleRate = 35 27 | * Backend-Instance**B**.sampleRate = 55 28 | 29 | 我们假设agent向Backend报告了所有跟踪段,然后,全局35%的跟踪将被收集并保存在一致/完整的存储中,所有跨度都是如此。报告给后端实例**B** *的20%跟踪段也将保存在存储器中,但可能会遗漏一些跟踪段, 因为它们被报告给后端实例**A**并被忽略。 -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/trace-sampling.md: -------------------------------------------------------------------------------- 1 | # 服务器端的跟踪采样 2 | 当我们运行一个分布式跟踪系统时,跟踪会给我们带来详细的信息,但在存储消耗很大。开放服务器端跟踪采样机制,服务度量、服务实例、端点和拓扑和以前一样,都是准确的,只是不把所有的跟踪数据存起来。 3 | 4 | 当然,即使您打开采样,跟踪也会尽可能保持一致。**一致**意味着,一旦跟踪段已被agent收集并报告,Backend将尽力不破坏跟踪。查看[推荐](#推荐)来了解我们称它为`as consistent as possible`和`do their best to don't break the trace`的原因。 5 | 6 | ## 设定采样率 7 | 在**receiver-trace**接受者中,你可以找到`sampleRate`设置。 8 | 9 | ```yaml 10 | receiver-trace: 11 | default: 12 | bufferPath: ../trace-buffer/ # Path to trace buffer files, suggest to use absolute path 13 | bufferOffsetMaxFileSize: 100 # Unit is MB 14 | bufferDataMaxFileSize: 500 # Unit is MB 15 | bufferFileCleanWhenRestart: false 16 | sampleRate: ${SW_TRACE_SAMPLE_RATE:1000} # The sample rate precision is 1/10000. 10000 means 100% sample in default. 17 | ``` 18 | 19 | `sampleRate` 可让你设置Backend的采样率。 20 | 采样率精度为1/10000。10000表示默认为100%样本。 21 | 22 | # 推荐 23 | 您可以给的不同的Backend实例设置不同的'sampleRate'值,但我们建议你设置成一样。 24 | 25 | 当你设置不同的值时, 26 | * Backend-Instance**A**.sampleRate = 35 27 | * Backend-Instance**B**.sampleRate = 55 28 | 29 | 我们假设agent向Backend报告了所有跟踪段,然后,全局35%的跟踪将被收集并保存在一致/完整的存储中,所有跨度都是如此。报告给后端实例**B** *的20%跟踪段也将保存在存储器中,但可能会遗漏一些跟踪段, 因为它们被报告给后端实例**A**并被忽略。 -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/v6-version-upgrade.md: -------------------------------------------------------------------------------- 1 | # V6 升级 2 | 3 | SkyWalking v6 广泛使用在生产环境。用户可能想从老版本升级为新版本。这个指南将告诉用户如何做。 4 | 5 | **注意**,一下方法不是唯一的升级方式。 6 | 7 | ## 使用金丝雀发布 8 | 9 | 和所有的应用一样,SkyWalking 可以一下步骤使用 `金丝雀发布` 方式升级 10 | 11 | 1. 使用最新版本 SkyWalking OAP 集群和新的数据库集群部署一个新的集群 12 | 2. 一旦目标(被监控)服务有机会升级 agent.jar (或仅仅需要重启),将 `collector.backend_service` 改为指向新的 OAP 后台,并且使用/添加一个新的命名空间(`agent.namespace`,在 [agent 配置属性表](../setup/service-agent/java-agent/README.md#table-of-agent-configuration-properties) 中配置)。命名空间将避免不同版本之间的冲突。 13 | 3. 当所有目标服务都重新启动后,可以废弃旧的 OAP 集群。 14 | 15 | `金丝雀发布` 方式适用任何版本升级。 16 | 17 | ## 在线热重启升级 18 | 19 | 我们需要使用 `金丝雀发布` 的原因是:SkyWalking 代理具有缓存机制,切换到新的集群会使缓存对新的OAP集群不可用。 20 | 21 | 在 6.5.0+(特别是 agent 版本),我们有 [**代理热重启触发机制**](../setup/backend/backend-setup.md#agent-hot-reboot-trigger-mechanism-in-oap-server-upgrade). 22 | 23 | 通过使用它,我们可以用一种更简单的方式进行升级,**使用最新版本 SkyWalking OAP 集群和新的数据库集群部署一个新的集群**,一次性的将流量迁移到新的集群。基于这个机制,所有的代理将会进入 `cool_down` 模式,然后重新上线。更多细节,请阅读后端安装文档。 24 | 25 | **注意**, 6.4.0 有一个已知的 bug, 他的 agent 有重连问题, 所以, 即使在 6.4.0 中包含了这种重新启动机制,它也可能无法在某些网络场景中工作,特别是在 k8s 中。 26 | 27 | ## Agent 兼容性 28 | 29 | 所有的 SkyWalking 6.x(甚至 7.x)是相互兼容的,所以用户可以优先只升级 OAP 服务。这个代理还会再版本之间进行增强,所以根据 SkyWalking 团队的建议,一旦有机会,就升级 agent。 30 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Application-toolkit-trace.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-trace 6 | ${skywalking.version} 7 | 8 | ``` 9 | 10 | * 使用 `TraceContext.traceId()` API得到traceId 11 | ```java 12 | import TraceContext; 13 | ... 14 | 15 | modelAndView.addObject("traceId", TraceContext.traceId()); 16 | ``` 17 | _仅为示例代码_ 18 | 19 | * 在你想追踪的方法上添加`@Trace`注解。添加后,你就可以在方法调用栈中查看到span的信息。 20 | * 在被追踪的方法的上下文周期内添加自定义tag。 21 | 22 | * `ActiveSpan.error()` 将当前 Span 标记为出错状态. 23 | * `ActiveSpan.error(String errorMsg)` 将当前 Span 标记为出错状态, 并带上错误信息. 24 | * `ActiveSpan.error(Throwable throwable)` 将当前 Span 标记为出错状态, 并带上 `Throwable`. 25 | * `ActiveSpan.debug(String debugMsg)` 在当前 Span 添加一个 debug 级别的日志信息. 26 | * `ActiveSpan.info(String infoMsg)` 在当前 Span 添加一个 info 级别的日志信息. 27 | 28 | ```java 29 | ActiveSpan.tag("my_tag", "my_value"); 30 | ActiveSpan.error(); 31 | ActiveSpan.error("Test-Error-Reason"); 32 | 33 | ActiveSpan.error(new RuntimeException("Test-Error-Throwable")); 34 | ActiveSpan.info("Test-Info-Msg"); 35 | ActiveSpan.debug("Test-debug-Msg"); 36 | ``` 37 | 38 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/service-agent/java-agent/Application-toolkit-trace.md: -------------------------------------------------------------------------------- 1 | * 使用maven或gradle引入toolkit依赖。 2 | ```xml 3 | 4 | org.apache.skywalking 5 | apm-toolkit-trace 6 | ${skywalking.version} 7 | 8 | ``` 9 | 10 | * 使用 `TraceContext.traceId()` API得到traceId 11 | ```java 12 | import TraceContext; 13 | ... 14 | 15 | modelAndView.addObject("traceId", TraceContext.traceId()); 16 | ``` 17 | _仅为示例代码_ 18 | 19 | * 在你想追踪的方法上添加`@Trace`注解。添加后,你就可以在方法调用栈中查看到span的信息。 20 | * 在被追踪的方法的上下文周期内添加自定义tag。 21 | 22 | * `ActiveSpan.error()` 将当前 Span 标记为出错状态. 23 | * `ActiveSpan.error(String errorMsg)` 将当前 Span 标记为出错状态, 并带上错误信息. 24 | * `ActiveSpan.error(Throwable throwable)` 将当前 Span 标记为出错状态, 并带上 `Throwable`. 25 | * `ActiveSpan.debug(String debugMsg)` 在当前 Span 添加一个 debug 级别的日志信息. 26 | * `ActiveSpan.info(String infoMsg)` 在当前 Span 添加一个 info 级别的日志信息. 27 | 28 | ```java 29 | ActiveSpan.tag("my_tag", "my_value"); 30 | ActiveSpan.error(); 31 | ActiveSpan.error("Test-Error-Reason"); 32 | 33 | ActiveSpan.error(new RuntimeException("Test-Error-Throwable")); 34 | ActiveSpan.info("Test-Info-Msg"); 35 | ActiveSpan.debug("Test-debug-Msg"); 36 | ``` 37 | 38 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Deploy-backend-in-standalone-mode-CN.md: -------------------------------------------------------------------------------- 1 | # 用途说明 2 | 单机模式默认使用本地H2数据库,不支持集群部署。主要用于:预览、功能测试、演示和低压力系统。 3 | 4 | 如果使用单机collector用于非演示环境,你可选择使用Elasticsearch作为存储实现。 5 | 6 | **在5.0.0-alpha版本中,暂不提供H2实现, 所以在启动之前,必须先部署ElasticSearch** 7 | 8 | ## 所需的第三方软件 9 | - JDK8+ 10 | 11 | ## 下载发布版本 12 | - 前向[发布页面](https://github.com/apache/incubator-skywalking/releases) 13 | 14 | ## Quick Start 15 | Collector单机模拟启动简单,提供和集群模式相同的功能,单机模式下除端口(8080, 10800, 11800, 12800)被占用的情况下,直接启动即可。 16 | 17 | ## 部署后台服务 18 | 1. 解压安装包`tar -xvf skywalking-collector.tar.gz`,windows用户可以选择zip包 19 | 1. 运行`bin/startup.sh`启动。windows用户为.bat文件。 20 | 21 | - **注意:在5.0.0-alpha 版本中,startup.sh将会启动collector和UI两个进程,UI通过127.0.0.1:10800访问本地collector,无需额外配置。** 22 | 23 | ## 使用Elastic Search代替H2存储 24 | - 在单机模式下,`collector`也支持其他的存储(当前已支持的ElasticSearch 5.3),取消 `application.yml`配置文件中的`storage` 相关配置节的注释,并修改配置,默认的配置是`collector` 25 | 和 `Elasticsearch` 运行在同一台机器上。 26 | 27 | ## 部署Elasticsearch 28 | - 修改`elasticsearch.yml`文件 29 | - 设置 `cluster.name: CollectorDBCluster`。此名称需要和collector配置文件一致。 30 | - 设置 `node.name: anyname`, 可以设置为任意名字,如Elasticsearch为集群模式,则每个节点名称需要不同。 31 | - 增加如下配置 32 | 33 | ``` 34 | # ES监听的ip地址 35 | network.host: 0.0.0.0 36 | thread_pool.bulk.queue_size: 1000 37 | ``` 38 | 39 | - 启动Elasticsearch 40 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/TLS-CN.md: -------------------------------------------------------------------------------- 1 | # 支持传输层安全TLS(Transport Layer Security) 2 | 在通过Internet传输数据时,传输层安全(TLS)是一种非常常见的安全方式 3 | 用户可能会在一些场景下遇到这样的情形: 4 | 5 | > 被监控(部署探针)的应用中部署在同一个私有云(VPC)区域当中,与此同时, SkyWalking 的服务端部署在另一个私有云(VPC)区域中 6 | > 7 | > 在这种情况下,就非常有必要做一些传输安全认证. 8 | 9 | ## 配置要求 10 | 开启 **服务直连** 功能, 详情参考 [文档](Direct-uplink-CN.md). 11 | 12 | 由于通过公网直接上报数据,由于安全问题,名称(naming)服务机制并不适合这种情况.所以我们在HTTP服务的名称服务中不支持TLS。 13 | 14 | ## 版本支持 15 | 5.0.0-beta + 16 | 17 | ## 认证模式 18 | 仅仅支持 **非双向认证**. 19 | - 如果你比较熟悉如何生成 key 文件,可以使用 [脚本](../../tools/TLS/tls_key_generate.sh) . 20 | - 在客户端使用 `ca.crt`文件 21 | - 在服务端使用 `server.crt` 和 `server.pem`. 22 | 23 | ## 配置并开启 TLS 24 | 25 | ### 探针配置 26 | - 将 `ca.crt` 放置在探针文件夹的 `/ca` 文件夹中. 需要注意的是,发行的版本中不包含`/ca`文件夹,需要自行创建. 27 | 28 | 如果探针检测到文件 `/ca/ca.crt` ,会自动开启 TLS. 29 | 30 | ### Collector 配置 31 | `agent_gRPC/gRPC` 模块支持 TLS. 并且现在只有这个模块支持. 32 | 33 | - 将`application.yml`中的 `ssl_cert_chain_file` 和 `ssl_private_key_file` 配置打开. 34 | - `ssl_cert_chain_file` 配置为 `server.crt`的绝对路径. 35 | - `ssl_private_key_file` 配置为 `server.pem`的绝对路径. 36 | 37 | ## 避免端口共享 38 | 在大多数情况下,我们建议在`agent_gRPC / gRPC`和`remote / gRPC`模块中共享所有gRPC服务的端口。 39 | 但是,当你在`agent_gRPC / gRPC`模块中打开TLS时不要这样做,原因就是无论是否开始TLS,你都无法监听端口。 40 | 解决方案, 换一个端口 `remote/gRPC/port`. 41 | 42 | ## 其他端口监听如何操作? 43 | 请使用其他安全方式确保不能访问 VPC 区域外的其他端口,例如防火墙,代理等。 -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/service-agent.md: -------------------------------------------------------------------------------- 1 | # 服务自动打点代理 2 | 3 | 服务自动打点代理是基于语言的原生代理的一部分, 4 | 这种代理需要依靠某些语言特定的特性, 5 | 通常是一种基于虚拟机的语言. 6 | 7 | ## 自动打点是什么意思? 8 | 9 | 许多用户都是在听到"他们说不需要改一行代码"之后才了解到这些代理的, 10 | SkyWalking 以前也将这种说法放在 README 文档中. 实际上这种说法是既对又错的. 11 | 对于最终用户来说是对的, 他们不需要修改代码(至少在绝大多数情况下). 12 | 但这种说法也是错的, 因为代码实际上还是被修改了, 只是被代理给修改了, 13 | 这种做法通常叫做"在运行时操作代码". 14 | 底层远离就是自动打点代理利用了虚拟机提供的用于修改代码的接口来动态加入打点的代码, 15 | 如通过 `javaagent premain` 来修改 Java 类. 16 | 17 | 此外, 我们说大部分自动打点代理是基于虚拟机的, 但实际上你也可以在编译期构建这样的工具. 18 | 19 | ## 有什么限制? 20 | 21 | 自动打点很好用, 你还可以在编译时进行自动打点而不需要依赖虚拟机特性, 22 | 那么这里有什么限制吗? 23 | 24 | 答案当然是有, 以下就是它们的限制: 25 | 26 | - **进程内传播在大多数情况下成为可能**. 许多高级编程语言(如 Java, .NET)都是用于构建业务系统. 27 | 大部分业务逻辑代码对于每一个请求来说都运行在同一个线程内, 这使得传播是基于线程 ID 的, 以确保上下文是安全的. 28 | 29 | - **仅仅对某些框架和库奏效**. 因为是代理来在运行时修改代码的, 这也意味着代理插件开发者事先就要知道 30 | 所要修改的代码是怎么样的. 因此, 在这种探针下通常会有一个已支持的列表清单. 31 | 如 [SkyWalking Java 代理支持列表](../setup/service-agent/java-agent/Supported-list.md). 32 | 33 | - **跨线程可能并非总是奏效**. 如上所述, 每个请求的代码大都运行在一个线程之内, 对于业务代码来说尤其如此. 34 | 但是在其他一些场景下, 它们也会在不同线程下工作, 比如指派任务到其他线程, 任务池, 以及批处理. 35 | 对于一些语言, 可能还提供了协程或类似的概念如 `Goroutine`, 使得开发者可以低开销地来执行异步操作, 36 | 在这些场景下, 自动打点可能会遇到一些问题. 37 | 38 | 所以说自动打点没有什么神秘的, 总而言之就是, 自动打点代理开发者写了一个激活程序, 使得打点的代码 39 | 自动运行, 仅此而已. 40 | 41 | ## 下一步? 42 | 43 | 如果你想了解 SkyWalking 中关于手动打点的库, 参考 [手动打点 SDK](manual-sdk.md) 一节. 44 | 45 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/service-agent.md: -------------------------------------------------------------------------------- 1 | # 服务自动打点代理 2 | 3 | 服务自动打点代理是基于语言的原生代理的一部分, 4 | 这种代理需要依靠某些语言特定的特性, 5 | 通常是一种基于虚拟机的语言. 6 | 7 | ## 自动打点是什么意思? 8 | 9 | 许多用户都是在听到"他们说不需要改一行代码"之后才了解到这些代理的, 10 | SkyWalking 以前也将这种说法放在 README 文档中. 实际上这种说法是既对又错的. 11 | 对于最终用户来说是对的, 他们不需要修改代码(至少在绝大多数情况下). 12 | 但这种说法也是错的, 因为代码实际上还是被修改了, 只是被代理给修改了, 13 | 这种做法通常叫做"在运行时操作代码". 14 | 底层原理就是自动打点代理利用了虚拟机提供的用于修改代码的接口来动态加入打点的代码, 15 | 如通过 `javaagent premain` 来修改 Java 类. 16 | 17 | 此外, 我们说大部分自动打点代理是基于虚拟机的, 但实际上你也可以在编译期构建这样的工具. 18 | 19 | ## 有什么限制? 20 | 21 | 自动打点很好用, 你还可以在编译时进行自动打点而不需要依赖虚拟机特性, 22 | 那么这里有什么限制吗? 23 | 24 | 答案当然是有, 以下就是它们的限制: 25 | 26 | - **进程内传播在大多数情况下成为可能**. 许多高级编程语言(如 Java, .NET)都是用于构建业务系统. 27 | 大部分业务逻辑代码对于每一个请求来说都运行在同一个线程内, 这使得传播是基于线程 ID 的, 以确保上下文是安全的. 28 | 29 | - **仅仅对某些框架和库奏效**. 因为是代理来在运行时修改代码的, 这也意味着代理插件开发者事先就要知道 30 | 所要修改的代码是怎么样的. 因此, 在这种探针下通常会有一个已支持的列表清单. 31 | 如 [SkyWalking Java 代理支持列表](../setup/service-agent/java-agent/Supported-list.md). 32 | 33 | - **跨线程可能并非总是奏效**. 如上所述, 每个请求的代码大都运行在一个线程之内, 对于业务代码来说尤其如此. 34 | 但是在其他一些场景下, 它们也会在不同线程下工作, 比如指派任务到其他线程, 任务池, 以及批处理. 35 | 对于一些语言, 可能还提供了协程或类似的概念如 `Goroutine`, 使得开发者可以低开销地来执行异步操作, 36 | 在这些场景下, 自动打点可能会遇到一些问题. 37 | 38 | 所以说自动打点没有什么神秘的, 总而言之就是, 自动打点代理开发者写了一个激活程序, 使得打点的代码 39 | 自动运行, 仅此而已. 40 | 41 | ## 下一步? 42 | 43 | 如果你想了解 SkyWalking 中关于手动打点的库, 参考 [手动打点 SDK](manual-sdk.md) 一节. 44 | 45 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/service-agent.md: -------------------------------------------------------------------------------- 1 | # 服务自动打点代理 2 | 3 | 服务自动打点代理是基于语言的原生代理的一部分, 4 | 这种代理需要依靠某些语言特定的特性, 5 | 通常是一种基于虚拟机的语言. 6 | 7 | ## 自动打点是什么意思? 8 | 9 | 许多用户都是在听到"他们说不需要改一行代码"之后才了解到这些代理的, 10 | SkyWalking 以前也将这种说法放在 README 文档中. 实际上这种说法是既对又错的. 11 | 对于最终用户来说是对的, 他们不需要修改代码(至少在绝大多数情况下). 12 | 但这种说法也是错的, 因为代码实际上还是被修改了, 只是被代理给修改了, 13 | 这种做法通常叫做"在运行时操作代码". 14 | 底层远离就是自动打点代理利用了虚拟机提供的用于修改代码的接口来动态加入打点的代码, 15 | 如通过 `javaagent premain` 来修改 Java 类. 16 | 17 | 此外, 我们说大部分自动打点代理是基于虚拟机的, 但实际上你也可以在编译期构建这样的工具. 18 | 19 | ## 有什么限制? 20 | 21 | 自动打点很好用, 你还可以在编译时进行自动打点而不需要依赖虚拟机特性, 22 | 那么这里有什么限制吗? 23 | 24 | 答案当然是有, 以下就是它们的限制: 25 | 26 | - **进程内传播在大多数情况下成为可能**. 许多高级编程语言(如 Java, .NET)都是用于构建业务系统. 27 | 大部分业务逻辑代码对于每一个请求来说都运行在同一个线程内, 这使得传播是基于线程 ID 的, 以确保上下文是安全的. 28 | 29 | - **仅仅对某些框架和库奏效**. 因为是代理来在运行时修改代码的, 这也意味着代理插件开发者事先就要知道 30 | 所要修改的代码是怎么样的. 因此, 在这种探针下通常会有一个已支持的列表清单. 31 | 如 [SkyWalking Java 代理支持列表](../setup/service-agent/java-agent/Supported-list.md). 32 | 33 | - **跨线程可能并非总是奏效**. 如上所述, 每个请求的代码大都运行在一个线程之内, 对于业务代码来说尤其如此. 34 | 但是在其他一些场景下, 它们也会在不同线程下工作, 比如指派任务到其他线程, 任务池, 以及批处理. 35 | 对于一些语言, 可能还提供了协程或类似的概念如 `Goroutine`, 使得开发者可以低开销地来执行异步操作, 36 | 在这些场景下, 自动打点可能会遇到一些问题. 37 | 38 | 所以说自动打点没有什么神秘的, 总而言之就是, 自动打点代理开发者写了一个激活程序, 使得打点的代码 39 | 自动运行, 仅此而已. 40 | 41 | ## 下一步? 42 | 43 | 如果你想了解 SkyWalking 中关于手动打点的库, 参考 [手动打点 SDK](manual-sdk.md) 一节. 44 | 45 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/service-agent.md: -------------------------------------------------------------------------------- 1 | # 服务自动打点代理 2 | 3 | 服务自动打点代理是基于语言的原生代理的一部分,这种代理需要依靠某些语言特定的特性, 4 | 通常是一种基于虚拟机的语言. 5 | 6 | ## 自动打点是什么意思? 7 | 8 | 许多用户都是在听到"他们说不需要改一行代码"之后才了解到这些代理的, 9 | SkyWalking 以前也将这种说法放在 README 文档中. 实际上这种说法是既对又错的. 10 | 对于最终用户来说是对的, 他们不需要修改代码(至少在绝大多数情况下). 11 | 但这种说法也是错的, 因为代码实际上还是被修改了, 只是被代理给修改了, 12 | 这种做法通常叫做"在运行时操作代码". 13 | 底层原理就是自动打点代理利用了虚拟机提供的用于修改代码的接口来动态加入打点的代码, 14 | 如通过 `javaagent premain` 来修改 Java 类. 15 | 16 | 此外, 我们说大部分自动打点代理是基于虚拟机的, 但实际上你也可以在编译期构建这样的工具. 17 | 18 | ## 有什么限制? 19 | 20 | 自动打点很好用, 你还可以在编译时进行自动打点而不需要依赖虚拟机特性, 21 | 那么这里有什么限制吗? 22 | 23 | 答案当然是有, 以下就是它们的限制: 24 | 25 | - **进程内传播在大多数情况下成为可能**. 许多高级编程语言(如 Java, .NET)都是用于构建业务系统. 26 | 大部分业务逻辑代码对于每一个请求来说都运行在同一个线程内, 这使得传播是基于线程 ID 的, 以确保上下文是安全的. 27 | 28 | - **仅仅对某些框架和库奏效**. 因为是代理来在运行时修改代码的, 这也意味着代理插件开发者事先就要知道 29 | 所要修改的代码是怎么样的. 因此, 在这种探针下通常会有一个已支持的列表清单. 30 | 如 [SkyWalking Java 代理支持列表](../setup/service-agent/java-agent/Supported-list.md). 31 | 32 | - **跨线程可能并非总是奏效**. 如上所述, 每个请求的代码大都运行在一个线程之内, 对于业务代码来说尤其如此. 33 | 但是在其他一些场景下, 它们也会在不同线程下工作, 比如指派任务到其他线程, 任务池, 以及批处理. 34 | 对于一些语言, 可能还提供了协程或类似的概念如 `Goroutine`, 使得开发者可以低开销地来执行异步操作, 35 | 在这些场景下, 自动打点可能会遇到一些问题. 36 | 37 | 38 | 所以说自动打点没有什么神秘的, 总而言之就是, 自动打点代理开发者写了一个激活程序, 使得打点的代码 39 | 自动运行, 仅此而已. 40 | 41 | ## 下一步? 42 | 43 | 如果你想了解 SkyWalking 中关于手动打点的库, 参考 [手动打点 SDK](manual-sdk.md) 一节. 44 | 45 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/backend-setting-override.md: -------------------------------------------------------------------------------- 1 | # 设置的覆盖 2 | SkyWalking backend支持通过系统属性和环境变量来覆盖的设置。 3 | 你可以覆盖`application.yml`文件中设置。 4 | 5 | ## 系统属性key规则 6 | **ModuleName**.**ProviderName**.**SettingKey**. 7 | 8 | - 事例 9 | 10 | 覆盖设置分区的`restHost` 11 | 12 | ```yaml 13 | core: 14 | default: 15 | restHost: ${SW_CORE_REST_HOST:0.0.0.0} 16 | restPort: ${SW_CORE_REST_PORT:12800} 17 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 18 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 19 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 20 | ``` 21 | 22 | 使用命令行 23 | ``` 24 | -Dcore.default.restHost=172.0.4.12 25 | ``` 26 | 27 | ## 系统环境变量 28 | - 事例 29 | 30 | 通过环境变量覆盖设置分区的`restHost` 31 | 32 | ```yaml 33 | core: 34 | default: 35 | restHost: ${REST_HOST:0.0.0.0} 36 | restPort: ${SW_CORE_REST_PORT:12800} 37 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 38 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 39 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 40 | ``` 41 | 42 | 如果`REST_HOST `存在于你操作系统的环境变量中,并且它的值为`172.0.4.12`, 43 | `restHost`的值就会被重写为`172.0.4.12`,否则就会被设为`0.0.0.0`。 44 | 45 | 顺便说一下,占位符嵌套也支持,比如`${REST_HOST:${ANOTHER_REST_HOST:127.0.0.1}}`。 46 | 在这种情况下,如果`REST_HOST `环境变量不存在,但```REST_ANOTHER_REST_HOSTHOST```环境变量存在并且其值为`172.0.4.12`,此处的`restHost`也会被重写为`172.0.4.12`,否则就会被设为`127.0.0.1`。 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/service-agent/java-agent/Application-toolkit-trace-cross-thread.md: -------------------------------------------------------------------------------- 1 | # 跨线程追踪 2 | * 使用maven或gradle引入toolkit依赖。 3 | ```xml 4 | 5 | org.apache.skywalking 6 | apm-toolkit-trace 7 | ${skywalking.version} 8 | 9 | ``` 10 | 11 | * 用法1 12 | ```java 13 | @TraceCrossThread 14 | public static class MyCallable implements Callable { 15 | @Override 16 | public String call() throws Exception { 17 | return null; 18 | } 19 | } 20 | ... 21 | ExecutorService executorService = Executors.newFixedThreadPool(1); 22 | executorService.submit(new MyCallable()); 23 | ``` 24 | * 用法2 25 | ```java 26 | ExecutorService executorService = Executors.newFixedThreadPool(1); 27 | executorService.submit(CallableWrapper.of(new Callable() { 28 | @Override public String call() throws Exception { 29 | return null; 30 | } 31 | })); 32 | ``` 33 | 或者 34 | ```java 35 | ExecutorService executorService = Executors.newFixedThreadPool(1); 36 | executorService.execute(RunnableWrapper.of(new Runnable() { 37 | @Override public void run() { 38 | //your code 39 | } 40 | })); 41 | ``` 42 | 43 | _仅为示例代码_ -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/backend-setting-override.md: -------------------------------------------------------------------------------- 1 | # 设置的覆盖 2 | SkyWalking backend支持通过系统属性和环境变量来覆盖的设置。 3 | 你可以覆盖`application.yml`文件中设置。 4 | 5 | ## 系统属性key规则 6 | **ModuleName**.**ProviderName**.**SettingKey**. 7 | 8 | - 事例 9 | 10 | 覆盖设置分区的`restHost` 11 | 12 | ```yaml 13 | core: 14 | default: 15 | restHost: ${SW_CORE_REST_HOST:0.0.0.0} 16 | restPort: ${SW_CORE_REST_PORT:12800} 17 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 18 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 19 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 20 | ``` 21 | 22 | 使用命令行 23 | ``` 24 | -Dcore.default.restHost=172.0.4.12 25 | ``` 26 | 27 | ## 系统环境变量 28 | - 事例 29 | 30 | 通过环境变量覆盖设置分区的`restHost` 31 | 32 | ```yaml 33 | core: 34 | default: 35 | restHost: ${REST_HOST:0.0.0.0} 36 | restPort: ${SW_CORE_REST_PORT:12800} 37 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 38 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 39 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 40 | ``` 41 | 42 | 如果`REST_HOST `存在于你操作系统的环境变量中,并且它的值为`172.0.4.12`, 43 | `restHost`的值就会被重写为`172.0.4.12`,否则就会被设为`0.0.0.0`。 44 | 45 | 顺便说一下,占位符嵌套也支持,比如`${REST_HOST:${ANOTHER_REST_HOST:127.0.0.1}}`。 46 | 在这种情况下,如果`REST_HOST `环境变量不存在,但```REST_ANOTHER_REST_HOSTHOST```环境变量存在并且其值为`172.0.4.12`,此处的`restHost`也会被重写为`172.0.4.12`,否则就会被设为`127.0.0.1`。 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/service-agent/java-agent/Application-toolkit-trace-cross-thread.md: -------------------------------------------------------------------------------- 1 | # 跨线程追踪 2 | * 使用maven或gradle引入toolkit依赖。 3 | ```xml 4 | 5 | org.apache.skywalking 6 | apm-toolkit-trace 7 | ${skywalking.version} 8 | 9 | ``` 10 | 11 | * 用法1 12 | ```java 13 | @TraceCrossThread 14 | public static class MyCallable implements Callable { 15 | @Override 16 | public String call() throws Exception { 17 | return null; 18 | } 19 | } 20 | ... 21 | ExecutorService executorService = Executors.newFixedThreadPool(1); 22 | executorService.submit(new MyCallable()); 23 | ``` 24 | * 用法2 25 | ```java 26 | ExecutorService executorService = Executors.newFixedThreadPool(1); 27 | executorService.submit(CallableWrapper.of(new Callable() { 28 | @Override public String call() throws Exception { 29 | return null; 30 | } 31 | })); 32 | ``` 33 | 或者 34 | ```java 35 | ExecutorService executorService = Executors.newFixedThreadPool(1); 36 | executorService.execute(RunnableWrapper.of(new Runnable() { 37 | @Override public void run() { 38 | //your code 39 | } 40 | })); 41 | ``` 42 | 43 | _仅为示例代码_ -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/backend-setting-override.md: -------------------------------------------------------------------------------- 1 | # 设置的覆盖 2 | SkyWalking backend支持通过系统属性和环境变量来覆盖的设置。 3 | 你可以覆盖`application.yml`文件中设置。 4 | 5 | ## 系统属性key规则 6 | **ModuleName**.**ProviderName**.**SettingKey**. 7 | 8 | - 事例 9 | 10 | 覆盖设置分区的`restHost` 11 | 12 | ```yaml 13 | core: 14 | default: 15 | restHost: ${SW_CORE_REST_HOST:0.0.0.0} 16 | restPort: ${SW_CORE_REST_PORT:12800} 17 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 18 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 19 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 20 | ``` 21 | 22 | 使用命令行 23 | ``` 24 | -Dcore.default.restHost=172.0.4.12 25 | ``` 26 | 27 | ## 系统环境变量 28 | - 事例 29 | 30 | 通过环境变量覆盖设置分区的`restHost` 31 | 32 | ```yaml 33 | core: 34 | default: 35 | restHost: ${REST_HOST:0.0.0.0} 36 | restPort: ${SW_CORE_REST_PORT:12800} 37 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 38 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 39 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 40 | ``` 41 | 42 | 如果`REST_HOST `存在于你操作系统的环境变量中,并且它的值为`172.0.4.12`, 43 | `restHost`的值就会被重写为`172.0.4.12`,否则就会被设为`0.0.0.0`。 44 | 45 | 顺便说一下,占位符嵌套也支持,比如`${REST_HOST:${ANOTHER_REST_HOST:127.0.0.1}}`。 46 | 在这种情况下,如果`REST_HOST `环境变量不存在,但```REST_ANOTHER_REST_HOSTHOST```环境变量存在并且其值为`172.0.4.12`,此处的`restHost`也会被重写为`172.0.4.12`,否则就会被设为`127.0.0.1`。 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/README.md: -------------------------------------------------------------------------------- 1 | # 欢迎 2 | **这是 SkyWalking 6 官方文档的中文翻译版, 由社区提供, 欢迎加入我们** 3 | 4 | 在这里你可以了解到所有有关 **SkyWalking** 的架构, 如何部署并使用 SkyWalking, 以及如何基于 SkyWalking 进行开发. 5 | 6 | - [概念与设计](concepts-and-designs/README.md). 概念与设计解释了 SkyWalking 最重要的核心思想. 7 | 如果你想理解这些特性和可视化底层是如何运作的, 你可以从那里开始学习. 8 | - [设置](setup/README.md). 包含了在不同场景下安装 SkyWalking 的教程. 作为一个平台, SkyWalking 提供了几种方式来提供观测能力. 9 | 包括监控以及报警. 10 | - [贡献指南](guides/README.md). 教程是针对 PMC, Committer 和新贡献者. 在这里你可以了解到如何从零进行贡献. 11 | - [协议](protocols/README.md). 协议展示了 Agents/探针和后端的通讯方式. 对于上行遥测数据感兴趣的人, 绝对应该一读. 12 | - [FAQs](FAQ/README.md). 包括了一个清单, 含有已知的设置问题, 如果你遇到什么问题, 请先在那里查找看是否已有解决方案. 13 | 14 | 除此之外, 你还可能对以下链接感兴趣. 15 | 16 | - 最新的发行版本以及较老的发行版本都可以在 [Apache SkyWalking 发行页面](http://skywalking.apache.org/downloads/) 找到. 变更日志可以在 [此处](../CHANGES.md) 查看. 17 | - 你可以在[社区资源目录](https://github.com/OpenSkywalking/Community)找到关于 SkyWalking 在大会上的演讲日程, 线上视频和文章. 18 | 如果你有其他与此相关的资源, 欢迎提交 PR. 19 | - 我们一直在寻找优化文档和代码的帮助, 所以如果你发现了有什么问题, 不要犹豫, [给我们提 Issue](https://github.com/apache/skywalking/issues/new), 20 | 或者, 通过 PR 把你的贡献提交给我们, 帮助我们把 SkyWalking 做得更好. 21 | 22 | --- 23 | 24 | ### 来自 5.x 版本的用户 25 | SkyWalking 5.x 仍然由社区支持. 对于想从 5.x 升级到 6.x 的用户, 你应该要知道有些定义和概念已经改变了. 26 | 27 | 其中改变的最重要的两个概念是 28 | 1. (5.x 中的)应用现在已经改变为 **(6.x 中的)服务** 了, 同时, 应用实例也变为了 **服务实例**. 29 | 1. (5.x 中的)服务改变为 (6.x 中的) **端点(Endpoint)**. 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/README.md: -------------------------------------------------------------------------------- 1 | # 欢迎 2 | **这是 SkyWalking 6 官方文档的中文翻译版, 由社区提供, 欢迎加入我们** 3 | 4 | 在这里你可以了解到所有有关 **SkyWalking** 的架构, 如何部署并使用 SkyWalking, 以及如何基于 SkyWalking 进行开发. 5 | 6 | - [概念与设计](concepts-and-designs/README.md). 概念与设计解释了 SkyWalking 最重要的核心思想. 7 | 如果你想理解这些特性和可视化底层是如何运作的, 你可以从那里开始学习. 8 | - [设置](setup/README.md). 包含了在不同场景下安装 SkyWalking 的教程. 作为一个平台, SkyWalking 提供了几种方式来提供观测能力. 9 | 包括监控以及报警. 10 | - [贡献指南](guides/README.md). 教程是针对 PMC, Committer 和新贡献者. 在这里你可以了解到如何从零进行贡献. 11 | - [协议](protocols/README.md). 协议展示了 Agents/探针和后端的通讯方式. 对于上行遥测数据感兴趣的人, 绝对应该一读. 12 | - [FAQs](FAQ/README.md). 包括了一个清单, 含有已知的设置问题, 如果你遇到什么问题, 请先在那里查找看是否已有解决方案. 13 | 14 | 除此之外, 你还可能对以下链接感兴趣. 15 | 16 | - 最新的发行版本以及较老的发行版本都可以在 [Apache SkyWalking 发行页面](http://skywalking.apache.org/downloads/) 找到. 变更日志可以在 [此处](../CHANGES.md) 查看. 17 | - 你可以在[社区资源目录](https://github.com/OpenSkywalking/Community)找到关于 SkyWalking 在大会上的演讲日程, 线上视频和文章. 18 | 如果你有其他与此相关的资源, 欢迎提交 PR. 19 | - 我们一直在寻找优化文档和代码的帮助, 所以如果你发现了有什么问题, 不要犹豫, [给我们提 Issue](https://github.com/apache/skywalking/issues/new), 20 | 或者, 通过 PR 把你的贡献提交给我们, 帮助我们把 SkyWalking 做得更好. 21 | 22 | --- 23 | 24 | ### 来自 5.x 版本的用户 25 | SkyWalking 5.x 仍然由社区支持. 对于想从 5.x 升级到 6.x 的用户, 你应该要知道有些定义和概念已经改变了. 26 | 27 | 其中改变的最重要的两个概念是 28 | 1. (5.x 中的)应用现在已经改变为 **(6.x 中的)服务** 了, 同时, 应用实例也变为了 **服务实例**. 29 | 1. (5.x 中的)服务改变为 (6.x 中的) **端点(Endpoint)**. 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/README.md: -------------------------------------------------------------------------------- 1 | # 欢迎 2 | **这是 SkyWalking 6 官方文档的中文翻译版, 由社区提供, 欢迎加入我们** 3 | 4 | 在这里你可以了解到所有有关 **SkyWalking** 的架构, 如何部署并使用 SkyWalking, 以及如何基于 SkyWalking 进行开发. 5 | 6 | - [概念与设计](concepts-and-designs/README.md). 概念与设计解释了 SkyWalking 最重要的核心思想. 7 | 如果你想理解这些特性和可视化底层是如何运作的, 你可以从那里开始学习. 8 | - [设置](setup/README.md). 包含了在不同场景下安装 SkyWalking 的教程. 作为一个平台, SkyWalking 提供了几种方式来提供观测能力. 9 | 包括监控以及报警. 10 | - [贡献指南](guides/README.md). 教程是针对 PMC, Committer 和新贡献者. 在这里你可以了解到如何从零进行贡献. 11 | - [协议](protocols/README.md). 协议展示了 Agents/探针和后端的通讯方式. 对于上行遥测数据感兴趣的人, 绝对应该一读. 12 | - [FAQs](FAQ/README.md). 包括了一个清单, 含有已知的设置问题, 如果你遇到什么问题, 请先在那里查找看是否已有解决方案. 13 | 14 | 除此之外, 你还可能对以下链接感兴趣. 15 | 16 | - 最新的发行版本以及较老的发行版本都可以在 [Apache SkyWalking 发行页面](http://skywalking.apache.org/downloads/) 找到. 变更日志可以在 [此处](../CHANGES.md) 查看. 17 | - 你可以在[社区资源目录](https://github.com/OpenSkywalking/Community)找到关于 SkyWalking 在大会上的演讲日程, 线上视频和文章. 18 | 如果你有其他与此相关的资源, 欢迎提交 PR. 19 | - 我们一直在寻找优化文档和代码的帮助, 所以如果你发现了有什么问题, 不要犹豫, [给我们提 Issue](https://github.com/apache/skywalking/issues/new), 20 | 或者, 通过 PR 把你的贡献提交给我们, 帮助我们把 SkyWalking 做得更好. 21 | 22 | --- 23 | 24 | ### 来自 5.x 版本的用户 25 | SkyWalking 5.x 仍然由社区支持. 对于想从 5.x 升级到 6.x 的用户, 你应该要知道有些定义和概念已经改变了. 26 | 27 | 其中改变的最重要的两个概念是 28 | 1. (5.x 中的)应用现在已经改变为 **(6.x 中的)服务** 了, 同时, 应用实例也变为了 **服务实例**. 29 | 1. (5.x 中的)服务改变为 (6.x 中的) **端点(Endpoint)**. 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/Application-toolkit-trace-cross-thread-CN.md: -------------------------------------------------------------------------------- 1 | # 跨线程追踪 2 | * 使用 maven 和 gradle 依赖相应的工具包 3 | ```xml 4 | 5 | org.apache.skywalking 6 | apm-toolkit-trace 7 | ${skywalking.version} 8 | 9 | ``` 10 | 11 | * 使用方式一. 12 | ```java 13 | @TraceCrossThread 14 | public static class MyCallable implements Callable { 15 | @Override 16 | public String call() throws Exception { 17 | return null; 18 | } 19 | } 20 | ... 21 | ExecutorService executorService = Executors.newFixedThreadPool(1); 22 | executorService.submit(new MyCallable()); 23 | ``` 24 | * 使用方式二. 25 | ```java 26 | ExecutorService executorService = Executors.newFixedThreadPool(1); 27 | executorService.submit(CallableWrapper.of(new Callable() { 28 | @Override public String call() throws Exception { 29 | return null; 30 | } 31 | })); 32 | ``` 33 | 或者 34 | ```java 35 | ExecutorService executorService = Executors.newFixedThreadPool(1); 36 | executorService.execute(RunnableWrapper.of(new Runnable() { 37 | @Override public void run() { 38 | //your code 39 | } 40 | })); 41 | ``` 42 | _示例代码,仅供参考_ 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-setting-override.md: -------------------------------------------------------------------------------- 1 | # 设置的覆盖 2 | SkyWalking backend 支持通过系统属性和环境变量来覆盖的设置。 你可以覆盖`application.yml`文件中设置。 3 | 4 | ## 系统属性key规则 5 | **ModuleName**.**ProviderName**.**SettingKey**. 6 | 7 | - 示例 8 | 9 | 覆盖设置分区的 `restHost` 10 | 11 | ```yaml 12 | core: 13 | default: 14 | restHost: ${SW_CORE_REST_HOST:0.0.0.0} 15 | restPort: ${SW_CORE_REST_PORT:12800} 16 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 17 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 18 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 19 | ``` 20 | 21 | 使用命令行 22 | ``` 23 | -Dcore.default.restHost=172.0.4.12 24 | ``` 25 | 26 | ## 系统环境变量 27 | - 示例 28 | 29 | 通过环境变量覆盖设置分区的 `restHost` 30 | 31 | ```yaml 32 | core: 33 | default: 34 | restHost: ${REST_HOST:0.0.0.0} 35 | restPort: ${SW_CORE_REST_PORT:12800} 36 | restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} 37 | gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} 38 | gRPCPort: ${SW_CORE_GRPC_PORT:11800} 39 | ``` 40 | 41 | 如果 `REST_HOST ` 存在于你操作系统的环境变量中,并且它的值为 `172.0.4.12`, 42 | `restHost` 的值就会被重写为 `172.0.4.12`, 否则,就会被设为 `0.0.0.0`. 43 | 44 | 顺便说一下,占位符嵌套也支持,比如 `${REST_HOST:${ANOTHER_REST_HOST:127.0.0.1}}`. 45 | 在这种情况下,如果 `REST_HOST ` 环境变量不存在,但 ```REST_ANOTHER_REST_HOSTHOST``` 46 | 环境变量存在并且其值为 `172.0.4.12`, 此处的 `restHost` 也会被重写为 `172.0.4.12`, 47 | 否则,就会被设为 `127.0.0.1`. 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/grpc-ssl.md: -------------------------------------------------------------------------------- 1 | # OAP server 支持 gPRC SSL 传输 2 | 3 | OAP 通信我们当前使用 gRPC,一个使用协议缓冲区的消息序列化并支持多平台 RPC 框架。gRPC 的好处在于它促进了使用 SSL/TLS 进行身份验证和加密 4 | 数据交换。现在 OAP 支持为 gRPC 接收器启用 SSL 传输。 5 | 6 | 您可以按照以下步骤来启用此特性 7 | 8 | ## Creating SSL/TLS Certificates 创建 SSL/TLS 证书 9 | 10 | 似乎第一步加密生成证书和密钥文件是为通信。我认为在命令行中使用 `openssl` 会非常简单。 11 | 12 | 如果您不熟悉如何生成密钥文件使用这个 [脚本](https://github.com/apache/skywalking/blob/master/tools/TLS/tls_key_generate.sh)。 13 | 14 | 我们需要一下文件: 15 | 16 | - `server.pem` 用于签名和验证公钥的私有 RSA 密钥. 17 | - `server.crt` 用于分发的自签名X.509公钥. 18 | - `ca.crt` 客户端验证服务端证书的证书中心公钥. 19 | 20 | ## 配置 OAP 服务 21 | 22 | 你可以向 `application.yml/core/default` 添加以下配置启用 gRPC SSL 23 | 24 | ```json 25 | gRPCSslEnabled: true 26 | gRPCSslKeyPath: /path/to/server.pem 27 | gRPCSslCertChainPath: /path/to/server.crt 28 | gRPCSslTrustedCAPath: /path/to/ca.crt 29 | ``` 30 | 31 | OAP 服务加载 `gRPCSslKeyPath` 和 `gRPCSslCertChainPath` 来加密通信。 `gRPCSslTrustedCAPath` 帮助 gRPC 客户端在集群模式来验证服务端证书。 32 | 33 | 如果你启用 `sharding-server` 从外部摄取数据,在 `application.yml/receiver-sharing-server/default` 文件中添加如下内容: 34 | 35 | ```json 36 | gRPCSslEnabled: true 37 | gRPCSslKeyPath: /path/to/server.pem 38 | gRPCSslCertChainPath: /path/to/server.crt 39 | ``` 40 | 41 | 因为 `sharding-server` 只从外部接收数据,所以根本不需要 CA 证书。 42 | 43 | 如果你对口 java agent,参考[TLS.md](../service-agent/java-agent/TLS.md)配置 java agent 启用 TLS。 44 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/README.md: -------------------------------------------------------------------------------- 1 | # 安装 2 | 安装过程基于你想要使用哪种探针。如果你对此不了解,请首先阅读[概念与设计](../concepts-and-designs/README.md) 3 | 4 | 5 | **重要:请确保被监控的服务器上的系统时间和OAP服务器上的系统时间是相同的。** 6 | 7 | 8 | ## 下载官方发行版 9 | - 后端和UI、Java agent都是Apache官方发行,你可以在[Apache SkyWalking 下载页](http://skywalking.apache.org/downloads/)找到它们。 10 | 11 | ## 各语言agent 12 | 13 | - [Java agent](service-agent/java-agent/README.md)。介绍了如何将java agent安装到你的服务中,不需要修改任何代码。 14 | 15 | 下面的agent和SDK都与SkyWalking的数据格式、传输协议兼容,但是是由第三方维护。你可以到它们的项目仓库中找到对应的发行版,以及如何使用它们的说明。 16 | - [SkyAPM .NET Core agent](https://github.com/SkyAPM/SkyAPM-dotnet)。可以通过 .NET Core agent的项目文档查看到更详细的信息。 17 | - [SkyAPM Node.js agent](https://github.com/SkyAPM/SkyAPM-nodejs)。可以通过Node.js服务端agent的项目文档查看到更详细的信息。 18 | - [SkyAPM PHP SDK](https://github.com/SkyAPM/SkyAPM-php-sdk)。可以通过PHP agent项目文档查看到更详细的信息。 19 | 20 | ## Service Mesh 21 | - Istio 22 | - [SkyWalking on Istio](istio/README.md)。介绍了如何使用Istio Mixer,并通过适配与SkyWalking一起工作。 23 | 24 | ## Proxy 25 | - [Envoy Proxy](https://www.envoyproxy.io/) 26 | - [从 Engoy 向 SkyWalking 发送指标数据](envoy/README.md)。介绍了如何使用[Metrics 服务](https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/metrics/v2/metrics_service.proto.html)将指标项从Envoy发到SkyWalking。 27 | 28 | ## 安装后端 29 | 从 [后端和 UI 设置文档](backend/backend-ui-setup.md)中可以了解到在不同的场景下如何对后端服务进行配置,以及如何开启高级特性。 30 | 31 | ## 更新历史 32 | 后端、UI和Java agent的更新历史可以在[这里](../../../CHANGES.md)找到。 33 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md: -------------------------------------------------------------------------------- 1 | # SkyWalking 跨进程传播的头部协议 2 | * 版本 3.0 3 | 4 | SkyWalking 更像是一个 APM 系统, 而不是通用的分布式跟踪系统. 5 | 为了提高OAP的分析性能,头文件要比它们复杂得多. 6 | 您可以在其他商业APM系统中找到许多类似的机制。(有些甚至比我们的更复杂) 7 | 8 | ## 摘要 9 | SkyWalking 跨进程传播的头部协议版本 3.0 也被命名为sw8协议,用于上下文传播. 10 | 11 | ### 标准头部项 12 | 标准标头应该是上下文传播的最低要求. 13 | * 头部名称: `sw8`. 14 | * 头部值: 8 个字段,由`-`分割. 头部值的最大长度(默认)应该小于 2k. 15 | 16 | 值格式示例, `XXXXX-XXXXX-XXXX-XXXX` 17 | 18 | #### 值 19 | 头部值包含以下段, 所有字符串类型的值都是 BASE64 编码的. 20 | 21 | - 必须项(s) 22 | 1. 采样(Sample). 0 或 1. 0 表示上下文存在, 但是可以(也很可能)忽略. 1 表示此追踪需要采样并发送到后端. 23 | 2. 追踪标识(Trace Id). 字符串(BASE64 编码). 由 . 分割的三个 long 类型值, 表示此追踪的唯一标识. 24 | 3. 父追踪段 ID(Parent trace segment Id). 字符串(BASE64 编码). 字符串且全局唯一. 25 | 4. 父 Span 标识. 整数. 从 0 开始. 此 Span ID 指向了父追踪段中的 Span. 26 | 5. 父服务. 字符串(BASE64 编码). 长度不应小于或等于50个UTF-8编码的字符. 27 | 6. 父服务实例标识. 字符串(BASE64 编码). 长度不应小于或等于50个UTF-8编码的字符. 28 | 7. 父服务的端点. 字符串(BASE64 编码). 父追踪段中第一个入口span的操作名. 长度不应小于或等于50个UTF-8编码的字符. 29 | 8. 本请求的目标地址. 字符串(BASE64 编码). 客户端用于访问目标服务的网络地址(不一定是 IP + 端口). 30 | 31 | - 示例, 32 | `1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT` 33 | 34 | ### 扩展头部项 35 | 扩展头部项是为高级特性设计的. 它提供了部署在上游和下游服务中的代理之间的交互功能。 36 | * 头部名称: `sw8-x` 37 | * 头部值: 由`-`分割. 字段可扩展. 38 | 39 | #### 值 40 | 当前值包括的字段. 41 | 1. 追踪模式. 空,0或1。默认为空或0。表示在这个上下文中生成的所有span应该跳过分析,`spanObject#skipAnalysis=true`。这个上下文应该在默认情况下传播到上游,除非它在跟踪过程中被更改. -------------------------------------------------------------------------------- /docs/zh/8.0.0/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md: -------------------------------------------------------------------------------- 1 | # SkyWalking 跨进程传播的头部协议 2 | * 版本 3.0 3 | 4 | SkyWalking 更像是一个 APM 系统, 而不是通用的分布式跟踪系统. 5 | 为了提高OAP的分析性能,头文件要比它们复杂得多. 6 | 您可以在其他商业APM系统中找到许多类似的机制。(有些甚至比我们的更复杂) 7 | 8 | ## 摘要 9 | SkyWalking 跨进程传播的头部协议版本 3.0 也被命名为sw8协议,用于上下文传播. 10 | 11 | ### 标准头部项 12 | 标准标头应该是上下文传播的最低要求. 13 | * 头部名称: `sw8`. 14 | * 头部值: 8 个字段,由`-`分割. 头部值的最大长度(默认)应该小于 2k. 15 | 16 | 值格式示例, `XXXXX-XXXXX-XXXX-XXXX` 17 | 18 | #### 值 19 | 头部值包含以下段, 所有字符串类型的值都是 BASE64 编码的. 20 | 21 | - 必须项(s) 22 | 1. 采样(Sample). 0 或 1. 0 表示上下文存在, 但是可以(也很可能)忽略. 1 表示此追踪需要采样并发送到后端. 23 | 2. 追踪标识(Trace Id). 字符串(BASE64 编码). 由 . 分割的三个 long 类型值, 表示此追踪的唯一标识. 24 | 3. 父追踪段 ID(Parent trace segment Id). 字符串(BASE64 编码). 字符串且全局唯一. 25 | 4. 父 Span 标识. 整数. 从 0 开始. 此 Span ID 指向了父追踪段中的 Span. 26 | 5. 父服务. 字符串(BASE64 编码). 长度不应小于或等于50个UTF-8编码的字符. 27 | 6. 父服务实例标识. 字符串(BASE64 编码). 长度不应小于或等于50个UTF-8编码的字符. 28 | 7. 父服务的端点. 字符串(BASE64 编码). 父追踪段中第一个入口span的操作名. 长度不应小于或等于50个UTF-8编码的字符. 29 | 8. 本请求的目标地址. 字符串(BASE64 编码). 客户端用于访问目标服务的网络地址(不一定是 IP + 端口). 30 | 31 | - 示例, 32 | `1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT` 33 | 34 | ### 扩展头部项 35 | 扩展头部项是为高级特性设计的. 它提供了部署在上游和下游服务中的代理之间的交互功能。 36 | * 头部名称: `sw8-x` 37 | * 头部值: 由`-`分割. 字段可扩展. 38 | 39 | #### 值 40 | 当前值包括的字段. 41 | 1. 追踪模式. 空,0或1。默认为空或0。表示在这个上下文中生成的所有span应该跳过分析,`spanObject#skipAnalysis=true`。这个上下文应该在默认情况下传播到上游,除非它在跟踪过程中被更改. -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/envoy/examples/metrics/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | version: "3" 18 | services: 19 | envoy: 20 | image: envoyproxy/envoy-alpine:latest 21 | command: /usr/local/bin/envoy -c /etc/envoy.yaml --service-cluster envoy-proxy 22 | ports: 23 | - 10000:10000 24 | depends_on: 25 | - skywalking 26 | volumes: 27 | - ./envoy.yaml:/etc/envoy.yaml 28 | 29 | skywalking: 30 | image: apache/skywalking-oap-server:latest 31 | volumes: 32 | - ./log4j2.xml:/skywalking/config/log4j2.xml 33 | expose: 34 | - "11800" 35 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/Screenshots.md: -------------------------------------------------------------------------------- 1 | # Agent 2 | 3 | - 总览仪表盘 4 | 5 | 6 | - 应用集群自动发现拓扑图 7 | 8 | 9 | - 服务总览 10 | 11 | 12 | - 进程 (VM) 指标 13 | 14 | 15 | - 端点指标 16 | 17 | 18 | - 追踪 19 | 20 | 21 | 22 | 23 | - 报警 24 | 25 | 26 | # Istio 27 | - 总览仪表盘 28 | 29 | 30 | - 应用集群自动发现拓扑图 31 | 32 | 33 | - 服务总览 34 | 35 | 36 | - 服务实例指标 37 | 38 | 39 | - 端点指标 40 | 41 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/Screenshots.md: -------------------------------------------------------------------------------- 1 | # Agent 2 | 3 | - 总览仪表盘 4 | 5 | 6 | - 应用集群自动发现拓扑图 7 | 8 | 9 | - 服务总览 10 | 11 | 12 | - 进程 (VM) 指标 13 | 14 | 15 | - 端点指标 16 | 17 | 18 | - 追踪 19 | 20 | 21 | 22 | 23 | - 报警 24 | 25 | 26 | # Istio 27 | - 总览仪表盘 28 | 29 | 30 | - 应用集群自动发现拓扑图 31 | 32 | 33 | - 服务总览 34 | 35 | 36 | - 服务实例指标 37 | 38 | 39 | - 端点指标 40 | 41 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/Screenshots.md: -------------------------------------------------------------------------------- 1 | # Agent 2 | 3 | - 总览仪表盘 4 | 5 | 6 | - 应用集群自动发现拓扑图 7 | 8 | 9 | - 服务总览 10 | 11 | 12 | - 进程 (VM) 指标 13 | 14 | 15 | - 端点指标 16 | 17 | 18 | - 追踪 19 | 20 | 21 | 22 | 23 | - 报警 24 | 25 | 26 | # Istio 27 | - 总览仪表盘 28 | 29 | 30 | - 应用集群自动发现拓扑图 31 | 32 | 33 | - 服务总览 34 | 35 | 36 | - 服务实例指标 37 | 38 | 39 | - 端点指标 40 | 41 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/probe-introduction.md: -------------------------------------------------------------------------------- 1 | # 探针简介 2 | 3 | 在 SkyWalking 中, 探针表示集成到目标系统中的代理或 SDK 库, 它负责收集遥测数据, 包括链路追踪和性能指标。根据目标系统的技术栈, 探针可能有差异巨大的方式来达到以上功能. 但从根本上来说都是一样的, 即收集并格式化数据, 并发送到后端。 4 | 5 | 从高层次上来讲, SkyWalking 探针可分为以下三组: 6 | 7 | - **基于语言的原生代理**. 这种类型的代理运行在目标服务的用户空间中, 就像用户代码的一部分一样. 如 SkyWalking Java 代理, 使用 `-javaagent` 命令行参数在运行期间对代码进行操作, `操作` 一词表示修改并注入用户代码. 另一种代理是使用目标库提供的钩子函数或拦截机制. 如你所见, 这些探针是基于特定的语言和库。 8 | 9 | - **服务网格探针**. 服务网格探针从服务网格的 Sidecar 和控制面板收集数据. 在以前, 代理只用作整个集群的入口, 但是有了服务网格和 Sidecar 之后, 我们可以基于此进行观测了。 10 | 11 | - **第三方打点类库**. SkyWalking 也能够接收其他流行的打点库产生的数据格式. SkyWalking 通过分析数据,将数据格式化成自身的链路和度量数据格式. 该功能最初只能接收 Zipkin 的 span 数据. 更多参考[其他追踪系统的接收器](../setup/backend/backend-receivers.md)。 12 | 13 | 你不必同时使用 **基于语言的原生代理** 和 **服务网格探针** ,因为两者都收集指标数据,否则你的系统就要承受双倍负载, 且分析数量会翻倍. 14 | 15 | 有如下几种推荐的方式来使用探针: 16 | 17 | 1. 只使用 **基于语言的原生代理**. 18 | 2. 只使用 **第三方打点库**, 如 Zipkin 打点系统. 19 | 3. 只使用 **服务网格探针**. 20 | 4. 使用 **服务网格探针**, 配合 **语言原生代理** 或 **第三方打点库**, 来 **追踪状态** . (高级用法) 21 | 22 | 另外,让我们举例说明什么是 **追踪状态**? 23 | 24 | 默认情况下, **基于语言的原生代理** 和 **第三方打点库** 都会发送分布式追踪数据到后台, 后者分析/聚合这些追踪数据. **追踪状态**意味着, 后端把这些追踪数据看作是日志一类的事情, 仅仅将他们保存下来, 并且在追踪和指标之间建立联系, 比如 `这个追踪数据属于哪个入口哪个服务?` 。 25 | 26 | ## 下一步 27 | 28 | - 学习 SkyWalking 如何支持探针,参考[服务自动打点代理](service-agent.md), [手动打点 SDK](manual-sdk.md), [服务网格探针](service-mesh-probe.md)以及[Zipkin 接收器](trace-receiver.md)文档。 29 | - 理解了探针之后, 阅读[后端概览](backend-overview.md) 理解如何分析及持久化数据。 30 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/probe-introduction.md: -------------------------------------------------------------------------------- 1 | # 探针简介 2 | 3 | 在 SkyWalking 中, 探针表示集成到目标系统中的代理或 SDK 库, 它负责收集遥测数据, 包括链路追踪和性能指标. 4 | 根据目标系统的技术栈, 探针可能有差异巨大的方式来达到以上功能. 但从根本上来说都是一样的, 即收集并格式化数据, 5 | 并发送到后端. 6 | 7 | 从高层次上来讲, SkyWalking 探针可分为以下三组. 8 | 9 | - **基于语言的原生代理**. 这种类型的代理运行在目标服务的用户空间中, 就像用户代码的一部分一样, 10 | 如 SkyWalking Java 代理, 使用 `-javaagent` 命令行参数在运行期间对代码进行操作, **操作**一词表示修改并 11 | 注入用户代码. 另一种代理是使用目标库提供的钩子函数或拦截机制. 如你所见, 这些探针是基于特定的语言和库的. 12 | 13 | - **服务网格探针**. 服务网格探针从服务网格的 Sidecar 和控制面板收集数据. 在以前, 代理只用作整个集群的入口, 14 | 但是有了服务网格和 Sidecar 之后, 我们可以基于此进行观测了. 15 | 16 | - **第三方打点类库**. SkyWalking 也能够接收其他流行的打点库产生的数据格式, SkyWalking 通过分析数据, 17 | 将数据格式化成自身的数据格式. 该功能最初只能接收 Zipkin 的跨度数据, 18 | 参考[其他追踪系统的接收器](../setup/backend/backend-receivers.md)了解更多. 19 | 20 | 因为**基于语言的原生代理**和**服务网格探针**的功能都是收集指标数据, 你不必同时使用两者, 否则你的系统就要承受 21 | 双倍负载, 且分析数据结构会翻倍. 22 | 23 | 有如下几种推荐的方式来使用探针: 24 | 1. 只使用**基于语言的原生代理**. 25 | 2. 只使用**第三方打点库**, 如 Zipkin 打点系统. 26 | 3. 只使用**服务网格探针**. 27 | 4. 使用**服务网格探针**, 配合**语言原生代理**或**第三方打点库**, 来**追踪状态**. (高级用法) 28 | 让我们举例说明什么是**追踪状态** 29 | 30 | 默认情况下, **基于语言的原生代理**和**第三方打点库**都会发送分布式追踪数据到后台, 后者分析/聚合这些追踪数据. 31 | **追踪状态**意味着, 后端把这些追踪数据看作是日志, 仅仅将他们保存下来, 并且在追踪和指标之间建立联系, 32 | 比如"这个追踪数据属于哪个入口哪个服务?". 33 | 34 | ## 下一步 35 | 36 | - 在[服务自动打点代理](service-agent.md), [服务网格探针](service-mesh-probe.md) 37 | 以及[Zipkin 接收器](trace-receiver.md)中学习 SkyWalking 支持的探针. 38 | - 理解了探针之后, 阅读[后端概览](backend-overview.md)理解如何分析及持久化数据. 39 | 40 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/probe-introduction.md: -------------------------------------------------------------------------------- 1 | # 探针简介 2 | 3 | 在 SkyWalking 中, 探针表示集成到目标系统中的代理或 SDK 库, 它负责收集遥测数据, 包括链路追踪和性能指标. 4 | 根据目标系统的技术栈, 探针可能有差异巨大的方式来达到以上功能. 但从根本上来说都是一样的, 即收集并格式化数据, 5 | 并发送到后端. 6 | 7 | 从高层次上来讲, SkyWalking 探针可分为以下三组. 8 | 9 | - **基于语言的原生代理**. 这种类型的代理运行在目标服务的用户空间中, 就像用户代码的一部分一样, 10 | 如 SkyWalking Java 代理, 使用 `-javaagent` 命令行参数在运行期间对代码进行操作, **操作**一词表示修改并 11 | 注入用户代码. 另一种代理是使用目标库提供的钩子函数或拦截机制. 如你所见, 这些探针是基于特定的语言和库的. 12 | 13 | - **服务网格探针**. 服务网格探针从服务网格的 Sidecar 和控制面板收集数据. 在以前, 代理只用作整个集群的入口, 14 | 但是有了服务网格和 Sidecar 之后, 我们可以基于此进行观测了. 15 | 16 | - **第三方打点类库**. SkyWalking 也能够接收其他流行的打点库产生的数据格式, SkyWalking 通过分析数据, 17 | 将数据格式化成自身的数据格式. 该功能最初只能接收 Zipkin 的跨度数据, 18 | 参考[其他追踪系统的接收器](../setup/backend/backend-receivers.md)了解更多. 19 | 20 | 因为**基于语言的原生代理**和**服务网格探针**的功能都是收集指标数据, 你不必同时使用两者, 否则你的系统就要承受 21 | 双倍负载, 且分析数据结构会翻倍. 22 | 23 | 有如下几种推荐的方式来使用探针: 24 | 1. 只使用**基于语言的原生代理**. 25 | 2. 只使用**第三方打点库**, 如 Zipkin 打点系统. 26 | 3. 只使用**服务网格探针**. 27 | 4. 使用**服务网格探针**, 配合**语言原生代理**或**第三方打点库**, 来**追踪状态**. (高级用法) 28 | 让我们举例说明什么是**追踪状态** 29 | 30 | 默认情况下, **基于语言的原生代理**和**第三方打点库**都会发送分布式追踪数据到后台, 后者分析/聚合这些追踪数据. 31 | **追踪状态**意味着, 后端把这些追踪数据看作是日志, 仅仅将他们保存下来, 并且在追踪和指标之间建立联系, 32 | 比如"这个追踪数据属于哪个入口哪个服务?". 33 | 34 | ## 下一步 35 | 36 | - 在[服务自动打点代理](service-agent.md), [服务网格探针](service-mesh-probe.md) 37 | 以及[Zipkin 接收器](trace-receiver.md)中学习 SkyWalking 支持的探针. 38 | - 理解了探针之后, 阅读[后端概览](backend-overview.md)理解如何分析及持久化数据. 39 | 40 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/probe-introduction.md: -------------------------------------------------------------------------------- 1 | # 探针简介 2 | 3 | 在 SkyWalking 中, 探针表示集成到目标系统中的代理或 SDK 库, 它负责收集遥测数据, 包括链路追踪和性能指标. 4 | 根据目标系统的技术栈, 探针可能有差异巨大的方式来达到以上功能. 但从根本上来说都是一样的, 即收集并格式化数据, 5 | 并发送到后端. 6 | 7 | 从高层次上来讲, SkyWalking 探针可分为以下三组. 8 | 9 | - **基于语言的原生代理**. 这种类型的代理运行在目标服务的用户空间中, 就像用户代码的一部分一样, 10 | 如 SkyWalking Java 代理, 使用 `-javaagent` 命令行参数在运行期间对代码进行操作, **操作**一词表示修改并 11 | 注入用户代码. 另一种代理是使用目标库提供的钩子函数或拦截机制. 如你所见, 这些探针是基于特定的语言和库的. 12 | 13 | - **服务网格探针**. 服务网格探针从服务网格的 Sidecar 和控制面板收集数据. 在以前, 代理只用作整个集群的入口, 14 | 但是有了服务网格和 Sidecar 之后, 我们可以基于此进行观测了. 15 | 16 | - **第三方打点类库**. SkyWalking 也能够接收其他流行的打点库产生的数据格式, SkyWalking 通过分析数据, 17 | 将数据格式化成自身的数据格式. 该功能最初只能接收 Zipkin 的跨度数据, 18 | 参考[其他追踪系统的接收器](../setup/backend/backend-receivers.md)了解更多. 19 | 20 | 因为**基于语言的原生代理**和**服务网格探针**的功能都是收集指标数据, 你不必同时使用两者, 否则你的系统就要承受 21 | 双倍负载, 且分析数据结构会翻倍. 22 | 23 | 有如下几种推荐的方式来使用探针: 24 | 1. 只使用**基于语言的原生代理**. 25 | 2. 只使用**第三方打点库**, 如 Zipkin 打点系统. 26 | 3. 只使用**服务网格探针**. 27 | 4. 使用**服务网格探针**, 配合**语言原生代理**或**第三方打点库**, 来**追踪状态**. (高级用法) 28 | 让我们举例说明什么是**追踪状态** 29 | 30 | 默认情况下, **基于语言的原生代理**和**第三方打点库**都会发送分布式追踪数据到后台, 后者分析/聚合这些追踪数据. 31 | **追踪状态**意味着, 后端把这些追踪数据看作是日志, 仅仅将他们保存下来, 并且在追踪和指标之间建立联系, 32 | 比如"这个追踪数据属于哪个入口哪个服务?". 33 | 34 | ## 下一步 35 | 36 | - 在[服务自动打点代理](service-agent.md), [服务网格探针](service-mesh-probe.md) 37 | 以及[Zipkin 接收器](trace-receiver.md)中学习 SkyWalking 支持的探针. 38 | - 理解了探针之后, 阅读[后端概览](backend-overview.md)理解如何分析及持久化数据. 39 | 40 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/guides/storage-extention.md: -------------------------------------------------------------------------------- 1 | # 数据存储扩展 2 | 3 | SkyWalking 已经提供了多种存储解决方案. 在本文档中, 您可以学习如何轻松实现新存储. 4 | 5 | ## 定义您的存储提供者 6 | 7 | 1. 定义一个类扩展 `org.apache.skywalking.oap.server.library.module.ModuleProvider`. 8 | 2. 让此存储提供者继承存储模块(`StorageModule`). 9 | 10 | ```java 11 | @Override 12 | public Class module() { 13 | return StorageModule.class; 14 | } 15 | ``` 16 | 17 | ## 实现所有 DAO 接口 18 | 19 | 下面是所有数据存储所需实现的 DAO 接口 20 | 21 | 1. IServiceInventoryCacheDAO 22 | 1. IServiceInstanceInventoryCacheDAO 23 | 1. H2EndpointInventoryCacheDAO 24 | 1. H2NetworkAddressInventoryCacheDAO 25 | 1. IBatchDAO 26 | 1. StorageDAO 27 | 1. IRegisterLockDAO 28 | 1. H2TopologyQueryDAO 29 | 1. IMetricQueryDAO 30 | 1. ITraceQueryDAO 31 | 1. IMetadataQueryDAO 32 | 1. IAggregationQueryDAO 33 | 1. IAlarmQueryDAO 34 | 1. IHistoryDeleteDAO 35 | 36 | ## 注册所有的 service 实现 37 | 38 | 在 `public void prepare()` 方法中, 使用 `this#registerServiceImplementation` 方法去注册绑定您的接口实现. 39 | 40 | ## 实例 41 | 42 | `org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider` 或 `org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider` 就是一个很好的例子. 43 | 44 | ## 重新发布新的数据存储实现 45 | 46 | 您不必为了实现数据存储而克隆主托管库, 您可以轻松地依赖我们的 Apache 版本. 看一下 [OpenSkywalking/SkyWalking-With-Es5x-Storage](https://github.com/OpenSkywalking/SkyWalking-With-Es5x-Storage) 仓库, SkyWalking v6 重新发布 ElasticSearch 5 TCP 链接数据存储的实现. 47 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/guides/storage-extention.md: -------------------------------------------------------------------------------- 1 | # 数据存储扩展 2 | 3 | SkyWalking 已经提供了多种存储解决方案. 在本文档中, 您可以学习如何轻松实现新存储. 4 | 5 | ## 定义您的存储提供者 6 | 7 | 1. 定义一个类扩展 `org.apache.skywalking.oap.server.library.module.ModuleProvider`. 8 | 2. 让此存储提供者继承存储模块(`StorageModule`). 9 | 10 | ```java 11 | @Override 12 | public Class module() { 13 | return StorageModule.class; 14 | } 15 | ``` 16 | 17 | ## 实现所有 DAO 接口 18 | 19 | 下面是所有数据存储所需实现的 DAO 接口 20 | 21 | 1. IServiceInventoryCacheDAO 22 | 1. IServiceInstanceInventoryCacheDAO 23 | 1. IEndpointInventoryCacheDAO 24 | 1. INetworkAddressInventoryCacheDAO 25 | 1. IBatchDAO 26 | 1. StorageDAO 27 | 1. IRegisterLockDAO 28 | 1. ITopologyQueryDAO 29 | 1. IMetricQueryDAO 30 | 1. ITraceQueryDAO 31 | 1. IMetadataQueryDAO 32 | 1. IAggregationQueryDAO 33 | 1. IAlarmQueryDAO 34 | 1. IHistoryDeleteDAO 35 | 36 | ## 注册所有的 service 实现 37 | 38 | 在 `public void prepare()` 方法中, 使用 `this#registerServiceImplementation` 方法去注册绑定您的接口实现. 39 | 40 | ## 实例 41 | 42 | `org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider` 或 `org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider` 就是一个很好的例子. 43 | 44 | ## 重新发布新的数据存储实现 45 | 46 | 您不必为了实现数据存储而克隆主托管库, 您可以轻松地依赖我们的 Apache 发布版本. 看一下 [OpenSkywalking/SkyWalking-With-Es5x-Storage](https://github.com/OpenSkywalking/SkyWalking-With-Es5x-Storage) 仓库, SkyWalking v6 重新发布 ElasticSearch 5 TCP 链接数据存储的实现. 47 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/guides/storage-extention.md: -------------------------------------------------------------------------------- 1 | # 数据存储扩展 2 | 3 | SkyWalking 已经提供了多种存储解决方案. 在本文档中, 您可以学习如何轻松实现新存储. 4 | 5 | ## 定义您的存储提供者 6 | 7 | 1. 定义一个类扩展 `org.apache.skywalking.oap.server.library.module.ModuleProvider`. 8 | 2. 让此存储提供者继承存储模块(`StorageModule`). 9 | 10 | ```java 11 | @Override 12 | public Class module() { 13 | return StorageModule.class; 14 | } 15 | ``` 16 | 17 | ## 实现所有 DAO 接口 18 | 19 | 下面是所有数据存储所需实现的 DAO 接口 20 | 21 | 1. IServiceInventoryCacheDAO 22 | 1. IServiceInstanceInventoryCacheDAO 23 | 1. IEndpointInventoryCacheDAO 24 | 1. INetworkAddressInventoryCacheDAO 25 | 1. IBatchDAO 26 | 1. StorageDAO 27 | 1. IRegisterLockDAO 28 | 1. ITopologyQueryDAO 29 | 1. IMetricQueryDAO 30 | 1. ITraceQueryDAO 31 | 1. IMetadataQueryDAO 32 | 1. IAggregationQueryDAO 33 | 1. IAlarmQueryDAO 34 | 1. IHistoryDeleteDAO 35 | 36 | ## 注册所有的 service 实现 37 | 38 | 在 `public void prepare()` 方法中, 使用 `this#registerServiceImplementation` 方法去注册绑定您的接口实现. 39 | 40 | ## 实例 41 | 42 | `org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider` 或 `org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider` 就是一个很好的例子. 43 | 44 | ## 重新发布新的数据存储实现 45 | 46 | 您不必为了实现数据存储而克隆主托管库, 您可以轻松地依赖我们的 Apache 发布版本. 看一下 [OpenSkywalking/SkyWalking-With-Es5x-Storage](https://github.com/OpenSkywalking/SkyWalking-With-Es5x-Storage) 仓库, SkyWalking v6 重新发布 ElasticSearch 5 TCP 链接数据存储的实现. 47 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/FAQ/README.md: -------------------------------------------------------------------------------- 1 | # 常见问题解答 2 | 下面是一些已知或常见的问题解答。欢迎您贡献自己的问题解答。 3 | 4 | ## 设计 5 | * [为什么SkyWalking体系中没有使用MQ?](why_mq_not_involved.md) 6 | 7 | ## 编译时 8 | * [Protoc plugin在maven build时失败](Protoc-Plugin-Fails-When-Build.md) 9 | * [导入工程到eclipse时,相关项没找到](Import-Project-Eclipse-RequireItems-Exception.md) 10 | * [Maven编译失败 提示 `python2 not found` 错误](maven-compile-npm-failure.md) 11 | 12 | ## Runtime 13 | * [8.x+版本升级](v8-version-upgrade.md) 14 | * [为什么小时和天精度指标(ElasticSearch)在升级到7.x后停止更新?](Hour-Day-Metrics-Stopping.md) 15 | * [6.x版本升级](v6-version-upgrade.md) 16 | * [UI中只有traces?](Why-have-traces-no-others.md) 17 | * [控制台GRPC的日志太多](Too-many-gRPC-logs.md) 18 | * [Kafka消费端trace断裂](kafka-plugin.md) 19 | * [Agent或collector版本升级](v3-version-upgrade.md) 20 | * [EnhanceRequireObjectCache类转换异常](EnhanceRequireObjectCache-Cast-Exception.md) 21 | * [ElasticSearch 服务器性能常见问题, 包括 ERROR CODE:429](ES-Server-FAQ.md) 22 | * [在WebSphere7上安装java探针时,出现IllegalStateException错误](install_agent_on_websphere.md) 23 | * ["FORBIDDEN/12/index read-only / allow delete (api)" appears in the log](https://discuss.elastic.co/t/forbidden-12-index-read-only-allow-delete-api/110282) 24 | * [No data shown and backend replies with "Variable 'serviceId' has coerced Null value for NonNull type 'ID!'"](time-and-timezone.md) 25 | * [6.6.0以后出现**Unexpected endpoint register** 问题](Unexpected-endpoint-register.md) 26 | * [当分析数据不正确时,请使用profile exporter工具提交错误](../guides/backend-profile-export.md) 27 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/concepts-and-designs/project-goals.md: -------------------------------------------------------------------------------- 1 | # 设计目标 2 | 3 | 本文概括 SkyWalking 项目的核心设计目标。 4 | 5 | - **保持可观测性**. 不管目标系统如何部署, SkyWalking 总要提供一种方案或集成方式来保持对目标系统的观测, 基于此, SkyWalking 提供了数种运行时探针。 6 | 7 | - **拓扑结构, 性能指标和追踪一体化**. 理解分布式系统的第一步是通过观察其拓扑结构图. 拓扑图可以将复杂的系统在一张简单的图里面进行可视化展现. 基于拓扑图,运维支撑系统相关人员需要更多关于服务/实例/端点/调用的性能指标. 链路追踪(trace)作为详细的日志, 对于此种性能指标来说很有意义, 如你想知道什么时候端点延时变得很长, 想了解最慢的链路并找出原因. 因此你可以看到, 这些需求都是从大局到细节的, 都缺一不可. SkyWalking 集成并提供了一系列特性来使得这些需求成为可能, 并且使之易于理解. 8 | 9 | - **轻量级**. 有两个方面需要保持轻量级. (1) 探针, 我们通常依赖于网络传输框架, 如 gRPC. 在这种情况下, 探针就应该尽可能小, 防止依赖库冲突以及虚拟机的负载压力(例如 JVM 永久代内存占用压力). (2) 作为一个观测平台, 在你的整个项目环境中只是次要系统, 因此我们使用自己的轻量级框架来构建后端核心服务. 所以你不需要部署并维护大数据相关的平台, SkyWalking 在技术栈方面应该足够简单。 10 | 11 | - **可插拔**. SkyWalking 核心团队提供了许多默认实现, 但这肯定是不够的, 也不可能适用于每一种场景, 因此我们提供了大量的特性来支持可插拔功能。 12 | 13 | - **可移植**. SkyWalking 可以运行在多种环境下, 包括: 14 | (1) 使用传统的注册中心, 如 [Eureka](https://github.com/spring-cloud/spring-cloud-netflix) 15 | (2) 使用包含服务发现的RPC框架,如Spring Cloud, Apache Dubbo 16 | (3) 在现代基础设施中使用服务网 17 | (4) 使用云服务 18 | (5) 跨云部署 19 | 20 | 在所有这些情况下,SkyWalking 应该运行良好 21 | 22 | - **可互操作**. 可观测性是一个庞大的领域, 即使有强大的社区, SkyWalking 不可能支持所有方方面面, 因此 SkyWalking 支持与其他运维支撑系统进行互操作, 主要是探针, 如 Zipkin, Jaeger, OpenTracing 和 OpenCensus. SkyWalking 接收并理解他们的数据格式, 这对于终端用户来说是非常有用的, 因为不需要他们更换已有的库。 23 | 24 | ## 下一步 25 | 26 | - 查看 [探针简介](probe-introduction.md) 理解 SkyWalking 的探针组成. 27 | - 从 [后端概览](backend-overview.md), 你可以理解平台后端接收到探针数据之后做了什么. 28 | - 如果你想自定义用户界面, 请从 [用户界面概览](ui-overview.md) 开始入手. 29 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/concepts-and-designs/project-goals.md: -------------------------------------------------------------------------------- 1 | # 设计目标 2 | 3 | 本文概括 SkyWalking 项目的核心设计目标. 4 | 5 | - **保持可观测性**. 不管目标系统如何部署, SkyWalking 总要提供一种方案或集成方式来保持对目标系统的观测, 6 | 基于此, SkyWalking 提供了数种运行时探针. 7 | - **拓扑结构, 性能指标和追踪一体化**. 理解分布式系统的第一步是通过观察其拓扑结构图. 拓扑图可以将复杂的 8 | 系统在一张简单的图里面进行可视化展现. 运维支撑系统相关人员需要更多关于服务/实例/端点/调用的性能指标. 9 | 链路追踪(trace)作为详细的日志, 对于此种性能指标来说很有意义, 如你想知道什么时候端点延时变得很长, 10 | 想了解最慢的链路并找出原因. 因此你可以看到, 这些需求都是从大局到细节的, 都缺一不可. SkyWalking 集成 11 | 并提供了一系列特性来使得这些需求成为可能, 并且使之易于理解. 12 | - **轻量级**. 有两个方面需要保持轻量级. (1) 探针, 我们通常依赖于网络传输框架, 如 gRPC. 在这种情况下, 13 | 探针就应该尽可能小, 防止依赖库冲突以及虚拟机的负载压力(主要是 JVM 永久代内存占用压力). (2) 作为一个 14 | 观测平台, 在你的整个项目环境中只是次要系统, 因此我们使用自己的轻量级框架来构建后端核心服务. 所以你 15 | 不需要自己部署并维护大数据相关的平台, SkyWalking 在技术栈方面应该足够简单. 16 | - **可插拔**. SkyWalking 核心团队提供了许多默认实现, 但这肯定是不够的, 也不可能适用于每一种场景, 17 | 因此我们提供了大量的特性来支持可插拔功能. 18 | - **可移植**. SkyWalking 可以运行在多种环境下, 包括: 19 | (1) 传统的注册中心, 如 [Eureka](https://github.com/spring-cloud/spring-cloud-netflix). 20 | (2) 带服务自动发现功能的 RPC 框架, 如 Spring Cloud, Apache Dubbo. 21 | (3) 现代基础设施中的服务网格. 22 | (4) 云服务. 23 | (5) 跨云部署. 24 | SkyWalking 在所有这些场景下都应该能够正常工作. 25 | - **可互操作**. 可观测性是一个庞大的领域, 即使有强大的社区, SkyWalking 不可能支持所有方方面面, 因此 26 | SkyWalking 支持与其他运维支撑系统进行互操作, 主要是探针, 如 Zipkin, Jaeger, OpenTracing 和 OpenCensus. 27 | SkyWalking 接收并理解他们的数据格式, 这对于终端用户来说是非常有用的, 因为不需要他们更换已有的库. 28 | 29 | ## 下一步 30 | 31 | - 查看[探针简介](probe-introduction.md)一文, 理解 SkyWalking 的探针组. 32 | - 从[后端概览](backend-overview.md)一文, 你可以理解平台后端接收到探针数据之后做了什么. 33 | - 如果你想自定义用户界面, 请从[用户界面概览](ui-overview.md)一文开始入手. 34 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/concepts-and-designs/project-goals.md: -------------------------------------------------------------------------------- 1 | # 设计目标 2 | 3 | 本文概括 SkyWalking 项目的核心设计目标. 4 | 5 | - **保持可观测性**. 不管目标系统如何部署, SkyWalking 总要提供一种方案或集成方式来保持对目标系统的观测, 6 | 基于此, SkyWalking 提供了数种运行时探针. 7 | - **拓扑结构, 性能指标和追踪一体化**. 理解分布式系统的第一步是通过观察其拓扑结构图. 拓扑图可以将复杂的 8 | 系统在一张简单的图里面进行可视化展现. 运维支撑系统相关人员需要更多关于服务/实例/端点/调用的性能指标. 9 | 链路追踪(trace)作为详细的日志, 对于此种性能指标来说很有意义, 如你想知道什么时候端点延时变得很长, 10 | 想了解最慢的链路并找出原因. 因此你可以看到, 这些需求都是从大局到细节的, 都缺一不可. SkyWalking 集成 11 | 并提供了一系列特性来使得这些需求成为可能, 并且使之易于理解. 12 | - **轻量级**. 有两个方面需要保持轻量级. (1) 探针, 我们通常依赖于网络传输框架, 如 gRPC. 在这种情况下, 13 | 探针就应该尽可能小, 防止依赖库冲突以及虚拟机的负载压力(主要是 JVM 永久代内存占用压力). (2) 作为一个 14 | 观测平台, 在你的整个项目环境中只是次要系统, 因此我们使用自己的轻量级框架来构建后端核心服务. 所以你 15 | 不需要自己部署并维护大数据相关的平台, SkyWalking 在技术栈方面应该足够简单. 16 | - **可插拔**. SkyWalking 核心团队提供了许多默认实现, 但这肯定是不够的, 也不可能适用于每一种场景, 17 | 因此我们提供了大量的特性来支持可插拔功能. 18 | - **可移植**. SkyWalking 可以运行在多种环境下, 包括: 19 | (1) 传统的注册中心, 如 [Eureka](https://github.com/spring-cloud/spring-cloud-netflix). 20 | (2) 带服务自动发现功能的 RPC 框架, 如 Spring Cloud, Apache Dubbo. 21 | (3) 现代基础设施中的服务网格. 22 | (4) 云服务. 23 | (5) 跨云部署. 24 | SkyWalking 在所有这些场景下都应该能够正常工作. 25 | - **可互操作**. 可观测性是一个庞大的领域, 即使有强大的社区, SkyWalking 不可能支持所有方方面面, 因此 26 | SkyWalking 支持与其他运维支撑系统进行互操作, 主要是探针, 如 Zipkin, Jaeger, OpenTracing 和 OpenCensus. 27 | SkyWalking 接收并理解他们的数据格式, 这对于终端用户来说是非常有用的, 因为不需要他们更换已有的库. 28 | 29 | ## 下一步 30 | 31 | - 查看[探针简介](probe-introduction.md)一文, 理解 SkyWalking 的探针组. 32 | - 从[后端概览](backend-overview.md)一文, 你可以理解平台后端接收到探针数据之后做了什么. 33 | - 如果你想自定义用户界面, 请从[用户界面概览](ui-overview.md)一文开始入手. 34 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/concepts-and-designs/project-goals.md: -------------------------------------------------------------------------------- 1 | # 设计目标 2 | 3 | 本文概括 SkyWalking 项目的核心设计目标. 4 | 5 | - **保持可观测性**. 不管目标系统如何部署, SkyWalking 总要提供一种方案或集成方式来保持对目标系统的观测, 6 | 基于此, SkyWalking 提供了数种运行时探针. 7 | - **拓扑结构, 性能指标和追踪一体化**. 理解分布式系统的第一步是通过观察其拓扑结构图. 拓扑图可以将复杂的 8 | 系统在一张简单的图里面进行可视化展现. 运维支撑系统相关人员需要更多关于服务/实例/端点/调用的性能指标. 9 | 链路追踪(trace)作为详细的日志, 对于此种性能指标来说很有意义, 如你想知道什么时候端点延时变得很长, 10 | 想了解最慢的链路并找出原因. 因此你可以看到, 这些需求都是从大局到细节的, 都缺一不可. SkyWalking 集成 11 | 并提供了一系列特性来使得这些需求成为可能, 并且使之易于理解. 12 | - **轻量级**. 有两个方面需要保持轻量级. (1) 探针, 我们通常依赖于网络传输框架, 如 gRPC. 在这种情况下, 13 | 探针就应该尽可能小, 防止依赖库冲突以及虚拟机的负载压力(主要是 JVM 永久代内存占用压力). (2) 作为一个 14 | 观测平台, 在你的整个项目环境中只是次要系统, 因此我们使用自己的轻量级框架来构建后端核心服务. 所以你 15 | 不需要自己部署并维护大数据相关的平台, SkyWalking 在技术栈方面应该足够简单. 16 | - **可插拔**. SkyWalking 核心团队提供了许多默认实现, 但这肯定是不够的, 也不可能适用于每一种场景, 17 | 因此我们提供了大量的特性来支持可插拔功能. 18 | - **可移植**. SkyWalking 可以运行在多种环境下, 包括: 19 | (1) 传统的注册中心, 如 [Eureka](https://github.com/spring-cloud/spring-cloud-netflix). 20 | (2) 带服务自动发现功能的 RPC 框架, 如 Spring Cloud, Apache Dubbo. 21 | (3) 现代基础设施中的服务网格. 22 | (4) 云服务. 23 | (5) 跨云部署. 24 | SkyWalking 在所有这些场景下都应该能够正常工作. 25 | - **可互操作**. 可观测性是一个庞大的领域, 即使有强大的社区, SkyWalking 不可能支持所有方方面面, 因此 26 | SkyWalking 支持与其他运维支撑系统进行互操作, 主要是探针, 如 Zipkin, Jaeger, OpenTracing 和 OpenCensus. 27 | SkyWalking 接收并理解他们的数据格式, 这对于终端用户来说是非常有用的, 因为不需要他们更换已有的库. 28 | 29 | ## 下一步 30 | 31 | - 查看[探针简介](probe-introduction.md)一文, 理解 SkyWalking 的探针组. 32 | - 从[后端概览](backend-overview.md)一文, 你可以理解平台后端接收到探针数据之后做了什么. 33 | - 如果你想自定义用户界面, 请从[用户界面概览](ui-overview.md)一文开始入手. 34 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/guides/storage-extention.md: -------------------------------------------------------------------------------- 1 | # 数据存储扩展 2 | 3 | SkyWalking 已经提供了多种存储解决方案. 在本文档中, 您可以学习如何轻松实现新存储. 4 | 5 | ## 定义您的存储提供者 6 | 7 | 1. 定义一个类扩展 `org.apache.skywalking.oap.server.library.module.ModuleProvider`。 8 | 2. 设置这个提供者为存储模块。 9 | 10 | ```java 11 | @Override 12 | public Class module() { 13 | return StorageModule.class; 14 | } 15 | ``` 16 | 17 | ## 实现所有的 DAOs 18 | 19 | 下面是所有数据存储所需实现的 DAO 接口 20 | 21 | - IServiceInventoryCacheDAO 22 | - IServiceInstanceInventoryCacheDAO 23 | - IEndpointInventoryCacheDAO 24 | - INetworkAddressInventoryCacheDAO 25 | - IBatchDAO 26 | - StorageDAO 27 | - IRegisterLockDAO 28 | - ITopologyQueryDAO 29 | - IMetricsQueryDAO 30 | - ITraceQueryDAO 31 | - IMetadataQueryDAO 32 | - IAggregationQueryDAO 33 | - IAlarmQueryDAO 34 | - IHistoryDeleteDAO 35 | - IMetricsDAO 36 | - IRecordDAO 37 | - IRegisterDAO 38 | - ILogQueryDAO 39 | - ITopNRecordsQueryDAO 40 | 41 | ## 注册所有的 service 实现 42 | 43 | 在 `public void prepare()` 方法中, 使用 `this#registerServiceImplementation` 方法去注册绑定您的接口实现. 44 | 45 | ## 样例 46 | 47 | `org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider` 或 `org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider` 是一个好的例子. 48 | 49 | ## 重新发布新的数据存储实现 50 | 51 | 您不必为了实现数据存储而克隆主托管库, 您可以轻松地依赖我们的 Apache 发布版本. 看一下 [OpenSkywalking/SkyWalking-With-Es5x-Storage](https://github.com/OpenSkywalking/SkyWalking-With-Es5x-Storage) 仓库, SkyWalking v6 重新发布 ElasticSearch 5 TCP 链接数据存储的实现. 52 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/guides/Component-library-settings.md: -------------------------------------------------------------------------------- 1 | # 组件库设置 2 | 3 | 组件库设置文件是关于如何在要监控的应用中使用自有的或第三方库的介绍. 4 | 5 | 在代理或 SDK 中, 无论库名是以 ID 形式还是字符串(文本, 如 SpringMVC)形式进行收集的, 6 | 收集器都会将数据格式化为 ID, 以提供更好的性能和更低的存储需求. 7 | 8 | 同时, 收集器还会根据组件库来推测远程服务类型, 比如: 如果组件库是 MySQL 驱动库, 那么 9 | 收集器则会推测远程服务是一个 MySQL 服务器. 10 | 11 | 基于以上两方面原因, 收集器要求在组件库设置文件中必须要有以下两部分配置: 12 | 1. 组件库 ID, 名称以及语言. 13 | 1. 基于本地库的远程服务器映射. 14 | 15 | **所有组件名称及 ID 都必须在组件库设置文件中定义.** 16 | 17 | ## 组件库 ID 18 | 19 | 组件库 ID 定义了在要监控的应用程序中使用到的所有组件库的名称和 ID 20 | 这是一种双向映射, 代理或 SDK 可以在上行数据中使用 ID 值来代表对应的组件. 21 | 22 | - 名称: 在代理和用户界面中使用的组件名称 23 | - id: 唯一标识. 所有使用过的 ID 在发布后都将会被保留(不可再利用) 24 | - 语言: 编程语言可能使用了这个组件, 如果有多种语言应该使用 `,` 分隔 25 | 26 | ### ID 规则 27 | 28 | - Java 和多种语言共享的: (0, 3000] 29 | - .NET 平台保留: (3000, 4000] 30 | - Node.js 平台保留: (4000, 5000] 31 | - Go 语言保留: (5000, 6000] 32 | - PHP 语言保留: (6000, 7000] 33 | - Python 语言保留: (7000, 8000] 34 | 35 | 示例: 36 | ```yaml 37 | Tomcat: 38 | id: 1 39 | languages: Java 40 | HttpClient: 41 | id: 2 42 | languages: Java,C#,Node.js 43 | Dubbo: 44 | id: 3 45 | languages: Java 46 | H2: 47 | id: 4 48 | languages: Java 49 | ``` 50 | 51 | ## 远程服务器映射 52 | 53 | 远程服务类型会通过本地库进行推断. 此推断映射是基于组件库名称的. 54 | 55 | - 键: 客户端组件库名称 56 | - 值: 服务端组件名称 57 | 58 | ```yaml 59 | Component-Server-Mappings: 60 | Jedis: Redis 61 | StackExchange.Redis: Redis 62 | Redisson: Redis 63 | Lettuce: Redis 64 | Zookeeper: Zookeeper 65 | SqlClient: SqlServer 66 | Npgsql: PostgreSQL 67 | MySqlConnector: Mysql 68 | EntityFrameworkCore.InMemory: InMemoryDatabase 69 | ``` 70 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/guides/Component-library-settings.md: -------------------------------------------------------------------------------- 1 | # 组件库设置 2 | 3 | 组件库设置文件是关于如何在要监控的应用中使用自有的或第三方库的介绍. 4 | 5 | 在代理或 SDK 中, 无论库名是以 ID 形式还是字符串(文本, 如 SpringMVC)形式进行收集的, 6 | 收集器都会将数据格式化为 ID, 以提供更好的性能和更低的存储需求. 7 | 8 | 同时, 收集器还会根据组件库来推测远程服务类型, 比如: 如果组件库是 MySQL 驱动库, 那么 9 | 收集器则会推测远程服务是一个 MySQL 服务器. 10 | 11 | 基于以上两方面原因, 收集器要求在组件库设置文件中必须要有以下两部分配置: 12 | 1. 组件库 ID, 名称以及语言. 13 | 1. 基于本地库的远程服务器映射. 14 | 15 | **所有组件名称及 ID 都必须在组件库设置文件中定义.** 16 | 17 | ## 组件库 ID 18 | 19 | 组件库 ID 定义了在要监控的应用程序中使用到的所有组件库的名称和 ID 20 | 这是一种双向映射, 代理或 SDK 可以在上行数据中使用 ID 值来代表对应的组件. 21 | 22 | - 名称: 在代理和用户界面中使用的组件名称 23 | - id: 唯一标识. 所有使用过的 ID 在发布后都将会被保留(不可再利用) 24 | - 语言: 编程语言可能使用了这个组件, 如果有多种语言应该使用 `,` 分隔 25 | 26 | ### ID 规则 27 | 28 | - Java 和多种语言共享的: (0, 3000] 29 | - .NET 平台保留: (3000, 4000] 30 | - Node.js 平台保留: (4000, 5000] 31 | - Go 语言保留: (5000, 6000] 32 | - PHP 语言保留: (6000, 7000] 33 | - Python 语言保留: (7000, 8000] 34 | 35 | 示例: 36 | ```yaml 37 | Tomcat: 38 | id: 1 39 | languages: Java 40 | HttpClient: 41 | id: 2 42 | languages: Java,C#,Node.js 43 | Dubbo: 44 | id: 3 45 | languages: Java 46 | H2: 47 | id: 4 48 | languages: Java 49 | ``` 50 | 51 | ## 远程服务器映射 52 | 53 | 远程服务类型会通过本地库进行推断. 此推断映射是基于组件库名称的. 54 | 55 | - 键: 客户端组件库名称 56 | - 值: 服务端组件名称 57 | 58 | ```yaml 59 | Component-Server-Mappings: 60 | Jedis: Redis 61 | StackExchange.Redis: Redis 62 | Redisson: Redis 63 | Lettuce: Redis 64 | Zookeeper: Zookeeper 65 | SqlClient: SqlServer 66 | Npgsql: PostgreSQL 67 | MySqlConnector: Mysql 68 | EntityFrameworkCore.InMemory: InMemoryDatabase 69 | ``` 70 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/guides/Component-library-settings.md: -------------------------------------------------------------------------------- 1 | # 组件库设置 2 | 3 | 组件库设置文件是关于如何在要监控的应用中使用自有的或第三方库的介绍. 4 | 5 | 在代理或 SDK 中, 无论库名是以 ID 形式还是字符串(文本, 如 SpringMVC)形式进行收集的, 6 | 收集器都会将数据格式化为 ID, 以提供更好的性能和更低的存储需求. 7 | 8 | 同时, 收集器还会根据组件库来推测远程服务类型, 比如: 如果组件库是 MySQL 驱动库, 那么 9 | 收集器则会推测远程服务是一个 MySQL 服务器. 10 | 11 | 基于以上两方面原因, 收集器要求在组件库设置文件中必须要有以下两部分配置: 12 | 1. 组件库 ID, 名称以及语言. 13 | 1. 基于本地库的远程服务器映射. 14 | 15 | **所有组件名称及 ID 都必须在组件库设置文件中定义.** 16 | 17 | ## 组件库 ID 18 | 19 | 组件库 ID 定义了在要监控的应用程序中使用到的所有组件库的名称和 ID 20 | 这是一种双向映射, 代理或 SDK 可以在上行数据中使用 ID 值来代表对应的组件. 21 | 22 | - 名称: 在代理和用户界面中使用的组件名称 23 | - id: 唯一标识. 所有使用过的 ID 在发布后都将会被保留(不可再利用) 24 | - 语言: 编程语言可能使用了这个组件, 如果有多种语言应该使用 `,` 分隔 25 | 26 | ### ID 规则 27 | 28 | - Java 和多种语言共享的: (0, 3000] 29 | - .NET 平台保留: (3000, 4000] 30 | - Node.js 平台保留: (4000, 5000] 31 | - Go 语言保留: (5000, 6000] 32 | - PHP 语言保留: (6000, 7000] 33 | - Python 语言保留: (7000, 8000] 34 | 35 | 示例: 36 | ```yaml 37 | Tomcat: 38 | id: 1 39 | languages: Java 40 | HttpClient: 41 | id: 2 42 | languages: Java,C#,Node.js 43 | Dubbo: 44 | id: 3 45 | languages: Java 46 | H2: 47 | id: 4 48 | languages: Java 49 | ``` 50 | 51 | ## 远程服务器映射 52 | 53 | 远程服务类型会通过本地库进行推断. 此推断映射是基于组件库名称的. 54 | 55 | - 键: 客户端组件库名称 56 | - 值: 服务端组件名称 57 | 58 | ```yaml 59 | Component-Server-Mappings: 60 | Jedis: Redis 61 | StackExchange.Redis: Redis 62 | Redisson: Redis 63 | Lettuce: Redis 64 | Zookeeper: Zookeeper 65 | SqlClient: SqlServer 66 | Npgsql: PostgreSQL 67 | MySqlConnector: Mysql 68 | EntityFrameworkCore.InMemory: InMemoryDatabase 69 | ``` 70 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/setup/backend/backend-ui-setup.md: -------------------------------------------------------------------------------- 1 | #服务端、UI和CLI设置 2 | 3 | SkyWalking 后端发布包主要分以下几块内容; 4 | 5 | 1. **启动脚本**, `/bin` 目录. 包含linux启动和Windows启动服务和UI的脚本. 6 | 7 | 2. **配置文件**, `/config` 目录. 包含以下配置文件. 8 | * `application.yml` 9 | * `log4j.xml` 10 | * `alarm-settings.yml` 11 | 12 | 3. **引用Jar**, `/oap-libs` 目录. 包含服务端所有依赖的jar包. 13 | 14 | 4. **Webapp相关**, `webapp` 目录. 包含UI界面的jar和 `webapp.yml`的配置文件. 15 | 16 | ## 快速入门 17 | 18 | ### 默认环境 19 | 20 | 需要: **JDK8到JDK12已测试**,其他版本未测试. 21 | 22 | 在看这个之前,希望你知道,快速入门只是是运行Skywalking的Backend和UI来进行预览或演示。在这儿,性能和长期运行不是本章节内容。 23 | 24 | 想部署到product或test等环境查看[部署服务端和界面UI](#部署Backend和UI) 25 | 26 | 你可以通过`bin/startup.sh`(或cmd) 在默认设置下启动Backend和UI,,同时希望你能了解: 27 | 28 | - 默认使用H2存储,这样就不需要部署别的了。 29 | - Backend的gRPC相关的API可访问`0.0.0.0/11800`,rest相关的API可访问`0.0.0.0/12800`。 30 | 31 | 在Java,.NetCore,Node.js, Istio agents/probe中,设置gRPC服务地址为`ip/host:11800`。 32 | (ip/host填写Backend暴露的) 33 | - UI 监听`8080` 端口,同时请求`127.0.0.1/12800`来做GraphQL查询。 34 | 35 | ## 部署服务端和界面UI 36 | 37 | 快速入门后,您应该希望在分布式环境中部署后端和UI。 38 | 在那之前, 你需要知道agent/probe, Backend和UI之间是怎么交互的。 39 | 40 | 41 | 42 | - 所有原生的agents和probes,不管基于何种语言或网格探针,都是使用gRPC服务(`core/default/gRPC*` in `application.yml`) 上报数据给服务端。另外,json格式支持Jetty服务。 43 | - UI 使用GraphQL(HTTP)查询来访问Backend,在Jetty服务中也是(`core/default/rest*` in `application.yml`)。 44 | 45 | 现在,让我们继续来看进行Backend和UI的设置文档。 46 | - [服务端启动](backend-setup.md) 47 | - [界面UI启动](ui-setup.md) 48 | - [CLI设置](https://github.com/apache/skywalking-cli) 49 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/protocols/Trace-Data-Protocol-v3.md: -------------------------------------------------------------------------------- 1 | # 跟踪数据协议v3 2 | 跟踪数据协议描述了SkyWalking代理/探针与后端之间的数据格式。 3 | 4 | ## 总览 5 | 跟踪数据协议是由[gRPC format](https://github.com/apache/skywalking-data-collect-protocol)定义并提供的, 6 | 并且是由 [HTTP 1.1](HTTP-API-Protocol.md)实现的。 7 | 8 | ### 发送服务实例状态 9 | 1. 服务实例属性 10 | 服务实例具有比名称更多的信息, 一旦探针想要发送它,使用 `ManagementService#reportInstanceProperties` 提供字符串键/字符串值对列表作为参数的服务。 11 | 至少发送目标实例的`language`。 12 | 13 | 2. 服务连通 14 | 服务实例应该在后端保持存活。探针应当设置一个任务每分钟使用一次`ManagementService#keepAlive`服务。 15 | 16 | ### 发送跟踪和指标 17 | 拥有服务ID和服务实例ID后,可以发送跟踪和指标。现在我们有 18 | 1. `TraceSegmentReportService#collect` 用于 skywalking 的跟踪格式 19 | 2. `JVMMetricReportService#collect` 用于 skywalking 的JVM格式 20 | 21 | 对于跟踪格式,有一些注意事项 22 | 1. 追踪段是SkyWalking中的一个概念,它应包括单个OS进程中每个请求的所有跨度,通常是基于语言的单个线程。 23 | 2. 跨度有3个不同的类型。 24 | 25 | * 入口跨度(EntrySpan) 26 | EntrySpan代表服务提供商,也是服务器端的端点。作为APM系统,我们的目标是应用服务器。因此,几乎所有服务和MQ消费者都是EntrySpan。 27 | 28 | * 本地跨度(LocalSpan) 29 | LocalSpan代表一种普通的Java方法,与MQ服务生产者/消费者或服务(例如HTTP服务)提供者/消费者都不与远程服务无关。 30 | 31 | * 出口跨度(ExitSpan) 32 | ExitSpan代表服务的客户或MQ生产者,在SkyWalking的早期被称为`LeafSpan`。 33 | 例如:通过JDBC访问DB,读取Redis / Memcached被归类为ExitSpan。 34 | 35 | 3. 跨线程或进程 父信息的跨度称为依赖(Reference)。 依赖 携带 父级请求中的链路ID(trace id), 36 | 追踪段ID(segment id), 跨度ID(span id), 服务名称(service name),服务实例名称(service instance name), 37 | 端点名称(endpoint name) 和 客户端使用的目标地址(target address used at client side)(跨线程不需要) 。 38 | 点击查看 [SkyWalking 跨进程传播的头部协议 V3](Skywalking-Cross-Process-Propagation-Headers-Protocol-v3.md) to get more details. 39 | 40 | 4. `Span#skipAnalysis` 如果此跨度不需要后端分析,则可以为TRUE。 41 | 42 | -------------------------------------------------------------------------------- /docs/zh/5.0.0-beta/FAQ/EnhanceRequireObjectCache-Cast-Exception-CN.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | agent 启动日志出现如下错误,无法将`EnhanceRequireObjectCache`转换为`EnhanceRequireObjectCache`,无法正常上报数据 3 | ```java 4 | ERROR 2018-05-07 21:31:24 InstMethodsInter : class[class org.springframework.web.method.HandlerMethod] after method[getBean] intercept failure 5 | java.lang.ClassCastException: org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache cannot be cast to org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache 6 | at org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor.GetBeanInterceptor.afterMethod(GetBeanInterceptor.java:45) 7 | at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:105) 8 | at org.springframework.web.method.HandlerMethod.getBean(HandlerMethod.java) 9 | at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.shouldApplyTo(AbstractHandlerMethodExceptionResolver.java:47) 10 | at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:131) 11 | at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:76) 12 | ... 13 | ``` 14 | 15 | ### 原因 16 | 此类错误见于开发环境使用了热部署(`spring-boot-devtool`)或者其他类似的工具, `classloader` 变更导致. 17 | ### 解决方法 18 | 1. 此错误不会影响生产环境使用[spring-boot-devtools说明](https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html) 19 | 2. 开发环境如果想正常调试,可以暂时在开发环境去掉此包进行调试. 20 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/backend/metric-exporter.md: -------------------------------------------------------------------------------- 1 | # Metrics Exporter 2 | Skywalking提供基本的,并且最为重要的度量聚合、告警和分析。 3 | 在事件使用时,人们可能希望将数据转发到第三方系统,以便进行更深入的分析或其它任何操作。 4 | **Metrics Exporter**使之成为可能。 5 | 6 | Metrics Exporter是一个独立的模块,您需要手动激活它。 7 | 8 | 目前,我们提供下面这些exporter 9 | 1. gRPC exporter 10 | 11 | ## gRPC exporter 12 | gRPC exporter使用SkyWalking原生的exporter服务定义。下面是proto的定义。 13 | ```proto 14 | service MetricExportService { 15 | rpc export (stream ExportMetricValue) returns (ExportResponse) { 16 | } 17 | 18 | rpc subscription (SubscriptionReq) returns (SubscriptionsResp) { 19 | } 20 | } 21 | 22 | message ExportMetricValue { 23 | string metricName = 1; 24 | string entityName = 2; 25 | string entityId = 3; 26 | ValueType type = 4; 27 | int64 timeBucket = 5; 28 | int64 longValue = 6; 29 | double doubleValue = 7; 30 | } 31 | 32 | message SubscriptionsResp { 33 | repeated string metricNames = 1; 34 | } 35 | 36 | enum ValueType { 37 | LONG = 0; 38 | DOUBLE = 1; 39 | } 40 | 41 | message SubscriptionReq { 42 | 43 | } 44 | 45 | message ExportResponse { 46 | } 47 | ``` 48 | 49 | 要激活这个exporter,你需要把下面的加到你的`application.yml`文件中。 50 | ```yaml 51 | exporter: 52 | grpc: 53 | targetHost: 127.0.0.1 54 | targetPort: 9870 55 | ``` 56 | 57 | - `targetHost`:`targetPort`是期望的目标服务器地址。你可以设置gRPC服务来接收数据。 58 | - 目标gRPC服务需要备份,否则,OAP会启动失败。 59 | 60 | ## 为目标exporter服务 61 | ### 订阅实现 62 | 返回预期的度量名称列表,所有名称都必须与OAL脚本定义匹配。如果要导出所有度量值,则返回空列表。 63 | 64 | ### 导出实现 65 | 流服务,所有订阅的度量将根据OAP核心计划发送到这里。另外,如果OAP部署为集群,此方法同时被调用。对于度量值,您需要根据`#type` 选择`#longValue`或`#doubleValue`。 66 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/setup/envoy/README.md: -------------------------------------------------------------------------------- 1 | # 配置 Envoy 来向 SkyWalking 发送度量指标 2 | 3 | 为了让 Envoy 发送度量指标到 SkyWalking,我们需要给予 Envoy 一些包含 `stats_sinks` 的配置,其中包括 `envoy.metrics_service`。 4 | `envoy.metrics_service` 此配置应该作为 [`config.grpc_service`](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/grpc_service.proto#envoy-api-msg-core-grpcservice) 的一个配置项进行配置。 5 | 6 | 以下配置展示了其中比较有用的某些配置项: 7 | 8 | ```yaml 9 | stats_sinks: 10 | - name: envoy.metrics_service 11 | config: 12 | grpc_service: 13 | # 注意: 我们也可以使用 google_grpc 实现 14 | envoy_grpc: 15 | cluster_name: service_skywalking 16 | 17 | static_resources: 18 | ... 19 | clusters: 20 | - name: service_skywalking 21 | connect_timeout: 5s 22 | type: LOGICAL_DNS 23 | http2_protocol_options: {} 24 | dns_lookup_family: V4_ONLY 25 | lb_policy: ROUND_ROBIN 26 | load_assignment: 27 | cluster_name: service_skywalking 28 | endpoints: 29 | - lb_endpoints: 30 | - endpoint: 31 | address: 32 | socket_address: 33 | address: skywalking 34 | # 这是 SkyWalking 为 Envoy 度量指标的 gRPC 服务流提供服务的端口 35 | port_value: 11800 36 | ``` 37 | 38 | 更完整的静态配置可以在[此处](config.yaml)找到。 39 | 40 | 需要注意的是 Envoy 还可以进行通过 [xDS Protocol](https://github.com/envoyproxy/data-plane-api/blob/master/XDS_PROTOCOL.md) 进行动态配置。 41 | 42 | # 度量指标数据 43 | 44 | Envoy 的一些统计数据列在[这个列表](https://www.envoyproxy.io/docs/envoy/latest/configuration/statistics)中, 45 | 有一个示例数据包含了 identifier ,可以在[此处](identify.json)找到,只包含指标的示例数据可以在[此处](metrics.json)找到. 46 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/setup/backend/metric-exporter.md: -------------------------------------------------------------------------------- 1 | # Metrics Exporter 2 | Skywalking提供基本的,并且最为重要的度量聚合、告警和分析。 3 | 在事件使用时,人们可能希望将数据转发到第三方系统,以便进行更深入的分析或其它任何操作。 4 | **Metrics Exporter**使之成为可能。 5 | 6 | Metrics Exporter是一个独立的模块,您需要手动激活它。 7 | 8 | 目前,我们提供下面这些exporter 9 | 1. gRPC exporter 10 | 11 | ## gRPC exporter 12 | gRPC exporter使用SkyWalking原生的exporter服务定义。下面是proto的定义。 13 | ```proto 14 | service MetricExportService { 15 | rpc export (stream ExportMetricValue) returns (ExportResponse) { 16 | } 17 | 18 | rpc subscription (SubscriptionReq) returns (SubscriptionsResp) { 19 | } 20 | } 21 | 22 | message ExportMetricValue { 23 | string metricName = 1; 24 | string entityName = 2; 25 | string entityId = 3; 26 | ValueType type = 4; 27 | int64 timeBucket = 5; 28 | int64 longValue = 6; 29 | double doubleValue = 7; 30 | } 31 | 32 | message SubscriptionsResp { 33 | repeated string metricNames = 1; 34 | } 35 | 36 | enum ValueType { 37 | LONG = 0; 38 | DOUBLE = 1; 39 | } 40 | 41 | message SubscriptionReq { 42 | 43 | } 44 | 45 | message ExportResponse { 46 | } 47 | ``` 48 | 49 | 要激活这个exporter,你需要把下面的加到你的`application.yml`文件中。 50 | ```yaml 51 | exporter: 52 | grpc: 53 | targetHost: 127.0.0.1 54 | targetPort: 9870 55 | ``` 56 | 57 | - `targetHost`:`targetPort`是期望的目标服务器地址。你可以设置gRPC服务来接收数据。 58 | - 目标gRPC服务需要备份,否则,OAP会启动失败。 59 | 60 | ## 为目标exporter服务 61 | ### 订阅实现 62 | 返回预期的度量名称列表,所有名称都必须与OAL脚本定义匹配。如果要导出所有度量值,则返回空列表。 63 | 64 | ### 导出实现 65 | 流服务,所有订阅的度量将根据OAP核心计划发送到这里。另外,如果OAP部署为集群,此方法同时被调用。对于度量值,您需要根据`#type` 选择`#longValue`或`#doubleValue`。 66 | -------------------------------------------------------------------------------- /docs/zh/6.3.0/setup/backend/metric-exporter.md: -------------------------------------------------------------------------------- 1 | # Metrics Exporter 2 | Skywalking提供基本的,并且最为重要的度量聚合、告警和分析。 3 | 在事件使用时,人们可能希望将数据转发到第三方系统,以便进行更深入的分析或其它任何操作。 4 | **Metrics Exporter**使之成为可能。 5 | 6 | Metrics Exporter是一个独立的模块,您需要手动激活它。 7 | 8 | 目前,我们提供下面这些exporter 9 | 1. gRPC exporter 10 | 11 | ## gRPC exporter 12 | gRPC exporter使用SkyWalking原生的exporter服务定义。下面是proto的定义。 13 | ```proto 14 | service MetricExportService { 15 | rpc export (stream ExportMetricValue) returns (ExportResponse) { 16 | } 17 | 18 | rpc subscription (SubscriptionReq) returns (SubscriptionsResp) { 19 | } 20 | } 21 | 22 | message ExportMetricValue { 23 | string metricName = 1; 24 | string entityName = 2; 25 | string entityId = 3; 26 | ValueType type = 4; 27 | int64 timeBucket = 5; 28 | int64 longValue = 6; 29 | double doubleValue = 7; 30 | } 31 | 32 | message SubscriptionsResp { 33 | repeated string metricNames = 1; 34 | } 35 | 36 | enum ValueType { 37 | LONG = 0; 38 | DOUBLE = 1; 39 | } 40 | 41 | message SubscriptionReq { 42 | 43 | } 44 | 45 | message ExportResponse { 46 | } 47 | ``` 48 | 49 | 要激活这个exporter,你需要把下面的加到你的`application.yml`文件中。 50 | ```yaml 51 | exporter: 52 | grpc: 53 | targetHost: 127.0.0.1 54 | targetPort: 9870 55 | ``` 56 | 57 | - `targetHost`:`targetPort`是期望的目标服务器地址。你可以设置gRPC服务来接收数据。 58 | - 目标gRPC服务需要备份,否则,OAP会启动失败。 59 | 60 | ## 为目标exporter服务 61 | ### 订阅实现 62 | 返回预期的度量名称列表,所有名称都必须与OAL脚本定义匹配。如果要导出所有度量值,则返回空列表。 63 | 64 | ### 导出实现 65 | 流服务,所有订阅的度量将根据OAP核心计划发送到这里。另外,如果OAP部署为集群,此方法同时被调用。对于度量值,您需要根据`#type` 选择`#longValue`或`#doubleValue`。 66 | -------------------------------------------------------------------------------- /docs/zh/8.0.0/guides/Component-library-settings.md: -------------------------------------------------------------------------------- 1 | # 组件库设置 2 | 3 | 组件库设置文件是关于如何在要监控的应用中使用自有的或第三方库的介绍. 4 | 5 | 在代理或 SDK 中, 无论库名是以 ID 形式还是字符串(文本, 如 SpringMVC)形式进行收集的, 6 | 收集器都会将数据格式化为 ID, 以提供更好的性能和更低的存储需求. 7 | 8 | 同时, 收集器还会根据组件库来推测远程服务类型, 比如: 如果组件库是 MySQL 驱动库, 那么 9 | 收集器则会推测远程服务是一个 MySQL 服务器. 10 | 11 | 基于以上两方面原因, 收集器要求在组件库设置文件中必须要有以下两部分配置: 12 | 13 | 1. 组件库 ID, 名称以及语言. 14 | 2. 基于本地库的远程服务器映射. 15 | 16 | **所有组件名称及 ID 都必须在组件库设置文件中定义.** 17 | 18 | ## 组件库 ID 19 | 20 | 组件库 ID 定义了在要监控的应用程序中使用到的所有组件库的名称和 ID 21 | 这是一种双向映射, 代理或 SDK 可以在上行数据中使用 ID 值来代表对应的组件. 22 | 23 | - 名称: 在代理和用户界面中使用的组件名称 24 | - id: 唯一标识. 所有使用过的 ID 在发布后都将会被保留(不可再利用) 25 | - 语言: 编程语言可能使用了这个组件, 如果有多种语言应该使用 `,` 分隔 26 | 27 | ### ID 规则 28 | 29 | - Java 和多种语言共享的: (0, 3000] 30 | - .NET 平台保留: (3000, 4000] 31 | - Node.js 平台保留: (4000, 5000] 32 | - Go 语言保留: (5000, 6000] 33 | - Lua reserved: [6000, 7000) 34 | - Python reserved: [7000, 8000) 35 | - PHP reserved: [8000, 9000) 36 | 37 | 示例: 38 | 39 | ```yaml 40 | Tomcat: 41 | id: 1 42 | languages: Java 43 | HttpClient: 44 | id: 2 45 | languages: Java,C#,Node.js 46 | Dubbo: 47 | id: 3 48 | languages: Java 49 | H2: 50 | id: 4 51 | languages: Java 52 | ``` 53 | 54 | ## 远程服务器映射 55 | 56 | 远程服务类型会通过本地库进行推断. 此推断映射是基于组件库名称的. 57 | 58 | - 键: 客户端组件库名称 59 | - 值: 服务端组件名称 60 | 61 | ```yaml 62 | Component-Server-Mappings: 63 | Jedis: Redis 64 | StackExchange.Redis: Redis 65 | Redisson: Redis 66 | Lettuce: Redis 67 | Zookeeper: Zookeeper 68 | SqlClient: SqlServer 69 | Npgsql: PostgreSQL 70 | MySqlConnector: Mysql 71 | EntityFrameworkCore.InMemory: InMemoryDatabase 72 | ``` 73 | -------------------------------------------------------------------------------- /docs/zh/6.1.0/FAQ/EnhanceRequireObjectCache-Cast-Exception.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | 当你通过agent启动你的应用时,如果发现如下异常,意味着“EnhanceRequireObjectCache”不能强制转换为“EnhanceRequireObjectCache”。例: 3 | ```java 4 | ERROR 2018-05-07 21:31:24 InstMethodsInter : class[class org.springframework.web.method.HandlerMethod] after method[getBean] intercept failure 5 | java.lang.ClassCastException: org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache cannot be cast to org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache 6 | at org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor.GetBeanInterceptor.afterMethod(GetBeanInterceptor.java:45) 7 | at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:105) 8 | at org.springframework.web.method.HandlerMethod.getBean(HandlerMethod.java) 9 | at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.shouldApplyTo(AbstractHandlerMethodExceptionResolver.java:47) 10 | at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:131) 11 | at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:76) 12 | ... 13 | ``` 14 | 15 | ### 原因 16 | 此异常可能由某些热部署工具(`spring-boot-devtool`)或者其它可以在运行时改变`classloader` 的工具导致。 17 | ### 解决方法 18 | 1. 生产环境不会出现此错误是因为开发者工具自动关闭了,详细见[spring-boot-devtools说明](https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html) 19 | 2. 开发环境如果想正常调试,可以暂时把lib路径下的热部署相关的jar包移除。 20 | -------------------------------------------------------------------------------- /docs/zh/6.2.0/FAQ/EnhanceRequireObjectCache-Cast-Exception.md: -------------------------------------------------------------------------------- 1 | ### 现象 2 | 当你通过agent启动你的应用时,如果发现如下异常,意味着“EnhanceRequireObjectCache”不能强制转换为“EnhanceRequireObjectCache”。例: 3 | ```java 4 | ERROR 2018-05-07 21:31:24 InstMethodsInter : class[class org.springframework.web.method.HandlerMethod] after method[getBean] intercept failure 5 | java.lang.ClassCastException: org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache cannot be cast to org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache 6 | at org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor.GetBeanInterceptor.afterMethod(GetBeanInterceptor.java:45) 7 | at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:105) 8 | at org.springframework.web.method.HandlerMethod.getBean(HandlerMethod.java) 9 | at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.shouldApplyTo(AbstractHandlerMethodExceptionResolver.java:47) 10 | at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:131) 11 | at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:76) 12 | ... 13 | ``` 14 | 15 | ### 原因 16 | 此异常可能由某些热部署工具(`spring-boot-devtool`)或者其它可以在运行时改变`classloader` 的工具导致。 17 | ### 解决方法 18 | 1. 生产环境不会出现此错误是因为开发者工具自动关闭了,详细见[spring-boot-devtools说明](https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html) 19 | 2. 开发环境如果想正常调试,可以暂时把lib路径下的热部署相关的jar包移除。 20 | --------------------------------------------------------------------------------