Aller au contenu principal

Monitoring

Whoosh-NG inclut des hooks d'observabilité intégrés et un plugin Prometheus pour le monitoring en production.

Métriques intégrées​

MetricsMiddleware​

from whoosh.middleware import MetricsMiddleware, MiddlewareChain
from whoosh.middleware.integration import apply_middleware_to_writer, apply_middleware_to_searcher

chain = MiddlewareChain([MetricsMiddleware()])

writer = apply_middleware_to_writer(ix.writer(), chain.middlewares)
searcher = apply_middleware_to_searcher(ix.searcher(), chain.middlewares)

# Obtenir les métriques
metrics = chain.get_metrics()

Plugin Prometheus​

Installation​

pip install whoosh-ng[metrics]

Métriques exposées​

MétriqueTypeDescription
whoosh_documents_indexed_totalCounterTotal documents indexés
whoosh_searches_executed_totalCounterTotal recherches exécutées
whoosh_indexing_duration_secondsHistogramTemps d'indexation
whoosh_search_duration_secondsHistogramTemps de recherche
whoosh_index_size_bytesGaugeTaille actuelle de l'index
whoosh_cache_hits_totalCounterCache hits
whoosh_cache_misses_totalCounterCache misses

Event Bus pour monitoring​

from whoosh.event_bus import EventBus, DocumentIndexed, SearchExecuted

bus = EventBus()

@bus.subscribe
def on_indexed(event: DocumentIndexed):
stats.increment("documents.indexed")

@bus.subscribe
def on_searched(event: SearchExecuted):
stats.timing("search.duration", event.duration)

Bonnes pratiques​

  1. Ajoutez MetricsMiddleware tôt: Incluez-le dans votre chaîne de base
  2. Exportez via Prometheus: En production, exposez l'endpoint /metrics
  3. Endpoint health: Utilisez /health pour les health checks load balancer
  4. Logging structuré: Corrélez les événements search/index avec des request IDs
  5. Alerting: Définissez des alertes sur les taux d'erreur et les latences