Skip to content

Commit

Permalink
Expand README for Apache module (#23)
Browse files Browse the repository at this point in the history
* Add codeowners

Fixes #9

* Fix team names inside codeowners

* Use CODEOWNERS from otel-cpp-contrib

* Update README
  • Loading branch information
TomRoSystems authored May 13, 2021
1 parent a50e7cf commit c3231a9
Showing 1 changed file with 62 additions and 22 deletions.
84 changes: 62 additions & 22 deletions instrumentation/httpd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,73 @@

## Requirements

- httpd (Apache) ver. 2.4.x on Linux (Current release tested only with Ubuntu LTS 18.04 & 20.04)

### Usage

For manual build please check below. Otherwise please use one of the [released versions](/../releases).

### Installation

Mod_otel works as a module which is loaded when Apache starts. It is written in C++ therefore standard library has to be included as well. Below is an example of lines which should be added to your configuration file (usually `/etc/httpd/conf.d` or equivalent):

```
LoadFile /usr/lib/x86_64-linux-gnu/libstdc++.so.6
LoadModule otel_module $SCRIPT_DIR/bazel-out/k8-opt/bin/otel.so
```

Please check that module is loaded correctly with command `apache2ctl configtest`

### Configuration

Below is the list of possible OpenTelemetry directives.

__OpenTelemetryExporter__
Configures exporter to be used. At the moment only one global exporter is allowed for entire daemon. Possible values for this setting are:
- `file` - to export to a file
- `otlp` - to export using the OpenTelemetry Protocol

__OpenTelemetryPath__
This option specifies file to which to export when `file` exporter is used. If no `OpenTelemetryPath` is specified then spans goes to standard error output which is apache error log.

__OpenTelemetryEndpoint__
OpenTelemetryEndpoint specifies where to export spans when OTLP is used. Put hostname and then port. Example value: `host.docker.internal:55680`

__OpenTelemetryBatch__
This directive takes 3 numerical arguments for batch processing:
- Max Queue Size
- Delay (in milliseconds, 1000 = 1s)
- Max Export Batch Size
-
For example `OpenTelemetryBatch 10 5000 5`

__OpenTelemetryPropagators__
OpenTelemetryPropagators sets which context propagator should be used (defaults to none). Currently supported values are:
- `trace-context`
- `b3`
- `b3-multiheader`

__OpenTelemetryIgnoreInbound__
OpenTelemetryIgnoreInbound indicates that we don't trust incoming context. This is a safe default when httpd is an edge server with traffic from Internet. Set it to false only if you run httpd in safe/trusted environment. Possbile values are `on` and `off` (defaults to on).

__OpenTelemetrySetAttribute__
Allows to add extra attribute for each span. It takes two text arguments. For example `OpenTelemetrySetAttribute foo bar`

List of configuration options can be found in [provided configuration file](./opentelemetry.conf)

## Development

### Requirements

- C++11
- [OpenTelemetry-Cpp](https://github.com/open-telemetry/opentelemetry-cpp)
- httpd (Apache) ver. 2.4.x on Linux (Current release tested only with Ubuntu LTS 18.04)
- Bazel 3.7.x

## Build + development

### Build
Build can be done within docker or alternatively check Development section for Ubuntu below. Execute: `make build` to start build process.

After build is successful enable module for httpd (Apache) the `httpd_install_otel.sh` (prepared for Docker Image) script can be used for this.

### Development

For development purposes (to get inside docker) execute `make start` and `make devsh` for each extra terminal.

Build is done with Bazel. Execute: `./build.sh` and it should create file `otel.so` inside `bazel-out/k8-opt/bin` directory.
Expand All @@ -35,7 +89,7 @@ ln -s /mnt/host src

When local changes are made, you need to restart the `httpd` server to load new version of library, to do that: `apachectl stop; ./build.sh && apachectl start`

### Development (Ubuntu)
### Prerequisites (Ubuntu)

On Ubuntu you need packages listed here: [setup_environment.sh](./setup_environment.sh) which are prerequisites to compile opentelemetry-cpp and here: [setup-buildtools.sh](./setup-buildtools.sh) for apache development stuff. Then just execute [bulid.sh](./build.sh).

Expand All @@ -47,23 +101,9 @@ Please make sure that code is well formatted with this command:
./tools/check-formatting.sh
```

when contributing.

### Testing

Integration tests exists in `tests` directory. Please run `run-all.sh` to check functionality.

## Configuration

At the moment only one global exporter is allowed for entire daemon. Include it following way:

```
<IfModule mod_otel.cpp>
OpenTelemetryExporter file
OpenTelemetryPath /tmp/spans
</IfModule>
```

in a master configuration which usually is in `/etc/apache2` directory.

If no `OpenTelemetryPath` is specified then spans goes to standard error output which is apache error log.

More detailed information about configuration options can be found in [provided configuration file](./opentelemetry.conf)

0 comments on commit c3231a9

Please sign in to comment.