# Function tracing sample
It is well known that FaaS often blocks some of the underlying implementation for developers in order to allow them to focus on their business code. This makes it difficult to troubleshoot the service system. So we tried to introduce observable capabilities to OpenFunction to improve its usability and stability.
SkyWalking provides solutions for observing and monitoring distributed system, in many different scenarios.
We have now introduced SkyWalking (go2sky) for OpenFunction as a distributed tracing solution for Go language functions. We will demonstrate it in this sample.
## Prerequisites
The design of this sample is the same as sample [with-output-binding](https://github.com/OpenFunction/samples/blob/main/functions/knative/with-output-binding/README.md), but with some minor changes, which we will explain in the process.

Follow [this guide](https://github.com/OpenFunction/samples/blob/main/Prerequisites.md#openfunction) to install OpenFunction.
Follow [this guide](https://github.com/apache/skywalking-kubernetes#apache-skywalking-kubernetes) to install SkyWalking.
Follow [this guide](https://github.com/OpenFunction/samples/blob/main/Prerequisites.md#kafka) to install a Kafka server named `kafka-server` and a Topic named `sample-topic`.
Follow [this guide](https://github.com/OpenFunction/samples/blob/main/Prerequisites.md#registry-credential) to create a registry credential.
## Deployment
First we need to turn on the global tracing configuration for OpenFunction.
> Modify the ConfigMap resource `openfunction-config` in the `openfunction` namespace
>
> Here we assume that the skywalking-opa address in your cluster is `skywalking-opa.default:11800`
```yaml
data:
plugins.tracing: |
enabled: true
provider:
name: "skywalking"
oapServer: "skywalking-oap:11800"
tags:
func: function-with-tracing
layer: faas
tag1: value1
tag2: value2
baggage:
key: "key1"
value: "value1"
```
Then we can follow [this guide](https://github.com/OpenFunction/samples/blob/main/functions/knative/with-output-binding/README.md#deployment) to deploy two functions for demonstrating the tracing effect of the entire link.
Once it's all done, you can observe the flow of entire link on the SkyWalking UI.
