Tomcat Monitoring¶
Overview¶
Tomcat Monitoring adalah project generic yang menyediakan kapabilitas monitoring ringan untuk Apache Tomcat berbasis container. JMX Exporter dijalankan sebagai Java Agent di dalam JVM Tomcat untuk mengambil metrics secara lokal tanpa mengaktifkan remote JMX.
Prometheus dijalankan sebagai container di dalam monitoring stack project dan mengumpulkan metrics melalui HTTPS untuk menyediakan current dan historical data bagi dashboard serta evaluasi alert. Telegraf memeriksa HTTP health endpoint aplikasi untuk membedakan kondisi JVM yang aktif dari aplikasi yang tidak sehat atau tidak dapat merespons.
Pendekatan embedded dipilih karena cakupan monitoring saat ini berfokus pada runtime metrics dan application health tanpa membutuhkan platform observability end-to-end. Analisis log dilakukan secara insidental menggunakan log lokal dengan retensi dua sampai empat minggu. Dengan memanfaatkan kapasitas CPU dan memory yang masih tersedia pada host, project dapat menyediakan monitoring ringan tanpa menambah biaya dan administrasi full observability platform.
Project ini bersifat platform-agnostic, artinya alert tidak terikat pada satu notification channel atau event management system tertentu. Target lab email capture menggunakan Mailpit lokal telah diverifikasi tanpa Google credential atau external delivery. Gmail App Password tidak lagi menjadi baseline. Persistent Prometheus, Alertmanager, dan lab-only Mailpit sekarang membuktikan real application-health firing/resolved delivery. Integrasi TrueSight melalui Integration Bridge dipertahankan sebagai desain masa depan dan tidak dikerjakan pada lab saat ini; external delivery belum diimplementasikan.
Project Objectives¶
- Menyediakan observability berbasis metrics untuk runtime Apache Tomcat dan JVM.
- Menyediakan dashboard untuk melihat kondisi, performa, dan historical metrics.
- Menghasilkan alert berdasarkan kondisi dan aturan yang dapat diukur.
- Meneruskan status firing dan resolved ke sistem eksternal.
- Menyediakan implementasi yang konsisten, dapat direproduksi, dan dapat diverifikasi.
Scope¶
| Area | Scope |
|---|---|
| Runtime | Mendukung implementasi Apache Tomcat berbasis container sebagai application runtime yang dimonitor. |
| Metrics instrumentation | Mengambil metrics JVM dan Tomcat secara lokal dari dalam JVM tanpa mengaktifkan remote JMX. |
| Application health | Memeriksa HTTP health endpoint untuk mendeteksi aplikasi yang tidak merespons, mengalami timeout, atau berada dalam kondisi tidak sehat. |
| Metrics collection | Mengumpulkan dan menyimpan metrics runtime sebagai time-series untuk melihat kondisi saat ini maupun riwayat sebelumnya. |
| Visualization | Menampilkan current dan historical data mengenai kondisi serta performa runtime Tomcat dan JVM. |
| Alerting | Mengevaluasi kondisi JVM, aplikasi, dan monitoring signal, kemudian menghasilkan alert ketika terjadi gangguan serta resolved notification setelah kondisi kembali normal. |
| External integration | Meneruskan alert ke notification channel atau event management system. Lab memisahkan local email capture dari external delivery; integrasi TrueSight ditunda. |
| Security | Mengamankan komunikasi metrics menggunakan HTTPS dengan server-side TLS serta membatasi akses hanya dari sumber monitoring yang diizinkan. |
| Exclusion | Tidak mencakup Tomcat non-container, business metrics, distributed tracing, centralized log management, maupun jalur akses eksternal aplikasi. |
Technology Stack¶
| Layer | Technology | Responsibility |
|---|---|---|
| Container Runtime | Rootless Podman | Menjalankan Tomcat dan monitoring containers |
| Application Runtime | Apache Tomcat | Menjalankan aplikasi yang dimonitor |
| Metrics Instrumentation | JMX Exporter Java Agent | Membaca JMX lokal dan menyediakan endpoint metrics melalui HTTPS |
| Metrics Collection | Prometheus | Mengumpulkan, menyimpan, dan mengevaluasi metrics |
| Application Health | Telegraf | Memeriksa HTTP health endpoint aplikasi dari container network yang sama |
| Visualization | Metrics Dashboard | Memvisualisasikan kondisi dan historical metrics |
| Alert Management | Alertmanager | Melakukan grouping, deduplication, dan routing alert |
| Notification Verification | Mailpit | Direct-upstream v1.31.0 persistent lab utility; real Prometheus firing/resolved SMTP capture verified on 2026-08-28 |
| Operator CLI Tooling | tmctl |
Single static binary CLI berbasis Go untuk orkestrasi Socket API multi-OS (Linux & Windows) |
| Host Event Collector Daemon | tm-agent |
Single static binary daemon berbasis Go untuk socket event streaming dan atomic evidence spooling |
| External Integration | Integration Bridge | Mengonversi webhook untuk integrasi TrueSight |
| Event Management | TrueSight | Menjadi target desain masa depan dan tidak tersedia pada lab saat ini |
| Documentation | MkDocs | Menerbitkan dokumentasi project |
Current Status¶
| Capability | Status |
|---|---|
| Monitoring architecture | Topology defined; persistent lab JMX and application health flow verified |
| Rootless Podman runtime | Available and verified on devops-lab |
| Tomcat container provisioning | Persistent JMX lab target runs the lab-only JSP health application; production application provisioning planned |
| Tomcat JMX Exporter source | Current source 231cb91 published to Gitea; source validation and local image build passed on 2026-08-25 |
| Tomcat monitoring instrumentation | Current-source image localhost/tomcat-jmx-exporter:1.0.0 deployed with internal HTTPS metrics, lab health application, and no host-published application or metrics port |
| Prometheus container | Persistent lab runtime uses existing named volumes; controlled replacement retained TSDB continuity and enabled healthy alertmanager:9093 delivery on 2026-08-28 |
| Telegraf container | Persistent lab runtime checks the Tomcat JSP health endpoint and is scraped by Prometheus through internal telegraf:9273 |
| Container status monitoring | Metrics source not determined |
| Monitoring implementation | Persistent JMX and Telegraf targets up=1; persistent Prometheus, Alertmanager, and Mailpit captured real TelegrafHealthScrapeUnavailable firing/resolved email on 2026-08-28 |
| End-to-end verification | Completed untuk alur monitoring alert, diagnosis deterministik TomcatDown (TD-01..TD-09), hot-reloading rulepack, dan resolved recovery |
| Diagnostic MVP Pilot | Completed 100%. Diagnostic Service Node.js 24 ESM (0.1.3), SQLite persisten, Restricted Event Collector, Declarative Rulepack Engine, alur pengayaan AI, dan notifikasi Mailpit firing/resolved terverifikasi live di devops-lab |
Diagnostic MVP Pilot¶
Fase Diagnostic MVP Pilot telah selesai dan terverifikasi secara penuh. Sistem membuktikan alur otomatisasi diagnosis insiden deterministik berbasis bukti terbatas tanpa tindakan remediasi otomatis:
Prometheus (TomcatDown) -> Alertmanager -> Diagnostic Service
-> SQLite diagnostic_data & evidence correlation
-> Mailpit (7-Section SRE Report) -> Resolved Notification
Arsitektur sistem diperkuat oleh 5-Layer Knowledge Base and AI Enrichment Architecture:
- Layer 1 (Deterministic Core): Evaluasi pohon keputusan built-in TD-01 s/d TD-08 dengan latensi nol dan kinerja deterministik tinggi.
- Layer 2 (Local Rulepack Knowledge Base): Evaluator aturan dinamis berbasis schema JSON (rulepack-v1.schema.json) dan tabel custom_rules pada SQLite.
- Layer 3 (Ephemeral Spool & Audit Store): Pengumpulan log/crash artifacts dan spool event host atomik melalui Restricted Event Collector (/tmp/diagnostic-spool).
- Layer 4 (AI Post-Mortem & Rule Formulation): Analisis forensik offline oleh LLM eksternal / SRE untuk memformulasikan rule deklaratif baru (TD-09 β DatabaseConnectionPoolExhausted) saat insiden tidak terpetakan (UNDETERMINED).
- Layer 5 (Safe Hot-Ingestion API Boundary): Penambahan aturan baru secara instan melalui POST /api/v1/rules dengan 5-Layer Ingestion Guard (Auth, Schema, Collision, Size Limit, Safety) dan immutabilitas append-only (penolakan operasi mutasi 405 Method Not Allowed) tanpa memerlukan restart container.
Lihat Diagnostic MVP dan Engineering Journal Diagnostic MVP Pilot untuk detail arsitektur, kontrak, dan histori verifikasi lengkap.
Next Phase: Monitoring Platform Integration¶
Setelah fase pondasi dan pilot diagnostik terbukti 100%, pengembangan dilanjutkan ke Monitoring Platform Integration Phase dengan fokus: 1. Dashboard Observabilitas: Menyediakan visualisasi metrik JVM dan Tomcat Connector berbasis Grafana/Prometheus. 2. Standardisasi Log & Multi-Target: Integrasi log terpusat dan perluasan target allowlist multi-instance. 3. Otomatisasi CI/CD & Ansible: Pipeline pengujian otomatis dan provisioning zero-touch.
Seluruh daftar tugas kelanjutan, termasuk mitigasi pemantauan mandiri (health scrape) Diagnostic Service (TM-ADR-0016), ketahanan mesin status SQLite (TM-ADR-0015), pencatatan audit tindakan operator (TM-ADR-0014), dan perluasan aturan diagnosis (TM-ADR-0017), didokumentasikan pada halaman Follow-up Tasks.
Documentation Structure¶
| Section | Purpose |
|---|---|
| Architecture | Menjelaskan desain, aliran data, dan kontrol keamanan |
| Diagnostic MVP | Mendefinisikan pilot TomcatDown, evidence, state, security, dan notification contract |
| Development | Menjelaskan workflow pengembangan dan pengujian |
| Infrastructure | Mendefinisikan container, network, storage, dan certificate prerequisites |
| CI/CD | Menjelaskan pipeline build, test, dan deployment |
| Operations | Menjelaskan coverage monitoring dan aktivitas operasional |
| Follow-up Tasks | Memuat daftar tugas kelanjutan, backlog teknis, dan mitigasi arsitektur |
| Troubleshooting | Menyediakan panduan diagnosis dan penyelesaian masalah |
| FAQ | Menyajikan tanya jawab teknis, logika diagnosis multi-error, dan tata kelola AI |
| Engineering Journal | Menyimpan histori perencanaan dan implementasi |
| References | Mengumpulkan repository, ADR, dan referensi eksternal |
Documentation Model¶
Engineering activity
β
Engineering Journal βββ Architecture Decision Records
β
Review and consolidation
β
Current-state project documentation
Engineering Journal mempertahankan konteks historis. Architecture, Development, Infrastructure, CI/CD, Operations, dan Troubleshooting menjelaskan kondisi serta prosedur yang berlaku saat ini.
Success Criteria¶
- JMX Exporter membaca metrics dari JVM tanpa remote JMX.
- Prometheus mengambil metrics melalui HTTPS dan memverifikasi sertifikat JMX Exporter.
- Telegraf memeriksa HTTP health endpoint aplikasi dari container network yang sama dan menyediakan hasilnya kepada Prometheus.
- Dashboard menampilkan kondisi, performa, dan historical metrics Tomcat.
- Alert firing dan resolved diproses oleh Alertmanager.
- Alertmanager email dapat ditangkap dan diperiksa secara lokal tanpa credential atau external delivery melalui persistent lab-only Mailpit.
- Integrasi TrueSight melalui Integration Bridge dapat ditambahkan kemudian ketika environment target tersedia.
- Status scrape, container, dan endpoint HTTP dapat dibedakan setelah sumber container status metrics ditetapkan.
- Hilangnya HTTP health metrics dapat dibedakan dari hasil health check yang gagal.
- Implementasi dan hasil verifikasi dapat direproduksi dari source project.