Configuration Reference
The Crucible agent is configured via a YAML file at /etc/glassmkr/collector.yaml. This page documents every available option.
After editing the configuration, restart the service for changes to take effect:
sudo systemctl restart crucible
You can validate the configuration without restarting:
crucible config check
Full example
Below is a complete configuration file with all options shown at their default values. You only need to include the options you want to change.
server_name: "my-server"
collection:
interval_seconds: 300
ipmi: true
smart: true
forge:
enabled: true
url: "https://forge.glassmkr.com"
api_key: "col_your_key_here"
tags:
- production
- web
location: "eu-west"
collectors:
interval: 300
cpu:
enabled: true
per_core: false
memory:
enabled: true
disk:
enabled: true
include_mounts:
- /
- /home
- /var
exclude_mounts:
- /mnt/backup
exclude_fs_types:
- tmpfs
- devtmpfs
- squashfs
network:
enabled: true
include_interfaces: []
exclude_interfaces:
- lo
- docker0
- veth*
smart:
enabled: true
devices: []
ignore_devices:
- /dev/loop*
thermal:
enabled: true
source: auto
raid:
enabled: true
arrays: []
ipmi:
enabled: auto
tool: ipmitool
alerts:
ram_high:
enabled: true
threshold: 90
duration: 300
cpu_high:
enabled: true
threshold: 90
duration: 300
disk_space_high:
enabled: true
threshold: 90
critical_threshold: 95
exclude_mounts: []
cpu_iowait_high:
enabled: true
threshold: 20
duration: 180
oom_kills:
enabled: true
threshold: 1
smart_failing:
enabled: true
ignore_disks: []
nvme_wear_high:
enabled: true
threshold: 80
raid_degraded:
enabled: true
arrays: []
disk_latency_high:
enabled: true
threshold: 50
duration: 120
exclude_devices: []
interface_errors:
enabled: true
threshold: 10
exclude_interfaces: []
link_speed_mismatch:
enabled: true
interfaces: {}
interface_saturation:
enabled: true
threshold: 80
duration: 60
exclude_interfaces: []
cpu_temperature_high:
enabled: true
threshold: 85
critical_threshold: 95
sensor: ""
ecc_errors:
enabled: true
threshold: 1
critical_on_uncorrectable: true
psu_redundancy_loss:
enabled: true
source: ""
ipmi_fan_failure:
enabled: true
min_rpm: 500
ipmi_sel_critical:
enabled: true
load_high:
enabled: true
threshold: 0
duration: 300
filesystem_readonly:
enabled: true
exclude_mounts: []
inode_high:
enabled: true
threshold: 90
exclude_mounts: []
clock_drift:
enabled: true
threshold: 5
ssh_root_password:
enabled: true
no_firewall:
enabled: true
pending_security_updates:
enabled: true
kernel_vulnerabilities:
enabled: true
kernel_needs_reboot:
enabled: true
unattended_upgrades_disabled:
enabled: true
muted_rules: []
global:
cooldown: 3600
resolve_notify: true
channels:
- telegram
- email
logging:
level: info
file: /var/log/glassmkr/crucible.log
max_size: 50
max_files: 5
proxy:
http: ""
https: ""
no_proxy: ""
tls:
ca_cert: ""
skip_verify: false Section reference
forge
Connection settings for the Forge API.
| Key | Type | Default | Description |
|---|
enabled | boolean | false | Enable pushing data to Forge. |
url | string | https://forge.glassmkr.com | Forge API base URL. |
api_key | string | required | Server API key (col_xxx). Created when you add a server via "+ Add Server" in the Forge dashboard. |
timeout | int | 30 | HTTP request timeout in seconds. |
retry_count | int | 3 | Number of retries on failed pushes before giving up. |
retry_delay | int | 5 | Seconds to wait between retries. Uses exponential backoff (delay * attempt). |
server
Server identity and metadata.
| Key | Type | Default | Description |
|---|
name | string | system hostname | Display name for this server in the Forge dashboard. If empty, the system hostname is used. |
tags | list | [] | Arbitrary tags for organizing servers. Use these to filter servers in the dashboard. |
location | string | "" | Freeform location label (e.g., "eu-west", "dc3-rack14"). |
collectors
Controls which metrics are collected and how.
| Key | Type | Default | Description |
|---|
interval | int | 300 | Collection interval in seconds. Default: 300 (5 minutes). Minimum: 10. Maximum: 600. |
collectors.cpu
| Key | Type | Default | Description |
|---|
enabled | bool | true | Collect CPU metrics (user, system, iowait, idle, steal). |
per_core | bool | false | Report per-core metrics in addition to aggregate. Requires Crucible 0.3.0+. Enables the per-core CPU chart in the dashboard expanded view and gives the AI analysis engine per-core awareness. Increases data volume on high-core-count machines. |
collectors.memory
| Key | Type | Default | Description |
|---|
enabled | bool | true | Collect memory metrics (total, available, used, buffers, cache, swap). |
collectors.disk
| Key | Type | Default | Description |
|---|
enabled | bool | true | Collect disk space and I/O metrics. |
include_mounts | list | [] | If set, only these mount points are monitored. Empty means all mounts (after exclusions). |
exclude_mounts | list | [] | Mount points to skip. |
exclude_fs_types | list | [tmpfs, devtmpfs, squashfs] | Filesystem types to skip. |
collectors.network
| Key | Type | Default | Description |
|---|
enabled | bool | true | Collect network interface metrics (bytes, packets, errors, drops). |
include_interfaces | list | [] | If set, only these interfaces are monitored. Supports glob patterns. |
exclude_interfaces | list | [lo, docker0, veth*] | Interfaces to skip. Supports glob patterns. |
collectors.smart
| Key | Type | Default | Description |
|---|
enabled | bool | true | Collect SMART health data from disks. Requires smartctl to be installed. |
devices | list | [] | Specific devices to monitor. Empty means auto-detect all block devices. |
ignore_devices | list | [/dev/loop*] | Devices to skip. Supports glob patterns. |
collectors.thermal
| Key | Type | Default | Description |
|---|
enabled | bool | true | Collect temperature readings from CPU and other sensors. |
source | string | auto | Temperature source: auto, hwmon, or ipmi. |
collectors.raid
| Key | Type | Default | Description |
|---|
enabled | bool | true | Monitor RAID array health. Supports mdadm, MegaCLI, and storcli. |
arrays | list | [] | Specific arrays to monitor. Empty means auto-detect. |
collectors.ipmi
| Key | Type | Default | Description |
|---|
enabled | string | auto | IPMI sensor collection: auto (detect), true, or false. |
tool | string | ipmitool | IPMI tool to use: ipmitool or freeipmi. |
alerts
Per-rule threshold overrides. See the Alert Rules page for detailed documentation of each rule including severity, meaning, and remediation steps.
Every alert rule supports at minimum:
| Key | Type | Description |
|---|
enabled | bool | Enable or disable this rule. |
threshold | number | The value at which the alert fires (unit depends on the rule). |
Some rules also support duration (seconds the condition must persist), critical_threshold (a second, higher threshold), and exclusion lists. See the full example above for all options.
alerts.muted_rules
A list of rule names to mute on this server. Muted rules are not evaluated and do not fire notifications. Changes take effect on the next ingest cycle after restarting Crucible.
| Key | Type | Default | Description |
|---|
muted_rules | list | [] | List of rule names to mute (e.g., [disk_space_high, cpu_iowait_high]). Can also be managed from the Forge dashboard. |
alerts.global
| Key | Type | Default | Description |
|---|
cooldown | int | 3600 | Seconds between repeated notifications for the same active alert. |
resolve_notify | bool | true | Send a notification when an alert condition resolves. |
channels | list | [] | Default notification channels. Override per-rule if needed. |
logging
Controls Crucible's own log output.
| Key | Type | Default | Description |
|---|
level | string | info | Log level: debug, info, warn, error. |
file | string | /var/log/glassmkr/crucible.log | Log file path. Set to stdout to log to standard output. |
max_size | int | 50 | Maximum log file size in MB before rotation. |
max_files | int | 5 | Number of rotated log files to keep. |
proxy
HTTP proxy settings for environments where outbound internet access requires a proxy.
| Key | Type | Default | Description |
|---|
http | string | "" | HTTP proxy URL (e.g., http://proxy.internal:3128). |
https | string | "" | HTTPS proxy URL. If empty, the HTTP proxy is used for HTTPS as well. |
no_proxy | string | "" | Comma-separated list of hosts to bypass the proxy. |
tls
TLS settings for the connection to the Forge API.
| Key | Type | Default | Description |
|---|
ca_cert | string | "" | Path to a custom CA certificate bundle. Use this if your proxy performs TLS inspection. |
skip_verify | bool | false | Skip TLS certificate verification. Not recommended for production. |
Environment variable overrides
Any configuration option can be overridden via environment variables. The variable name is CRUCIBLE_ followed by the YAML path in uppercase with underscores replacing dots:
export FORGE_API_KEY="your-token"
export CRUCIBLE_COLLECTORS_INTERVAL=30
export CRUCIBLE_LOGGING_LEVEL=debug
Environment variables take precedence over the configuration file.