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.

KeyTypeDefaultDescription
enabledbooleanfalseEnable pushing data to Forge.
urlstringhttps://forge.glassmkr.comForge API base URL.
api_keystringrequiredServer API key (col_xxx). Created when you add a server via "+ Add Server" in the Forge dashboard.
timeoutint30HTTP request timeout in seconds.
retry_countint3Number of retries on failed pushes before giving up.
retry_delayint5Seconds to wait between retries. Uses exponential backoff (delay * attempt).

server

Server identity and metadata.

KeyTypeDefaultDescription
namestringsystem hostnameDisplay name for this server in the Forge dashboard. If empty, the system hostname is used.
tagslist[]Arbitrary tags for organizing servers. Use these to filter servers in the dashboard.
locationstring""Freeform location label (e.g., "eu-west", "dc3-rack14").

collectors

Controls which metrics are collected and how.

KeyTypeDefaultDescription
intervalint300Collection interval in seconds. Default: 300 (5 minutes). Minimum: 10. Maximum: 600.

collectors.cpu

KeyTypeDefaultDescription
enabledbooltrueCollect CPU metrics (user, system, iowait, idle, steal).
per_coreboolfalseReport 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

KeyTypeDefaultDescription
enabledbooltrueCollect memory metrics (total, available, used, buffers, cache, swap).

collectors.disk

KeyTypeDefaultDescription
enabledbooltrueCollect disk space and I/O metrics.
include_mountslist[]If set, only these mount points are monitored. Empty means all mounts (after exclusions).
exclude_mountslist[]Mount points to skip.
exclude_fs_typeslist[tmpfs, devtmpfs, squashfs]Filesystem types to skip.

collectors.network

KeyTypeDefaultDescription
enabledbooltrueCollect network interface metrics (bytes, packets, errors, drops).
include_interfaceslist[]If set, only these interfaces are monitored. Supports glob patterns.
exclude_interfaceslist[lo, docker0, veth*]Interfaces to skip. Supports glob patterns.

collectors.smart

KeyTypeDefaultDescription
enabledbooltrueCollect SMART health data from disks. Requires smartctl to be installed.
deviceslist[]Specific devices to monitor. Empty means auto-detect all block devices.
ignore_deviceslist[/dev/loop*]Devices to skip. Supports glob patterns.

collectors.thermal

KeyTypeDefaultDescription
enabledbooltrueCollect temperature readings from CPU and other sensors.
sourcestringautoTemperature source: auto, hwmon, or ipmi.

collectors.raid

KeyTypeDefaultDescription
enabledbooltrueMonitor RAID array health. Supports mdadm, MegaCLI, and storcli.
arrayslist[]Specific arrays to monitor. Empty means auto-detect.

collectors.ipmi

KeyTypeDefaultDescription
enabledstringautoIPMI sensor collection: auto (detect), true, or false.
toolstringipmitoolIPMI 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:

KeyTypeDescription
enabledboolEnable or disable this rule.
thresholdnumberThe 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.

KeyTypeDefaultDescription
muted_ruleslist[]List of rule names to mute (e.g., [disk_space_high, cpu_iowait_high]). Can also be managed from the Forge dashboard.

alerts.global

KeyTypeDefaultDescription
cooldownint3600Seconds between repeated notifications for the same active alert.
resolve_notifybooltrueSend a notification when an alert condition resolves.
channelslist[]Default notification channels. Override per-rule if needed.

logging

Controls Crucible's own log output.

KeyTypeDefaultDescription
levelstringinfoLog level: debug, info, warn, error.
filestring/var/log/glassmkr/crucible.logLog file path. Set to stdout to log to standard output.
max_sizeint50Maximum log file size in MB before rotation.
max_filesint5Number of rotated log files to keep.

proxy

HTTP proxy settings for environments where outbound internet access requires a proxy.

KeyTypeDefaultDescription
httpstring""HTTP proxy URL (e.g., http://proxy.internal:3128).
httpsstring""HTTPS proxy URL. If empty, the HTTP proxy is used for HTTPS as well.
no_proxystring""Comma-separated list of hosts to bypass the proxy.

tls

TLS settings for the connection to the Forge API.

KeyTypeDefaultDescription
ca_certstring""Path to a custom CA certificate bundle. Use this if your proxy performs TLS inspection.
skip_verifyboolfalseSkip 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.