An open API service indexing awesome lists of open source software.

https://github.com/fluent/fluent-otel-proto

Generator of C interfaces for OpenTelemetry protobuf files
https://github.com/fluent/fluent-otel-proto

Last synced: 8 months ago
JSON representation

Generator of C interfaces for OpenTelemetry protobuf files

Awesome Lists containing this project

README

          

# Fluent OTel (OpenTelemetry) Proto files

This projects builds a static library that provides C interfaces for OpenTelemetry proto files data model and also includes some helper utilities.

In the source, the `.proto` files are already included in their `C` version, so here you will find instructions for:

- build this as a static library
- regenerate C interfaces from .proto files

The project exposes the following build options:

## Build static library

To get start just clone this repository

```
git clone https://github.com/fluent/fluent-otel-proto
```

Join the build directory and compile:

```
cd fluent-otel-proto/build
cmake ../
```

By default an example test gets available:

```
examples/test-api

- opentelemetry proto 'common' : found
- opentelemetry proto 'resource': found
- opentelemetry proto 'trace' : found
- opentelemetry proto 'logs' : found
- opentelemetry proto 'metrics' : not found (enable it with -DFLUENT_PROTO_METRICS)
```

> Yes, Metrics are disabled for now.

## Regenerate C files

To regenerate the C files inside this repo, you need to main dependencies or repositories:

- [fluent/protobuf-c](https://github.com/fluent/protobuf-c)
- [open-telemetry/opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-proto)

### Download dependencies

#### 1. Protobuf-c

The repository [fluent/protobuf-c](https://github.com/fluent/protobuf-c) is a fork of the official protobuf-c that includes a small modification to support `options` feature from proto3. This feature is only required by the OpenTelemetry Metrics data model.

Download and install `protobuf-c` by running the following commands:

```
git clone https://github.com/fluent/protobuf-c
cd protobuf-c
./autogen.sh
./configure --prefix=/opt/protobuf-c
make
sudo make install
```

#### 2. OpenTelemetry Proto

Download the main repository with the following command:

```
git clone https://github.com/open-telemetry/opentelemetry-proto
```

#### 3. Clone this repository

```bash
git clone https://github.com/fluent/fluent-otel-proto
```

#### 4. Regenerate C Files

The CMake command will require the following variable definitions to succeed in the C files regeneration:

| Variable name | Description |
| ----------------------- | ------------------------------------------------------------ |
| FLUENT_PROTO_REGENERATE | Enable the C source file regeneration. Disabled by default. |
| PROTOBUF_C_SOURCE_DIR | Absolute path of the directory containing the sources of `protobuf-c` downloaded in Step 1. __NOTE__: this is the source code path, not where the binaries were installed. |
| OTEL_PROTO_DIR | Absolute path of the directory containing the sources of `opentelemetry-proto` downloaded in Step 2. |

In addition, the following build options are available if you desire to enable/disable certain feature:

| Build Option | Description | Default |
| --------------------- | ------------------------------------------------------------ | ------- |
| FLUENT_PROTO_COMMON | Include the regeneration of a C interface for `common.proto` file. | On |
| FLUENT_PROTO_RESOURCE | Include the regeneration of a C interface for `resource.proto` file. | On |
| FLUENT_PROTO_TRACE | Include the regeneration of a C interfaces for `trace.proto` and `trace_service.proto` files. | On |
| FLUENT_PROTO_LOGS | Include the regeneration of a C interfaces for `logs.proto` and `logs_service.proto` files. | On |
| FLUENT_PROTO_METRICS | Include the regeneration of a C interfaces for `metrics.proto` and `metrics_service.proto` files. | Off |

#### 5. Example

Get into this project source code directory:

```bash
cd fluent-otel-proto/build/
```

Run CMake:

```bash
cmake -DFLUENT_PROTO_REGENERATE=ON \
-DPROTOBUF_C_SOURCE_DIR=/tmp/protobuf-c \
-DOTEL_PROTO_DIR=/tmp/opentelemetry-proto \
../
```

now build by running `make` command.