LMC Exporter Installation
Overview
LMC Exporter is distributed as a precompiled application and does not require source compilation by end users.
This article describes:
- Supported runtime environments
- Tar archive installation
- License configuration and validation
- Runtime configuration
- Post-installation validation
- Common troubleshooting steps
Prerequisites
Supported Runtime Platforms
| Platform | Archive platform | Architecture |
|---|---|---|
| Red Hat Enterprise Linux 8 | el8 | x86_64 |
| Red Hat Enterprise Linux 9 | el9 | x86_64 |
Use the archive supplied for your operating system. The examples below use el8; replace it with el9 throughout on Enterprise Linux 9. Do not use either archive on Oracle Linux 7; contact support for platform availability.
Runtime Requirements
The target host must provide:
- Access to the required RTDS installation under an account permitted to read its shared memory
- Matching runtime libraries: libcurl, OpenSSL (1.1 on EL8 or 3 on EL9), the C++ runtime, and standard system libraries
- Access to the appropriate shared-memory environment
- Valid Shared Memory server keys
- A valid local LMC Exporter license, or access and credentials for a licensing Gateway
- Network connectivity for Prometheus scraping when HTTP metrics mode is enabled
LMC Exporter is supplied as a precompiled package. No compiler, source code, build tools, or manual compilation steps are required.
Installation
Obtain and Verify the Distribution Archive
Download the supplied lmc_exporter-v0.19.0-el8-x86_64.tar.gz and its .sha256sum file through your customer distribution channel. Keep both files in the same directory and verify the checksum before extraction:
sha256sum -c lmc_exporter-v0.19.0-el8-x86_64.tar.gz.sha256sum
Extract the Distribution Archive
For a new installation under /opt:
sudo tar -xzf lmc_exporter-v0.19.0-el8-x86_64.tar.gz -C /opt
Do not extract the whole archive over an existing installation: it contains a default configuration. Follow the upgrade procedure to preserve configuration and licensing state.
Archive Structure
particle_horizon/
├── SOFTWARE/
│ └── lmc_exporter-v0.19.0-el8-x86_64/
│ ├── bin/lmc_exporter-el8
│ ├── BUILD_INFO.txt
│ └── licenses/
├── local_config/lmc_exporter/lmc_exporter.toml
├── local_data/lmc_exporter/
├── logs/lmc_exporter/
└── systemd/lmc-exporter.service
Create the active-install link expected by the service and by the examples in this documentation:
sudo ln -s SOFTWARE/lmc_exporter-v0.19.0-el8-x86_64 /opt/particle_horizon/lmc_exporter
/opt/particle_horizon/lmc_exporter/bin/lmc_exporter-el8 --version
The command should report lmc_exporter v0.19.0. If a runtime library is missing, have your system administrator provide the matching platform libraries before continuing.
License Setup and Validation
Create a Configuration File
Edit /opt/particle_horizon/local_config/lmc_exporter/lmc_exporter.toml, supplied in the archive. Replace the example target with your application and shared-memory key. Use absolute paths for licenses and credentials so they work in both terminal and service runs.
Choose a Licensing Mode
Local-file licensing remains the default. Configure the path to the local license:
Update the configuration file with the path to your license key:
license_file = "/opt/particle_horizon/local_data/lmc_exporter/lmc_exporter.lic"
Alternatively, the exporter can acquire online entitlement from a licensing Gateway:
license_mode = "gateway"
gateway_endpoints = ["https://gateway.example:8443"]
gateway_auth_mode = "mtls"
gateway_tls_ca_file = "/etc/lmc-exporter/gateway-ca.pem"
gateway_tls_cert_file = "/etc/lmc-exporter/client.pem"
gateway_tls_key_file = "/etc/lmc-exporter/client-key.pem"
gateway_state_directory = "/var/lib/lmc-exporter"
Gateway mode also requires a component_instance_id for every target. See Gateway Licensing for complete configuration, state-directory, and entitlement-counting requirements.
Local License Validation Process
During startup, LMC Exporter validates:
- License fingerprint
- Digital signature
- License expiration status
Validation occurs before any LMC shared-memory discovery or metrics collection begins.
If local validation fails, or Gateway does not grant the complete configured workload, LMC Exporter will not start.
License Expiration Grace Period
| Condition | Behavior |
|---|---|
| License valid | Startup proceeds normally |
| From the expiry instant until, but not including, 36 hours after expiry | Startup proceeds with warning messages |
| At or after 36 hours past expiry | Startup is blocked |
For running instances:
- Warning messages continue throughout the grace period.
- Once the grace period expires, the exporter exits during the next enforcement check.
Runtime Configuration
Example Configuration
context_id = "shmApp"
pool_name = "pool"
app = "ads"
server_keys = ["82"]
metrics_interval_seconds = 30
metrics_http_enabled = true
metrics_bind_address = "0.0.0.0"
metrics_port = 9464
metrics_path = "/metrics"
license_file = "/opt/particle_horizon/local_data/lmc_exporter/lmc_exporter.lic"
Common Configuration Settings
| Setting | Description |
|---|---|
context_id | LMC context identifier |
pool_name | Shared-memory pool name |
app | Target application name |
instance | Optional application instance |
server_keys | Target LMC server keys |
metrics_interval_seconds | Metric refresh interval |
metrics_http_enabled | Enables HTTP metrics endpoint |
metrics_bind_address | HTTP listener address |
metrics_port | HTTP listener port |
metrics_path | Metrics endpoint path |
license_file | License file location |
Validation
Start the Exporter
Run as the account that has access to the target shared memory and the configured license or Gateway credentials:
/opt/particle_horizon/lmc_exporter/bin/lmc_exporter-el8 --config /opt/particle_horizon/local_config/lmc_exporter/lmc_exporter.toml
Stop the foreground process before starting the service so that the listener port and Gateway state lock are available.
Verify Metrics Availability
curl "http://127.0.0.1:9464/metrics?server_key=82"
Example application routing:
curl "http://127.0.0.1:9464/metrics?app=ads&instance=<resolved-instance>"
Service Management
The archive supplies a systemd unit but does not install or start it. Copy the unit after configuring the exporter:
sudo cp /opt/particle_horizon/systemd/lmc-exporter.service /etc/systemd/system/lmc-exporter.service
sudoedit /etc/systemd/system/lmc-exporter.service
Set User and Group to the existing account and group permitted to access the target shared memory. The template uses particle_horizon; use it only if that account exists and has the required access. Ensure the account can read the configuration, binary, license, and credentials, and owns the private Gateway state directory when Gateway mode is used.
For the EL8 example, verify these service paths:
ExecStart=/opt/particle_horizon/lmc_exporter/bin/lmc_exporter-el8 --config /opt/particle_horizon/local_config/lmc_exporter/lmc_exporter.toml
WorkingDirectory=/opt/particle_horizon/lmc_exporter
Replace the shipped relative license_file with the absolute path shown above. If the installation root differs from /opt/particle_horizon, adjust the service and configuration paths together.
For timestamp metrics, the exporter process timezone must match the source application’s timezone. If that differs from the host timezone, set the standard TZ environment variable in the service’s [Service] section (for example, Environment=TZ=Europe/London for a source using that timezone). See timestamp guidance.
sudo systemctl daemon-reload
sudo systemctl enable --now lmc-exporter
sudo systemctl status lmc-exporter
sudo journalctl -u lmc-exporter -n 100 --no-pager
After configuration or credential changes, restart with sudo systemctl restart lmc-exporter. Run sudo systemctl daemon-reload first if you changed the unit. Stop the exporter with sudo systemctl stop lmc-exporter.
Troubleshooting
License Validation Failure
Symptoms
The exporter exits during startup before any LMC discovery occurs.
Resolution
Verify:
- The configured license file exists
- The license has not been modified
- The license signature is valid
- The license has not exceeded the grace period
License Expired
Symptoms
Startup warning messages indicate license expiration.
Resolution
Replace the license before the 36-hour grace period expires.
HTTP Endpoint Returns 503
Symptoms
HTTP 503 Service Unavailable
Resolution
The target subtree may not yet be fully synchronized.
Verify:
- Server key configuration
- Application configuration
- LMC connectivity
- Target availability
No Metrics Returned
Symptoms
Metrics endpoint responds successfully but contains no application metrics.
Resolution
Verify:
- Correct application configuration
- Target selection
- Application-specific metric mappings are configured for the target application