{"id":51569253,"url":"https://github.com/saqqdy/kafka-log-analyzer","last_synced_at":"2026-07-10T18:01:18.725Z","repository":{"id":367988680,"uuid":"1276967882","full_name":"saqqdy/kafka-log-analyzer","owner":"saqqdy","description":"Intelligent Kafka log analysis with real-time monitoring, anomaly detection, and source code linking","archived":false,"fork":false,"pushed_at":"2026-07-05T15:49:49.000Z","size":1257,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-05T17:13:56.795Z","etag":null,"topics":["claude-code","claude-code-plugin","kafka","kafka-log-analyzer","log-analyzer","mcp"],"latest_commit_sha":null,"homepage":"https://www.saqqdy.com/kafka-log-analyzer","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saqqdy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-22T13:09:42.000Z","updated_at":"2026-07-05T15:46:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/saqqdy/kafka-log-analyzer","commit_stats":null,"previous_names":["saqqdy/kafka-log-analyzer"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/saqqdy/kafka-log-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Fkafka-log-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Fkafka-log-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Fkafka-log-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Fkafka-log-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saqqdy","download_url":"https://codeload.github.com/saqqdy/kafka-log-analyzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Fkafka-log-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35338653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-code-plugin","kafka","kafka-log-analyzer","log-analyzer","mcp"],"created_at":"2026-07-10T18:00:58.538Z","updated_at":"2026-07-10T18:01:18.717Z","avatar_url":"https://github.com/saqqdy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔍 Kafka Log Analyzer\n\n\u003e AI-powered Kafka log analysis — intelligent diagnostics for Kafka clusters with Claude Code\n\n[![npm version](https://img.shields.io/npm/v/kafka-log-analyzer.svg)](https://www.npmjs.com/package/kafka-log-analyzer)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n[中文文档](README_CN.md)\n\n---\n\n## 🎯 The Problem It Solves\n\n| Scenario | Traditional Debugging | Kafka Log Analyzer |\n|----------|----------------------|-------------------|\n| Log Analysis | Manually grep thousands of lines | AI extracts events, detects anomalies, prioritizes issues |\n| Consumer Lag | Check multiple dashboards | Single command shows lag across all consumer groups |\n| Error Diagnosis | Correlate logs with source code manually | AI links errors to configuration and implementation |\n| Incident Response | Copy-paste logs to Slack/Feishu | Auto-generate formatted reports ready to share |\n\n**Core insight**: Kafka troubleshooting requires understanding log semantics, not just keyword matching.\n\n---\n\n## ✨ Core Features\n\n### 📊 Intelligent Log Analysis (v0.1.0)\n\nStructured parsing with zero configuration:\n\n- **Multi-format Support** — Parse both text and JSON Kafka logs\n- **11 Event Types** — send_success, send_failure, consumer_lag, rebalance, commit_failure, buffer_exhausted, leader_change, offset_out_of_range, serialization_error, network_error, auth_error\n- **Anomaly Detection** — 7 built-in detectors for error spikes, rebalance storms, lag spikes, leader instability, replica lag, serialization issues, network problems\n\n### 🔎 Enhanced Filtering \u0026 Reports (v0.2.0)\n\nParameterized control over analysis output:\n\n- **`--focus` Filter** — Filter by component (`producer/consumer/broker`) or semantics (`lag/error`)\n- **`--priority` Filter** — Show only anomalies at specified severity (P0-P3)\n- **`--timeline` Analysis** — Time-windowed event distribution with component breakdown\n- **`--report` Formats** — Unified `markdown/json/slack` output for CLI and MCP\n- **`--debug` Mode** — Verbose logging for troubleshooting\n\n### 📡 Prometheus \u0026 Data Source Integration (v0.3.0)\n\nReal-time metrics from Prometheus/Kafka Exporter:\n\n- **Prometheus Connector** — Query Kafka Exporter metrics via PromQL (`queryInstant`, `queryRange`)\n- **Consumer Lag Monitoring** — Real-time `kafka_consumergroup_lag` from Prometheus with group/topic/partition filtering\n- **Exporter Source Analysis** — `analyze_log --source exporter` fetches live metrics and detects anomalies from lag data\n- **Loki Log Source** — `analyze_log --source loki` queries Kafka logs via LogQL and reuses the Python analysis pipeline\n- **MCP Resources** — Subscribe to live metric streams (`kafka://metrics/{cluster}`, `kafka://lag/{cluster}`)\n- **Graceful Degradation** — All data source tools return empty data + friendly warnings when Prometheus/Loki are unreachable\n- **Config Validators** — `isPrometheusConfigured()` / `isLokiConfigured()` / `validateSourceConfig()` helpers\n\n### 🔔 Hook Automation \u0026 Push Integration (v0.4.0)\n\nAutomatic alert triggering and team notifications:\n\n- **Grafana Alert Hook** — Receive Grafana webhook payloads, auto-trigger analysis\n- **PagerDuty Alert Hook** — Parse PagerDuty Events API v2 alerts into normalized analysis triggers\n- **Hook HTTP Server** — Lightweight server with `POST /hooks/grafana`, `POST /hooks/pagerduty`, `GET /hooks/health`\n- **Hook Dedup Engine** — Fingerprint-based in-memory dedup with configurable TTL window and merge count\n- **Feishu Webhook Push** — Send analysis results as interactive cards to Feishu groups\n- **Slack Webhook Push** — Send results as Block Kit messages to Slack channels\n- **JIRA Integration** — Auto-create JIRA issues from analysis with priority mapping\n- **Push Dispatcher** — Parallel push to all configured targets (Feishu/Slack/JIRA)\n- **CLI: hooks** — `npx kafka-log-analyze hooks [--port P]` to start the hook server\n- **CLI: push-test** — `npx kafka-log-analyze push-test [--target feishu|slack|all]` to test push\n\n### 📜 Historical Trends \u0026 Analysis (v0.5.0)\n\nPersistent storage and trend comparison:\n\n- **SQLite Persistence** — Automatic database creation with WAL mode, storing all analysis records, anomaly details, lag snapshots, and baselines\n- **Event-Driven Architecture** — Decoupled pipeline: analysis results trigger persistence and automatic baseline updates via `EventEmitter`\n- **Historical Query** — `query_history` tool filters past analysis by time range, source, and cluster\n- **Trend Comparison** — `compare_trend` tool compares metrics (error rate, lag, anomaly count) across configurable time windows (`1h`/`6h`/`1d`/`7d`) with `previous`/`last_week`/`last_month` comparison\n- **Anomaly Multiplier Detection** — Automatically annotates anomalies when values are ≥ 2× baseline (e.g. \"比基线多 3.5 倍\")\n- **Baseline Management** — Auto baselines from 7-day rolling averages; manual overrides via `set_baseline` / `list_baselines` tools\n- **Data Cleanup** — Configurable retention policy (default 30 days) with `cleanup_storage` tool and automatic daily cleanup\n\n### 🔒 Security Hardening (v1.0.0)\n\nProduction-ready security and reliability:\n\n- **Webhook URL Validation** — SSRF protection: enforces HTTPS and rejects private IP ranges for Feishu and Slack integrations\n- **Path Traversal Prevention** — `sanitizePath()` validates file paths, blocks `../` and null byte injection\n- **SQLite Parameter Safety** — Full audit confirms all queries use prepared statements (no SQL injection)\n- **Secret Redaction in Logs** — `redact()` function automatically masks sensitive values (token, secret, password, key, auth, credential)\n- **Test Coverage ≥85%** — MCP server integration, event listeners, CLI, dedup, get_lag, JIRA, security, benchmark tests\n- **Stdin Piping** — Paste mode pipes content via `child.stdin` instead of temp file I/O for better performance\n\n### 🌏 User Experience Optimization (v1.1.0)\n\nInternationalization, visualization, and smart diagnostics:\n\n- **i18n Support (EN/ZH)** — Full internationalization with `--locale` / `-l` flag or `LOCALE` env var (~180 keys each). All user-visible strings use `t()` function.\n- **In-Memory Analysis Cache** — TTL-based cache with per-source expiry (paste/file: 24h, exporter: 5m, loki: 15m). Prevents redundant re-analysis of identical inputs.\n- **ASCII Timeline Chart** — Stacked bar chart with severity-segmented bars (`█` ERROR, `·` WARN, `░` INFO) and auto-generated legend. Sparkline mini-charts in push notifications.\n- **Shell Completion** — `npx kafka-log-analyze completion \u003cbash|zsh|fish\u003e` generates shell completion scripts with enum suggestions for flags.\n- **MCP Schema Enhancement** — Dynamic `analyze_log` inputSchema with cluster/consumer_group/topic enums auto-populated from history.\n- **Folded Markdown Reports** — New `--report folded-markdown` format with collapsible `\u003cdetails\u003e/\u003csummary\u003e` blocks.\n- **Interactive TUI Browser** — `--interactive` / `-i` flag for keyboard-driven section navigation (↑/↓, Enter/Space, e, c, q). Zero additional dependencies.\n- **Diagnostic Templates** — 5 built-in templates (`lag-diagnosis`, `rebalance-storm`, `producer-errors`, `broker-health`, `full-audit`). `--template \u003cid\u003e` flag and `templates` CLI command.\n- **Smart Template Recommendation** — Templates ranked by historical anomaly patterns via `recommendTemplates()`. New MCP tools `diagnose` and `list_templates`.\n\n### 🎯 Priority Classification\n\nAutomatic severity grading (P0-P3):\n\n| Priority | Severity | Examples |\n|----------|----------|----------|\n| 🟢 **P0 (Critical)** | Cluster down, data loss risk | Complete broker failure, unrecoverable corruption |\n| 🟡 **P1 (High)** | Consumer lag \u003e 10K, frequent rebalances | Sustained high lag, rebalance storms |\n| 🟠 **P2 (Medium)** | Leader changes, transient errors | Leader election, temporary network issues |\n| 🔴 **P3 (Low)** | Warnings, informational events | Configuration warnings, debug logs |\n\n### 🔄 Multiple Output Formats\n\n- **Markdown** — Detailed report with sections and recommendations\n- **JSON** — Structured data for programmatic processing\n- **Slack** — Compact format optimized for team channels\n- **Folded Markdown** — Collapsible sections with `\u003cdetails\u003e/\u003csummary\u003e` for GitHub/Slack\n\n### 🖥️ Claude Code Integration\n\n- **MCP Tools** — Call analysis from Claude Code or any MCP client\n- **Slash Commands** — `/kafka-analyze` for quick analysis\n- **Source Code Linking** — AI correlates errors with your Kafka configuration\n\n---\n\n## 🚀 Getting Started\n\n### Option 1: Claude Code Plugin (Recommended)\n\nThis project is a **Claude Code Plugin**. Install via marketplace for one-click setup.\n\n#### Method A: Plugin Marketplace (Recommended)\n\n```bash\n# In Claude Code, run:\n/plugin marketplace add saqqdy/kafka-log-analyzer\n/plugin install kafka-log-analyzer\n```\n\n#### Method B: Local Install\n\n```bash\n# 1. Go to your project\ncd your-project\n\n# 2. Install npm package\npnpm add -D kafka-log-analyzer\n\n# 3. Copy plugin files\nmkdir -p .claude/skills\ncp -r node_modules/kafka-log-analyzer/.claude/skills/kafka-log-analyzer .claude/skills/\n```\n\n#### Available Commands\n\nType these commands in Claude Code:\n\n| Command | Description | Example |\n|---------|-------------|---------|\n| `/kafka-analyze` | Analyze Kafka logs | `/kafka-analyze --source file --path server.log` |\n\n#### Output Example\n\n```\n/kafka-analyze --source file --path server.log\n\n📊 Analyzing server.log...\n\n📋 Summary:\n  Total Events: 847\n  P0 (Critical): 3\n  P1 (High): 12\n\n⚠️ Anomalies:\n  🔴 send_failure_spike (P0)\n     → Error rate 15% exceeds threshold (5%)\n     → Check broker availability and network connectivity\n\n  🟠 consumer_lag (P1)\n     → Consumer group order-processor lag: 15,000 messages\n     → Consider scaling consumer instances\n\n💡 Recommendations:\n  1. Check broker availability\n  2. Review consumer group configuration\n```\n\n### Option 2: Programmatic Usage\n\n```bash\npnpm add kafka-log-analyzer\n```\n\n```typescript\nimport { analyzeLog } from 'kafka-log-analyzer'\n\nconst result = await analyzeLog({\n  source: 'file',\n  path: '/var/log/kafka/server.log',\n  focus: ['producer', 'error'],\n  timeline: '1h'\n})\n\nconsole.log(`Total Events: ${result.summary.total}`)\nconsole.log(`P0: ${result.summary.byPriority.P0}`)\n```\n\n### Option 3: CLI (Zero-Install)\n\n```bash\n# Analyze log file\nnpx kafka-log-analyze analyze /var/log/kafka/server.log\n\n# Paste log content via stdin\ncat error.log | npx kafka-log-analyze analyze-paste\n\n# Fetch consumer lag from Prometheus\nnpx kafka-log-analyze lag --cluster production --group order-processor\n\n# Analyze from Kafka Exporter via Prometheus\nnpx kafka-log-analyze analyze-exporter --cluster production\n\n# Analyze from Loki log system\nnpx kafka-log-analyze analyze-loki --cluster production --limit 500\n\n# Start hook server for receiving Grafana/PagerDuty alerts\nnpx kafka-log-analyze hooks --port 3100\n\n# Test push integration\nnpx kafka-log-analyze push-test --target feishu\n\n# Generate shell completion script\nnpx kafka-log-analyze completion bash \u003e /etc/bash_completion.d/kafka-log-analyze\n\n# List diagnostic templates\nnpx kafka-log-analyze templates\n\n# Analyze with a diagnostic template\nnpx kafka-log-analyze analyze server.log --template lag-diagnosis\n\n# Analyze with interactive TUI browser\nnpx kafka-log-analyze analyze server.log --interactive\n\n# Use Chinese locale\nnpx kafka-log-analyze analyze server.log --locale zh\n```\n\n### Option 4: Clone and Run Examples\n\n```bash\ngit clone https://github.com/saqqdy/kafka-log-analyzer.git\ncd kafka-log-analyzer\npnpm install\n\n# Run examples\nnode dist/cli.js --source file --path tests/fixtures/sample-kafka-log.txt\n```\n\n### 📊 Basic Usage\n\n#### 1. Analyze Logs from File\n\n```bash\n# Analyze a Kafka log file\nnode dist/commands/kafka-analyze.js --source file --path /var/log/kafka/server.log\n\n# With timeline analysis\nnode dist/commands/kafka-analyze.js --source file --path server.log --timeline 1h\n\n# Focus on specific areas\nnode dist/commands/kafka-analyze.js --source file --path server.log --focus producer,consumer\n```\n\n#### 2. Analyze Pasted Logs\n\n```bash\n# Paste logs via stdin\ncat kafka-error.log | node dist/commands/kafka-analyze.js --source paste\n\n# Or use heredoc\nnode dist/commands/kafka-analyze.js --source paste \u003c\u003cEOF\n[2024-01-15 10:00:01] ERROR [producer] Failed to send record to topic orders\n[2024-01-15 10:00:02] WARN  [consumer] lag exceeded threshold (5000 messages)\nEOF\n```\n\n#### 3. Use MCP Tools in Claude Code\n\n```typescript\n// In Claude Code, call the analyze_log tool\n{\n  \"source\": \"paste\",\n  \"content\": \"[2024-01-15 10:00:01] ERROR [producer] Failed to send record...\",\n  \"focus\": [\"producer\", \"error\"],\n  \"timeline\": \"1h\",\n  \"priority\": [\"P0\", \"P1\"],\n  \"report\": \"markdown\"\n}\n```\n\n---\n\n## 📋 Version Roadmap\n\n| Version | Codename | Theme | Status |\n|---------|----------|-------|--------|\n| v0.1.0 | Sentinel | Core analysis engine + MCP tools | ✅ Released |\n| v0.2.0 | Watchtower | Enhanced commands + CLI improvements | ✅ Released |\n| v0.2.1 | — | Bug fixes + CI workflow hardening | ✅ Released |\n| v0.3.0 | Guardian | Prometheus + Kafka Exporter integration | ✅ Released |\n| v0.4.0 | Dispatcher | Grafana alerts + Feishu/Slack/JIRA push | ✅ Released |\n| v0.5.0 | Historian | Historical trends + baseline comparison | ✅ Released |\n| v1.0.0 | Architect | Production-ready release | ✅ Released |\n| v1.1.0 | Polyglot | User experience optimization (i18n, cache, charts, TUI, templates) | ✅ Released |\n\n---\n\n## 🗂️ Project Structure\n\n```\nkafka-log-analyzer/\n├── .claude-plugin/\n│   └── plugin.json              # Plugin manifest (required)\n├── .claude/skills/\n│   └── kafka-log-analyzer/      # Skill prompts (core product)\n│       └── skill.md             # Commands + execution flow\n├── src/\n│   ├── index.ts                 # Public API exports\n│   ├── cli.ts                   # CLI entry point\n│   ├── types.ts                 # Core types\n│   ├── mcp-server/              # MCP Server implementation\n│   │   ├── index.ts             # Server entry\n│   │   └── tools/\n│   │       ├── analyze_log.ts   # Log analysis tool\n│   │       └── get_lag.ts       # Consumer lag tool\n│   ├── i18n/                   # Internationalization\n│   │   ├── index.ts            # t(), setLocale(), getLocale()\n│   │   ├── en.ts               # English dictionary\n│   │   └── zh.ts               # Chinese dictionary\n│   ├── cache/                  # In-memory analysis cache\n│   │   └── index.ts            # MemoryCache + computeCacheKey()\n│   ├── chart/                  # ASCII visualization\n│   │   └── timeline.ts         # renderTimeline(), renderSparkline()\n│   ├── completion/             # Shell completion \u0026 MCP schema\n│   │   ├── shell.ts            # generateCompletion(shell)\n│   │   └── schema.ts           # getEnhancedAnalyzeSchema()\n│   ├── report/                 # Report formatters\n│   │   ├── markdown.ts         # formatFoldedReport(), buildSections()\n│   │   └── tui.ts              # launchTUI() interactive browser\n│   ├── templates/              # Diagnostic templates\n│   │   ├── presets.ts          # BUILT_IN_TEMPLATES, getTemplate()\n│   │   └── recommend.ts        # recommendTemplates()\n│   ├── sources/                 # Data source connectors\n│   │   ├── prometheus.ts        # Prometheus API client\n│   │   └── loki.ts              # Loki API client\n│   ├── hooks/                  # Hook receivers \u0026 dedup\n│   │   ├── grafana.ts          # Grafana alert parser\n│   │   ├── pagerduty.ts        # PagerDuty alert parser\n│   │   ├── dedup.ts            # Fingerprint dedup engine\n│   │   └── server.ts           # Hook HTTP server\n│   ├── push/                   # Push notification targets\n│   │   ├── feishu.ts           # Feishu webhook push\n│   │   ├── slack.ts            # Slack webhook push\n│   │   ├── jira.ts             # JIRA issue creation\n│   │   └── dispatch.ts         # Push dispatcher\n│   ├── storage/                 # SQLite persistence \u0026 cleanup\n│   │   ├── db.ts                # Database initialization\n│   │   ├── repository.ts        # Data access layer\n│   │   └── cleanup.ts           # Retention \u0026 auto-cleanup\n│   ├── analysis/                # Trend \u0026 multiplier detection\n│   │   ├── trend.ts             # Trend comparison logic\n│   │   └── multiplier.ts        # Baseline multiplier detection\n│   ├── events/                  # Event-driven architecture\n│   │   ├── bus.ts               # EventEmitter event bus\n│   │   └── listeners/           # Persistence \u0026 baseline listeners\n│   └── utils/                   # Utilities\n│       ├── config.ts            # Config management\n│       └── format.ts            # Output formatting\n├── scripts/                     # Python analysis scripts\n│   └── parse_kafka_log.py       # Log parser\n├── references/                  # Kafka reference docs\n│   ├── kafka-patterns.md        # Common patterns\n│   ├── error-codes.md           # Error code reference\n│   └── tuning-guide.md          # Performance tuning\n├── tests/                       # Test suites\n│   └ fixtures/                  # Test data\n└   └ analyze_log.test.ts        # Unit tests\n└── docs/                        # VitePress docs\n```\n\n---\n\n## 🛠️ Development\n\n```bash\npnpm install          # Install dependencies\npnpm run lint         # ESLint + auto-fix\npnpm run typecheck    # TypeScript check\npnpm run test         # Run tests (vitest)\npnpm run build        # Build (ESM + CJS)\npnpm run docs:dev     # Start docs server\n```\n\n---\n\n## 🆚 Comparison\n\n### vs Traditional Log Analysis\n\n| Dimension | grep/awk | Kafka Log Analyzer |\n|-----------|----------|-------------------|\n| Output | Raw text lines | Structured `Event[]` + anomalies |\n| **Anomalies** | ❌ Manual spotting | ✅ 7 built-in detectors |\n| **Priority** | ❌ No | ✅ P0-P3 automatic grading |\n| **Timeline** | ❌ No | ✅ Time-window distribution |\n| **Recommendations** | ❌ No | ✅ Actionable fix suggestions |\n| **Formats** | ❌ Text only | ✅ Markdown, JSON, Slack |\n\n---\n\n## 🔧 Configuration\n\nCreate `.env` file from template:\n\n```bash\ncp .env.example .env\n```\n\n**Environment Variables:**\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `PROMETHEUS_URL` | Prometheus endpoint | `http://localhost:9090` |\n| `KAFKA_EXPORTER_URL` | Kafka Exporter endpoint | `http://localhost:9308` |\n| `LOKI_URL` | Loki log endpoint | `http://localhost:3100` |\n| `GRAFANA_WEBHOOK_PORT` | Hook server port | `3100` |\n| `FEISHU_WEBHOOK_URL` | Feishu webhook URL | - |\n| `SLACK_WEBHOOK_URL` | Slack webhook URL | - |\n| `JIRA_URL` | JIRA base URL | - |\n| `JIRA_TOKEN` | JIRA API token | - |\n| `JIRA_PROJECT_KEY` | JIRA project key | - |\n| `HOOK_DEDUP_WINDOW_MS` | Dedup TTL (ms) | `300000` |\n| `SQLITE_PATH` | SQLite database path | `./storage/kafka-analyzer.db` |\n| `STORAGE_RETENTION_DAYS` | Data retention in days | `30` |\n| `STORAGE_AUTO_CLEANUP` | Enable automatic daily cleanup | `true` |\n| `LOG_LEVEL` | Logging level | `info` |\n\n---\n\n## 🤝 Contributing\n\nContributions welcome! See [Contributing Guide](CONTRIBUTING.md).\n\n```bash\nnpm run dev          # Watch mode\nnpm test             # Run tests\nnpm run build        # Build\n```\n\n---\n\n## 📚 Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Architecture](docs/architecture/overview.md) | Technical architecture |\n| [API Reference](docs/api/mcp-tools.md) | MCP Tools API |\n| [Deployment](docs/deployment/guide.md) | Deployment guide |\n| [Contributing](CONTRIBUTING.md) | Development guide |\n\n---\n\n## 📄 License\n\nMIT © [saqqdy](https://github.com/saqqdy)\n\n---\n\n## 📚 Resources\n\n- [Kafka Documentation](https://kafka.apache.org/documentation/)\n- [MCP Protocol](https://modelcontextprotocol.io/)\n- [Claude Code Plugins](https://docs.anthropic.com/claude-code/plugins)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaqqdy%2Fkafka-log-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaqqdy%2Fkafka-log-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaqqdy%2Fkafka-log-analyzer/lists"}