How jan-dyndor/text_api_and_grafana_observability works
This is a small FastAPI text-processing service. A client submits validated text to the API, which normalizes it and either returns the cleaned text or computes analysis results and saves them to SQLite. The README also documents Prometheus metrics and a Loki/Grafana observability stack. The graph follows sampled application code and documented capabilities; observability wiring is represented only where the repository’s configuration paths support it.
Main entry points: main.py FastAPI endpoints · datasources.yml Grafana datasources · clean_text.py Text cleaner · database.py DB session
Components 15
API
- FastAPI endpoints
src/simple_text_api/main.py - Request schemas
src/simple_text_api/schemas/schemas.py
Text processing
- Text cleaner
src/simple_text_api/services/clean_text.py - Text analysis
src/simple_text_api/services/text_analysis.py - Text and DB config
src/simple_text_api/config/conf.py
Persistence
- DB session
src/simple_text_api/db/database.py - Analysis record
src/simple_text_api/db/models.py - SQLite database
Observability
- Request logging
src/simple_text_api/utils/logging.py - Prometheus
prometheus.yml - Promtail
promtail.yml - Loki
loki.yml - Grafana dashboards
grafana/dashboards/16110_rev4.json - Grafana datasources
grafana/provisioning/datasources/datasources.yml
Other components
- API client
Connections 15
- API client → FastAPI endpoints: sends request
- FastAPI endpoints → Request schemas: validates input
- FastAPI endpoints → Text cleaner: cleans text
- Text cleaner → Text and DB config: reads characters
- FastAPI endpoints → Text analysis: computes counts
- FastAPI endpoints → DB session: gets session
- FastAPI endpoints → Analysis record: creates record
- DB session → SQLite database: opens session
- FastAPI endpoints → SQLite database: commits result
- FastAPI endpoints → Request logging: logs requests
- Prometheus → FastAPI endpoints: scrapes metrics
- Promtail → Loki: ships logs
- Grafana datasources → Prometheus: configures datasource
- Grafana datasources → Loki: configures datasource
- Grafana dashboards → Grafana datasources: uses sources