Minikube இல் Prometheus-Grafana ஒருங்கிணைப்பில் பிழையறிந்து திருத்துதல்
குபெர்னெட்ஸ்-அடிப்படையிலான கண்காணிப்பு அடுக்கைப் பயன்படுத்தும்போது, மெட்ரிக் சேகரிப்பு மற்றும் காட்சிப்படுத்துதலுக்கான இரண்டு சக்திவாய்ந்த கருவிகளான ப்ரோமிதியஸ் மற்றும் கிராஃபானாவை ஒருங்கிணைப்பது பொதுவானது. பயன்படுத்தி மினிகுபே உள்ளூர் குபெர்னெட்டஸ் சூழலாக, குறிப்பாக தரவு மூல உள்ளமைவுகளை அமைக்கும் போது, ஒருங்கிணைப்புச் சிக்கல்கள் ஏற்படுவது அசாதாரணமானது அல்ல.
இந்த கட்டுரை சேர்க்கும் போது ஒரு பொதுவான சிக்கலைக் குறிக்கிறது ப்ரோமிதியஸ் கிராஃபனாவில் தரவு ஆதாரமாக. கிராஃபானாவை ஒரு புதிய பெயர்வெளியில் பயன்படுத்திய பிறகு, ப்ரோமிதியஸ் போன்ற சேவைக்கான இணைப்பு ஓபன் டெலிமெட்ரி கலெக்டர் தோல்வி அடைகிறது. சேவைகளை சரியாக வரிசைப்படுத்தி, தொடர்புடைய உள்ளமைவுகளைப் பயன்படுத்திய பிறகு இந்தச் சிக்கல் ஏற்படுகிறது.
குறிப்பாக HTTP வழியாக Prometheus ஐ வினவும்போது ஏற்பட்ட பிழை, குழப்பத்தை ஏற்படுத்தலாம். "தவறான 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 கோப்புகளில் வளங்களைப் பிரிக்க பெயர்வெளிகள் பயன்படுத்தப்படுகின்றன. கிராஃபனா மற்றும் ப்ரோமிதியஸின் செயல்பாடுகளை கிளஸ்டருக்குள் தனிமைப்படுத்த, வழங்கப்பட்ட ஸ்கிரிப்ட்களைப் பயன்படுத்தி அவற்றை சுயாதீன பெயர்வெளிகளில் பயன்படுத்துகிறோம். |
ClusterIP | ClusterIP என்பது குபெர்னெட்ஸ் சேவையாகும், இது கிளஸ்டருக்குள்ளேயே சேவைகளை வெளிப்படுத்துகிறது. இந்த இடுகையில், எளிமையான சேகரிப்பான் சேவையானது ClusterIP சேவையாக நிறுவப்பட்டுள்ளது, அதாவது சுரங்கப்பாதை அல்லது NodePort ஐப் பயன்படுத்தாமல் கிளஸ்டருக்கு வெளியே இருந்து நேரடியாக அணுக முடியாது. |
Ingress | குபெர்னெட்ஸில், பொதுவாக HTTP/HTTPS வழிகளில், கிளஸ்டர் சேவைகளுக்கான வெளிப்புற அணுகலை உட்செலுத்துகிறது. YAML எடுத்துக்காட்டு வெளிப்புற அணுகலை அனுமதிக்கும் வகையில் ப்ரோமிதியஸ் சேவையை உள்ளமைக்கிறது. |
pathType | குபெர்னெட்டஸ் இன்க்ரெஸ்-குறிப்பிட்ட புலம் பாதை எவ்வாறு பொருந்த வேண்டும் என்பதைக் குறிப்பிடுகிறது. உட்செலுத்துதல் எடுத்துக்காட்டில், "/" உடன் தொடங்கும் எந்தவொரு பாதையும் ப்ரோமிதியஸ் சேவைக்கு வழிவகுக்கும் என்பதை இது உறுதி செய்கிறது. |
கிராஃபனாவில் ப்ரோமிதியஸ் டேட்டாசோர்ஸ் சிக்கல்களுக்கான தீர்வுகளைப் புரிந்துகொள்வது
முதல் ஸ்கிரிப்ட், நோட்போர்ட் மூலம் ப்ரோமிதியஸ் சேவையை வழங்க குபெர்னெட்டஸின் YAML உள்ளமைவைப் பயன்படுத்துகிறது. கிராஃபானா போன்ற வெளிப்புற தளங்களில் இருந்து குபெர்னெட்ஸ் கிளஸ்டருக்குள் செயல்படும் சேவைகளை அணுக விரும்பினால் இந்த உத்தி மிகவும் பயனுள்ளதாக இருக்கும். 'NodePort' வகையானது ஒரு குறிப்பிட்ட போர்ட்டில் உள்ள சேவைக்கு வெளிப்புற போக்குவரத்தை வழிநடத்துகிறது, அதை கிராஃபானா பின்னர் தரவு ஆதாரமாகப் பயன்படுத்தலாம். இந்த உத்தியானது Minikube அல்லது அதுபோன்ற உள்ளூர் கிளஸ்டர்களில் நிரல் இயங்கும் போது மேம்பாடு மற்றும் சோதனைக் காட்சிகளுக்குப் பொருத்தமானது.
இரண்டாவது விருப்பம் குபெர்னெட்டஸைப் பயன்படுத்துகிறது. நுழைவு HTTP வழியாக ப்ரோமிதியஸ் சேவையை வெளிப்படுத்துவதற்கான ஆதாரம், இது கிளஸ்டருக்கு வெளியே இருந்து அணுகக்கூடியதாக உள்ளது. வெளிப்புற வழிகளை அமைப்பதன் மூலம் உட்செலுத்துதல் செயல்படுகிறது, இது கிராஃபானாவை நேரடியாக HTTP இறுதிப்புள்ளி வழியாக ப்ரோமிதியஸை வினவ அனுமதிக்கிறது. ஒரு நுழைவாயிலைப் பயன்படுத்துவதன் முதன்மையான நன்மை என்னவென்றால், இது சுமை சமநிலை, SSL முடித்தல் மற்றும் பெயர் அடிப்படையிலான மெய்நிகர் ஹோஸ்டிங் உள்ளிட்ட விரிவான ரூட்டிங் அம்சங்களை வழங்குகிறது. கண்காணிப்பு சேவைகளுக்கு பாதுகாப்பான மற்றும் அளவிடக்கூடிய அணுகல் தேவைப்படும் உற்பத்தி சூழ்நிலைகளுக்கு இந்த தீர்வு பொருத்தமானது.
மூன்றாவது முறையானது, கிராஃபானாவிலிருந்து ப்ரோமிதியஸுக்கு HTTP கோரிக்கைகளை அனுப்ப தனிப்பயன் GoLang ப்ராக்ஸியைப் பயன்படுத்துகிறது. GoLang சேவையகம் கோரிக்கைகளுக்கு செவிசாய்த்து, அவற்றை குபெர்னெட்டஸ் கிளஸ்டருக்குள் பொருத்தமான இறுதிப் புள்ளிக்கு அனுப்புகிறது. நெட்வொர்க் வரம்புகள் கிராஃபானாவிலிருந்து ப்ரோமிதியஸுக்கு நேரடி இணைப்பைத் தடுக்கும் சூழ்நிலைகளில் அல்லது கோரிக்கை ப்ரோமிதியஸை அடையும் முன் கூடுதல் செயலாக்கம் தேவைப்படும் சூழ்நிலைகளில் இந்த முறை பயனுள்ளதாக இருக்கும். GoLang ஸ்கிரிப்ட் நேரடியானது ஆனால் பயனுள்ளது, இது மற்ற தீர்வுகளுக்கு சாத்தியமான விருப்பத்தை அளிக்கிறது.
இறுதியாக, கோலாங்கின் அலகு சோதனைகள் ப்ராக்ஸி எதிர்பார்த்தபடி செயல்படும் என்று உத்தரவாதம் அளிக்கிறது. HTTP கோரிக்கைகள் மற்றும் பதில்களை 'httptest.NewRequest' மற்றும் 'httptest.NewRecorder' மூலம் சோதிப்பது, வெளிப்புற சார்புகளை நம்பாமல் ப்ராக்ஸி ட்ராஃபிக்கைச் சரியாகக் கடப்பதை உறுதி செய்கிறது. இந்த அலகு சோதனைகள் உண்மையான போக்குவரத்தைப் பின்பற்றுகின்றன மற்றும் கிராஃபானா ப்ரோமிதியஸுடன் தொடர்புகொள்வதை உறுதி செய்கின்றன. ப்ராக்ஸி சேவையகம் பல்வேறு சூழல்களில் நம்பகத்தன்மையுடன் செயல்படுவதை உறுதி செய்வதற்கும், திட்டம் விரிவடையும் போது குறியீட்டின் தரத்தை பராமரிப்பதற்கும் அலகு சோதனைகள் முக்கியமானவை.
மினிகுப் வழியாக கிராஃபனாவில் ப்ரோமிதியஸ் டேட்டாசோர்ஸ் ஒருங்கிணைப்பை சரிசெய்தல்
Kubernetes YAML உள்ளமைவு மற்றும் NodePort சேவை வெளிப்பாடு ஆகியவற்றைப் பயன்படுத்தி தீர்வு
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
தனிப்பயன் எண்ட்பாயிண்ட் வழியாக கிராஃபானாவுடன் ப்ரோமிதியஸ் ஒருங்கிணைப்பு
கிராஃபனாவுக்கான ப்ராமிதியஸ் வினவல்களுக்கு 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 Proxyக்கான அலகு சோதனை
ப்ராக்ஸி சரியாக வேலை செய்கிறது என்பதை உறுதிப்படுத்த 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)
}
}
குபெர்னெட்டஸில் ப்ரோமிதியஸ் மற்றும் கிராஃபானா ஒருங்கிணைப்பை மேம்படுத்துதல்
குபெர்னெட்டஸில் ப்ரோமிதியஸ் மற்றும் கிராஃபானாவை ஒருங்கிணைக்க, பெயர்வெளிகள் முழுவதும் போதுமான சேவை வெளிப்பாடு தேவைப்படுகிறது. உங்கள் சூழ்நிலையில், இயல்புநிலை பெயர்வெளியில் OpenTelemetry கலெக்டரையும், தனி ஒரு இடத்தில் Grafanaஐயும் நிறுவியுள்ளீர்கள். ClusterIP போன்ற குபெர்னெட்ஸ் அம்சங்கள் உள் தொடர்பை மேம்படுத்தும் அதே வேளையில், சரியான அமைப்பு இல்லாமல் குறுக்கு-பெயர்வெளி தொடர்பு கடினமாக இருக்கலாம். சேவைப் பெயர்கள் மற்றும் டிஎன்எஸ் உள்ளீடுகள் சரியாக உள்ளமைக்கப்பட்டுள்ளதை உறுதிசெய்வது மிகவும் முக்கியமானது, இதன் மூலம் கிராஃபானா ப்ரோமிதியஸை உத்தேசித்துள்ள இறுதிப் புள்ளி வழியாக அடைய முடியும்.
கிராஃபனாவுடன் ப்ரோமிதியஸ் ஒருங்கிணைப்பை பிழைத்திருத்தம் செய்யும் போது மற்றொரு கருத்தில் கொள்ள வேண்டியது சேவை வகைகள் அணுகலை எவ்வாறு பாதிக்கிறது என்பது. ஏ ClusterIP இந்த சேவையானது உள் கிளஸ்டர் பயன்பாட்டிற்காக வடிவமைக்கப்பட்டுள்ளது மற்றும் குபெர்னெட்ஸ் கிளஸ்டருக்குள் மட்டுமே அணுக முடியும். கிராஃபனா வேறு பெயர்வெளியில் நிறுவப்பட்டிருந்தால் அல்லது வெளிப்புற அணுகல் தேவைப்பட்டால், a க்கு நகரும் நோட்போர்ட் அல்லது நுழைவு சேவை வகை மிகவும் பொருத்தமானது. இந்தப் புதுப்பிப்பு ட்ராஃபிக்கை கிளஸ்டருக்கு வெளியில் இருந்து அல்லது பெயர்வெளிகள் முழுவதும் அனுப்ப அனுமதிக்கிறது.
மேலும், குபெர்னெட்டஸில் உள்ள சேவைகளுக்கு இடையே நெட்வொர்க் சிரமங்களைக் கண்டறிவது கடினமாக இருக்கும், குறிப்பாக "HTTP போக்குவரத்து இணைப்பு உடைந்துவிட்டது" போன்ற செய்திகள் தோன்றும் போது. இந்த சிரமங்கள் தவறாக உள்ளமைக்கப்பட்ட போர்ட்கள் அல்லது நெறிமுறைகளால் ஏற்படலாம். 'kubectl port-forward' போன்ற கருவிகள் மற்றும் நெட்வொர்க் கொள்கைகள், டெவலப்பர்கள் சேவைகள் முழுவதும் உள்ள இணைப்பை நிகழ்நேரத்தில் சரிபார்க்க அனுமதிக்கும், மேலும் நெட்வொர்க் சிக்கல்களைத் தனிமைப்படுத்தவும் விரைவாகக் கையாளவும் அவர்களுக்கு உதவுகின்றன. ப்ரோமிதியஸ் மற்றும் கிராஃபானா தடையின்றி தொடர்புகொள்வதை உறுதிசெய்ய, சரியான போர்ட்களை (ஜிஆர்பிசிக்கு 4317 போன்றவை) வெளிப்படுத்துவது அவசியம்.
ப்ரோமிதியஸ் மற்றும் கிராஃபானாவுடன் குபெர்னெட்ஸ் கண்காணிப்பு தொடர்பான பொதுவான கேள்விகள்
- ஒரு தனி பெயர்வெளியில் இயங்கும் சேவையை நான் எப்படி வெளிப்படுத்துவது?
- பெயர்வெளிகளுக்கு இடையே போக்குவரத்தை கொண்டு செல்ல, நீங்கள் ஒரு பயன்படுத்தலாம் NodePort அல்லது ஏ Ingress உங்கள் சேவை உள்ளமைவில்.
- எனது ப்ரோமிதியஸ் நிகழ்வை ஏன் கிராஃபானாவால் இணைக்க முடியவில்லை?
- இந்தச் சிக்கல் பெரும்பாலும் பொருத்தமற்ற சேவை வெளிப்பாடு அல்லது நெட்வொர்க் கொள்கைகளால் ஏற்படுகிறது. மூலம் சேவையை அணுக முடியுமா என்பதைச் சரிபார்க்கவும் NodePort அல்லது கிராஃபனாவில் உள்ள இறுதிப்புள்ளியானது ப்ரோமிதியஸ் சேவைக்கான டிஎன்எஸ் நுழைவுடன் ஒத்துள்ளது.
- குபெர்னெட்டஸில் உள்ள சேவைகளுக்கு இடையே உள்ள நெட்வொர்க் சிக்கல்களை நான் எவ்வாறு சரிசெய்வது?
- பயன்படுத்தி kubectl port-forward, சேவைகளுக்கிடையேயான இணைப்பை உள்நாட்டிலேயே சோதிக்கலாம். இது கிளஸ்டரில் உள்ள பிணைய சிக்கல்களை தனிமைப்படுத்த உதவும்.
- ப்ரோமிதியஸை வெளிப்புற அமைப்புகளுக்கு வெளிப்படுத்த எந்த வகையான சேவை பொருத்தமானது?
- வெளிப்புற அணுகலுக்கு, a ஐப் பயன்படுத்தவும் NodePort அல்லது கட்டமைக்க a Ingress வளம். ClusterIP உள் பயன்பாட்டிற்கு வரம்பிடப்பட்டுள்ளது.
- கிராஃபனாவிடம் இருந்து ப்ரோமிதியஸை வினவும்போது எனது இணைப்பு ஏன் துண்டிக்கப்பட்டது?
- தவறான நெறிமுறை அல்லது போர்ட்டைப் பயன்படுத்துவதால் இது ஏற்படலாம். உங்கள் உள்ளமைவுக்கான சரியான HTTP அல்லது gRPC போர்ட்டை நீங்கள் வினவுகிறீர்கள் என்பதை உறுதிப்படுத்தவும்.
ப்ரோமிதியஸ் மற்றும் கிராஃபனா ஒருங்கிணைப்பு சிக்கல்களைத் தீர்ப்பதற்கான முக்கிய வழிமுறைகள்
ஒரு Minikube சூழலில் Prometheus ஐ Grafana உடன் வெற்றிகரமாக இணைக்க, சேவைகள் சரியாக வெளிப்படுவதை உறுதிசெய்யவும். பயன்படுத்தி நோட்போர்ட் அல்லது நுழைவு பல்வேறு இணைப்பு சிக்கல்களை சரிசெய்ய முடியும்.
'kubectl' கருவிகளைக் கொண்டு சோதனை செய்வது மற்றும் குறுக்கு-பெயர்வெளி தொடர்புக்கான DNS உள்ளீடுகளைச் சரிபார்ப்பதும் அவசியம். இந்தக் கொள்கைகளைப் பின்பற்றுவது உங்கள் குபெர்னெட்ஸ் உள்கட்டமைப்பு சீராக ஒருங்கிணைக்கப்படுவதையும் துல்லியமாக கண்காணிக்கப்படுவதையும் உறுதி செய்யும்.
ஆதாரங்கள் மற்றும் குறிப்புகள்
- விவரங்கள் ஓபன் டெலிமெட்ரி ஆபரேட்டர் YAML குபெர்னெட்ஸில் ஓபன் டெலிமெட்ரி கலெக்டரை அமைப்பதற்குப் பயன்படுத்தப்பட்டது.
- குபெர்னெட்ஸ் ஆவணங்கள் சேவை வகைகள் , குறிப்பாக ClusterIP, NodePort மற்றும் Ingress.
- கிராஃபனாவின் அதிகாரப்பூர்வ வழிகாட்டி ப்ரோமிதியஸை ஒரு தரவுமூலமாகச் சேர்த்தல் உள்ளமைவு விவரங்களை வழங்கும் Grafana இல்.
- மினிகுப் ஆவணங்கள் சேவைகளை அணுகுதல் Minikube இன் சுரங்கப்பாதை மற்றும் சேவை வெளிப்பாடு முறைகளைப் பயன்படுத்துதல்.