Odigos VM Agent reads it’s configuration from /etc/odigos-vmagent/agent.yaml. This file controls the following aspects of the agent:

  • Sources - list of systemd services to auto-instrument.
  • Processors - modify telemetry data before sending it to the destination.
  • Destinations - list of observability backends to send telemetry data to.

An example of the agent.yaml file is shown below:

sources:
  systemd:
    services:
    - service_name: <my-service>
      instrumentation_disabled: false
    ignored_service_names:
    - rsyslog
    - ssh
    - networkd-dispatcher

processors:
- name: addinfo
  type: resource
  config:
    attributes:
    - action: insert
      key: cluster.name
      value: "my-cluster"
  signals:
  - LOGS
  - METRICS
  - TRACES

destinations:
- name: jaeger
  type: jaeger
  config:
    JAEGER_URL: <jaeger-collector-otlp-grpc-endpoint>
  signals:
  - TRACES

Sources

The sources section of the agent.yaml file contains the following fields:

  • systemd - systemd sources configuration.
    • services - configuration of specific systemd services by name.
      • service_name - name of the systemd service. Do not include the .service suffix if present (e.g. my-app instead of my-app.service).
      • instrumentation_disabled (optional) - by default all services in the config are auto-instrumented. Set to false to disable that for a specific service.
    • ignored_service_names - list of systemd services to ignore, useful for excluding os services like ssh, rsyslog, etc.

Processors

The processors section of the agent.yaml file contains a list of OpenTelemetry Collector processors to include in the pipeline. You can read more about it here.

The configuration is a list with the following characteristics:

  • Each entry in the list will be included in the agent OpenTelemetry Collector pipeline. To disable a processor, remove it from the list or turn it into a comment.
  • The processors will be included in the order they are defined in the list. If a processor depends on another, the dependent processor should be defined first.

For each processor, the following fields are configurable:

  • name (optional): Allows you to attach a meaningful name to a processor for convenience. Odigos does not use or assume any meaning from this field.
  • type (require): The type of the processor. This is the name of the processor you want to use, as defined in the OpenTelemetry Collector (batch, attributes, etc).
  • config (optional): A field to pass configuration to the processor. The structure of this field is specific to each processor, and you can find the configuration options for each processor in the OpenTelemetry Collector Contrib codebase.
  • signals (required): An array with the signals that the processor will act on (TRACES, METRICS, LOGS).

Destinations

The destinations section of the agent.yaml file contains an unordered list of observability backends to send telemetry data to.

Each destination has the following fields:

  • name (optional): A name for the destination. This field is not used by Odigos and is only for your convenience.
  • type (required): The type of the destination.
  • config (required): A field with key-value pairs that are specific to the destination type.
  • signals (required): An array with the signals that the destination will export (TRACES, METRICS, LOGS).