GoClaw serves as a unified orchestration hub for infrastructure monitoring and observability. By connecting system agents to your SRE and DevOps monitoring platforms, agents can dynamically query metrics, logs, traces, security events, and hardware inventories to diagnose production incidents.
Instead of diagnosing incidents using a single metric, GoClaw agents can query multiple observability platforms in sequence to correlate events. For example, if a database response time spikes:
All integrated observability tools follow these key principles:
dev, staging, prod) for the same tool.allow_write: true. One exception: uptrace_query can always add an Uptrace annotation.${secret:KEY} vault references.All monitoring integrations are configured under the tools.observability key in config.yaml.
tools:
observability:
# Grafana Dashboard & Alerts
grafana:
prod:
url: "https://grafana.example.com"
token: "${secret:GRAFANA_PROD_TOKEN}"
description: "Production dashboards"
# Centralized Log Analytics
graylog:
prod:
url: "https://graylog.example.com"
token: "${secret:GRAYLOG_PROD_TOKEN}"
# allow_write: true # lets graylog_alert create and remove alerts; off by default
# Distributed Tracing (OTel)
uptrace:
main:
dsn: "https://<project_token>@api.uptrace.dev/<project_id>"
# Infrastructure Monitoring
zabbix:
prod:
url: "https://zabbix.example.com/api_jsonrpc.php"
token: "${secret:ZABBIX_PROD_TOKEN}"
# SIEM & Security Events
wazuh:
siem:
url: "https://wazuh.example.com:55000"
user: "wazuh-api"
password: "${secret:WAZUH_PASSWORD}"
insecure: true
# DCIM / IPAM Inventory
netbox:
prod:
url: "https://netbox.example.com"
token: "${secret:NETBOX_PROD_TOKEN}"
allow_write: false
Reaching each host. The observability tools call their hosts through GoClaw's
outbound HTTP policy, but the host of an instance's own
url (or of the Uptrace dsn) needs no entry on tools.http.allow, private address included:
you configured it, so each tool may reach it. That opens it to that tool only, not to
http_request or the browser. tools.http.deny still applies: a host on it is refused with
domain "…" is blocked by policy or address … is blocked by policy, and so is any other host
a call is sent on to, such as a redirect elsewhere, unless it is on tools.http.allow.
Graylog alerts that run a SOP. Graylog can also start work on its own: an alert in Graylog
calls the gateway's webhook (/goclaw/hook/graylog/<key>), and the gateway runs a SOP with the
alert and its matching messages. A human admin can ask the agent to set one up (tool
graylog_alert, Graylog 5.0 or later, allow_write: true on the instance), or
connect Graylog by hand on
the Webhooks page. See Graylog Alerts That Run a SOP.
When tasked with investigating an issue (e.g., "Our production API is responding slowly. Please check."), the agent follows a standardized incident workflow:
flowchart LR
S1["<b>1. Grafana Alerts</b><br/>List all active system alarms"] --> S2["<b>2. Uptrace APM</b><br/>Trace slow endpoints & topologies"]
S2 --> S3["<b>3. Graylog Logs</b><br/>Locate stack traces & error logs"]
S3 --> S4["<b>4. Zabbix</b><br/>Check host resource consumption"]
S4 --> S5["<b>5. Wazuh</b><br/>Verify if security alerts exist"]
S5 --> S6["<b>6. NetBox</b><br/>Confirm asset location & status"]
The agent correlates the collected data and provides a single, comprehensive incident summary with suggested remediation steps.
Operators can verify monitoring connections directly from the CLI without running the main LLM loop. This is useful for testing API credentials and verifying connectivity:
# List all active Grafana alerts
goclaw tools exec grafana_alerts instance=prod action=alerts
# Search Graylog logs for system errors in the last 15 minutes
goclaw tools exec graylog_query instance=prod query='level:ERROR' range=900 limit=5
# Query Zabbix hosts directly via RPC methods
goclaw tools exec zabbix_query instance=prod method=host.get params='{"output":"extend"}'
# Search for active hardware devices in NetBox
goclaw tools exec netbox action=list resource_type=devices filters='{"status":"active"}'