ਮਿਨੀਕਿਊਬ ਸੈਟਅਪ ਦੁਆਰਾ ਗ੍ਰਾਫਾਨਾ ਵਿੱਚ ਪ੍ਰੋਮੀਥੀਅਸ ਡੇਟਾ ਸਰੋਤ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ

Prometheus

ਮਿਨੀਕਿਊਬ ਵਿੱਚ ਪ੍ਰੋਮੀਥੀਅਸ-ਗ੍ਰਾਫਾਨਾ ਏਕੀਕਰਣ ਦਾ ਨਿਪਟਾਰਾ

ਕੁਬਰਨੇਟਸ-ਅਧਾਰਿਤ ਨਿਗਰਾਨੀ ਸਟੈਕ ਨੂੰ ਤੈਨਾਤ ਕਰਦੇ ਸਮੇਂ, ਪ੍ਰੋਮੀਥੀਅਸ ਅਤੇ ਗ੍ਰਾਫਾਨਾ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨਾ ਆਮ ਗੱਲ ਹੈ, ਮੀਟ੍ਰਿਕ ਇਕੱਤਰਤਾ ਅਤੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਲਈ ਦੋ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਾਧਨ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਸਥਾਨਕ ਕੁਬਰਨੇਟਸ ਵਾਤਾਵਰਣ ਦੇ ਤੌਰ 'ਤੇ, ਏਕੀਕਰਣ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਹੋਣੀਆਂ ਅਸਧਾਰਨ ਨਹੀਂ ਹਨ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਡੇਟਾ ਸਰੋਤ ਸੰਰਚਨਾਵਾਂ ਨੂੰ ਸੈਟ ਅਪ ਕਰਦੇ ਹੋ।

ਇਹ ਲੇਖ ਜੋੜਨ ਵੇਲੇ ਇੱਕ ਆਮ ਮੁੱਦੇ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਦਾ ਹੈ Grafana ਵਿੱਚ ਇੱਕ ਡਾਟਾ ਸਰੋਤ ਦੇ ਤੌਰ ਤੇ. Grafana ਨੂੰ ਇੱਕ ਨਵੇਂ ਨੇਮਸਪੇਸ ਵਿੱਚ ਤੈਨਾਤ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਪ੍ਰੋਮੀਥੀਅਸ ਵਰਗੀ ਸੇਵਾ ਨਾਲ ਕੁਨੈਕਸ਼ਨ, ਦੁਆਰਾ ਪਹੁੰਚਯੋਗ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ। ਇਹ ਸਮੱਸਿਆ ਸੇਵਾਵਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨ ਅਤੇ ਸੰਬੰਧਿਤ ਸੰਰਚਨਾਵਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਤੋਂ ਬਾਅਦ ਆਉਂਦੀ ਹੈ।

ਆਈ ਗਲਤੀ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਪ੍ਰੋਮੀਥੀਅਸ ਨੂੰ HTTP ਦੁਆਰਾ ਪੁੱਛਗਿੱਛ ਕਰਦੇ ਹੋਏ, ਪਰੇਸ਼ਾਨ ਕਰ ਸਕਦੀ ਹੈ। ਇੱਕ "ਨੁਕਸਦਾਰ HTTP ਜਵਾਬ" ਸੁਨੇਹਾ ਇੱਕ ਟੁੱਟੇ ਟਰਾਂਸਪੋਰਟ ਕਨੈਕਸ਼ਨ ਨੂੰ ਦਰਸਾ ਸਕਦਾ ਹੈ। ਇਹ ਤਰੁੱਟੀ Minikube ਵਿੱਚ ਕਈ ਤਰ੍ਹਾਂ ਦੀਆਂ ਨੈੱਟਵਰਕਿੰਗ ਜਾਂ ਸੇਵਾ ਐਕਸਪੋਜ਼ਰ ਸਮੱਸਿਆਵਾਂ ਕਾਰਨ ਹੋ ਸਕਦੀ ਹੈ।

ਇਹ ਲੇਖ ਤੁਹਾਨੂੰ ਮੂਲ ਕਾਰਨ ਦਾ ਪਤਾ ਲਗਾਉਣ ਅਤੇ ਸਮੱਸਿਆ ਦੇ ਅਸਲ ਉਪਚਾਰ ਪ੍ਰਦਾਨ ਕਰਨ ਦੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੀ ਅਗਵਾਈ ਕਰੇਗਾ। ਵਿਚਕਾਰ ਇੱਕ ਸਫਲ ਸੈਟਅਪ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਅਸੀਂ ਕੁਨੈਕਸ਼ਨ ਮੁੱਦੇ ਦਾ ਨਿਪਟਾਰਾ ਕਰਾਂਗੇ ਅਤੇ ਤੁਹਾਡੇ ਵਿੱਚ ਵਾਤਾਵਰਣ.

ਹੁਕਮ ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ
http.Redirect ਇਹ GoLang ਕਮਾਂਡ ਆਉਣ ਵਾਲੀ HTTP ਬੇਨਤੀ ਨੂੰ ਕਿਸੇ ਹੋਰ ਮੰਜ਼ਿਲ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਦੀ ਹੈ। ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਇਸਦੀ ਵਰਤੋਂ ਗ੍ਰਾਫਾਨਾ ਦੀ ਬੇਨਤੀ ਨੂੰ ਪ੍ਰੋਮੀਥੀਅਸ ਸੇਵਾ ਅੰਤਮ ਬਿੰਦੂ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
log.Fatal GoLang ਵਿੱਚ ਇੱਕ ਨਾਜ਼ੁਕ ਗਲਤੀ ਸੁਨੇਹੇ ਨੂੰ ਲੌਗ ਕਰਨ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਤੁਰੰਤ ਖਤਮ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਸਕ੍ਰਿਪਟ ਗਾਰੰਟੀ ਦਿੰਦੀ ਹੈ ਕਿ HTTP ਸਰਵਰ ਨੂੰ ਲਾਂਚ ਕਰਨ ਵਿੱਚ ਕੋਈ ਵੀ ਤਰੁੱਟੀ ਲੌਗ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ ਇਹ ਕਿ ਪ੍ਰੋਗਰਾਮ ਸ਼ਾਨਦਾਰ ਢੰਗ ਨਾਲ ਬਾਹਰ ਨਿਕਲਦਾ ਹੈ।
ListenAndServe ਇੱਕ HTTP ਸਰਵਰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇੱਕ GoLang ਕਮਾਂਡ। ਹੱਲ ਦੇ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਆਉਣ ਵਾਲੀਆਂ ਬੇਨਤੀਆਂ ਲਈ ਪੋਰਟ 8080 'ਤੇ ਸੁਣਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਹੈਂਡਲਰ ਫੰਕਸ਼ਨ ਲਈ ਰੂਟ ਕਰਦਾ ਹੈ।
httptest.NewRequest GoLang ਕਮਾਂਡ ਜਾਂਚ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ ਇੱਕ ਨਵੀਂ HTTP ਬੇਨਤੀ ਤਿਆਰ ਕਰਦੀ ਹੈ। ਕਿਸੇ ਅਸਲ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ 'ਤੇ ਭਰੋਸਾ ਕੀਤੇ ਬਿਨਾਂ HTTP ਟ੍ਰੈਫਿਕ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਾਂ ਵਿੱਚ ਇਹ ਬਹੁਤ ਸੌਖਾ ਹੈ।
httptest.NewRecorder ਟੈਸਟਿੰਗ ਲਈ ਇੱਕ ਹੋਰ GoLang-ਵਿਸ਼ੇਸ਼ ਕਮਾਂਡ, ਇਹ ਇੱਕ HTTP ਜਵਾਬ ਰਿਕਾਰਡਰ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਡਿਵੈਲਪਰ ਨੂੰ ਟੈਸਟਿੰਗ ਦੌਰਾਨ ਹੈਂਡਲਰ ਫੰਕਸ਼ਨ ਦੇ ਜਵਾਬ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।
namespace ਸਰੋਤਾਂ ਨੂੰ ਵੱਖ ਕਰਨ ਲਈ ਕੁਬਰਨੇਟਸ YAML ਫਾਈਲਾਂ ਵਿੱਚ ਨਾਮ-ਸਥਾਨਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ Grafana ਅਤੇ Prometheus ਦੇ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਅਲੱਗ ਕਰਨ ਲਈ, ਅਸੀਂ ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਉਹਨਾਂ ਨੂੰ ਸੁਤੰਤਰ ਨਾਮ-ਸਥਾਨਾਂ ਵਿੱਚ ਤੈਨਾਤ ਕਰਦੇ ਹਾਂ।
ClusterIP ClusterIP ਇੱਕ Kubernetes ਸੇਵਾ ਹੈ ਜੋ ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਸੇਵਾਵਾਂ ਨੂੰ ਉਜਾਗਰ ਕਰਦੀ ਹੈ। ਇਸ ਪੋਸਟ ਵਿੱਚ, ਸਭ ਤੋਂ ਸਰਲ ਕੁਲੈਕਟਰ ਸੇਵਾ ਇੱਕ ਕਲੱਸਟਰਆਈਪੀ ਸੇਵਾ ਦੇ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਕੀਤੀ ਗਈ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਸਨੂੰ ਸੁਰੰਗ ਜਾਂ ਨੋਡਪੋਰਟ ਦੀ ਵਰਤੋਂ ਕੀਤੇ ਬਿਨਾਂ ਕਲੱਸਟਰ ਦੇ ਬਾਹਰੋਂ ਸਿੱਧਾ ਐਕਸੈਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
Ingress ਕੁਬਰਨੇਟਸ ਵਿੱਚ, ਪ੍ਰਵੇਸ਼ ਕਲੱਸਟਰ ਸੇਵਾਵਾਂ ਲਈ ਬਾਹਰੀ ਪਹੁੰਚ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ HTTP/HTTPS ਰੂਟਾਂ 'ਤੇ। YAML ਉਦਾਹਰਨ ਬਾਹਰੀ ਪਹੁੰਚ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ ਪ੍ਰੋਮੀਥੀਅਸ ਸੇਵਾ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਦੀ ਹੈ।
pathType ਕੁਬਰਨੇਟਸ ਇਨਗਰੇਸ-ਵਿਸ਼ੇਸ਼ ਖੇਤਰ ਦੱਸਦਾ ਹੈ ਕਿ ਮਾਰਗ ਦਾ ਮੇਲ ਕਿਵੇਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। Ingress ਉਦਾਹਰਨ ਵਿੱਚ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕੋਈ ਵੀ ਮਾਰਗ ਜੋ "/" ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਪ੍ਰੋਮੀਥੀਅਸ ਸੇਵਾ ਵੱਲ ਜਾਂਦਾ ਹੈ।

ਗ੍ਰਾਫਾਨਾ ਵਿੱਚ ਪ੍ਰੋਮੀਥੀਅਸ ਡੇਟਾ ਸਰੋਤ ਮੁੱਦਿਆਂ ਦੇ ਹੱਲਾਂ ਨੂੰ ਸਮਝਣਾ

ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ ਨੋਡਪੋਰਟ ਦੁਆਰਾ ਪ੍ਰੋਮੀਥੀਅਸ ਸੇਵਾ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ ਕੁਬਰਨੇਟਸ ਦੀ YAML ਸੰਰਚਨਾ ਦਾ ਲਾਭ ਉਠਾਉਂਦੀ ਹੈ। ਇਹ ਰਣਨੀਤੀ ਉਦੋਂ ਬਹੁਤ ਉਪਯੋਗੀ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਗ੍ਰਾਫਾਨਾ ਵਰਗੇ ਬਾਹਰੀ ਪਲੇਟਫਾਰਮਾਂ ਤੋਂ ਕੁਬਰਨੇਟਸ ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ ਕੰਮ ਕਰਨ ਵਾਲੀਆਂ ਸੇਵਾਵਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। 'ਨੋਡਪੋਰਟ' ਕਿਸਮ ਇੱਕ ਖਾਸ ਪੋਰਟ 'ਤੇ ਸੇਵਾ ਲਈ ਬਾਹਰੀ ਟ੍ਰੈਫਿਕ ਨੂੰ ਰੂਟ ਕਰਦੀ ਹੈ, ਜਿਸ ਨੂੰ ਗ੍ਰਾਫਾਨਾ ਬਾਅਦ ਵਿੱਚ ਡੇਟਾ ਸਰੋਤ ਵਜੋਂ ਵਰਤ ਸਕਦਾ ਹੈ। ਇਹ ਰਣਨੀਤੀ ਵਿਕਾਸ ਅਤੇ ਟੈਸਟਿੰਗ ਦ੍ਰਿਸ਼ਾਂ ਲਈ ਉਚਿਤ ਹੈ ਜਦੋਂ ਪ੍ਰੋਗਰਾਮ ਮਿਨੀਕਿਊਬ ਜਾਂ ਸਮਾਨ ਸਥਾਨਕ ਕਲੱਸਟਰਾਂ 'ਤੇ ਚੱਲਦਾ ਹੈ।

ਦੂਜਾ ਵਿਕਲਪ ਕੁਬਰਨੇਟਸ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਪ੍ਰੋਮੀਥੀਅਸ ਸੇਵਾ ਨੂੰ HTTP ਰਾਹੀਂ ਪ੍ਰਗਟ ਕਰਨ ਲਈ ਸਰੋਤ, ਇਸ ਨੂੰ ਕਲੱਸਟਰ ਦੇ ਬਾਹਰੋਂ ਪਹੁੰਚਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। ਪ੍ਰਵੇਸ਼ ਬਾਹਰੀ ਰੂਟਾਂ ਨੂੰ ਸੈੱਟ ਕਰਕੇ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਇਸ ਕੇਸ ਵਿੱਚ ਗ੍ਰਾਫਾਨਾ ਨੂੰ ਇੱਕ HTTP ਅੰਤਮ ਬਿੰਦੂ ਰਾਹੀਂ ਸਿੱਧੇ ਪ੍ਰੋਮੀਥੀਅਸ ਦੀ ਪੁੱਛਗਿੱਛ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇੰਗਰੈਸ ਨੂੰ ਰੁਜ਼ਗਾਰ ਦੇਣ ਦਾ ਮੁੱਖ ਫਾਇਦਾ ਇਹ ਹੈ ਕਿ ਇਹ ਲੋਡ ਬੈਲੇਂਸਿੰਗ, SSL ਸਮਾਪਤੀ, ਅਤੇ ਨਾਮ-ਆਧਾਰਿਤ ਵਰਚੁਅਲ ਹੋਸਟਿੰਗ ਸਮੇਤ ਵਧੇਰੇ ਵਿਆਪਕ ਰੂਟਿੰਗ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ। ਇਹ ਹੱਲ ਉਤਪਾਦਨ ਦੇ ਦ੍ਰਿਸ਼ਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ ਜਿੱਥੇ ਤੁਹਾਨੂੰ ਨਿਗਰਾਨੀ ਸੇਵਾਵਾਂ ਤੱਕ ਸੁਰੱਖਿਅਤ ਅਤੇ ਸਕੇਲੇਬਲ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਤੀਜੀ ਵਿਧੀ ਗ੍ਰਾਫਾਨਾ ਤੋਂ ਪ੍ਰੋਮੀਥੀਅਸ ਤੱਕ HTTP ਬੇਨਤੀਆਂ ਨੂੰ ਰੀਲੇਅ ਕਰਨ ਲਈ ਇੱਕ ਕਸਟਮ GoLang ਪ੍ਰੌਕਸੀ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ। GoLang ਸਰਵਰ ਬੇਨਤੀਆਂ ਨੂੰ ਸੁਣਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਕੁਬਰਨੇਟਸ ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ ਢੁਕਵੇਂ ਅੰਤਮ ਬਿੰਦੂ ਤੱਕ ਪਹੁੰਚਾਉਂਦਾ ਹੈ। ਇਹ ਵਿਧੀ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਨੈੱਟਵਰਕ ਸੀਮਾਵਾਂ ਗ੍ਰਾਫਾਨਾ ਤੋਂ ਪ੍ਰੋਮੀਥੀਅਸ ਤੱਕ ਸਿੱਧੇ ਕਨੈਕਸ਼ਨ ਨੂੰ ਰੋਕਦੀਆਂ ਹਨ ਜਾਂ ਜਦੋਂ ਬੇਨਤੀ ਪ੍ਰੋਮੀਥੀਅਸ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਵਾਧੂ ਪ੍ਰਕਿਰਿਆ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। GoLang ਸਕ੍ਰਿਪਟ ਸਿੱਧੀ ਪਰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ, ਇਸ ਨੂੰ ਹੋਰ ਹੱਲਾਂ ਲਈ ਇੱਕ ਵਿਹਾਰਕ ਵਿਕਲਪ ਦਿੰਦੀ ਹੈ।

ਅੰਤ ਵਿੱਚ, GoLang ਦੇ ਯੂਨਿਟ ਟੈਸਟ ਗਾਰੰਟੀ ਦਿੰਦੇ ਹਨ ਕਿ ਪ੍ਰੌਕਸੀ ਉਮੀਦ ਅਨੁਸਾਰ ਵਿਵਹਾਰ ਕਰਦੀ ਹੈ। 'httptest.NewRequest' ਅਤੇ 'httptest.NewRecorder' ਨਾਲ HTTP ਬੇਨਤੀਆਂ ਅਤੇ ਜਵਾਬਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪ੍ਰੌਕਸੀ ਬਾਹਰੀ ਨਿਰਭਰਤਾ 'ਤੇ ਨਿਰਭਰ ਕੀਤੇ ਬਿਨਾਂ ਟਰੈਫਿਕ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪਾਸ ਕਰਦੀ ਹੈ। ਇਹ ਯੂਨਿਟ ਟੈਸਟ ਅਸਲ ਟ੍ਰੈਫਿਕ ਦੀ ਨਕਲ ਕਰਦੇ ਹਨ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਗ੍ਰਾਫਾਨਾ ਇਰਾਦੇ ਅਨੁਸਾਰ ਪ੍ਰੋਮੀਥੀਅਸ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦਾ ਹੈ। ਯੂਨਿਟ ਟੈਸਟ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹਨ ਕਿ ਪ੍ਰੌਕਸੀ ਸਰਵਰ ਵਿਭਿੰਨ ਪ੍ਰਸੰਗਾਂ ਵਿੱਚ ਭਰੋਸੇਯੋਗਤਾ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਅਤੇ ਨਾਲ ਹੀ ਪ੍ਰੋਜੈਕਟ ਦੇ ਵਿਸਤਾਰ ਦੇ ਨਾਲ ਕੋਡ ਗੁਣਵੱਤਾ ਨੂੰ ਬਣਾਈ ਰੱਖਣਾ।

Minikube ਦੁਆਰਾ Grafana ਵਿੱਚ Prometheus DataSource Integration ਨੂੰ ਫਿਕਸ ਕਰਨਾ

ਕੁਬਰਨੇਟਸ YAML ਸੰਰਚਨਾ ਅਤੇ ਨੋਡਪੋਰਟ ਸੇਵਾ ਐਕਸਪੋਜਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਹੱਲ

apiVersion: v1
kind: Service
metadata:
  name: prometheus-service
  namespace: default
spec:
  selector:
    app: prometheus
  ports:
  - protocol: TCP
    port: 9090
    targetPort: 9090
  type: NodePort

ਗ੍ਰਾਫਾਨਾ ਪਹੁੰਚ ਲਈ ਇੰਗਰੈਸ ਦੁਆਰਾ ਪ੍ਰੋਮੀਥੀਅਸ ਕੁਲੈਕਟਰ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਨਾ

ਇੱਕ HTTP ਰੂਟ ਉੱਤੇ ਪ੍ਰੋਮੀਥੀਅਸ ਨੂੰ ਬੇਨਕਾਬ ਕਰਨ ਲਈ ਕੁਬਰਨੇਟਸ ਇੰਗ੍ਰੇਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਹੱਲ

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-ingress
  namespace: default
spec:
  rules:
  - host: prometheus.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: prometheus-service
            port:
              number: 9090

ਕਸਟਮ ਐਂਡਪੁਆਇੰਟ ਰਾਹੀਂ ਗ੍ਰਾਫਾਨਾ ਨਾਲ ਪ੍ਰੋਮੀਥੀਅਸ ਏਕੀਕਰਣ

Grafana ਲਈ ਪ੍ਰੌਕਸੀ ਪ੍ਰੋਮੀਥੀਅਸ ਸਵਾਲਾਂ ਲਈ GoLang ਬੈਕਐਂਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੱਲ

package main
import (
  "net/http"
  "log"
)
func handler(w http.ResponseWriter, r *http.Request) {
  http.Redirect(w, r, "http://prometheus-service.default.svc:9090", 301)
}
func main() {
  http.HandleFunc("/", handler)
  log.Fatal(http.ListenAndServe(":8080", nil))
}

GoLang ਪ੍ਰੌਕਸੀ ਲਈ ਯੂਨਿਟ ਟੈਸਟ

ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਪ੍ਰੌਕਸੀ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦੀ ਹੈ GoLang ਯੂਨਿਟ ਟੈਸਟ

package main
import (
  "net/http"
  "net/http/httptest"
  "testing"
)
func TestHandler(t *testing.T) {
  req := httptest.NewRequest("GET", "http://localhost:8080", nil)
  rr := httptest.NewRecorder()
  handler(rr, req)
  if status := rr.Code; status != http.StatusMovedPermanently {
    t.Errorf("wrong status code: got %v want %v", status, http.StatusMovedPermanently)
  }
}

ਕੁਬਰਨੇਟਸ ਵਿੱਚ ਪ੍ਰੋਮੀਥੀਅਸ ਅਤੇ ਗ੍ਰਾਫਾਨਾ ਏਕੀਕਰਣ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ

ਕੁਬਰਨੇਟਸ ਵਿੱਚ ਪ੍ਰੋਮੀਥੀਅਸ ਅਤੇ ਗ੍ਰਾਫਾਨਾ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨ ਲਈ ਨਾਮ-ਸਥਾਨਾਂ ਵਿੱਚ ਉੱਚਿਤ ਸੇਵਾ ਐਕਸਪੋਜਰ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਵਿੱਚ, ਤੁਸੀਂ ਡਿਫੌਲਟ ਨੇਮਸਪੇਸ ਵਿੱਚ ਓਪਨਟੈਲੀਮੇਟਰੀ ਕੁਲੈਕਟਰ ਅਤੇ ਗ੍ਰਾਫਾਨਾ ਨੂੰ ਇੱਕ ਵੱਖਰੇ ਵਿੱਚ ਸਥਾਪਿਤ ਕੀਤਾ ਹੈ। ਜਦੋਂ ਕਿ ਕੁਬਰਨੇਟਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਿਵੇਂ ਕਿ ClusterIP ਅੰਦਰੂਨੀ ਸੰਚਾਰ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦੀਆਂ ਹਨ, ਸਹੀ ਸੈੱਟਅੱਪ ਤੋਂ ਬਿਨਾਂ ਕਰਾਸ-ਨੇਮਸਪੇਸ ਸੰਚਾਰ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਸੇਵਾ ਦੇ ਨਾਮ ਅਤੇ DNS ਐਂਟਰੀਆਂ ਸਹੀ ਢੰਗ ਨਾਲ ਕੌਂਫਿਗਰ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ ਤਾਂ ਜੋ ਗ੍ਰਾਫਾਨਾ ਉਦੇਸ਼ਿਤ ਅੰਤਮ ਬਿੰਦੂ ਰਾਹੀਂ ਪ੍ਰੋਮੀਥੀਅਸ ਤੱਕ ਪਹੁੰਚ ਸਕੇ।

Grafana ਦੇ ਨਾਲ ਪ੍ਰੋਮੀਥੀਅਸ ਏਕੀਕਰਣ ਨੂੰ ਡੀਬੱਗ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਹੋਰ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਕਿਵੇਂ ਸੇਵਾ ਕਿਸਮਾਂ ਪਹੁੰਚਯੋਗਤਾ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰਦੀਆਂ ਹਨ। ਏ ਸੇਵਾ ਅੰਦਰੂਨੀ ਕਲੱਸਟਰ ਦੀ ਵਰਤੋਂ ਲਈ ਹੈ ਅਤੇ ਸਿਰਫ਼ ਕੁਬਰਨੇਟਸ ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ ਹੀ ਪਹੁੰਚ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਜੇਕਰ Grafana ਨੂੰ ਇੱਕ ਵੱਖਰੇ ਨੇਮਸਪੇਸ ਵਿੱਚ ਸਥਾਪਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਜਾਂ ਬਾਹਰੀ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ a ਵਿੱਚ ਜਾਣਾ ਜਾਂ ਸੇਵਾ ਦੀ ਕਿਸਮ ਵਧੇਰੇ ਉਚਿਤ ਹੈ। ਇਹ ਅੱਪਡੇਟ ਟ੍ਰੈਫਿਕ ਨੂੰ ਕਲੱਸਟਰ ਦੇ ਬਾਹਰ ਜਾਂ ਨੇਮ-ਸਪੇਸਾਂ ਵਿੱਚ ਰੂਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੁਬਰਨੇਟਸ ਵਿੱਚ ਸੇਵਾਵਾਂ ਦੇ ਵਿਚਕਾਰ ਨੈਟਵਰਕ ਮੁਸ਼ਕਲਾਂ ਦਾ ਨਿਦਾਨ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ "HTTP ਟ੍ਰਾਂਸਪੋਰਟ ਕਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ" ਵਰਗੇ ਸੁਨੇਹੇ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ। ਇਹ ਮੁਸ਼ਕਲਾਂ ਗਲਤ ਸੰਰਚਿਤ ਪੋਰਟਾਂ ਜਾਂ ਪ੍ਰੋਟੋਕੋਲਾਂ ਕਾਰਨ ਹੋ ਸਕਦੀਆਂ ਹਨ। 'kubectl ਪੋਰਟ-ਫਾਰਵਰਡ' ਅਤੇ ਨੈੱਟਵਰਕ ਨੀਤੀਆਂ ਵਰਗੇ ਟੂਲ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰੀਅਲ ਟਾਈਮ ਵਿੱਚ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਵਿੱਚ ਕਨੈਕਟੀਵਿਟੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਦੇ ਸਕਦੇ ਹਨ, ਉਹਨਾਂ ਨੂੰ ਨੈੱਟਵਰਕ ਮੁੱਦਿਆਂ ਨੂੰ ਹੋਰ ਤੇਜ਼ੀ ਨਾਲ ਅਲੱਗ ਕਰਨ ਅਤੇ ਸੰਭਾਲਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਪ੍ਰੋਮੀਥੀਅਸ ਅਤੇ ਗ੍ਰਾਫਾਨਾ ਨਿਰਵਿਘਨ ਸੰਚਾਰ ਕਰਦੇ ਹਨ, ਸਹੀ ਪੋਰਟਾਂ (ਜਿਵੇਂ ਕਿ gRPC ਲਈ 4317) ਨੂੰ ਬੇਨਕਾਬ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ।

  1. ਮੈਂ ਇੱਕ ਵੱਖਰੀ ਨੇਮਸਪੇਸ ਵਿੱਚ ਚੱਲਣ ਵਾਲੀ ਸੇਵਾ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
  2. ਨੇਮਸਪੇਸ ਦੇ ਵਿਚਕਾਰ ਟਰੈਫਿਕ ਟ੍ਰਾਂਸਪੋਰਟ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਏ ਜਾਂ ਏ ਤੁਹਾਡੀ ਸੇਵਾ ਸੰਰਚਨਾ ਵਿੱਚ।
  3. ਗ੍ਰਾਫਾਨਾ ਮੇਰੇ ਪ੍ਰੋਮੀਥੀਅਸ ਉਦਾਹਰਣ ਨਾਲ ਜੁੜਨ ਵਿੱਚ ਅਸਮਰੱਥ ਕਿਉਂ ਹੈ?
  4. ਇਹ ਸਮੱਸਿਆ ਅਕਸਰ ਅਣਉਚਿਤ ਸੇਵਾ ਐਕਸਪੋਜ਼ਰ ਜਾਂ ਨੈੱਟਵਰਕ ਨੀਤੀਆਂ ਕਾਰਨ ਹੁੰਦੀ ਹੈ। ਜਾਂਚ ਕਰੋ ਕਿ ਸੇਵਾ ਦੁਆਰਾ ਪਹੁੰਚਯੋਗ ਹੈ ਜਾਂ ਇਹ ਕਿ Grafana ਵਿੱਚ ਅੰਤਮ ਬਿੰਦੂ ਪ੍ਰੋਮੀਥੀਅਸ ਸੇਵਾ ਲਈ DNS ਐਂਟਰੀ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
  5. ਮੈਂ Kubernetes ਵਿੱਚ ਸੇਵਾਵਾਂ ਦੇ ਵਿਚਕਾਰ ਨੈੱਟਵਰਕ ਸਮੱਸਿਆਵਾਂ ਦਾ ਨਿਪਟਾਰਾ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
  6. ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ , ਤੁਸੀਂ ਸੇਵਾਵਾਂ ਦੇ ਵਿਚਕਾਰ ਕਨੈਕਟੀਵਿਟੀ ਦੀ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ ਨੈੱਟਵਰਕ ਮੁੱਦਿਆਂ ਨੂੰ ਅਲੱਗ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।
  7. ਪ੍ਰੋਮੀਥੀਅਸ ਨੂੰ ਬਾਹਰੀ ਪ੍ਰਣਾਲੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨ ਲਈ ਕਿਹੜੀ ਸੇਵਾ ਦੀ ਕਿਸਮ ਉਚਿਤ ਹੈ?
  8. ਬਾਹਰੀ ਪਹੁੰਚ ਲਈ, ਏ ਜਾਂ ਕੌਂਫਿਗਰ ਕਰੋ a ਸਰੋਤ। ClusterIP ਅੰਦਰੂਨੀ ਵਰਤੋਂ ਤੱਕ ਸੀਮਤ ਹੈ।
  9. ਗ੍ਰਾਫਾਨਾ ਤੋਂ ਪ੍ਰੋਮੀਥੀਅਸ ਦੀ ਪੁੱਛਗਿੱਛ ਕਰਨ ਵੇਲੇ ਮੇਰਾ ਕਨੈਕਸ਼ਨ ਕਿਉਂ ਟੁੱਟ ਜਾਂਦਾ ਹੈ?
  10. ਇਹ ਗਲਤ ਪ੍ਰੋਟੋਕੋਲ ਜਾਂ ਪੋਰਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋ ਸਕਦਾ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਆਪਣੀ ਸੰਰਚਨਾ ਲਈ ਸਹੀ HTTP ਜਾਂ gRPC ਪੋਰਟ ਦੀ ਪੁੱਛਗਿੱਛ ਕਰ ਰਹੇ ਹੋ।

ਮਿਨੀਕਿਊਬ ਵਾਤਾਵਰਨ ਵਿੱਚ ਪ੍ਰੋਮੀਥੀਅਸ ਨੂੰ ਗ੍ਰਾਫਾਨਾ ਨਾਲ ਸਫਲਤਾਪੂਰਵਕ ਲਿੰਕ ਕਰਨ ਲਈ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸੇਵਾਵਾਂ ਸਹੀ ਢੰਗ ਨਾਲ ਸਾਹਮਣੇ ਆਈਆਂ ਹਨ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਜਾਂ ਵੱਖ-ਵੱਖ ਕਨੈਕਟੀਵਿਟੀ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਠੀਕ ਕਰ ਸਕਦਾ ਹੈ।

'kubectl' ਟੂਲਸ ਨਾਲ ਟੈਸਟ ਕਰਨਾ ਅਤੇ ਅੰਤਰ-ਨੇਮਸਪੇਸ ਸੰਚਾਰ ਲਈ DNS ਐਂਟਰੀਆਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨਾ ਵੀ ਜ਼ਰੂਰੀ ਹੈ। ਇਹਨਾਂ ਸਿਧਾਂਤਾਂ ਦਾ ਪਾਲਣ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਏਗਾ ਕਿ ਤੁਹਾਡਾ ਕੁਬਰਨੇਟਸ ਬੁਨਿਆਦੀ ਢਾਂਚਾ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਹੈ ਅਤੇ ਸਹੀ ਢੰਗ ਨਾਲ ਨਿਗਰਾਨੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।

  1. 'ਤੇ ਵੇਰਵੇ OpenTelemetry ਆਪਰੇਟਰ YAML Kubernetes ਵਿੱਚ OpenTelemetry ਕੁਲੈਕਟਰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
  2. ਲਈ Kubernetes ਦਸਤਾਵੇਜ਼ ਸੇਵਾ ਦੀਆਂ ਕਿਸਮਾਂ , ਖਾਸ ਤੌਰ 'ਤੇ ClusterIP, NodePort, ਅਤੇ Ingress.
  3. 'ਤੇ Grafana ਦੀ ਅਧਿਕਾਰਤ ਗਾਈਡ ਪ੍ਰੋਮੀਥੀਅਸ ਨੂੰ ਡੇਟਾ ਸਰੋਤ ਵਜੋਂ ਸ਼ਾਮਲ ਕਰਨਾ Grafana ਵਿੱਚ, ਜੋ ਸੰਰਚਨਾ ਵੇਰਵੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
  4. ਲਈ ਮਿਨੀਕਿਊਬ ਦਸਤਾਵੇਜ਼ ਸੇਵਾਵਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨਾ ਮਿਨੀਕਿਊਬ ਦੀ ਸੁਰੰਗ ਅਤੇ ਸੇਵਾ ਐਕਸਪੋਜ਼ਰ ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ।