Receiver is a concept in SkyWalking backend. All modules, which are responsible for receiving telemetry or tracing data from other being monitored system, are all being called Receiver. If you are looking for the pull mode, Take a look at fetcher document.
We have following receivers, and default
implementors are provided in our Apache distribution.
metrics_service
and ALS(access log service)
supported by this receiver. OAL script support all GAUGE type metrics.The sample settings of these receivers should be already in default application.yml
, and also list here
receiver-register: selector: ${SW_RECEIVER_REGISTER:default} default: receiver-trace: selector: ${SW_RECEIVER_TRACE:default} default: receiver-jvm: selector: ${SW_RECEIVER_JVM:default} default: service-mesh: selector: ${SW_SERVICE_MESH:default} default: envoy-metric: selector: ${SW_ENVOY_METRIC:default} default: acceptMetricsService: ${SW_ENVOY_METRIC_SERVICE:true} alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:""} receiver_zipkin: selector: ${SW_RECEIVER_ZIPKIN:-} default: host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0} port: ${SW_RECEIVER_ZIPKIN_PORT:9411} contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/} jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1} jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200} jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000} jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0} jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0} receiver-profile: selector: ${SW_RECEIVER_PROFILE:default} default: receiver-browser: selector: ${SW_RECEIVER_BROWSER:default} default: sampleRate: ${SW_RECEIVER_BROWSER_SAMPLE_RATE:10000} receiver-log: selector: ${SW_RECEIVER_LOG:default} default: configuration-discovery: selector: ${SW_CONFIGURATION_DISCOVERY:default} default:
In default, all gRPC/HTTP services should be served at core/gRPC
and core/rest
. But the receiver-sharing-server
module provide a way to make all receivers serving at different ip:port, if you set them explicitly.
receiver-sharing-server: selector: ${SW_RECEIVER_SHARING_SERVER:default} default: host: ${SW_RECEIVER_JETTY_HOST:0.0.0.0} contextPath: ${SW_RECEIVER_JETTY_CONTEXT_PATH:/} authentication: ${SW_AUTHENTICATION:""} jettyMinThreads: ${SW_RECEIVER_SHARING_JETTY_MIN_THREADS:1} jettyMaxThreads: ${SW_RECEIVER_SHARING_JETTY_MAX_THREADS:200} jettyIdleTimeOut: ${SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT:30000} jettyAcceptorPriorityDelta: ${SW_RECEIVER_SHARING_JETTY_DELTA:0} jettyAcceptQueueSize: ${SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE:0}
Notice, if you add these settings, make sure they are not as same as core module, because gRPC/HTTP servers of core are still used for UI and OAP internal communications.
OpenTelemetry receiver supports to ingest agent metrics by meter-system. OAP can load the configuration at bootstrap. If the new configuration is not well-formed, OAP fails to start up. The files are located at $CLASSPATH/otel-<handler>-rules
. Eg, the oc
handler loads fules from $CLASSPATH/otel-oc-rules
,
Supported handlers: * oc
: OpenCensus gRPC service handler.
The rule file should be in YAML format, defined by the scheme described in prometheus-fetcher. Notice, receiver-otel
only support group
, defaultMetricLevel
and metricsRules
nodes of scheme due to the push mode it opts to.
To active the oc
handler and istio
relevant rules:
receiver-otel: selector: ${SW_OTEL_RECEIVER:default} default: enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"oc"} enabledOcRules: ${SW_OTEL_RECEIVER_ENABLED_OC_RULES:"istio-controlplane"}
The receiver adds labels with key = node_identifier_host_name
and key = node_identifier_pid
to the collected data samples, and values from Node.identifier.host_name
and Node.identifier.pid
defined in opencensus agent proto, to be the identification of the metric data.
Rule Name | Description | Configuration File | Data Source |
---|---|---|---|
istio-controlplane | Metrics of Istio control panel | otel-oc-rules/istio-controlplane.yaml | Istio Control Panel -> OpenTelemetry Collector --OC format--> SkyWalking OAP Server |
oap | Metrics of SkyWalking OAP server itself | otel-oc-rules/oap.yaml | SkyWalking OAP Server(SelfObservability) -> OpenTelemetry Collector --OC format--> SkyWalking OAP Server |
vm | Metrics of VMs | otel-oc-rules/vm.yaml | Prometheus node-exporter(VMs) -> OpenTelemetry Collector --OC format--> SkyWalking OAP Server |
Meter receiver supports accept the metrics into the meter-system. OAP can load the configuration at bootstrap.
The file is written in YAML format, defined by the scheme described in backend-meter.
To active the default
implementation:
receiver-meter: selector: ${SW_RECEIVER_METER:default} default:
All following receivers are in the POC stage, not production ready.
Zipkin receiver could work in two different mode.
zipkin-elasticsearch
storage implementation active. Read this to know how to active.Use following config to active.
receiver_zipkin: selector: ${SW_RECEIVER_ZIPKIN:-} default: host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0} port: ${SW_RECEIVER_ZIPKIN_PORT:9411} contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/} jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1} jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200} jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000} jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0} jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0}
Active analysis mode
, you should set needAnalysis
config.
receiver_zipkin: selector: ${SW_RECEIVER_ZIPKIN:-} default: host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0} port: ${SW_RECEIVER_ZIPKIN_PORT:9411} contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/} jettyMinThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MIN_THREADS:1} jettyMaxThreads: ${SW_RECEIVER_ZIPKIN_JETTY_MAX_THREADS:200} jettyIdleTimeOut: ${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000} jettyAcceptorPriorityDelta: ${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0} jettyAcceptQueueSize: ${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0} needAnalysis: true
NOTICE, Zipkin receiver is only provided in apache-skywalking-apm-x.y.z.tar.gz
tar.
Jaeger receiver right now only works in Tracing Mode
, and no analysis. Jaeger receiver provides extra gRPC host/port, if absent, sharing-server host/port will be used, then core gRPC host/port. Receiver requires jaeger-elasticsearch
storage implementation active. Read this to know how to active.
Right now, you need jaeger agent to batch send spans to SkyWalking oap server. Read Jaeger Architecture to get more details.
Active the receiver.
receiver_jaeger: selector: ${SW_RECEIVER_JAEGER:-} default: gRPCHost: ${SW_RECEIVER_JAEGER_HOST:0.0.0.0} gRPCPort: ${SW_RECEIVER_JAEGER_PORT:14250}
NOTICE, Jaeger receiver is only provided in apache-skywalking-apm-x.y.z.tar.gz
tar.