AWS OpenTelemetry ਅਤੇ OpenSearch ਨਾਲ ਚੁਣੌਤੀਆਂ ਨੂੰ ਪਾਰ ਕਰਨਾ
OpenSearch ਨਾਲ AWS OpenTelemetry (Otel) ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਦੇ ਸਮੇਂ, ਸਭ ਕੁਝ ਨਿਰਵਿਘਨ ਲੱਗ ਸਕਦਾ ਹੈ—ਜਦੋਂ ਤੱਕ ਕਿ ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਟਵੀਕ ਤੁਹਾਡੇ ਸੈੱਟਅੱਪ ਨੂੰ ਗਲਤੀ ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਨਹੀਂ ਭੇਜਦਾ। ਅਜਿਹਾ ਹੀ ਮਾਮਲਾ ਸੀ ਜਦੋਂ ਮੈਂ ਹਾਲ ਹੀ ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਸੂਚਕਾਂਕ ਨਾਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਆਪਣੇ OpenSearch ਸਿੰਕ ਨੂੰ ਅਪਡੇਟ ਕੀਤਾ ਸੀ। 🛠️
ਇਹ ਸਧਾਰਨ ਜਾਪਦਾ ਸੀ: ਸਿੰਕ ਨੂੰ `ਲੌਗਸ-%{yyyy.MM}` ਨਾਲ ਐਡਜਸਟ ਕਰੋ, ਪਾਈਪਲਾਈਨ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰੋ, ਅਤੇ ਆਮ ਵਾਂਗ ਜਾਰੀ ਰੱਖੋ। ਫਿਰ ਵੀ, ਇਹ ਪ੍ਰਤੀਤ ਹੋਣ ਵਾਲੀ ਮਾਮੂਲੀ ਤਬਦੀਲੀ ਨੇ ਇੱਕ ਅਣਕਿਆਸੀ HTTP 401 ਗਲਤੀ ਨੂੰ ਚਾਲੂ ਕੀਤਾ। ਅਚਾਨਕ, ਲੌਗ ਨਿਰਯਾਤ ਨਹੀਂ ਹੋ ਰਹੇ ਸਨ, ਅਤੇ ਡੀਬੱਗਿੰਗ ਮਸ਼ੀਨ ਵਿੱਚ ਇੱਕ ਭੂਤ ਦਾ ਪਿੱਛਾ ਕਰਨ ਵਾਂਗ ਮਹਿਸੂਸ ਕੀਤਾ। 😓
ਜਦੋਂ ਕਿ OpenSearch ਅਤੇ Otel ਲਈ ਦਸਤਾਵੇਜ਼ ਆਮ ਤੌਰ 'ਤੇ ਮਦਦਗਾਰ ਹੁੰਦੇ ਹਨ, ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਖਾਸ ਦ੍ਰਿਸ਼-ਜਿੱਥੇ ਇੱਕ ਗਤੀਸ਼ੀਲ ਸੂਚਕਾਂਕ ਨਾਮ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ-ਅਕਸਰ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਜਵਾਬਾਂ ਲਈ ਘਬਰਾਹਟ ਛੱਡ ਦਿੰਦੇ ਹਨ। ਔਨਲਾਈਨ ਫੋਰਮਾਂ ਦੀ ਖੋਜ ਕਰਦੇ ਹੋਏ, ਮੈਨੂੰ ਅਹਿਸਾਸ ਹੋਇਆ ਕਿ ਮੈਂ ਇਕੱਲਾ ਨਹੀਂ ਸੀ; ਕਈਆਂ ਨੇ ਸਮਾਨ ਚੁਣੌਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਪਰ ਸਪੱਸ਼ਟ ਸੰਕਲਪਾਂ ਦੀ ਘਾਟ ਸੀ।
ਇਹ ਲੇਖ ਅਜਿਹੀਆਂ ਤਰੁਟੀਆਂ ਦੇ ਮੂਲ ਕਾਰਨ ਦੀ ਖੋਜ ਕਰਦਾ ਹੈ, ਉਹਨਾਂ ਦੇ ਵਾਪਰਨ ਦੇ ਕਾਰਨਾਂ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਕਦਮ-ਦਰ-ਕਦਮ ਗਾਈਡ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਭਾਵੇਂ ਤੁਸੀਂ ਇੱਕ ਤਜਰਬੇਕਾਰ ਇੰਜੀਨੀਅਰ ਹੋ ਜਾਂ ਸਿਰਫ਼ AWS ਨਾਲ ਆਪਣੀ ਯਾਤਰਾ ਸ਼ੁਰੂ ਕਰ ਰਹੇ ਹੋ, ਤੁਸੀਂ ਆਪਣੀ ਪਾਈਪਲਾਈਨ ਨੂੰ ਨਿਰਵਿਘਨ ਚਲਾਉਣ ਲਈ ਹੱਲ ਲੱਭ ਸਕੋਗੇ। 🚀
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
requests.post | ਖਾਸ URL 'ਤੇ ਇੱਕ POST ਬੇਨਤੀ ਭੇਜਦਾ ਹੈ, ਇੱਥੇ OpenSearch ਅੰਤਮ ਬਿੰਦੂ 'ਤੇ ਲੌਗ ਡੇਟਾ ਜਮ੍ਹਾਂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
requests.get | OpenSearch ਵਿੱਚ ਮੌਜੂਦਾ ਇੰਡੈਕਸ ਟੈਮਪਲੇਟ ਕੌਂਫਿਗਰੇਸ਼ਨ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤੇ ਗਏ ਇੱਕ ਨਿਸ਼ਚਿਤ URL ਤੋਂ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। |
HTTPBasicAuth | HTTP ਬੇਨਤੀਆਂ ਦੇ ਨਾਲ ਮੂਲ ਪ੍ਰਮਾਣਿਕਤਾ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ (ਉਪਭੋਗਤਾ ਨਾਮ ਅਤੇ ਪਾਸਵਰਡ) ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਇੱਕ ਢੰਗ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। |
response.raise_for_status | ਜੇਕਰ ਜਵਾਬ ਦਾ ਸਟੇਟਸ ਕੋਡ ਇੱਕ ਤਰੁੱਟੀ ਦਰਸਾਉਂਦਾ ਹੈ ਤਾਂ ਆਟੋਮੈਟਿਕਲੀ ਇੱਕ HTTPError ਵਧਾਉਂਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ, 401 ਅਣਅਧਿਕਾਰਤ)। |
json.dumps | ਬਿਹਤਰ ਪੜ੍ਹਨਯੋਗਤਾ ਲਈ ਇੱਕ ਪਾਈਥਨ ਸ਼ਬਦਕੋਸ਼ ਨੂੰ JSON ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਫਾਰਮੈਟ ਕਰਦਾ ਹੈ, API ਜਵਾਬਾਂ ਨੂੰ ਸਾਫ਼-ਸੁਥਰਾ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
unittest.mock.patch | ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਜਾਂਚ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ ਇੱਕ ਫੰਕਸ਼ਨ ਜਾਂ ਵਿਧੀ ਨੂੰ ਮੌਕ ਨਾਲ ਬਦਲਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਕੋਈ ਅਸਲ API ਕਾਲਾਂ ਨਹੀਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ। |
mock_post.return_value.status_code | ਯੂਨਿਟ ਟੈਸਟਾਂ ਵਿੱਚ ਪੈਚ ਕੀਤੇ `requests.post` ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ ਮਖੌਲ ਕੀਤੇ ਸਥਿਤੀ ਕੋਡ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। |
mock_post.return_value.json.return_value | ਯੂਨਿਟ ਟੈਸਟਾਂ ਵਿੱਚ ਪੈਚ ਕੀਤੇ `requests.post` ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ ਮਖੌਲ ਕੀਤੇ JSON ਜਵਾਬ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ। |
unittest.main | ਜਦੋਂ ਸਕ੍ਰਿਪਟ ਚਲਾਈ ਜਾਂਦੀ ਹੈ ਤਾਂ ਯੂਨਿਟ ਟੈਸਟਾਂ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਸਾਰੇ ਟੈਸਟ ਕੇਸ ਪ੍ਰਮਾਣਿਤ ਹਨ। |
response.json | API ਤੋਂ JSON ਜਵਾਬ ਨੂੰ ਪਾਰਸ ਕਰਦਾ ਹੈ, ਇਸਨੂੰ ਅੱਗੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਲਈ ਪਾਈਥਨ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। |
AWS Otel ਐਕਸਪੋਰਟਰ ਸਕ੍ਰਿਪਟਾਂ ਡਾਇਨਾਮਿਕ ਓਪਨ ਖੋਜ ਮੁੱਦਿਆਂ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰਦੀਆਂ ਹਨ
ਉੱਪਰ ਬਣਾਈਆਂ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟਾਂ ਓਪਨ ਖੋਜ ਦੇ ਨਾਲ AWS Otel ਵਿੱਚ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਨਾਮਕਰਨ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਦੇ ਗੁੰਝਲਦਾਰ ਮੁੱਦੇ ਨਾਲ ਨਜਿੱਠਦੀਆਂ ਹਨ। ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ 'requests.post' ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ ਤਾਂ ਜੋ ਖਾਸ ਓਪਨਸਰਚ ਐਂਡਪੁਆਇੰਟ 'ਤੇ ਲੌਗ ਭੇਜੇ ਜਾ ਸਕਣ। ਇਹ ਗਤੀਸ਼ੀਲ ਸੂਚਕਾਂਕ ਨਾਮਕਰਨ ਪਰੰਪਰਾਵਾਂ ਜਿਵੇਂ `ਲੌਗਸ-{yyyy.MM}` ਨਾਲ ਅਨੁਕੂਲਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ। HTTPBasicAuth ਨੂੰ ਸ਼ਾਮਲ ਕਰਕੇ, ਸਕ੍ਰਿਪਟ ਬੇਨਤੀ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦੀ ਹੈ, ਗਲਤੀਆਂ ਜਿਵੇਂ ਕਿ HTTP 401 ਅਣਅਧਿਕਾਰਤ ਨੂੰ ਰੋਕਦੀ ਹੈ। ਇਹ ਪਹੁੰਚ ਖਾਸ ਤੌਰ 'ਤੇ ਵੱਡੇ ਪੈਮਾਨੇ 'ਤੇ ਲੌਗਿੰਗ ਪਾਈਪਲਾਈਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਵਾਲੀਆਂ ਟੀਮਾਂ ਲਈ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਪ੍ਰਮਾਣਿਕਤਾ ਸਮੱਸਿਆਵਾਂ ਕਾਰਵਾਈਆਂ ਨੂੰ ਰੋਕ ਸਕਦੀਆਂ ਹਨ। 🛠️
ਦੂਜੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ, 'requests.get' ਵਿਧੀ ਗਤੀਸ਼ੀਲ ਸੂਚਕਾਂਕ ਨਾਮਕਰਨ ਸੈਟਿੰਗਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ OpenSearch ਸੂਚਕਾਂਕ ਟੈਮਪਲੇਟ ਕੌਂਫਿਗਰੇਸ਼ਨ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦੀ ਹੈ। ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿਉਂਕਿ ਗਲਤ ਸੂਚਕਾਂਕ ਟੈਮਪਲੇਟਸ ਲੌਗਸ ਨੂੰ ਇੰਜੈਸ਼ਨ ਅਸਫਲ ਕਰ ਸਕਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ ਟੈਮਪਲੇਟ ਡਾਇਨਾਮਿਕ ਪਲੇਸਹੋਲਡਰਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ, ਤਾਂ ਓਪਨ ਖੋਜ ਲੌਗ ਡੇਟਾ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰ ਦੇਵੇਗਾ। ਸਕ੍ਰਿਪਟ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਸੂਚਕਾਂਕ ਸੈਟਿੰਗਾਂ ਸਹੀ ਢੰਗ ਨਾਲ ਕੌਂਫਿਗਰ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ, `json.dumps` ਕਮਾਂਡ ਰਾਹੀਂ ਸਪਸ਼ਟ ਫੀਡਬੈਕ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ, ਜੋ ਕਿ ਸੌਖੀ ਡੀਬੱਗਿੰਗ ਲਈ ਟੈਮਪਲੇਟ ਡੇਟਾ ਨੂੰ ਫਾਰਮੈਟ ਕਰਦੀ ਹੈ। ਇਹ ਸੈਂਕੜੇ ਲੌਗ ਸਟ੍ਰੀਮਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਵਾਲੇ ਇੰਜੀਨੀਅਰਾਂ ਲਈ ਇੱਕ ਜੀਵਨ ਬਚਾਉਣ ਵਾਲਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਸੰਰਚਨਾਵਾਂ ਦਾ ਸ਼ਿਕਾਰ ਕਰਨ ਵਿੱਚ ਬਿਤਾਏ ਸਮੇਂ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। 💡
ਤੀਜੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਯੂਨਿਟ ਟੈਸਟਿੰਗ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇਹ ਕਾਰਜਸ਼ੀਲਤਾ ਮਜ਼ਬੂਤ ਅਤੇ ਗਲਤੀ-ਰਹਿਤ ਹਨ। `unittest.mock.patch` ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਸਕ੍ਰਿਪਟ OpenSearch ਲਈ API ਕਾਲਾਂ ਦਾ ਮਜ਼ਾਕ ਉਡਾਉਂਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਉਤਪਾਦਨ ਡੇਟਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤੇ ਬਿਨਾਂ ਉਹਨਾਂ ਦੀ ਪਾਈਪਲਾਈਨ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮਿਲਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਸਕ੍ਰਿਪਟ ਇੱਕ ਸਫਲ ਲੌਗ ਸਬਮਿਸ਼ਨ ਦੀ ਨਕਲ ਕਰਦੀ ਹੈ ਅਤੇ ਜਵਾਬ ਸਥਿਤੀ ਅਤੇ JSON ਆਉਟਪੁੱਟ ਦੀ ਜਾਂਚ ਕਰਦੀ ਹੈ। ਤਬਦੀਲੀਆਂ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਵੇਲੇ ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਅਵੈਧ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਜਾਂ ਪਹੁੰਚਯੋਗ ਅੰਤਮ ਬਿੰਦੂਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਜਾਂਚਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਅਜਿਹੀ ਜਾਂਚ ਲਾਈਵ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਫਿਕਸਾਂ ਨੂੰ ਤੈਨਾਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵਿਸ਼ਵਾਸ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।
ਲੌਗ ਭੇਜਣ, ਟੈਂਪਲੇਟਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ, ਅਤੇ ਯੂਨਿਟ ਟੈਸਟਿੰਗ ਦੀ ਸੰਯੁਕਤ ਪਹੁੰਚ AWS Otel ਅਤੇ OpenSearch ਨਾਲ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਇੱਕ ਵਿਆਪਕ ਹੱਲ ਤਿਆਰ ਕਰਦੀ ਹੈ। ਇਹ ਸਕ੍ਰਿਪਟਾਂ ਮਾਡਿਊਲਰਿਟੀ ਅਤੇ ਮੁੜ ਵਰਤੋਂਯੋਗਤਾ ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਦਰਸਾਉਂਦੀਆਂ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਪ੍ਰਮਾਣਿਕਤਾ ਤਰਕ ਨੂੰ ਪਾਈਪਲਾਈਨ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸਿਆਂ ਵਿੱਚ ਦੁਬਾਰਾ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਸੂਚਕਾਂਕ ਪ੍ਰਮਾਣਿਕਤਾ ਸਕ੍ਰਿਪਟ ਨੂੰ ਸਮੇਂ-ਸਮੇਂ 'ਤੇ ਚੱਲਣ ਲਈ ਤਹਿ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਕੱਠੇ ਮਿਲ ਕੇ, ਇਹ ਟੂਲ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਲੌਗਿੰਗ ਪਾਈਪਲਾਈਨਾਂ ਚਾਲੂ ਰਹਿੰਦੀਆਂ ਹਨ, ਭਾਵੇਂ ਗਤੀਸ਼ੀਲ ਸੰਰਚਨਾਵਾਂ ਜਾਂ ਹੋਰ ਗੁੰਝਲਦਾਰ ਸੈੱਟਅੱਪ ਸ਼ਾਮਲ ਹੋਣ। ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਸੰਰਚਨਾ ਦੋਵਾਂ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਕੇ, ਇਹ ਹੱਲ ਡੀਬੱਗਿੰਗ ਦੇ ਘੰਟਿਆਂ ਦੀ ਬਚਤ ਕਰਦੇ ਹਨ ਅਤੇ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚਲਾਉਂਦੇ ਰਹਿੰਦੇ ਹਨ। 🚀
ਡਾਇਨਾਮਿਕ ਓਪਨਸਰਚ ਇੰਡੈਕਸਿੰਗ ਨਾਲ AWS Otel ਐਕਸਪੋਰਟਰ ਗਲਤੀਆਂ ਦਾ ਨਿਪਟਾਰਾ
OpenSearch ਨਾਲ Otel ਵਿੱਚ ਪ੍ਰਮਾਣਿਕਤਾ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ Python ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਬੈਕ-ਐਂਡ ਹੱਲ
import requests
from requests.auth import HTTPBasicAuth
import json
# Define OpenSearch endpoint and dynamic index name
endpoint = "https://<otel-log-pipeline>:443/v1/logs"
index_name = "logs-{yyyy.MM}"
# Authentication credentials
username = "your-username"
password = "your-password"
# Sample log data to send
log_data = {
"log": "Test log message",
"timestamp": "2024-11-25T00:00:00Z"
}
# Send log request with authentication
try:
response = requests.post(
endpoint,
json=log_data,
auth=HTTPBasicAuth(username, password)
)
response.raise_for_status()
print("Log successfully sent:", response.json())
except requests.exceptions.RequestException as e:
print("Failed to send log:", str(e))
OpenSearch ਵਿੱਚ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਕੌਂਫਿਗਰੇਸ਼ਨ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨਾ
ਡਾਇਨਾਮਿਕ ਨਾਮਕਰਨ ਸੰਰਚਨਾ ਲਈ OpenSearch ਸੂਚਕਾਂਕ ਟੈਂਪਲੇਟ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ
import requests
from requests.auth import HTTPBasicAuth
# OpenSearch endpoint
opensearch_url = "https://<opensearch-endpoint>/_index_template/logs-template"
# Authentication credentials
username = "your-username"
password = "your-password"
# Check template for dynamic index configuration
try:
response = requests.get(opensearch_url, auth=HTTPBasicAuth(username, password))
response.raise_for_status()
template = response.json()
print("Template retrieved:", json.dumps(template, indent=2))
except requests.exceptions.RequestException as e:
print("Failed to retrieve template:", str(e))
ਯੂਨਿਟ ਟੈਸਟਿੰਗ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਇੰਡੈਕਸਿੰਗ
OpenSearch ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਇੰਡੈਕਸਿੰਗ ਪ੍ਰਵਾਹ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਪਾਈਥਨ ਯੂਨਿਟਟੈਸਟ
import unittest
from unittest.mock import patch
import requests
from requests.auth import HTTPBasicAuth
class TestOpenSearch(unittest.TestCase):
@patch("requests.post")
def test_send_log(self, mock_post):
mock_post.return_value.status_code = 200
mock_post.return_value.json.return_value = {"result": "created"}
endpoint = "https://<otel-log-pipeline>:443/v1/logs"
auth = HTTPBasicAuth("user", "pass")
response = requests.post(endpoint, json={}, auth=auth)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), {"result": "created"})
if __name__ == "__main__":
unittest.main()
AWS Otel ਵਿੱਚ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਨਾਮਕਰਨ ਚੁਣੌਤੀਆਂ ਨੂੰ ਸਮਝਣਾ
ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਨਾਮਕਰਨ, ਜਿਵੇਂ ਕਿ `ਲੌਗਸ-%{yyyy.MM}`, OpenSearch ਵਿੱਚ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸੰਗਠਿਤ ਡੇਟਾ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹ ਲੌਗਸ ਨੂੰ ਮਿਤੀ ਦੁਆਰਾ ਸ਼੍ਰੇਣੀਬੱਧ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਖੋਜ ਕੁਸ਼ਲਤਾ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਲਾਗੂ ਕਰਨ ਨਾਲ ਪ੍ਰਮਾਣਿਕਤਾ ਤਰੁਟੀਆਂ ਜਾਂ ਪਾਈਪਲਾਈਨ ਵਿਘਨ ਵਰਗੀਆਂ ਅਚਾਨਕ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਇੱਕ HTTP 401 ਗਲਤੀ ਹੋ ਸਕਦੀ ਹੈ ਜੇਕਰ ਸਹੀ ਪ੍ਰਮਾਣ ਪੱਤਰ ਓਪਨ ਖੋਜ ਸਿੰਕ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਅੱਗੇ ਨਹੀਂ ਭੇਜੇ ਜਾਂਦੇ ਹਨ। 🛠️
ਇੱਕ ਹੋਰ ਚੁਣੌਤੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਵਿੱਚ ਹੈ ਕਿ ਸੂਚਕਾਂਕ ਟੈਂਪਲੇਟ ਗਤੀਸ਼ੀਲ ਨਾਮਕਰਨ ਪਰੰਪਰਾਵਾਂ ਦੇ ਅਨੁਕੂਲ ਹਨ। OpenSearch ਨੂੰ ਮਿਤੀ-ਆਧਾਰਿਤ ਪੈਟਰਨਾਂ ਦਾ ਸਮਰਥਨ ਕਰਨ ਲਈ ਖਾਸ ਸੰਰਚਨਾਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ ਟੈਮਪਲੇਟ ਇਹਨਾਂ ਕਨਵੈਨਸ਼ਨਾਂ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ, ਤਾਂ ਲੌਗਸ ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਜਿਸ ਨਾਲ ਡਾਟਾ ਖਰਾਬ ਹੋ ਜਾਵੇਗਾ। ਇੰਜੀਨੀਅਰ ਅਕਸਰ ਇਸ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਲੰਬੇ ਡੀਬੱਗਿੰਗ ਸੈਸ਼ਨ ਹੁੰਦੇ ਹਨ। ਟੈਂਪਲੇਟਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਜਾਂ ਸਵੈਚਲਿਤ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਹਨਾਂ ਨੂੰ ਪੂਰਵ-ਸੰਰਚਨਾ ਕਰਨ ਲਈ ਟੂਲਜ਼ ਦਾ ਲਾਭ ਲੈਣਾ ਇਹਨਾਂ ਖਰਾਬੀਆਂ ਤੋਂ ਬਚਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।
ਅੰਤ ਵਿੱਚ, ਪਾਈਪਲਾਈਨ ਦੀ ਜਾਂਚ ਅਤੇ ਨਿਗਰਾਨੀ ਸਥਿਰਤਾ ਬਣਾਈ ਰੱਖਣ ਲਈ ਜ਼ਰੂਰੀ ਕਦਮ ਹਨ। ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸਿੰਗ ਵਿੱਚ ਇੱਕ ਅਚਾਨਕ ਮੁੱਦਾ ਸਹੀ ਚੇਤਾਵਨੀਆਂ ਜਾਂ ਪ੍ਰਮਾਣਿਕਤਾ ਵਿਧੀਆਂ ਤੋਂ ਬਿਨਾਂ ਕਿਸੇ ਦਾ ਧਿਆਨ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ। ਲੌਗ ਸਬਮਿਸ਼ਨਾਂ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ ਸਮੇਂ-ਸਮੇਂ 'ਤੇ ਸੂਚਕਾਂਕ ਟੈਂਪਲੇਟਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪਾਈਪਲਾਈਨ ਭਰੋਸੇਯੋਗ ਬਣੀ ਰਹੇ। ਉਦਾਹਰਨ ਲਈ, ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਟੈਂਪਲੇਟ ਅਨੁਕੂਲਤਾ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਅਨੁਸੂਚਿਤ ਸਕ੍ਰਿਪਟ ਨੂੰ ਤੈਨਾਤ ਕਰਨਾ, ਕੀਮਤੀ ਸਮਾਂ ਅਤੇ ਮਿਹਨਤ ਦੀ ਬਚਤ ਕਰਕੇ ਭਵਿੱਖ ਦੇ ਟੁੱਟਣ ਨੂੰ ਰੋਕ ਸਕਦਾ ਹੈ। 🚀
AWS Otel ਅਤੇ OpenSearch ਏਕੀਕਰਣ ਬਾਰੇ ਆਮ ਸਵਾਲ
- ਪਾਈਪਲਾਈਨ ਵਿੱਚ HTTP 401 ਗਲਤੀ ਕਿਉਂ ਆਉਂਦੀ ਹੈ?
- ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਗੁੰਮ ਜਾਂ ਗਲਤ ਪ੍ਰਮਾਣੀਕਰਨ ਦੇ ਕਾਰਨ ਹੁੰਦੀ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਵੈਧ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਪਾਸ ਕਰਦੇ ਹੋ HTTPBasicAuth.
- ਮੈਂ OpenSearch ਵਿੱਚ ਆਪਣੇ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਟੈਂਪਲੇਟ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਮਾਣਿਤ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਨਾਲ ਇੱਕ GET ਬੇਨਤੀ ਦੀ ਵਰਤੋਂ ਕਰੋ requests.get ਟੈਂਪਲੇਟ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਤਸਦੀਕ ਕਰਨ ਲਈ ਕਿ ਇਹ ਡਾਇਨਾਮਿਕ ਪੈਟਰਨਾਂ ਜਿਵੇਂ `ਲੌਗਸ-%{yyyy.MM}` ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।
- ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਕੀ ਹੈ?
- ਯੂਨਿਟ ਟੈਸਟਿੰਗ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਿਵੇਂ ਕਿ unittest ਲਾਈਵ ਡੇਟਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤੇ ਬਿਨਾਂ ਲੌਗ ਸਬਮਿਸ਼ਨਾਂ ਦੀ ਨਕਲ ਕਰਨ ਅਤੇ ਪਾਈਪਲਾਈਨ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ।
- ਮੈਂ ਡਿੱਗੇ ਹੋਏ ਲੌਗਾਂ ਦੇ ਕਾਰਨ ਡੇਟਾ ਦੇ ਨੁਕਸਾਨ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਾਂ?
- ਡਿੱਗੇ ਹੋਏ ਲੌਗਾਂ ਅਤੇ ਉਹਨਾਂ ਦੇ ਕਾਰਨਾਂ ਨੂੰ ਹਾਸਲ ਕਰਨ ਲਈ ਕੁਲੈਕਟਰ ਪੱਧਰ 'ਤੇ ਲੌਗਿੰਗ ਵਿਧੀ ਨੂੰ ਲਾਗੂ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ response.raise_for_status ਗਲਤੀ ਦਿੱਖ ਲਈ ਕਮਾਂਡ.
- ਕੀ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸਿੰਗ ਪਾਈਪਲਾਈਨ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੀ ਹੈ?
- ਹਾਂ, ਗਲਤ ਸੰਰਚਨਾ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਰੁਕਾਵਟਾਂ ਪੈਦਾ ਕਰ ਸਕਦੀ ਹੈ। ਅਨੁਕੂਲਿਤ ਟੈਂਪਲੇਟਾਂ ਅਤੇ ਸਮੇਂ-ਸਮੇਂ 'ਤੇ ਜਾਂਚਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਇਸ ਜੋਖਮ ਨੂੰ ਘੱਟ ਕਰਦਾ ਹੈ।
ਪਾਈਪਲਾਈਨ ਦੀਆਂ ਤਰੁੱਟੀਆਂ ਨੂੰ ਭਰੋਸੇ ਨਾਲ ਹੱਲ ਕਰਨਾ
AWS Otel ਅਤੇ OpenSearch ਵਿਚਕਾਰ ਇੱਕ ਭਰੋਸੇਯੋਗ ਕਨੈਕਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਪ੍ਰਮਾਣੀਕਰਨ ਅਤੇ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਬੋਧਨ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ। ਸਹੀ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਤੇ ਟੈਂਪਲੇਟਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਕੇ, HTTP 401 ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਪਾਈਪਲਾਈਨਾਂ ਨੂੰ ਨਿਰਵਿਘਨ ਰੱਖਣ ਅਤੇ ਲੌਗਸ ਨੂੰ ਵਿਵਸਥਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਸਥਿਰਤਾ ਬਣਾਈ ਰੱਖਣ ਵਿੱਚ ਟੈਸਟਿੰਗ ਅਤੇ ਆਟੋਮੇਸ਼ਨ ਮਹੱਤਵਪੂਰਨ ਭੂਮਿਕਾ ਨਿਭਾਉਂਦੇ ਹਨ। ਪਾਈਪਲਾਈਨ ਓਪਰੇਸ਼ਨਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਅਤੇ ਯੂਨਿਟ ਟੈਸਟਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਸਕ੍ਰਿਪਟਾਂ ਸਮੇਂ ਦੀ ਬਚਤ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਰੋਕਦੀਆਂ ਹਨ। ਇਹ ਕਿਰਿਆਸ਼ੀਲ ਉਪਾਅ ਕੁਸ਼ਲ ਡਾਟਾ ਪ੍ਰਵਾਹ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਗੁੰਝਲਦਾਰ ਲੌਗਿੰਗ ਸੈੱਟਅੱਪਾਂ ਵਿੱਚ ਵੀ। 🚀
ਹਵਾਲੇ ਅਤੇ ਸਹਾਇਕ ਸਰੋਤ
- 'ਤੇ ਵਿਸਤ੍ਰਿਤ ਦਸਤਾਵੇਜ਼ AWS OpenTelemetry ਕੁਲੈਕਟਰ ਪਾਈਪਲਾਈਨ ਸੰਰਚਨਾ ਅਤੇ ਨਿਰਯਾਤਕ ਸੈੱਟਅੱਪ ਦੀ ਵਿਆਖਿਆ ਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਸੀ.
- ਤੋਂ ਇਨਸਾਈਟਸ ਓਪਨ ਖੋਜ ਦਸਤਾਵੇਜ਼ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਟੈਂਪਲੇਟ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਅਤੇ ਅਨੁਕੂਲਤਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ।
- ਪ੍ਰਮਾਣੀਕਰਨ ਸਮੱਸਿਆ-ਨਿਪਟਾਰਾ ਅਭਿਆਸਾਂ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਦੁਆਰਾ ਮਾਰਗਦਰਸ਼ਨ ਕੀਤਾ ਗਿਆ ਸੀ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀ ਪ੍ਰਮਾਣਿਕਤਾ ਗਾਈਡ ਲਈ ਬੇਨਤੀ ਕਰਦਾ ਹੈ .
- 'ਤੇ ਫੋਰਮ ਚਰਚਾ OpenSearch Community Forum ਅਸਲ-ਸੰਸਾਰ HTTP 401 ਗਲਤੀਆਂ ਲਈ ਵਿਹਾਰਕ ਹੱਲ ਪ੍ਰਦਾਨ ਕੀਤੇ ਹਨ।