
Valkey और Redis डेटाबेस के लिए रीयल-टाइम मॉनिटरिंग और slowlog विश्लेषण, जिसमें विसंगति पहचान, ACL ऑडिटिंग और Prometheus मेट्रिक्स निर्यात शामिल है।
वह मॉनिटरिंग परत जिसका Valkey हकदार है।
BetterDB उसे संग्रहीत करता है जिसे Valkey फेंक देता है - slowlog, कमांड पैटर्न, क्लाइंट गतिविधि, विसंगति संकेत - ताकि आप डीबग कर सकें कि रात 3 बजे क्या हुआ, न कि केवल यह कि अभी क्या हो रहा है। Valkey 8.x के लिए निर्मित, COMMANDLOG, CLUSTER SLOT-STATS और प्रति-थ्रेड I/O मेट्रिक्स के मूल समर्थन के साथ। बाकी सबके लिए Redis 6+ संगत।
वेबसाइट | Docker Hub | npm | दस्तावेज़ीकरण | ब्लॉग
BetterDB को BetterDB Inc. द्वारा बनाया गया है, जो OCV Open Charter के तहत काम करने वाली एक सार्वजनिक लाभ कंपनी है।

docker run -d --name betterdb -p 3001:3001 betterdb/monitor:latest
अपना ब्राउज़र http://localhost:3001 पर खोलें। किसी विशेष इंस्टेंस की निगरानी के लिए:
docker run -d \
--name betterdb \
-p 3001:3001 \
-e DB_HOST=your-valkey-host \
-e DB_PORT=6379 \
-e DB_PASSWORD=your-password \
betterdb/monitor:latest
दो इमेज वेरिएंट प्रकाशित किए गए हैं, दोनों मल्टी-आर्क (linux/amd64, linux/arm64):
| टैग | यह क्या है |
|---|---|
latest, X.Y.Z-no-ai | डिफ़ॉल्ट इमेज - हर मॉनिटरिंग सुविधा शामिल, प्रयोगात्मक स्थानीय-LLM AI Helper के डिपेंडेंसी के बिना |
X.Y.Z | प्रयोगात्मक AI Helper जोड़ता है (अपना खुद का Ollama लाएँ; AI_ENABLED के माध्यम से डिफ़ॉल्ट रूप से अक्षम) |
पर्सिस्टेंट स्टोरेज, कस्टम पोर्ट, लाइसेंसिंग और एयर-गैप्ड सेटअप के लिए Docker प्रोडक्शन डिप्लॉयमेंट देखें।
Docker के बिना BetterDB Monitor चलाएँ:
npx @betterdb/monitor
पहली बार चलाने पर, एक इंटरैक्टिव सेटअप विज़ार्ड आपको डेटाबेस कनेक्शन, स्टोरेज बैकएंड (SQLite, PostgreSQL, या in-memory), और सर्वर सेटिंग्स के माध्यम से मार्गदर्शन करता है। कॉन्फ़िगरेशन ~/.betterdb/config.json में सहेजा जाता है।
npm install -g @betterdb/monitor # global install
betterdb --setup # re-run setup wizard
betterdb --port 8080 # override server port
betterdb --db-host 1.2.3.4 # override database host
betterdb --help # all options
इसके लिए Node.js >= 20.0.0 और निगरानी हेतु एक Valkey या Redis इंस्टेंस आवश्यक है। SQLite स्टोरेज के लिए, npm install -g better-sqlite3 भी चलाएँ।
@betterdb/mcp के माध्यम से Claude Code, Cursor या किसी भी MCP क्लाइंट के लिए 60 टूल।betterdb_* मेट्रिक्स। docs/prometheus-metrics.md देखें।नोट: प्रोडक्शन बिल्ड (Docker, CLI) में API रूट
/apiप्रीफ़िक्स के अंतर्गत परोसे जाते हैं। स्थानीय विकास (pnpm dev) में कोई प्रीफ़िक्स नहीं होता - जैसेhttp://localhost:3001/health।
| डेटाबेस | न्यूनतम संस्करण | समर्थित सुविधाएँ |
|---|---|---|
| Valkey | 8.0+ | सभी सुविधाएँ, जिनमें COMMANDLOG (8.1+) और CLUSTER SLOT-STATS शामिल हैं |
| Redis | 6+ | Valkey-विशिष्ट COMMANDLOG और CLUSTER SLOT-STATS को छोड़कर सभी सुविधाएँ |
बैकएंड वायर-संगत iovalkey क्लाइंट पर एक एकीकृत एडेप्टर का उपयोग करता है और INFO प्रतिक्रिया से Valkey बनाम Redis को स्वतः पहचानता है (DB_TYPE=auto)। COMMANDLOG और SLOT-STATS जैसी क्षमताएँ प्रति-संस्करण पहचानी जाती हैं, और जब कोई सुविधा उपलब्ध नहीं होती है तो UI आसानी से डिग्रेड हो जाता है।
प्रबंधित सेवाएँ भी समर्थित हैं - AWS ElastiCache, MemoryDB, Redis Cloud और Upstash के लिए गाइड docs/providers में हैं, और @betterdb/agent आउटबाउंड WebSocket के माध्यम से केवल-VPC इंस्टेंस तक पहुँचता है।
Docker इमेज में मॉनिटरिंग एप्लिकेशन (बैकएंड + फ्रंटएंड) शामिल है। इसके लिए आवश्यक है:
docker run -d \
--name betterdb-monitor \
-p 3001:3001 \
-e DB_HOST=your-valkey-host \
-e DB_PORT=6379 \
-e DB_PASSWORD=your-password \
-e STORAGE_TYPE=postgres \
-e STORAGE_URL=postgresql://user:pass@postgres-host:5432/dbname \
betterdb/monitor
PORT पर्यावरण चर सेट करें और -p मैपिंग से मिलाएँ:
docker run -d \
--name betterdb-monitor \
-p 8080:8080 \
-e PORT=8080 \
-e DB_HOST=your-valkey-host \
betterdb/monitor
यदि आपका Valkey और PostgreSQL एक ही होस्ट पर चल रहे हैं:
docker run -d \
--name betterdb-monitor \
--network host \
-e DB_HOST=localhost \
-e DB_PORT=6380 \
-e DB_PASSWORD=devpassword \
-e STORAGE_TYPE=postgres \
-e STORAGE_URL=postgresql://dev:devpass@localhost:5432/postgres \
betterdb/monitor
AI, OTLP एक्सपोर्ट, वेबहुक ट्यूनिंग और हेल्थ-गेट थ्रेशोल्ड सहित पूर्ण संदर्भ: docs/configuration.md।
BetterDB Monitor Pro/Enterprise सुविधाओं को दो तरीकों में से एक में अनलॉक करता है, यह इस पर निर्भर करता है कि होस्ट के पास इंटरनेट एक्सेस है या नहीं:
BETTERDB_LICENSE_KEY सेट करें। मॉनिटर इसे betterdb.com के विरुद्ध सत्यापित करता है और स्थानीय रूप से सत्यापित हस्ताक्षरित टोकन कैश करता है, ताकि आपका टियर छोटी आउटेज और रीस्टार्ट के दौरान काम करता रहे।हर अधिकार एक हस्ताक्षरित RS256 JWT है। मॉनिटर इसे इमेज में एम्बेडेड सार्वजनिक कुंजियों के विरुद्ध स्थानीय रूप से सत्यापित करता है - किसी टोकन पर भरोसा करने के लिए उसे कभी लाइसेंस सर्वर तक नहीं पहुँचना पड़ता। इस प्रकार एक एयर-गैप्ड होस्ट शून्य कनेक्टिविटी के साथ भुगतान किए गए टियर चला सकता है:
.jwt, Pro/Enterprise)। इसमें कोई गोपनीय जानकारी नहीं होती और इसे छेड़ा नहीं जा सकता - कोई भी संपादन हस्ताक्षर को तोड़ देता है।BETTERDB_OFFLINE_LICENSE_FILE (पथ), BETTERDB_OFFLINE_LICENSE (इनलाइन स्ट्रिंग) के माध्यम से प्रदान करें, या UI में सेटिंग्स → लाइसेंस → "एयर-गैप्ड वातावरण? ऑफ़लाइन लाइसेंस सक्रिय करें।" के अंतर्गत पेस्ट करें।जब एक ऑफ़लाइन टोकन कॉन्फ़िगर किया जाता है और कोई BETTERDB_LICENSE_KEY सेट नहीं होता, तो मॉनिटर शून्य आउटबाउंड अनुरोध करता है - लाइसेंस जाँच, टेलीमेट्री और अपडेट पिंग सभी अक्षम रहते हैं। यह टोकन समाप्त होने तक प्रदान किए गए टियर को चलाता है (स्थायी लाइसेंस वार्षिक रूप से फिर से डाउनलोड होते हैं), फिर Community पर वापस आ जाता है।
# fully offline - no network required
docker volume create betterdb-data
docker run --rm -v betterdb-data:/d alpine chown 1001:1001 /d # volume writable by UID 1001 (one-time)
docker run -d --name betterdb-monitor -p 3001:3001 \
-e DB_HOST=your-valkey-host -e DB_PORT=6379 -e DB_PASSWORD=your-password \
-v /path/to/betterdb-license.jwt:/run/secrets/betterdb-license.jwt:ro \
-e BETTERDB_OFFLINE_LICENSE_FILE=/run/secrets/betterdb-license.jwt \
-v betterdb-data:/app/data \
betterdb/monitor
GET /api/license/status के साथ सत्यापित करें → source: offline-token, mode: offline, airGapped: true।
पर्सिस्टेंस:
/app/dataपर एक लिखने-योग्य वॉल्यूम माउंट करें ताकि ऑफ़लाइन लाइसेंस और ऑनलाइन आउटेज-ग्रेस टोकन रीस्टार्ट के बाद भी बने रहें। कंटेनर UID 1001 के रूप में चलता है, इसलिए नए बनाए गए वॉल्यूम को उसके लिएchownकिया जाना चाहिए (ऊपर दिखाया गया है) - अन्यथा पर्सिस्टेंसEACCES … license.jwtके साथ विफल हो जाता है।
पूर्ण प्रवाह, सत्यापन प्राथमिकता और कुंजी-रोटेशन रनबुक के लिए ऑफ़लाइन एवं एयर-गैप्ड लाइसेंस और कॉन्फ़िगरेशन संदर्भ देखें।
node:20-alpinelatest / -no-ai) / ~640MB (प्रयोगात्मक AI Helper की स्थानीय-LLM डिपेंडेंसी वाली संस्करण इमेज)linux/amd64, linux/arm64docker logs -f betterdb-monitor # follow logs
docker stop betterdb-monitor # stop
docker rm betterdb-monitor # remove
BetterDB Monitor ऑडिट ट्रेल, विश्लेषण, कैप्चर और विसंगति डेटा को तीन बैकएंड में से एक में संग्रहीत करता है:
मेट्रिक्स Prometheus टेक्स्ट प्रारूप में GET /api/prometheus/metrics पर उजागर होते हैं: ACL ऑडिट, क्लाइंट कनेक्शन, slowlog/commandlog पैटर्न, मेमोरी, थ्रूपुट, keyspace, प्रतिकृति, क्लस्टर स्लॉट आँकड़े, और Node.js रनटाइम मेट्रिक्स - सभी betterdb_ उपसर्ग के साथ।
scrape_configs:
- job_name: 'betterdb-monitor'
metrics_path: '/api/prometheus/metrics'
static_configs:
- targets: ['your-monitor-host:3001']
पूर्ण मेट्रिक संदर्भ: docs/prometheus-metrics.md और docs/prometheus-integration.md।
betterdb-monitor/
├── apps/
│ ├── api/ # NestJS backend (Fastify)
│ └── web/ # React frontend (Vite)
├── packages/ # Published packages (see below)
├── docs/ # Documentation site (Jekyll)
├── docker-compose.yml # Local Valkey (port 6380) and Redis (port 6382) for testing
└── package.json # Workspace root
इस मोनोरेपो में कई स्टैंडअलोन पैकेज शामिल हैं। पूरी सूची के लिए packages/ देखें।
iovalkey, TypeScript सख्त मोड। पोर्ट 3001।पूर्वापेक्षाएँ: Node.js >= 20.0.0, pnpm >= 9.0.0, Docker।
pnpm install
cp .env.example .env
pnpm docker:dev # local Valkey (6380) and Redis (6382)
pnpm dev # web on :5173, api on :3001
Valkey के बजाय Redis से कनेक्ट करने के लिए, .env में DB_PORT=6382 सेट करें।
pnpm dev:api # API only
pnpm dev:web # frontend only
pnpm docker:dev:down # stop local databases
pnpm build # production build
pnpm test # API tests
Docker इमेज बिल्ड:
pnpm docker:build # local build
pnpm docker:publish # multi-arch build & push (requires buildx)
apps/api/src/ में नए एंडपॉइंट जोड़ेंapps/web/src/api/ में संबंधित API कॉल जोड़ेंpackages/shared/src/types/ में साझा प्रकार जोड़ेंany नहींdocs/ के अंतर्गत सामग्री CC BY-SA 4.0 के तहत लाइसेंस प्राप्त है।proprietary/ के अंतर्गत सामग्री एक वाणिज्यिक लाइसेंस द्वारा कवर की गई है (proprietary/LICENSE देखें)। ये सुविधाएँ प्रारंभिक एक्सेस के दौरान निःशुल्क हैं।| इंटरफ़ेस | विवरण |
|---|
| वेब UI | http://localhost:3001 |
| MCP सर्वर | npx @betterdb/mcp (stdio) - सेटिंग्स → MCP टोकन के अंतर्गत एक टोकन बनाएँ |
| Prometheus | http://localhost:3001/api/prometheus/metrics |
| REST API (OpenAPI) | http://localhost:3001/docs |
| हेल्थ चेक | http://localhost:3001/api/health |
| चर | आवश्यक | डिफ़ॉल्ट | विवरण |
|---|
DB_HOST | हाँ | localhost | निगरानी हेतु Valkey/Redis होस्ट |
DB_PORT | नहीं | 6379 | Valkey/Redis पोर्ट |
DB_PASSWORD | नहीं | - | Valkey/Redis पासवर्ड |
DB_USERNAME | नहीं | default | Valkey/Redis ACL उपयोगकर्ता नाम |
DB_TYPE | नहीं | auto | डेटाबेस प्रकार: auto, valkey, या redis |
STORAGE_TYPE | नहीं | memory | स्टोरेज बैकएंड: memory या postgres |
STORAGE_URL | सशर्त | - | PostgreSQL कनेक्शन URL (STORAGE_TYPE=postgres होने पर आवश्यक) |
PORT | नहीं | 3001 | एप्लिकेशन HTTP पोर्ट |
NODE_ENV | नहीं | production | Node पर्यावरण |
ANOMALY_DETECTION_ENABLED | नहीं | true | विसंगति का पता लगाना सक्षम करें |
ANOMALY_PROMETHEUS_INTERVAL_MS | नहीं | 30000 | Prometheus सारांश अद्यतन अंतराल (ms) |
BETTERDB_LICENSE_KEY | नहीं | - | ऑनलाइन लाइसेंस कुंजी (Pro/Enterprise), नेटवर्क पर सत्यापित |
BETTERDB_OFFLINE_LICENSE_FILE | नहीं | - | एयर-गैप्ड होस्ट के लिए हस्ताक्षरित ऑफ़लाइन लाइसेंस .jwt का पथ (नीचे देखें) |
BETTERDB_OFFLINE_LICENSE | नहीं | - | इनलाइन JWT स्ट्रिंग के रूप में ऑफ़लाइन लाइसेंस टोकन |
BETTERDB_DATA_DIR | नहीं | /app/data | संग्रहीत लाइसेंस स्थिति के लिए निर्देशिका (एक लिखने-योग्य वॉल्यूम माउंट करें) |
BETTERDB_TELEMETRY | नहीं | true | अज्ञात टेलीमेट्री अक्षम करने के लिए false सेट करें |
| बैकएंड | उपयोग केस | नोट्स |
|---|
memory | परीक्षण, अस्थायी वातावरण | Docker में डिफ़ॉल्ट; रीस्टार्ट पर सभी डेटा खो जाता है |
postgres | प्रोडक्शन | STORAGE_TYPE=postgres + STORAGE_URL=postgresql://user:pass@host:port/db |
sqlite | स्थानीय विकास / CLI | Docker प्रोडक्शन इमेज में शामिल नहीं; STORAGE_SQLITE_FILEPATH वैकल्पिक |
| पैकेज | भाषा | रजिस्ट्री |
|---|
@betterdb/monitor | TypeScript | npm |
@betterdb/mcp | TypeScript | npm |
@betterdb/agent | TypeScript | npm |
@betterdb/semantic-cache | TypeScript | npm |
betterdb-semantic-cache | Python | PyPI |
@betterdb/agent-cache | TypeScript | npm |
betterdb-agent-cache | Python | PyPI |
cache-benchmark | Python | सिमेंटिक कैश बेंचमार्क करने के लिए रीप्ले हार्नेस |