docs: nest 19 files into audit/ clients/ infrastructure/ monitoring/ projects/ super-search/
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# OSINT Person MCP -- Super Search Integration
|
||||
|
||||
**Created:** 2026-08-08
|
||||
**Service:** OSINT Person MCP (Core, port 8902)
|
||||
**Integration:** Super Search MCP (Core, port 8899)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The OSINT Person MCP now integrates with Super Search via a dedicated client module. This mirrors the IntelSight pattern: an MCP server that calls Super Search tools through the local MCP endpoint at `http://127.0.0.1:8899/mcp`.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
OSINT Person MCP (port 8902)
|
||||
-> super_search.py (MCP client module)
|
||||
-> http://127.0.0.1:8899/mcp (Super Search MCP endpoint)
|
||||
-> Super Search tools (web_search, web_extract, etc.)
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `/root/docker/osint-person-mcp/super_search.py` | MCP client module (5.6K) |
|
||||
| `/root/docker/osint-person-mcp/server.py` | Main OSINT Person server |
|
||||
| `/root/docker/super-search/server.py` | Super Search MCP (referenced as dependency) |
|
||||
|
||||
## Client Module (super_search.py)
|
||||
|
||||
The module provides MCP client wrappers for Super Search tools:
|
||||
- Call Super Search via `http://127.0.0.1:8899/mcp`
|
||||
- Tool passthrough: any Super Search tool is available to OSINT Person
|
||||
- Pattern mirrors IntelSight's `intelsight_api.py`
|
||||
|
||||
## Clients
|
||||
|
||||
| Client | Role |
|
||||
|--------|------|
|
||||
| `hermes` | Hermes Agent skip tracing tasks |
|
||||
| `dre-osint` | DRE background research |
|
||||
|
||||
## Service Status
|
||||
|
||||
```
|
||||
systemctl is-active osint-person-mcp -> active
|
||||
ss -tlnp | grep 8902 -> 127.0.0.1:8902
|
||||
```
|
||||
|
||||
## Related
|
||||
|
||||
- Super Search v2.4.0: `/root/projects/itpp-infrastructure/docs/super-search-v2.4.0-client-tracking.md`
|
||||
- IntelSight API: Core :8099
|
||||
- DRE MCP: Core :8900
|
||||
@@ -0,0 +1,64 @@
|
||||
# Super Search — Cloudflare Bypass
|
||||
|
||||
**Added:** July 21, 2026
|
||||
**Version:** 2.1.0
|
||||
|
||||
## Extraction Chain
|
||||
|
||||
| Tier | Provider | What it handles | Fallback Trigger |
|
||||
|---|---|---|---|
|
||||
| 1 | Trafilatura | Normal sites | Error OR CF challenge detected |
|
||||
| 2 | Browserless Chrome | CF-protected sites | Chrome render + Trafilatura |
|
||||
| 3 | Firecrawl | Everything else | API-based extraction |
|
||||
|
||||
## CF Detection
|
||||
Nine detection markers for caught challenge pages (from Hound's code + additional):
|
||||
- cf-turnstile, challenges.cloudflare.com/turnstile
|
||||
- cf_chl_opt, __cf_chl
|
||||
- cf-browser-verification, challenge-platform, cf-mitigated
|
||||
- "Checking your browser", "Just a moment"
|
||||
|
||||
## Infrastructure
|
||||
- Browserless Chrome on app1 (152.53.36.131), port 3005
|
||||
- Caddy proxy: app1:3006 → localhost:3005
|
||||
- Firewall: only Core (152.53.192.33) can reach port 3006
|
||||
- Super Search: `/root/docker/super-search/server.py`
|
||||
|
||||
## Verify
|
||||
```bash
|
||||
# Test CF bypass
|
||||
cd /root/docker/super-search && source venv/bin/activate
|
||||
python3 -c "
|
||||
from server import _extract_one
|
||||
import asyncio
|
||||
r = asyncio.run(_extract_one('https://nowsecure.nl'))
|
||||
print(r['provider']) # Should be 'trafilatura' or 'browserless'
|
||||
"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## v2.1 Features (Added July 21, 2026)
|
||||
|
||||
### 13 Tools
|
||||
| # | Tool | Description |
|
||||
|---|---|---|
|
||||
| 1-10 | Original 10 | Search, extract, lookup, suggest, images |
|
||||
| 11 | `web_search_fast` | Parallel racing: all providers fire simultaneously |
|
||||
| 12 | `screenshot` | Browserless Chrome → base64 PNG |
|
||||
| 13 | `circuit_status` | Provider health states (closed/open/half-open) |
|
||||
|
||||
### Circuit Breaker
|
||||
- 8 provider circuits: 3 failures → open for 60s
|
||||
- Prevents hammering dead providers
|
||||
- Auto-recovers when provider comes back
|
||||
|
||||
### Parallel Racing
|
||||
- `web_search_fast`: SearXNG ∥ Exa ∥ DuckDuckGo ∥ Wikipedia
|
||||
- First successful result wins — others cancelled
|
||||
- Typically 2-3x faster than sequential fallback
|
||||
|
||||
### Screenshot
|
||||
- Browserless Chrome on port 3006 (Caddy HTTP proxy)
|
||||
- Full-page or viewport capture
|
||||
- Base64-encoded PNG in JSON response
|
||||
@@ -0,0 +1,336 @@
|
||||
# Super Search MCP Enhancement Execution Plan
|
||||
|
||||
**Created:** 2026-08-07
|
||||
**Source:** Super Search Enhancement Scanner (cron, Aug 7 2026)
|
||||
**Status:** OPEN
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
16 actionable enhancements identified for Super Search MCP (http://127.0.0.1:8899). Current stack: FastMCP 2.x, SearXNG Docker, Exa API, Firecrawl API, Trafilatura, DuckDuckGo fallback.
|
||||
|
||||
---
|
||||
|
||||
## HIGH Priority (Execute First -- Weeks 1-2)
|
||||
|
||||
### 1. Upgrade FastMCP 2.x -> 3.x
|
||||
|
||||
**Why:** Provider architecture, component versioning, OpenTelemetry, tool timeouts, concurrent execution. Current 2.x is aging out.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Pin current FastMCP version to freeze baseline
|
||||
- [ ] Review breaking changes in FastMCP 3.x changelog (v3.0 Feb 2026 -> v3.3.0 May 2026)
|
||||
- [ ] Upgrade in venv: `pip install --upgrade fastmcp`
|
||||
- [ ] Test all 14 Super Search tools individually
|
||||
- [ ] Test fallback chain behavior (SearXNG -> Exa -> DDG -> Firecrawl)
|
||||
- [ ] Verify health_check and circuit_status still work
|
||||
- [ ] Deploy and monitor for 48h
|
||||
|
||||
**Risk:** Medium -- API surface is largely compatible but component versioning may affect tool registration
|
||||
**Effort:** 3-4 hours
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 2. Add Brave Search API to Fallback Chain
|
||||
|
||||
**Why:** Independent 40B+ page index (no Google/Bing dependency). $5/1K queries. LLM Context endpoint returns pre-formatted results for AI use.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Sign up for Brave Search API free tier (2,000 queries/month)
|
||||
- [ ] Store API key in `.env`
|
||||
- [ ] Add `search_brave(query, limit)` to server.py using Brave Web Search endpoint
|
||||
- [ ] Insert between SearXNG and DuckDuckGo in fallback chain
|
||||
- [ ] Add to circuit_status tool
|
||||
- [ ] Add `web_search_llm_context` tool using Brave's LLM Context endpoint
|
||||
- [ ] Test with 20 queries and compare result quality vs Exa/SearXNG
|
||||
|
||||
**Risk:** Low -- independent API, no shared infra
|
||||
**Effort:** 2-3 hours
|
||||
**Dependencies:** Brave API key (free signup)
|
||||
|
||||
---
|
||||
|
||||
### 3. Fix Exa API Deprecations
|
||||
|
||||
**Why:** Exa deprecated `pdf`, `github`, `tweet` categories and replaced `livecrawl` with `maxAgeHours`. `research paper` -> `publication`.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Audit server.py for all Exa category references
|
||||
- [ ] Replace `category: "research paper"` -> `category: "publication"` in `web_search_academic`
|
||||
- [ ] Remove `pdf`, `github`, `tweet` from category mapping logic
|
||||
- [ ] Replace `livecrawl` -> `maxAgeHours` in `web_extract` Exa path
|
||||
- [ ] Test academic search with new `publication` category (350M papers)
|
||||
- [ ] Test extraction with `maxAgeHours` parameter
|
||||
|
||||
**Risk:** Low -- straightforward replacements, Exa docs are clear
|
||||
**Effort:** 1 hour
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 4. Add Crawl4AI as Self-Hosted Extraction Backend
|
||||
|
||||
**Why:** Free, no rate limits, stealth mode (undetected browser), JS rendering, parallel crawling. 77K GitHub stars. Handles bot-protected pages that Trafilatura and Firecrawl can't reach.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Install Crawl4AI: `pip install crawl4ai`
|
||||
- [ ] Add `web_extract_stealth(url)` tool -- uses Playwright stealth mode for JS-heavy/bot-protected pages
|
||||
- [ ] Add `web_extract_bulk(urls)` tool -- parallel extraction for batch jobs
|
||||
- [ ] Wire into fallback chain: Trafilatura -> Firecrawl -> Crawl4AI
|
||||
- [ ] Test on known-bot-protected URLs (VRBO, Expedia, etc.)
|
||||
- [ ] Document Playwright dependency (may need `playwright install chromium`)
|
||||
|
||||
**Risk:** Medium -- adds Chromium/Playwright dependency (~300MB), may increase RAM usage
|
||||
**Effort:** 3-4 hours
|
||||
**Dependencies:** `pip install crawl4ai playwright`, `playwright install chromium`
|
||||
|
||||
---
|
||||
|
||||
## MEDIUM Priority (Plan Next -- Weeks 3-4)
|
||||
|
||||
### 5. Migrate SSE -> Streamable HTTP Transport
|
||||
|
||||
**Why:** MCP spec (2026-07-28) deprecated SSE. Streamable HTTP works with standard CORS, auth, and load balancers.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Verify FastMCP 3.x supports Streamable HTTP natively (it does)
|
||||
- [ ] Update server.py transport configuration
|
||||
- [ ] Test with Hermes Agent as MCP client
|
||||
- [ ] Verify Caddy reverse proxy still works
|
||||
- [ ] Update any client configurations pointing to SSE endpoint
|
||||
|
||||
**Risk:** Medium -- transport change affects all MCP clients
|
||||
**Effort:** 2 hours
|
||||
**Dependencies:** **FastMCP 3.x upgrade (Item #1)**
|
||||
|
||||
---
|
||||
|
||||
### 6. Add `web_extract_document` Tool
|
||||
|
||||
**Why:** Currently Super Search only handles URLs. Firecrawl `/parse` handles PDFs, Word docs, spreadsheets up to 50MB -> clean markdown.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Add `web_extract_document(file_url)` tool wrapping Firecrawl `/parse`
|
||||
- [ ] Support PDF, DOCX, XLSX, PPTX formats
|
||||
- [ ] Return clean markdown with structured data where available
|
||||
- [ ] Add file size validation (max 50MB)
|
||||
- [ ] Test with sample PDF, Word doc, and spreadsheet
|
||||
|
||||
**Risk:** Low -- wraps existing Firecrawl endpoint
|
||||
**Effort:** 1-2 hours
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 7. Add Firecrawl Lockdown Mode
|
||||
|
||||
**Why:** Zero-outbound-request extraction from Firecrawl cache. Critical for sensitive/sandboxed use cases.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Add `lockdown: true` parameter to `web_extract` when using Firecrawl
|
||||
- [ ] Document that Lockdown Mode means no live outbound requests
|
||||
- [ ] Test that Lockdown Mode returns only cached/indexed content
|
||||
|
||||
**Risk:** Low -- feature flag on existing Firecrawl API
|
||||
**Effort:** 30 minutes
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 8. Add Exa Agent as `web_research_deep` Tool
|
||||
|
||||
**Why:** Multi-step agentic research for complex queries. Exa Agent does recursive search + extraction + synthesis.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Review Exa Agent API docs and pricing ($0.10/ACU + $0.005/search)
|
||||
- [ ] Add `web_research_deep(query, effort="medium")` tool
|
||||
- [ ] Support `outputSchema` for structured outputs
|
||||
- [ ] Add cost estimation before execution (warn if >$0.50 estimated)
|
||||
- [ ] Test with complex multi-step research query
|
||||
|
||||
**Risk:** Medium -- cost per query is higher, needs rate limiting
|
||||
**Effort:** 2-3 hours
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 9. Add Result Deduplication Across Providers
|
||||
|
||||
**Why:** When multiple backends return the same URL, we serve duplicate results. Simple URL normalization + content hash dedup.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Implement URL normalization (strip tracking params, trailing slashes, www prefix)
|
||||
- [ ] When merging results from multiple providers, hash URLs and deduplicate
|
||||
- [ ] Keep the best snippet/metadata per unique URL (prefer richer provider)
|
||||
- [ ] Add `dedup_summary` to response metadata (count of duplicates removed)
|
||||
- [ ] Test with queries that hit multiple providers
|
||||
|
||||
**Risk:** Low -- purely additive, no breaking changes
|
||||
**Effort:** 2 hours
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 10. Evaluate 4get-hijacked for SearXNG
|
||||
|
||||
**Why:** Community project that proxies ~30 search engines into SearXNG-compatible format. Sidesteps broken major engine scrapers.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Clone and review `cra88y/4get-hijacked` repo
|
||||
- [ ] Test integration with our SearXNG Docker instance
|
||||
- [ ] Benchmark result quality vs current engine pool
|
||||
- [ ] Decide: add to search engine list or pass
|
||||
|
||||
**Risk:** Low -- evaluation only, no commitment
|
||||
**Effort:** 1-2 hours
|
||||
**Dependencies:** None
|
||||
|
||||
---
|
||||
|
||||
### 11. Add Tavily as `web_search_ai` Tool
|
||||
|
||||
**Why:** Purpose-built AI search with relevance scores. Not for general fallback chain (higher cost/latency) but excellent for AI-optimized results.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Sign up for Tavily free tier (1,000 queries/month)
|
||||
- [ ] Add `web_search_ai(query, depth="advanced")` as standalone tool
|
||||
- [ ] Return relevance-scored results with confidence markers
|
||||
- [ ] Do NOT add to fallback chain (keep as separate tool for explicit use)
|
||||
- [ ] Test against SearXNG/Exa for quality comparison
|
||||
|
||||
**Risk:** Low -- standalone tool, no chain impact
|
||||
**Effort:** 1.5 hours
|
||||
**Dependencies:** Tavily API key (free signup)
|
||||
|
||||
---
|
||||
|
||||
## LOW Priority (Nice to Have -- Weeks 5+)
|
||||
|
||||
### 12. Add Exa Monitors Integration
|
||||
|
||||
**Why:** Scheduled searches with webhook delivery, deduplicated against previous runs.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Review Exa Monitors API
|
||||
- [ ] Add `web_monitor(query, schedule, webhook_url)` tool
|
||||
- [ ] Could replace or augment custom monitoring scripts
|
||||
|
||||
**Effort:** 2 hours
|
||||
**Dependencies:** Webhook endpoint for delivery
|
||||
|
||||
---
|
||||
|
||||
### 13. Add Brave Goggles for Custom Reranking
|
||||
|
||||
**Why:** Only search API that lets you boost/promote specific domains at query time.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Create Goggles config for IT Pro Partner preferred domains
|
||||
- [ ] Add `goggles` parameter to Brave search calls
|
||||
- [ ] Test domain boosting effectiveness
|
||||
|
||||
**Effort:** 1 hour
|
||||
**Dependencies:** Brave Search API (Item #2)
|
||||
|
||||
---
|
||||
|
||||
### 14. Add LLM Metadata Enrichment
|
||||
|
||||
**Why:** Generate one-line semantic descriptions of extracted pages for better downstream RAG retrieval.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Add `enrich_metadata: true` option to web_extract
|
||||
- [ ] Use cheap local model or Firecrawl's built-in summarization
|
||||
- [ ] Tag results with semantic descriptions
|
||||
- [ ] Benchmark retrieval improvement
|
||||
|
||||
**Effort:** 3-4 hours
|
||||
**Dependencies:** None (can use Firecrawl's question format or local model)
|
||||
|
||||
---
|
||||
|
||||
### 15. Evaluate Kagi Search API
|
||||
|
||||
**Why:** Premium search quality. Worth a trial key for comparison benchmarking.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Sign up for Kagi trial
|
||||
- [ ] Run 50 side-by-side comparisons: Kagi vs Exa vs Brave vs SearXNG
|
||||
- [ ] Score relevance, freshness, and coverage
|
||||
- [ ] Decide: add to chain or pass
|
||||
|
||||
**Effort:** 2 hours
|
||||
**Dependencies:** Kagi API trial key
|
||||
|
||||
---
|
||||
|
||||
### 16. Add OpenTelemetry Tracing
|
||||
|
||||
**Why:** FastMCP 3.x has native OTEL -- spans for every search call, fallback path taken, extraction step.
|
||||
|
||||
**Steps:**
|
||||
- [ ] Install OpenTelemetry packages
|
||||
- [ ] Run with `opentelemetry-instrument fastmcp run server.py`
|
||||
- [ ] Configure export to local collector or file
|
||||
- [ ] Analyze fallback chain behavior
|
||||
|
||||
**Effort:** 1 hour
|
||||
**Dependencies:** FastMCP 3.x upgrade (Item #1)
|
||||
|
||||
---
|
||||
|
||||
## Execution Order (Dependency-Aware)
|
||||
|
||||
```
|
||||
Phase 1 (Week 1):
|
||||
Day 1: Items #1 (FastMCP 3.0) + #3 (Exa deprecations) -- can run in parallel
|
||||
Day 2: Item #2 (Brave Search API) -- independent
|
||||
Day 3: Item #4 (Crawl4AI) -- independent, longest install
|
||||
Day 4: Testing + burn-in of Phase 1 changes
|
||||
|
||||
Phase 2 (Week 2):
|
||||
Item #5 (SSE -> Streamable HTTP) -- depends on #1
|
||||
Items #6 + #7 (extract_document + Lockdown Mode) -- parallel, both Firecrawl
|
||||
Item #9 (result dedup) -- independent
|
||||
|
||||
Phase 3 (Week 3):
|
||||
Items #8 (Exa Agent) + #11 (Tavily) -- parallel, both new API integrations
|
||||
Item #10 (4get-hijacked eval) -- independent
|
||||
|
||||
Phase 4 (Week 4+):
|
||||
Items #12-#16 -- low priority, pick up as time allows
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Risk Register
|
||||
|
||||
| Risk | Likelihood | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| FastMCP 3.x breaking API changes | Medium | High | Pin 2.x, test exhaustively before deploy |
|
||||
| Crawl4AI RAM usage with Chromium | Medium | Medium | Monitor RAM, consider Docker isolation |
|
||||
| Exa Agent cost overruns | Low | Medium | Per-query cost estimate cap |
|
||||
| Brave API rate limits | Low | Low | Free tier sufficient for testing |
|
||||
| Streamable HTTP transport issues | Low | High | Test with Hermes Agent before cutting over |
|
||||
|
||||
---
|
||||
|
||||
## Success Metrics
|
||||
|
||||
- All 14 existing tools continue working post-upgrade
|
||||
- Brave API adds independent fallback source (no Google/Bing dependency)
|
||||
- Crawl4AI handles 3+ known-bot-protected sites that previously failed
|
||||
- Result dedup eliminates >=80% of cross-provider duplicates
|
||||
- Zero regressions in Hermes Agent's use of Super Search tools
|
||||
|
||||
---
|
||||
|
||||
## Reference
|
||||
|
||||
- Super Search server: `/root/docker/super-search/server.py`
|
||||
- Systemd service: `super-search.service`
|
||||
- Venv: `/root/docker/super-search/venv/`
|
||||
- Health endpoint: `http://127.0.0.1:8899/health`
|
||||
- Full audit: Aug 1, 2026 -- zero breaking patterns for FastMCP 4.0
|
||||
@@ -0,0 +1,76 @@
|
||||
# Super Search v2.4.0 -- Client-ID Metrics Tracking
|
||||
|
||||
**Created:** 2026-08-08
|
||||
**Service:** Super Search MCP (Core, port 8899)
|
||||
**Feature:** Client-ID tracking via Prometheus metrics + Grafana dashboard
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Super Search v2.4.0 adds per-client usage tracking. A Starlette middleware intercepts the `X-Client-Id` header on every MCP call and increments Prometheus counters per client and per tool. Metrics are exposed at `:8899/metrics` and scraped by Prometheus every 30s. A Grafana dashboard visualizes usage.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Client (hermes/intelsight/dre-osint/verdicttank)
|
||||
-> X-Client-Id header
|
||||
-> Super Search Middleware (intercepts, increments Prometheus counter)
|
||||
-> MCP tool handler
|
||||
-> :8899/metrics (Prometheus endpoint)
|
||||
-> Prometheus (Docker, scrapes 172.17.0.1:8899/metrics every 30s)
|
||||
-> Grafana (Dashboard: "Super Search - Client Tracking" at /d/ffuktvmgcpkhse)
|
||||
```
|
||||
|
||||
## Clients Tracked
|
||||
|
||||
| Client | Purpose |
|
||||
|--------|---------|
|
||||
| `hermes` | Hermes Agent's own Super Search usage |
|
||||
| `intelsight` | IntelSight product backend |
|
||||
| `dre-osint` | Debt Recovery Experts skip tracing |
|
||||
| `verdicttank` | VerdictTank research |
|
||||
|
||||
Fallback: calls without `X-Client-Id` header are logged as `anonymous`.
|
||||
|
||||
## Key Changes
|
||||
|
||||
### Super Search (server.py)
|
||||
- Middleware added: intercepts `X-Client-Id` header on `/mcp` POST
|
||||
- Prometheus counters: `ss_tool_calls_total{client, tool}`, `ss_tool_duration_seconds{client, tool}`
|
||||
- `/metrics` endpoint exposed on port 8899
|
||||
|
||||
### Prometheus (prometheus.yml)
|
||||
- Job: `super-search`
|
||||
- Target: `172.17.0.1:8899` (Docker bridge to host)
|
||||
- Scrape interval: 30s
|
||||
- Config: `/root/docker/monitoring/prometheus/prometheus.yml`
|
||||
|
||||
### Grafana
|
||||
- Dashboard UID: `ffuktvmgcpkhse`
|
||||
- Title: "Super Search - Client Tracking"
|
||||
- Access: `https://core:3002/d/ffuktvmgcpkhse`
|
||||
- Panels: tool calls per client, duration distribution, top tools
|
||||
|
||||
### Firewall (UFW)
|
||||
- Rule: allow 172.17.0.0/16 to port 8899/tcp
|
||||
- Reason: Prometheus Docker container needs host access
|
||||
|
||||
### Super Search Binding
|
||||
- Changed from `127.0.0.1:8899` to `0.0.0.0:8899`
|
||||
- Required because Docker containers (Prometheus) cannot reach 127.0.0.1 on the host
|
||||
|
||||
## Verification
|
||||
|
||||
```
|
||||
ss -tlnp | grep 8899 -> 0.0.0.0:8899 (bound to all interfaces)
|
||||
curl -s 172.17.0.1:8899/metrics | grep ss_tool -> counters present
|
||||
ufw status | grep 8899 -> ALLOW 172.17.0.0/16
|
||||
```
|
||||
|
||||
## Related Docs
|
||||
|
||||
- Super Search Enhancement Plan: `/root/projects/itpp-infrastructure/docs/super-search-enhancement-plan.md`
|
||||
- Server: `/root/docker/super-search/server.py`
|
||||
- Systemd: `super-search.service`
|
||||
- Prometheus config: `/root/docker/monitoring/prometheus/prometheus.yml`
|
||||
Reference in New Issue
Block a user