# DACS Receiver

<table><caption class="sr-only">DACS Receiver</caption><thead><tr><th scope="col">Status</th><th scope="col"></th></tr></thead><tbody><tr><td>Stability</td><td>Development</td></tr><tr><td>Telemetry</td><td>Metrics</td></tr></tbody></table>

`dacsreceiver` is a custom OpenTelemetry Collector receiver that scrapes DACS source data from PostgreSQL and SOAP endpoints, normalizes it into metric records, and emits metrics into Collector pipelines.

Supported pipeline types: Metrics

## Getting Started

The following settings are required when the corresponding source is enabled:

-   `postgres.endpoint`: PostgreSQL DSN used by the receiver when `postgres.enabled` is `true`
-   `soap.endpoint`: SOAP endpoint used by the receiver when `soap.enabled` is `true`

The following settings are optional:

-   `postgres.username`: PostgreSQL username override when credentials are not embedded in the DSN
-   `postgres.password`: PostgreSQL password override when credentials are not embedded in the DSN
-   `postgres.collection_interval`: polling interval for PostgreSQL scrapes
-   `postgres.timeout`: timeout for each PostgreSQL scrape
-   `soap.token`: bearer token or shared secret for SOAP requests
-   `soap.collection_interval`: polling interval for SOAP scrapes
-   `soap.timeout`: timeout for each SOAP scrape
-   `cardinality.allowed_attributes`: allowlist for metric attributes preserved by the mapper
-   `cardinality.max_label_length`: maximum label length before truncation

Runtime startup also requires the `pho_license` Collector extension to be enabled and to grant at least one `dacsreceiver` seat.

Example config:

```
receivers:
  dacsreceiver:
    postgres:
      enabled: true
      endpoint: "postgresql://host:5432/dbname"
      username: "${env:DACS_DB_USER}"
      password: "${env:DACS_DB_PASSWORD}"
      collection_interval: 30s
      timeout: 10s
    soap:
      enabled: false
      endpoint: "https://host/path"
      token: "${env:DACS_SOAP_TOKEN}"
      collection_interval: 60s
      timeout: 15s
    cardinality:
      allowed_attributes:
        - deployment.environment.name
        - dacs.source
        - dacs.component
      max_label_length: 120
```
