Skip to main content

Installing OpenTelenetry collector on Ubuntu instance

Use Last9's OpenTelemetry endpoint to ingest logs from Ubuntu instances using Otel Collector.

Prerequisites:

There are multiple ways to install the Otel Collector. One possible way is to use the package. Every Collector release includes APK, DEB, and RPM packaging for Linux amd64/arm64/i386 systems.

sudo apt-get update
sudo apt-get -y install wget systemctl
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.110.0/otelcol-contrib_0.110.0_linux_amd64.deb
sudo dpkg -i otelcol-contrib_0.110.0_linux_amd64.deb

More installation options can be found here.

Sample Otel collector Configuration:

The default path for otel config is /etc/otelcol-contrib/config.yaml.

You can edit it and update it using the configuration below. The configuration for operators is essential to extract the timestamp and severity.

For JSON logs, you can use json_parser and use its keys for log attributes. For non-structured logs, use the regex_parser.

The configuration provides a sample example of a JSON parser.

receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318

# Detailed configuration options can be found at https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver
filelog:
# File path to read logs from. You can add multiple files here.
include: [/var/log/app/*.log]
include_file_path: true
operators:
- type: json_parser
- type: severity_parser
parse_from: attributes.level
mapping:
critical: 50
error: 40
warning: 30
info: 20
debug: 10

processors:
transform/add_timestamp:
log_statements:
- context: log
statements:
- set(observed_time, Now())
- set(time, Now())
attributes:
actions:
- key: test.name
value: "jammytest"
action: insert
- key: deployment.environment
value: "production"
action: insert
- key: otel.processed
value: true
action: insert
batch:
timeout: 1s
send_batch_size: 1024

exporters:
debug:
verbosity: detailed
otlp/last9:
endpoint: <last9_otlp_endpoint>
headers:
"Authorization": <last9_auth_header>

service:
pipelines:
logs:
receivers: [filelog]
processors: [attributes, batch, transform/add_timestamp]
exporters: [debug, otlp/last9]

Run the otel collector using systemctl command

sudo systemctl start otelcol-contrib
sudo systemctl status otelcol-contrib
sudo systemctl restart otelcol-contrib

Checking logs of otel collector

sudo journalctl -u otelcol-contrib -f

This will enable logs from the Ubuntu machine to be sent to Last9. To see the data in action, visit the Logs Dashboard.

Troubleshooting

Please get in touch with us on Discord here or Email if you have any questions.