Skip to content

Configuration and environment reference

Configuration precedence is defaults, YAML, then PL2O_ environment variables. Nested YAML dots become double underscores in environment variables. Secrets are environment-only: placing a secret key in YAML is rejected before the exporter starts.

Static phone targets

phone.targets is a YAML map of device IDs to DNS names or addresses. It is an explicit override for Lens internalIp; no LAN discovery or scanning occurs. Use a device ID that identifies the Lens device, and ensure the phone certificate CN matches that device's Lens MAC before credentials are sent.

phone:
  targets:
    <device-id>: phone.example.invalid

Secret environment variables

Set required secrets through the process environment, never in YAML: PL2O_LENS__CLIENT_SECRET, PL2O_PHONE__AUTH__PASSWORD (when phones are enabled), PL2O_OTLP__GRAFANA_CLOUD__TOKEN, and PL2O_PROFILING__PYROSCOPE__BASIC_AUTH_PASSWORD when Pyroscope authentication is used.

KeyTypeDefaultEnvironmentSecretRequiredDescription
cardinality.max_devicesint500PL2O_CARDINALITY__MAX_DEVICESNoOptionalMaximum devices represented by the exporter; must be positive.
collectors.lens_active_callsduration1m0sPL2O_COLLECTORS__LENS_ACTIVE_CALLSNoOptionalPolling interval for Lens active calls.
collectors.lens_cdrduration1h0m0sPL2O_COLLECTORS__LENS_CDRNoOptionalPolling interval for Lens CDR logs.
collectors.lens_devicesduration1m0sPL2O_COLLECTORS__LENS_DEVICESNoOptionalPolling interval for Lens device inventory.
collectors.lens_firmwareduration24h0m0sPL2O_COLLECTORS__LENS_FIRMWARENoOptionalPolling interval for Lens firmware inventory.
collectors.phone_configduration5m0sPL2O_COLLECTORS__PHONE_CONFIGNoOptionalPolling interval for phone configuration.
collectors.phone_linesduration1m0sPL2O_COLLECTORS__PHONE_LINESNoOptionalPolling interval for phone lines.
collectors.phone_statusduration1m0sPL2O_COLLECTORS__PHONE_STATUSNoOptionalPolling interval for phone status.
collectors.selfobs_internalduration1m0sPL2O_COLLECTORS__SELFOBS_INTERNALNoOptionalEmission interval for exporter self-observability.
lens.client_idstring``PL2O_LENS__CLIENT_IDNoRequiredOAuth client identifier.
lens.client_secretstring``PL2O_LENS__CLIENT_SECRETYes (environment only)RequiredOAuth client secret; supply only through the environment.
lens.graphql_urlstringhttps://api.silica-prod01.io.lens.poly.com/graphqlPL2O_LENS__GRAPHQL_URLNoOptionalPoly Lens GraphQL endpoint.
lens.page_sizeint10PL2O_LENS__PAGE_SIZENoOptionalLens page size; validation permits 1 through 5000. Keep the value stable across follow-up pages.
lens.request_timeoutduration30sPL2O_LENS__REQUEST_TIMEOUTNoOptionalTimeout for an individual Lens request.
lens.retry.max_attemptsint4PL2O_LENS__RETRY__MAX_ATTEMPTSNoOptionalMaximum Lens request attempts, including the first attempt.
lens.retry.max_backoffduration30sPL2O_LENS__RETRY__MAX_BACKOFFNoOptionalMaximum Lens retry backoff.
lens.retry.min_backoffduration1sPL2O_LENS__RETRY__MIN_BACKOFFNoOptionalInitial Lens retry backoff.
lens.stream.ack_timeoutduration10sPL2O_LENS__STREAM__ACK_TIMEOUTNoOptionalTime allowed for a deviceStream acknowledgement.
lens.stream.enabledbooltruePL2O_LENS__STREAM__ENABLEDNoOptionalEnable the named deviceStream GraphQL subscription as an edge-triggered supplement to polling.
lens.stream.max_backoffduration1m0sPL2O_LENS__STREAM__MAX_BACKOFFNoOptionalMaximum deviceStream reconnect backoff.
lens.stream.min_backoffduration1sPL2O_LENS__STREAM__MIN_BACKOFFNoOptionalInitial deviceStream reconnect backoff.
lens.tenants[]string[]PL2O_LENS__TENANTSNoOptionalLens tenant IDs to collect. An empty list discovers tenants through the read-only tenants query.
lens.token_urlstringhttps://login.lens.poly.com/oauth/tokenPL2O_LENS__TOKEN_URLNoOptionalOAuth token endpoint for Poly Lens.
lens.websocket_urlstringwss://api.silica-prod01.io.lens.poly.com/graphqlPL2O_LENS__WEBSOCKET_URLNoOptionalPoly Lens GraphQL WebSocket endpoint for deviceStream.
log.formatstringjsonPL2O_LOG__FORMATNoOptionalApplication log encoding.
log.levelstringinfoPL2O_LOG__LEVELNoOptionalApplication log level.
otlp.endpointstring``PL2O_OTLP__ENDPOINTNoRequiredOTLP collector endpoint.
otlp.export_intervalduration15sPL2O_OTLP__EXPORT_INTERVALNoOptionalOTLP metric export interval.
otlp.grafana_cloud.instance_idstring``PL2O_OTLP__GRAFANA_CLOUD__INSTANCE_IDNoRequiredGrafana Cloud instance ID.
otlp.grafana_cloud.tokenstring``PL2O_OTLP__GRAFANA_CLOUD__TOKENYes (environment only)RequiredGrafana Cloud access token; supply only through the environment.
otlp.insecureboolfalsePL2O_OTLP__INSECURENoOptionalAllow an insecure OTLP transport.
otlp.protocolstringhttpPL2O_OTLP__PROTOCOLNoOptionalOTLP transport protocol; validation permits http or grpc.
phone.auth.from_lens_policyboolfalsePL2O_PHONE__AUTH__FROM_LENS_POLICYNoOptionalUse phone credentials from Lens policy where supported.
phone.auth.passwordstring``PL2O_PHONE__AUTH__PASSWORDYes (environment only)Required when phone.enabled is trueDigest authentication password; supply only through the environment when phone collection is enabled.
phone.auth.usernamestringPolycomPL2O_PHONE__AUTH__USERNAMENoOptionalDigest authentication username; Polycom is the default.
phone.config_params[]string[reg.1.address, reg.2.address, reg.1.label, device.syslog.serverName, tcpIpApp.sntp.address, softkey.1.enable]PL2O_PHONE__CONFIG_PARAMSNoOptionalRead-only phone configuration parameters requested by the phone config collector.
phone.enabledbooltruePL2O_PHONE__ENABLEDNoOptionalEnable phone REST collectors. When enabled, phone.auth.password is required.
phone.request_timeoutduration15sPL2O_PHONE__REQUEST_TIMEOUTNoOptionalTimeout for an individual phone REST request.
phone.targetsmap[string]string{}PL2O_PHONE__TARGETSNoOptionalStatic per-device targets. Each overrides that device's Lens internalIp; discovery never scans.
phone.tls.ca_filestring``PL2O_PHONE__TLS__CA_FILENoOptionalOptional CA certificate file for phone TLS verification. The certificate CN must match the Lens MAC before credentials are sent.
phone.tls.verify_chainboolfalsePL2O_PHONE__TLS__VERIFY_CHAINNoOptionalVerify the phone TLS certificate chain.
profiling.pyroscope.applicationstringpolylens2otelPL2O_PROFILING__PYROSCOPE__APPLICATIONNoOptionalPyroscope application name.
profiling.pyroscope.basic_auth_passwordstring``PL2O_PROFILING__PYROSCOPE__BASIC_AUTH_PASSWORDYes (environment only)OptionalPyroscope basic-auth password; supply only through the environment.
profiling.pyroscope.basic_auth_userstring``PL2O_PROFILING__PYROSCOPE__BASIC_AUTH_USERNoOptionalPyroscope basic-auth username.
profiling.pyroscope.endpointstring``PL2O_PROFILING__PYROSCOPE__ENDPOINTNoOptionalPyroscope endpoint. Empty leaves profiling endpoint unset.
state.dirstring/var/lib/polylens2otelPL2O_STATE__DIRNoRequiredDirectory for durable collector state; required and must be writable by the exporter.