taler-monitoring-infrastructure.rst (4622B)
1 .. 2 This file is part of GNU TALER. 3 4 Copyright (C) 2014-2023 Taler Systems SA 5 6 TALER is free software; you can redistribute it and/or modify it under the 7 terms of the GNU Affero General Public License as published by the Free Software 8 Foundation; either version 3.0, or (at your option) any later version. 9 10 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 11 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 12 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 13 14 You should have received a copy of the GNU Affero General Public License along with 15 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 16 17 @author Javier Sepulveda 18 19 .. _taler-merchant-monitoring: 20 .. _taler-monitoring: 21 22 GNU Taler monitoring 23 #################### 24 25 Sentol is the central monitoring server for host metrics, journals and service 26 health. The Ansible setup and operational documentation live in the 27 ``monitoring/`` directory of ``tsys-infra.git``, starting with 28 ``monitoring/README.md``. Refer there for deployment, configuration, client 29 enrollment and maintenance. 30 31 Architecture 32 ============ 33 34 The stack runs as native systemd services on Sentol and the monitored hosts: 35 36 * **Metrics:** Prometheus scrapes Node Exporter and Fluent Bit metrics through 37 each host's nginx proxy using mutually authenticated TLS (mTLS). 38 * **Logs:** Fluent Bit forwards system journals through Sentol's mTLS nginx 39 receiver to VictoriaLogs. The receiver derives the host identity from the 40 client certificate. 41 * **Service checks:** Blackbox Exporter probes HTTP(S) availability and TLS 42 certificates; JSON Exporter reads build and protocol versions from service 43 ``/config`` endpoints. 44 * **Dashboards and alerts:** Perses displays Prometheus metrics. Prometheus 45 evaluates alert rules and sends alerts to Alertmanager for email delivery. 46 47 .. only:: html 48 49 .. mermaid:: 50 :config: {"layout": "elk"} 51 :caption: Monitoring architecture; arrows show requests or log and alert delivery. 52 :alt: Prometheus scrapes host metrics over mTLS and service health through exporters. Fluent Bit sends journals over mTLS to VictoriaLogs. Perses provides dashboards, Alertmanager sends email, and nginx provides authenticated web access. 53 54 flowchart TB 55 subgraph host["Monitored host"] 56 proxy["nginx metrics proxy"] 57 node["Node Exporter"] 58 journal["System journal"] 59 fluent["Fluent Bit"] 60 proxy --> node 61 proxy -->|"collector metrics"| fluent 62 journal --> fluent 63 end 64 subgraph sentol["Sentol"] 65 prom["Prometheus"] 66 ingest["nginx log receiver"] 67 logs["VictoriaLogs"] 68 probes["Blackbox and JSON exporters"] 69 perses["Perses"] 70 alert["Alertmanager"] 71 web["nginx web access"] 72 prom -->|"scrape"| probes 73 perses -->|"query"| prom 74 prom -->|"alerts"| alert 75 ingest --> logs 76 web --> perses 77 web --> prom 78 web --> alert 79 web --> logs 80 end 81 prom -->|"pull / mTLS"| proxy 82 fluent -->|"push / mTLS"| ingest 83 probes -->|"HTTP(S) and /config"| endpoints["Public services"] 84 browser["Operator browser"] -->|"HTTPS / password"| web 85 alert --> smtp["SMTP relay"] 86 kuma["Uptime Kuma"] -->|"independent checks"| endpoints 87 88 Sentol also monitors itself. Collector and server backends listen on loopback; 89 nginx exposes the authenticated interfaces. One private monitoring CA secures 90 metrics and log transport. Metrics and logs are stored centrally on Sentol. 91 92 Hosts are either managed directly by ``tsys-infra.git`` or enrolled as external 93 clients. ``ansible-taler-exchange`` uses the latter model: it configures exchange 94 hosts from bundles exported by Sentol. 95 96 :doc:`uptime-kuma` provides independent availability monitoring, including 97 exchange key and fee checks. Its checks and notifications are configured 98 separately from Sentol. 99 100 Web interfaces 101 ============== 102 103 The interfaces share password authentication over HTTPS. Public Perses access 104 is read-only. 105 106 * `Perses <https://monitoring.taler.net/>`_: dashboards and monitoring overview. 107 * `Prometheus <https://monitoring.taler.net/prometheus/>`_: metrics, targets and rules. 108 * `Alertmanager <https://monitoring.taler.net/alertmanager/>`_: alerts and silences. 109 * `VictoriaLogs <https://monitoring.taler.net/logs/>`_: journal search.