---
# System prepended metadata

title: Function tracing sample

---

# 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.

![](https://i.imgur.com/wuQeqLU.png)


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.

![](https://i.imgur.com/NbcIFWT.gif)
