Commit 7da158d
authored
Add Observability Stack and Comprehensive Documentation (#6)
* feat(observability): add Grafana and Prometheus monitoring stack
- Add Prometheus service with Iggy metrics scraping (15s interval)
- Add Grafana service with auto-provisioned datasource and dashboard
- Configure Iggy server to expose /metrics endpoint
- Create pre-built Iggy Overview dashboard with:
- Server status indicator
- HTTP request rate graph
- Message throughput visualization
- Request latency percentiles (p50, p95)
- Active streams counter
- Add shared Docker network for service discovery
- Update CLAUDE.md with observability documentation
Access points:
- Iggy HTTP: localhost:3000
- Prometheus: localhost:9090
- Grafana: localhost:3001 (admin/admin)
* feat(observability): add Iggy Web UI dashboard
- Add apache/iggy-web-ui service on port 3050
- Configure Web UI to connect to Iggy HTTP API
- Update documentation with Web UI access and features
Web UI provides:
- Streams and topics management
- Message browsing and inspection
- User management
- Server health monitoring
Access: http://localhost:3050 (iggy/iggy)
* docs: add event-driven architecture guide and update README
- Add comprehensive guide covering:
- Streams, topics, and partitions explained
- Partition keys and ordering guarantees
- Consumer groups and scaling patterns
- Message retention and expiry configuration
- Error handling strategies (at-least-once, DLQ, idempotency)
- Production patterns (outbox, saga, versioning)
- Complete code examples for producers and consumers
- CLI and HTTP API quick reference
- Update README with:
- Observability stack documentation (Grafana, Prometheus, Web UI)
- Service access URLs and credentials
- Architecture diagram with observability layer
- Prometheus metrics and OpenTelemetry configuration
- Link to new guide in documentation section
* docs: add partitioning guide and enhance main guide
- Add comprehensive partitioning-guide.md covering:
- What partitions are and why they exist
- The ordering problem and partition key solutions
- Domain-specific partition key examples
- Common partitioning mistakes and how to avoid them
- Partition count guidelines and capacity planning
- Consumer group rebalancing mechanics
- Real-world scenario walkthroughs
- Troubleshooting guide
- Enhance docs/guide.md with educational details:
- Add detailed Database struct explanation with SQL examples
- Add database schema for idempotency pattern
- Expand Outbox pattern with problem statement and solution
- Add outbox table schema and publisher query examples
- Add Further Reading references to external resources
* docs: enhance partitioning guide with Iggy-specific details
Add comprehensive Iggy-specific content to the partitioning guide:
- Iggy Partitioning Strategies section:
- Balanced (round-robin) strategy
- Partition ID (direct assignment) strategy
- Messages Key (hash-based) strategy with MurmurHash3 explanation
- Comparison table and use case guidance
- Iggy Partition Storage Architecture section:
- Physical storage layout (streams/topics/partitions/segments)
- Segment structure and benefits
- Offset and time indexes explained
- Index caching modes
- Iggy Server Configuration section:
- Partition settings (fsync, checksum, buffer thresholds)
- Segment settings (size, expiry, caching, archival)
- Topic settings (max_size, auto-delete)
- Message deduplication options
- Configuration trade-offs table
- Custom Partitioners section:
- Partitioner trait explanation
- Example: Weighted partitioner for heterogeneous hardware
- Example: Time-based partitioner for analytics
- Example: Content-based priority partitioner
- Integration with IggyClient
- Enhanced Further Reading section:
- Apache Iggy official resources
- Distributed systems fundamentals
- Related technologies (Kafka, MurmurHash, Cassandra)
- Benchmarking resources
* docs: add durable storage guide and documentation index
- Add comprehensive durable storage guide covering:
- Storage architecture (append-only log, segments)
- Durability configuration (fsync settings, trade-offs)
- Data retention policies (time-based, size-based)
- Backup and archiving (disk, S3-compatible storage)
- Recovery procedures and data integrity
- Performance vs durability trade-offs
- Production recommendations with config templates
- Add docs/README.md as documentation index with:
- Quick navigation by topic
- Links to all available guides
- External resources and references
- Update README.md and CLAUDE.md to reference docs/ directory
* chore: update dependencies
* chore: add .claude/settings.local.json to gitignore
* docs: update changelog for observability and documentation additions1 parent 704a1c3 commit 7da158d
File tree
14 files changed
+3965
-86
lines changed- docs
- observability
- grafana/provisioning
- dashboards
- datasources
- prometheus
14 files changed
+3965
-86
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
10 | 28 | | |
11 | 29 | | |
12 | 30 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
78 | 89 | | |
79 | 90 | | |
80 | 91 | | |
| |||
117 | 128 | | |
118 | 129 | | |
119 | 130 | | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
120 | 138 | | |
121 | 139 | | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
122 | 144 | | |
123 | 145 | | |
124 | 146 | | |
| |||
247 | 269 | | |
248 | 270 | | |
249 | 271 | | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
250 | 347 | | |
251 | 348 | | |
252 | 349 | | |
| |||
255 | 352 | | |
256 | 353 | | |
257 | 354 | | |
258 | | - | |
| 355 | + | |
259 | 356 | | |
260 | | - | |
| 357 | + | |
261 | 358 | | |
262 | 359 | | |
263 | 360 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments