Skip to content
OpenSmartRoute
Skillv1.0.0

clickhouse-incident-runbook

ClickHouse incident response — triage, diagnose, and remediate server issues using system tables, kill stuck queries, and execute recovery procedures. Use when ClickHouse is slow, unresponsive, OOM-ki

by jeremylongshore(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from jeremylongshore/tons-of-skills-marketplace (plugins/saas-packs/clickhouse-pack/skills/clickhouse-incident-runbook/SKILL.md). Install upstream with npx skills add jeremylongshore/tons-of-skills-marketplace --skill clickhouse-incident-runbook. Copyright stays with the author (MIT).

ClickHouse Incident Runbook

Overview

Step-by-step procedures for triaging and resolving ClickHouse incidents using built-in system tables and SQL commands. Start here: assess severity, run quick triage, walk the decision tree, then jump to the matching remediation procedure.

Prerequisites

  • Network access to the ClickHouse HTTP interface (default port 8123) or a working clickhouse-client.
  • A user with rights to read system.* tables and issue KILL QUERY / ALTER.
  • Shell access to the host or container for P1 restarts (systemctl, docker, or kubectl).

Severity Levels

Level Definition Response Examples
P1 ClickHouse unreachable / all queries failing < 15 min Server down, OOM, disk full
P2 Degraded performance / partial failures < 1 hour Slow queries, merge backlog
P3 Minor impact / non-critical errors < 4 hours Single table issue, warnings
P4 No user impact Next business day Monitoring gaps, optimization

Instructions

Work the incident top to bottom: triage, classify with the decision tree, then apply the matching procedure.

1. Quick triage (run first)

# 1. Is ClickHouse alive? (8123 is the default ClickHouse HTTP interface port)
curl -sf 'http://localhost:8123/ping' && echo "UP" || echo "DOWN"

# 2. Can it answer a query?
curl -sf 'http://localhost:8123/?query=SELECT+1' && echo "OK" || echo "QUERY FAILED"

# 3. Check ClickHouse Cloud status
curl -sf 'https://status.clickhouse.cloud' | head -5
-- 4. Server health snapshot (run if server responds)
SELECT
    version()                          AS version,
    formatReadableTimeDelta(uptime())  AS uptime,
    (SELECT count() FROM system.processes) AS running_queries,
    (SELECT value FROM system.metrics WHERE metric = 'MemoryTracking')
        AS memory_bytes,
    (SELECT count() FROM system.merges) AS active_merges;

-- 5. Recent errors
SELECT event_time, exception_code, exception, substring(query, 1, 200) AS q
FROM system.query_log
WHERE type = 'ExceptionWhileProcessing'
  AND event_time >= now() - INTERVAL 10 MINUTE
ORDER BY event_time DESC
LIMIT 10;

2. Decision tree — classify the failure

Server responds to ping?
├─ NO → Check process/container status, disk space, OOM killer logs
│       └─ Container/process dead → Restart, check logs
│       └─ Disk full → Emergency: drop old partitions, expand disk
│       └─ OOM killed → Reduce max_memory_usage, add RAM
└─ YES → Queries succeeding?
    ├─ NO → Check error codes below
    │   └─ Auth errors (516) → Verify credentials, check user exists
    │   └─ Too many queries (202) → Kill stuck queries, reduce concurrency
    │   └─ Memory exceeded (241) → Kill large queries, reduce max_threads
    └─ YES but slow → Performance triage below

3. Apply the matching remediation

Each branch maps to a full procedure (SQL + shell, copy-paste ready) in references/remediation-procedures.md:

  • P1: Server down / OOM — inspect dmesg/journalctl, restart, verify.
  • P1: Disk full — find largest tables, drop old partitions, check system.disks.
  • P2: Stuck queries — inspect system.processes, KILL QUERY by id/user/elapsed.
  • P2: Too many parts — check part counts, raise parts_to_throw_insert, batch inserts.
  • P2: Memory pressure — rank by memory_usage, kill the largest, cap max_memory_usage.
  • P3: Replication lag — inspect system.replicas for queue and replica gaps.

4. Collect evidence and communicate

Once mitigated, export the error window and post status updates. Templates and INTO OUTFILE exports are in references/evidence-and-comms.md.

Output

Working through this runbook produces:

  • A severity classification (P1–P4) and the identified failure class.
  • Remediation actions applied — killed query ids, dropped partitions, restarted service, or adjusted settings.
  • A recovery confirmation (SELECT version() / SELECT 1 succeeds again).
  • Forensic artifacts for the postmortem: /tmp/incident-queries.json and /tmp/incident-metrics.tsv, plus a filled-in postmortem document.

Error Handling

Symptom Likely Cause First Action
All queries fail Server down Check process, restart
Inserts fail Too many parts KILL QUERY long merges, raise limit
Selects slow Memory pressure Kill large queries, add filters
Disk alerts No TTL / no cleanup Drop old partitions
Replication lag Network / merge backlog Check system.replicas

If the server does not respond to ping at all, do not keep issuing SQL — move straight to the P1 host-level checks (process, disk, OOM logs) before anything else.

Examples

Kill a runaway query (P2). Triage shows one query pinning memory; classify as "queries succeeding but slow", then from the stuck-query procedure:

KILL QUERY WHERE query_id = 'abc-123-def';

Emergency disk reclaim (P1). Ping fails and the host is out of disk; the disk-full procedure drops the oldest partition to restore writes:

ALTER TABLE analytics.events DROP PARTITION '202301';

Full multi-step walkthroughs for every severity live in references/remediation-procedures.md; the post-incident export and comms templates live in references/evidence-and-comms.md.

Resources

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jeremylongshore-tons-of-skills-marketplace-clickhouse-in-5fdb4d/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jeremylongshore-tons-of-skills-marketplace-clickhouse-in-5fdb4d.ocm.jsonjson
{
  "ocm": "1",
  "id": "jeremylongshore-tons-of-skills-marketplace-clickhouse-in-5fdb4d",
  "kind": "skill",
  "name": "clickhouse-incident-runbook",
  "description": "ClickHouse incident response — triage, diagnose, and remediate server issues using system tables, kill stuck queries, and execute recovery procedures. Use when ClickHouse is slow, unresponsive, OOM-killed, out of disk, backing up merges, or producing errors in production and you need an on-call playbook. Trigger with \"clickhouse incident\", \"clickhouse outage\", \"clickhouse down\", \"clickhouse emergency\", \"clickhouse on-call\", \"clickhouse broken\".",
  "publisher": "jeremylongshore",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "saas",
      "database",
      "analytics",
      "clickhouse",
      "olap",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "ClickHouse incident response — triage, diagnose, and remediate server issues using system tables, kill stuck queries, and execute recovery procedures. Use when ClickHouse is slow, unresponsive, OOM-killed, out of disk, backing up merges, or producing errors in production and you need an on-call playbook. Trigger with \"clickhouse incident\", \"clickhouse outage\", \"clickhouse down\", \"clickhouse emergency\", \"clickhouse on-call\", \"clickhouse broken\"."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/jeremylongshore/tons-of-skills-marketplace",
      "path": "plugins/saas-packs/clickhouse-pack/skills/clickhouse-incident-runbook/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/jeremylongshore/tons-of-skills-marketplace/blob/HEAD/plugins/saas-packs/clickhouse-pack/skills/clickhouse-incident-runbook/SKILL.md",
      "key": "jeremylongshore/tons-of-skills-marketplace/plugins/saas-packs/clickhouse-pack/skills/clickhouse-incident-runbook/SKILL.md"
    },
    "compatibility": "Designed for Claude Code",
    "allowed_tools": [
      "Read,",
      "Bash(kubectl:*),",
      "Bash(curl:*)"
    ],
    "license": "MIT"
  },
  "instructions": "# ClickHouse Incident Runbook\n\n## Overview\n\nStep-by-step procedures for triaging and resolving ClickHouse incidents using\nbuilt-in system tables and SQL commands. Start here: assess severity, run quick\ntriage, walk the decision tree, then jump to the matching remediation procedure.\n\n## Prerequisites\n\n- Network access to the ClickHouse HTTP interface (default port `8123`) or a\n  working `clickhouse-client`.\n- A user with rights to read `system.*` tables and issue `KILL QUERY` / `ALTER`.\n- Shell access to the host or container for P1 restarts (`systemctl`, `docker`,\n  or `kubectl`).\n\n## Severity",
  "cost": {
    "context_tokens": 1463
  }
}

Fetch it by URL: GET /api/v1/registry/jeremylongshore-tons-of-skills-marketplace-clickhouse-in-5fdb4d/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.