# VisualEdge Receiver

The VisualEdge Receiver monitors a VisualEdge installation on the local host and emits installation, release, and licence information as OpenTelemetry metrics.

<table><caption class="sr-only">VisualEdge Receiver</caption><thead><tr><th scope="col">Property</th><th scope="col">Value</th></tr></thead><tbody><tr><td>Component ID</td><td><code>visualedgereceiver</code></td></tr><tr><td>Type</td><td>Receiver</td></tr><tr><td>Signal</td><td>Metrics</td></tr><tr><td>Availability</td><td>PHO Collector distribution</td></tr></tbody></table>

## Capabilities

-   Reports whether the VisualEdge installation is available.
-   Reports the VisualEdge release version and release time.
-   Reports the installed MosaicOAPI version.
-   Reports the VisualEdge licence end date and remaining days.
-   Provides a bounded status value suitable for dashboards and alerts.

## Prerequisites

-   The Collector must run on the VisualEdge host or have equivalent access to its installation paths.
-   The Collector service account must be able to read the configured directories and files.
-   A PHO licence containing a `visualedgereceiver` entitlement.

## Configuration

<table><caption class="sr-only">Configuration</caption><thead><tr><th scope="col">Setting</th><th scope="col">Required</th><th scope="col">Default</th><th scope="col">Description</th></tr></thead><tbody><tr><td><code>collection_interval</code></td><td>No</td><td><code>30s</code></td><td>Collection frequency</td></tr><tr><td><code>timeout</code></td><td>No</td><td><code>10s</code></td><td>Maximum collection duration</td></tr><tr><td><code>ui_dir</code></td><td>Yes</td><td><code>/opt/VisualEdge/server/webapps/ROOT/VisualEdgeUI</code></td><td>VisualEdge UI installation directory</td></tr><tr><td><code>gui_version_file</code></td><td>Yes</td><td><code>/opt/VisualEdge/server/webapps/ROOT/VisualEdgeUI/VisualEdgeGUIVersion.txt</code></td><td>VisualEdge release-version file</td></tr><tr><td><code>servlet_lib_dir</code></td><td>Yes</td><td><code>/opt/VisualEdge/server/webapps/ROOT/VisualEdgeServlet/WEB-INF/lib</code></td><td>VisualEdge servlet library directory</td></tr><tr><td><code>mosaicoapi_jar</code></td><td>Yes</td><td><code>/opt/VisualEdge/server/webapps/ROOT/VisualEdgeServlet/WEB-INF/lib/MosaicOAPI-jar-with-dependencies.jar</code></td><td>Installed MosaicOAPI package</td></tr><tr><td><code>license_file</code></td><td>Yes</td><td><code>/opt/VisualEdge/licence.txt</code></td><td>VisualEdge licence file</td></tr></tbody></table>

## Example

```
extensions:
  pho_license:
    file: /etc/otelcol/license.json

receivers:
  visualedgereceiver:
    collection_interval: 30s
    timeout: 10s
    ui_dir: /opt/VisualEdge/server/webapps/ROOT/VisualEdgeUI
    gui_version_file: /opt/VisualEdge/server/webapps/ROOT/VisualEdgeUI/VisualEdgeGUIVersion.txt
    servlet_lib_dir: /opt/VisualEdge/server/webapps/ROOT/VisualEdgeServlet/WEB-INF/lib
    mosaicoapi_jar: /opt/VisualEdge/server/webapps/ROOT/VisualEdgeServlet/WEB-INF/lib/MosaicOAPI-jar-with-dependencies.jar
    license_file: /opt/VisualEdge/licence.txt

processors:
  batch: {}

exporters:
  otlp:
    endpoint: telemetry-gateway.example.com:4317

service:
  extensions: [pho_license]
  pipelines:
    metrics:
      receivers: [visualedgereceiver]
      processors: [batch]
      exporters: [otlp]
```

## Telemetry

<table><caption class="sr-only">Telemetry</caption><thead><tr><th scope="col">Metric</th><th scope="col">Unit</th><th scope="col">Description</th></tr></thead><tbody><tr><td><code>visualedge.installation.available</code></td><td><code>1</code></td><td><code>1</code> when the installation is available; otherwise <code>0</code></td></tr><tr><td><code>visualedge.release.info</code></td><td><code>1</code></td><td>VisualEdge version, release time, and MosaicOAPI version</td></tr><tr><td><code>visualedge.licence.info</code></td><td><code>1</code></td><td>VisualEdge licence end-date information</td></tr><tr><td><code>visualedge.licence.days_remaining</code></td><td><code>d</code></td><td>Days remaining before licence expiry</td></tr></tbody></table>

The release metric supplies:

-   `visualedge.release.version`
-   `visualedge.release.time`
-   `visualedge.mosaicoapi.jar.version`

The licence metric supplies `visualedge.licence.end_date`.

## Status values

The `visualedge.status` attribute identifies the collection state:

<table><caption class="sr-only">Status values</caption><thead><tr><th scope="col">Status</th><th scope="col">Meaning</th></tr></thead><tbody><tr><td><code>ok</code></td><td>Installation information was collected successfully</td></tr><tr><td><code>missing_path</code></td><td>A required installation directory is unavailable</td></tr><tr><td><code>missing_file</code></td><td>A required file is unavailable</td></tr><tr><td><code>parse_error</code></td><td>A configured file could not be interpreted</td></tr></tbody></table>

When a required installation directory is unavailable, `visualedge.installation.available` reports `0`. When the installation is available but an individual metadata source cannot be read, the availability metric remains usable and the status identifies the problem.

## Recommended monitoring

-   Alert when `visualedge.installation.available` is `0`.
-   Alert when `visualedge.licence.days_remaining` reaches the organisation’s renewal threshold.
-   Display `visualedge.release.info` in inventory and release-verification dashboards.
-   Group or filter alerts using `visualedge.status`.

## Troubleshooting

<table><caption class="sr-only">Troubleshooting</caption><thead><tr><th scope="col">Symptom</th><th scope="col">Recommended action</th></tr></thead><tbody><tr><td>Installation availability is <code>0</code></td><td>Inspect <code>visualedge.status</code> and verify the configured paths</td></tr><tr><td>Release information is absent</td><td>Confirm the GUI version file and MosaicOAPI package are readable</td></tr><tr><td>Licence days are absent</td><td>Confirm the VisualEdge licence file contains a supported end date</td></tr><tr><td>Receiver fails at startup</td><td>Confirm every configured path is non-empty and the PHO licence grants capacity</td></tr></tbody></table>
