Monitoring Systemd Logs with ClickStack
This guide shows you how to monitor systemd journal logs with ClickStack by running the OpenTelemetry Collector with the journald receiver. You'll learn how to:
- Deploy the OpenTelemetry Collector to read systemd journal entries
- Send systemd logs to ClickStack via OTLP
- Use a pre-built dashboard to visualize systemd log insights (service status, errors, authentication events)
A demo dataset with sample logs is available if you want to test the integration before configuring your production systems.
Time Required: 10-15 minutes
Integration with existing systems
Monitor your existing Linux system's journald logs by running the OpenTelemetry Collector with the journald receiver to collect system logs and send them to ClickStack via OTLP.
If you want to test this integration first without modifying your existing setup, skip to the demo dataset section.
Prerequisites
- ClickStack instance running
- Linux system with systemd (Ubuntu 16.04+, CentOS 7+, Debian 8+)
- Docker or Docker Compose installed on the monitored system
Get ClickStack API key
The OpenTelemetry Collector sends data to ClickStack's OTLP endpoint, which requires authentication.
- Open HyperDX at your ClickStack URL (e.g., http://localhost:8080)
- Create an account or log in if needed
- Navigate to Team Settings → API Keys
- Copy your Ingestion API Key
- Set it as an environment variable:
Verify systemd journal is running
Ensure your system is using systemd and has journal logs:
If journal storage is in memory only, enable persistent storage:
Create OpenTelemetry Collector configuration
Create a configuration file for the OpenTelemetry Collector:
Deploy with Docker Compose
The journald receiver requires the journalctl binary to read journal files. The official otel/opentelemetry-collector-contrib image does not include journalctl by default.
For containerized deployments, you can either install the collector directly on the host or build a custom image with systemd utilities. See the troubleshooting section for details.
This example shows deploying the OTel Collector alongside ClickStack:
Start the services:
Verify logs in HyperDX
Once configured, log into HyperDX and verify logs are flowing:
- Navigate to the Search view
- Set source to Logs
- Filter by
service.name:systemd-logs - You should see structured log entries with fields like
unit,priority,MESSAGE,_HOSTNAME
Demo dataset
For users who want to test the systemd logs integration before configuring their production systems, we provide a sample dataset of pre-generated systemd logs with realistic patterns.
Run ClickStack with demo data
Start ClickStack with the demo logs:
The demo uses the filelog receiver with text logs instead of journald to avoid requiring journalctl in the container.
Verify logs in HyperDX
Once ClickStack is running:
- Open HyperDX and log in to your account
- Navigate to the Search view and set the source to
Logs - Set the time range to 2025-11-14 00:00:00 - 2025-11-17 00:00:00
HyperDX displays timestamps in your browser's local timezone. The demo data spans 2025-11-15 00:00:00 - 2025-11-16 00:00:00 (UTC). The wide time range ensures you'll see the demo logs regardless of your location.
Dashboards and visualization
To help you get started monitoring systemd logs with ClickStack, we provide essential visualizations for systemd journal data.
Import the pre-built dashboard
- Open HyperDX and navigate to the Dashboards section
- Click Import Dashboard in the upper right corner under the ellipses
- Upload the
systemd-logs-dashboard.jsonfile and click Finish Import
View the dashboard
The dashboard includes visualizations for:
- Log volume over time
- Top systemd units by log count
- SSH authentication events
- Service failures
- Error rates
For the demo dataset, set the time range to 2025-11-15 00:00:00 - 2025-11-16 00:00:00 (UTC) (adjust based on your local timezone).
Troubleshooting
No logs appearing in HyperDX
Check if logs are reaching ClickHouse:
If no results, check the collector logs:
journalctl not found error
If you see exec: "journalctl": executable file not found in $PATH:
The otel/opentelemetry-collector-contrib image does not include journalctl. You can either:
- Install the collector on the host:
- Use the text export approach (like the demo) with the
filelogreceiver reading journald exports
Going to production
This guide uses a separate OpenTelemetry Collector to read systemd logs and send them to ClickStack's OTLP endpoint, which is the recommended production pattern.
For production environments with multiple hosts, consider:
- Deploying the collector as a DaemonSet in Kubernetes
- Running the collector as a systemd service on each host
- Using the OpenTelemetry Operator for automated deployment
See Ingesting with OpenTelemetry for production deployment patterns.