𝗠𝗼𝗻𝗶𝘁𝗼𝗿𝗶𝗻𝗴 𝗶𝗻 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁
ਇੱਕ ਪ੍ਰੋਡਕਸ਼ਨ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸਿਰਫ਼ ਚੱਲਣ ਤੋਂ ਇਲਾਵਾ ਹੋਰ ਵੀ ਬਹੁਤ ਕੁਝ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਨੂੰ ਦੇਖਣਯੋਗ (observable) ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਜਦੋਂ ਇਹ ਫੇਲ੍ਹ ਹੋਵੇ ਤਾਂ ਇਸ ਨੂੰ ਠੀਕ ਕਰਨਾ ਆਸਾਨ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਇੰਸੀਡੈਂਟਸ (incidents) ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਹੈਲਥ ਚੈੱਕ, ਮੈਟ੍ਰਿਕਸ, ਲੌਗਸ ਅਤੇ ਸਪੱਸ਼ਟ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
Spring Boot ਇਹ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ Actuator ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। Actuator ਤੁਹਾਨੂੰ health, metrics, ਅਤੇ info ਵਰਗੇ endpoints ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ HTTP ਜਾਂ JMX ਰਾਹੀਂ ਐਕਸਪੋਜ਼ (expose) ਕਰ ਸਕਦੇ ਹੋ।
ਮਾਨੀਟਰ ਕਰਨ ਲਈ ਮੁੱਖ ਖੇਤਰ:
• ਉਪਲਬਧਤਾ (Availability): uptime, readiness, ਅਤੇ liveness ਦੀ ਜਾਂਚ ਕਰੋ। • ਪ੍ਰਦਰਸ਼ਨ (Performance): ਰਿਸਪਾਂਸ ਟਾਈਮ, latency, ਅਤੇ throughput ਨੂੰ ਟ੍ਰੈਕ ਕਰੋ। • ਗਲਤੀਆਂ (Errors): HTTP 4xx/5xx ਗਲਤੀਆਂ ਅਤੇ ਫੇਲ੍ਹ ਹੋਏ ਮੈਸੇਜਾਂ 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ। • JVM: heap, memory, CPU, ਅਤੇ threads ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ। • ਡਾਟਾਬੇਸ (Database): connection pools ਅਤੇ ਸਲੋਅ ਕੁਏਰੀਆਂ (slow queries) ਨੂੰ ਟ੍ਰੈਕ ਕਰੋ। • Kafka: consumer lag ਅਤੇ retry rates ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ।
Metrics Collection
Spring Boot ਮੈਟ੍ਰਿਕਸ ਇਕੱਠੇ ਕਰਨ ਲਈ Micrometer ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਇਹਨਾਂ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਐਕਸਪੋਜ਼ ਕਰਨ ਲਈ Prometheus registry ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਆਮ ਸੈੱਟਅੱਪ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ:
Spring Boot App → Prometheus → Grafana
ਇਹ ਤੁਹਾਨੂੰ ਡੈਸ਼ਬੋਰਡਾਂ 'ਤੇ ਐਪਲੀਕੇਸ਼ਨ ਡੇਟਾ ਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
Logging Best Practices
ਲੌਗਸ ਤੁਹਾਨੂੰ ਇਹ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ ਕਿ ਫੇਲ੍ਹ ਹੋਣ ਦੌਰਾਨ ਕੀ ਹੋਇਆ ਸੀ। ਲੌਗਸ ਨੂੰ ਮਸ਼ੀਨ-ਰੀਡੇਬਲ ਬਣਾਉਣ ਲਈ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ structured JSON logging ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਕਰੋ:
- orderId ਜਾਂ customerId ਵਰਗੇ business IDs ਨੂੰ ਲੌਗ ਕਰੋ।
- ਇੱਕ ਸਿੰਗਲ ਰਿਕੁਐਸਟ ਤੋਂ ਲੌਗਸ ਨੂੰ ਜੋੜਨ ਲਈ correlation IDs ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਐਕਸਪਸ਼ਨ (exceptions) ਲਈ stack traces ਸ਼ਾਮਲ ਕਰੋ।
- structured logs ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਨਾ ਕਰੋ:
- ਪਾਸਵਰਡ, ਟੋਕਨ, ਜਾਂ ਨਿੱਜੀ ਡੇਟਾ ਨੂੰ ਲੌਗ ਨਾ ਕਰੋ।
- ਲੂਪਸ (loops) ਦੇ ਅੰਦਰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਡੇਟਾ ਲੌਗ ਨਾ ਕਰੋ।
- System.out.println ਦੀ ਵਰਤੋਂ ਨਾ ਕਰੋ।
- ਖਾਲੀ catch blocks ਨਾਲ ਗਲਤੀਆਂ ਨੂੰ ਨਾ ਛੁਪਾਓ।
Operational Stability
ਓਪਰੇਸ਼ਨਲ ਸਪੋਰਟ (Operational support) ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਡਿਪਲੋਏ ਕਰਨ ਤੋਂ ਬਾਅਦ ਸਰਵਿਸ ਨੂੰ ਸਥਿਰ ਰੱਖਣਾ। ਤੁਹਾਨੂੰ ਇਹਨਾਂ 'ਤੇ ਧਿਆਨ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ:
- ਮੁੱਦਿਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੰਸੀਡੈਂਟ ਸਪੋਰਟ (Incident support)।
- ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਜਲਦੀ ਫੜਨ ਲਈ ਡੈਸ਼ਬੋਰਡ ਅਤੇ ਅਲਰਟਸ।
- ਰਿਕਵਰੀ ਸਟੈਪਸ ਦੀ ਅਗਵਾਈ ਕਰਨ ਲਈ Runbooks।
- ਫੇਲ੍ਹ ਹੋਈਆਂ ਰਿਲੀਜ਼ਾਂ ਲਈ Rollback stratagies।
ਇੱਕ ਮਜ਼ਬੂਤ Spring Boot ਸਰਵਿਸ ਦੀ ਨਿਗਰਾਨੀ ਕਰਨਾ, ਡੀਬੱਗ ਕਰਨਾ ਅਤੇ ਰਿਕਵਰ ਕਰਨਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।
Source: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220