obs: health-check usług mówi DLACZEGO są nieosiągalne + log rozwiązanych adresów #9

Merged
gitea merged 1 commits from service-health-observability into main 2026-08-01 11:52:07 +00:00
Owner

Kontekst

Z produkcji leci powtarzalny warning:

Service 'musician' unreachable (http://192.168.1.15:5000/mp3) - cogs stay disabled: music_commands, file_search_commands

Adres 192.168.1.15:5000 to wbudowany default z constants.py (os.getenv("CONJURER_FILE_SERVICE", "http://192.168.1.15:5000")). Dostajesz go tylko wtedy, gdy zmienna CONJURER_FILE_SERVICE nie dotarła do procesu bota. Dotychczasowy log tego nie rozróżniał.

Zmiany (tylko bot.py, diagnostyka — zero zmian zachowania)

  1. _service_alive_service_health — zamiast bool zwraca wyjątek połączenia (albo None). Warning pokazuje teraz typ i treść:
    • ConnectionError → nikt nie słucha (usługa leży / zły port),
    • ConnectTimeout → firewall / sieć docker,
    • gaierror → zła nazwa hosta / DNS.
  2. Log rozwiązanych adresów na starcie (on_ready): musician(file) / librarian / radio. Widzisz w logu 192.168.1.15:5000 — env nie doszła; widzisz swój prawdziwy IP — problem sieciowy/usługi.

Jak to czyta operator

  • log startowy pokazuje default .15 → sprawdź nazwę zmiennej (CONJURER_FILE_SERVICE) i czy compose/env ją wstrzykuje,
  • log startowy pokazuje prawdziwy IP, a mimo to unreachable [ConnectionError] → usługa musician leży albo zły port/sieć.

Dalszy rozwój (obserwacje)

Ten sam wzorzec (typ wyjątku w logu) warto przenieść na inne miejsca łykające RequestException po cichu (np. wysyłka wyników librariana).

🤖 Generated with Claude Code

## Kontekst Z produkcji leci powtarzalny warning: ``` Service 'musician' unreachable (http://192.168.1.15:5000/mp3) - cogs stay disabled: music_commands, file_search_commands ``` Adres `192.168.1.15:5000` to **wbudowany default** z `constants.py` (`os.getenv("CONJURER_FILE_SERVICE", "http://192.168.1.15:5000")`). Dostajesz go tylko wtedy, gdy zmienna `CONJURER_FILE_SERVICE` **nie dotarła do procesu bota**. Dotychczasowy log tego nie rozróżniał. ## Zmiany (tylko bot.py, diagnostyka — zero zmian zachowania) 1. **`_service_alive` → `_service_health`** — zamiast `bool` zwraca *wyjątek połączenia* (albo `None`). Warning pokazuje teraz typ i treść: - `ConnectionError` → nikt nie słucha (usługa leży / zły port), - `ConnectTimeout` → firewall / sieć docker, - `gaierror` → zła nazwa hosta / DNS. 2. **Log rozwiązanych adresów na starcie** (`on_ready`): `musician(file) / librarian / radio`. Widzisz w logu `192.168.1.15:5000` — env nie doszła; widzisz swój prawdziwy IP — problem sieciowy/usługi. ## Jak to czyta operator - log startowy pokazuje default `.15` → sprawdź nazwę zmiennej (`CONJURER_FILE_SERVICE`) i czy compose/env ją wstrzykuje, - log startowy pokazuje prawdziwy IP, a mimo to `unreachable [ConnectionError]` → usługa musician leży albo zły port/sieć. ## Dalszy rozwój (obserwacje) Ten sam wzorzec (typ wyjątku w logu) warto przenieść na inne miejsca łykające `RequestException` po cichu (np. wysyłka wyników librariana). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gitea self-assigned this 2026-08-01 11:50:35 +00:00
gitea added 1 commit 2026-08-01 11:50:35 +00:00
Make service health-check self-diagnosing
CI / compile (pull_request) Successful in 16s
CI / unit (pull_request) Successful in 22s
CI / integration (pull_request) Successful in 14s
dd43ebfaa9
When a service group's cog stays disabled the log now says WHY:
_service_health returns the actual connection error (ConnectionError
= refused/down, ConnectTimeout = firewall/slow, gaierror = DNS/wrong
host) instead of a bare 'unreachable', and on_ready logs the resolved
FILE/LIBRARIAN/RADIO addresses so an env-var that never reached the
process (address falls back to the 192.168.1.15:5000 default) is
obvious at a glance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea merged commit 442b8a2a60 into main 2026-08-01 11:52:07 +00:00
gitea deleted branch service-health-observability 2026-08-01 11:52:12 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gitea/conjurer#9