కుబెర్నెటెస్ మానిటరింగ్ యొక్క కాన్సెప్ట్ను చూద్దాం, ప్రోమేతియస్ సాధనంతో పరిచయం పొందండి మరియు హెచ్చరిక గురించి మాట్లాడండి.
పర్యవేక్షణ అంశం చాలా పెద్దది; ఇది ఒక వ్యాసంలో కవర్ చేయబడదు. ఈ వచనం యొక్క ఉద్దేశ్యం సాధనాలు, భావనలు మరియు విధానాల యొక్క అవలోకనాన్ని అందించడం.
ఆర్టికల్ మెటీరియల్ - నుండి సంగ్రహించండి
కుబెర్నెటీస్ క్లస్టర్లో ఏమి పర్యవేక్షించబడుతుంది
భౌతిక సర్వర్లు. కుబెర్నెటెస్ క్లస్టర్ దాని స్వంత సర్వర్లలో అమర్చబడి ఉంటే, మీరు వారి ఆరోగ్యాన్ని పర్యవేక్షించాలి. Zabbix ఈ పనిని నిర్వహిస్తుంది; మీరు అతనితో పని చేస్తే, తిరస్కరించాల్సిన అవసరం లేదు, విభేదాలు ఉండవు. ఇది మా సర్వర్ల స్థితిని పర్యవేక్షించేది Zabbix.
క్లస్టర్ స్థాయిలో పర్యవేక్షణకు వెళ్దాం.
కంట్రోల్ ప్లేన్ భాగాలు: API, షెడ్యూలర్ మరియు ఇతరులు. కనిష్టంగా, మీరు సర్వర్ API లేదా etcd 0 కంటే ఎక్కువగా ఉండేలా పర్యవేక్షించాలి. Etcd అనేక కొలమానాలను అందించగలదు: ఇది తిరుగుతున్న డిస్క్లపై, దాని etcd క్లస్టర్ యొక్క ఆరోగ్యం మరియు ఇతరాలపై.
డాకర్ చాలా కాలం క్రితం కనిపించింది మరియు ప్రతి ఒక్కరూ దాని సమస్యల గురించి బాగా తెలుసు: అనేక కంటైనర్లు ఫ్రీజ్లు మరియు ఇతర సమస్యలను కలిగిస్తాయి. అందువల్ల, డాకర్ కూడా ఒక సిస్టమ్గా, కనీసం లభ్యత కోసం కూడా పర్యవేక్షించబడాలి.
dns. క్లస్టర్లో DNS విఫలమైతే, మొత్తం డిస్కవరీ సేవ కూడా విఫలమవుతుంది మరియు పాడ్ల నుండి పాడ్లకు కాల్లు పనిచేయడం ఆగిపోతాయి. నా ఆచరణలో, అలాంటి సమస్యలు లేవు, కానీ దీని అర్థం DNS స్థితిని పర్యవేక్షించాల్సిన అవసరం లేదని కాదు. అభ్యర్థన జాప్యం మరియు కొన్ని ఇతర కొలమానాలు CoreDNSలో ట్రాక్ చేయబడతాయి.
ప్రవేశము. ప్రాజెక్ట్లోకి ఎంట్రీ పాయింట్ల వలె ప్రవేశాల (ఇంగ్రెస్ కంట్రోలర్తో సహా) లభ్యతను నియంత్రించడం అవసరం.
క్లస్టర్ యొక్క ప్రధాన భాగాలు విడదీయబడ్డాయి - ఇప్పుడు సంగ్రహాల స్థాయికి దిగువకు వెళ్దాం.
అప్లికేషన్లు పాడ్లలో నడుస్తున్నట్లు అనిపిస్తుంది, అంటే వాటిని నియంత్రించాల్సిన అవసరం ఉంది, కానీ వాస్తవానికి అవి అలా చేయవు. పాడ్లు అశాశ్వతమైనవి: నేడు అవి ఒక సర్వర్లో, రేపు మరొకదానిలో పని చేస్తాయి; ఈరోజు 10, రేపు 2. అందుకే పాడ్లను ఎవరూ పర్యవేక్షించడం లేదు. మైక్రోసర్వీస్ ఆర్కిటెక్చర్లో, మొత్తంగా అప్లికేషన్ లభ్యతను నియంత్రించడం చాలా ముఖ్యం. ప్రత్యేకించి, సర్వీస్ ఎండ్పాయింట్ల లభ్యతను తనిఖీ చేయండి: ఏదైనా పని చేస్తుందా? అప్లికేషన్ అందుబాటులో ఉంటే, దాని వెనుక ఏమి జరుగుతోంది, ఇప్పుడు ఎన్ని ప్రతిరూపాలు ఉన్నాయి - ఇవి రెండవ-ఆర్డర్ ప్రశ్నలు. వ్యక్తిగత సందర్భాలను పర్యవేక్షించాల్సిన అవసరం లేదు.
చివరి స్థాయిలో, మీరు అప్లికేషన్ యొక్క ఆపరేషన్ను పర్యవేక్షించాలి, వ్యాపార కొలమానాలను తీసుకోవాలి: ఆర్డర్ల సంఖ్య, వినియోగదారు ప్రవర్తన మొదలైనవి.
ప్రోమేతియస్
క్లస్టర్ను పర్యవేక్షించడానికి ఉత్తమమైన వ్యవస్థ
ప్రోమేతియస్తో ప్రారంభించడానికి కొన్ని ఎంపికలు ఉన్నాయి: హెల్మ్ ఉపయోగించి, మీరు సాధారణ ప్రోమేతియస్ లేదా ప్రోమేతియస్ ఆపరేటర్ని ఇన్స్టాల్ చేయవచ్చు.
- రెగ్యులర్ ప్రోమేతియస్. దానితో అంతా బాగానే ఉంది, కానీ మీరు కాన్ఫిగ్మ్యాప్ను కాన్ఫిగర్ చేయాలి - ముఖ్యంగా, మైక్రోసర్వీస్ ఆర్కిటెక్చర్కు ముందు మేము ఇంతకు ముందు చేసినట్లుగా, టెక్స్ట్ కాన్ఫిగరేషన్ ఫైల్లను వ్రాయండి.
- ప్రోమేతియస్ ఆపరేటర్ కొంచెం విస్తృతమైనది, దాని అంతర్గత తర్కంలో కొంచెం క్లిష్టంగా ఉంటుంది, కానీ దానితో పని చేయడం సులభం: ప్రత్యేక వస్తువులు ఉన్నాయి, క్లస్టర్కు సంగ్రహణలు జోడించబడతాయి, కాబట్టి అవి నియంత్రించడానికి మరియు కాన్ఫిగర్ చేయడానికి మరింత సౌకర్యవంతంగా ఉంటాయి.
ఉత్పత్తిని అర్థం చేసుకోవడానికి, ముందుగా సాధారణ ప్రోమేతియస్ని ఇన్స్టాల్ చేయాలని నేను సిఫార్సు చేస్తున్నాను. మీరు కాన్ఫిగర్ ద్వారా ప్రతిదాన్ని కాన్ఫిగర్ చేయాలి, కానీ ఇది ప్రయోజనకరంగా ఉంటుంది: దేనికి చెందినది మరియు ఎలా కాన్ఫిగర్ చేయబడిందో మీరు అర్థం చేసుకుంటారు. ప్రోమేతియస్ ఆపరేటర్లో, మీరు వెంటనే అధిక సంగ్రహణకు ఎదుగుతారు, అయితే మీకు కావాలంటే, మీరు లోతులను కూడా పరిశోధించవచ్చు.
ప్రోమేతియస్ కుబెర్నెట్స్తో బాగా అనుసంధానించబడింది: ఇది API సర్వర్ని యాక్సెస్ చేయగలదు మరియు ఇంటరాక్ట్ చేయగలదు.
ప్రోమేతియస్ జనాదరణ పొందింది మరియు పెద్ద సంఖ్యలో అప్లికేషన్లు మరియు ప్రోగ్రామింగ్ లాంగ్వేజ్ల ద్వారా మద్దతు ఉంది. ప్రోమేతియస్ దాని స్వంత కొలమానాల ఆకృతిని కలిగి ఉన్నందున మద్దతు అవసరం మరియు దానిని బదిలీ చేయడానికి మీకు అప్లికేషన్ లోపల లైబ్రరీ లేదా సిద్ధంగా ఉన్న ఎగుమతిదారు అవసరం. మరియు అలాంటి ఎగుమతిదారులు చాలా మంది ఉన్నారు. ఉదాహరణకు, PostgreSQL ఎగుమతిదారు ఉంది: ఇది PostgreSQL నుండి డేటాను తీసుకుంటుంది మరియు దానిని ప్రోమేతియస్ ఫార్మాట్లోకి మారుస్తుంది, తద్వారా ప్రోమేతియస్ దానితో పని చేయవచ్చు.
ప్రోమేతియస్ ఆర్కిటెక్చర్
ప్రోమేతియస్ సర్వర్ - ఇది సర్వర్ భాగం, ప్రోమేతియస్ మెదడు. ఇక్కడే కొలమానాలు నిల్వ చేయబడతాయి మరియు ప్రాసెస్ చేయబడతాయి.
కొలమానాలు సమయ శ్రేణి డేటాబేస్ (TSDB)లో నిల్వ చేయబడతాయి. TSDB అనేది ప్రత్యేక డేటాబేస్ కాదు, ప్రోమేథియస్లో నిర్మించబడిన గో ప్యాకేజీ. స్థూలంగా చెప్పాలంటే, ప్రతిదీ ఒక బైనరీలో ఉంటుంది.
TSDBలో ఎక్కువ కాలం డేటాను నిల్వ చేయవద్దు
ప్రోమేతియస్ మౌలిక సదుపాయాలు మెట్రిక్ల దీర్ఘకాలిక నిల్వకు తగినది కాదు. డిఫాల్ట్ నిల్వ వ్యవధి 15 రోజులు. మీరు ఈ పరిమితిని అధిగమించవచ్చు, కానీ గుర్తుంచుకోండి: మీరు TSDBలో ఎక్కువ డేటాను నిల్వ చేసి, ఎక్కువసేపు చేస్తే, అది ఎక్కువ వనరులను వినియోగిస్తుంది. ప్రోమేతియస్లో చారిత్రక డేటాను నిల్వ చేయడం చెడ్డ పద్ధతిగా పరిగణించబడుతుంది.
మీకు భారీ ట్రాఫిక్ ఉన్నట్లయితే, కొలమానాల సంఖ్య సెకనుకు వందల వేలలో ఉంటుంది, అప్పుడు వాటి నిల్వను డిస్క్ స్థలం లేదా వ్యవధి ద్వారా పరిమితం చేయడం మంచిది. సాధారణంగా, TSDB "హాట్ డేటా", కొలమానాలను అక్షరాలా కొన్ని గంటలపాటు నిల్వ చేస్తుంది. దీర్ఘకాలిక నిల్వ కోసం, బాహ్య నిల్వ దీనికి నిజంగా సరిపోయే డేటాబేస్లలో ఉపయోగించబడుతుంది, ఉదాహరణకు InfluxDB, ClickHouse మరియు మొదలైనవి. నేను ClickHouse గురించి మరిన్ని మంచి సమీక్షలను చూశాను.
ప్రోమేతియస్ సర్వర్ మోడల్ ప్రకారం పనిచేస్తుంది పుల్: మేము అతనికి ఇచ్చిన ముగింపు పాయింట్లకు కొలమానాల కోసం అతను స్వయంగా వెళ్తాడు. వారు ఇలా అన్నారు: “API సర్వర్కి వెళ్లండి,” మరియు అది ప్రతి nవ సెకన్లకు వెళ్లి కొలమానాలను తీసుకుంటుంది.
స్క్రాపింగ్ పీరియడ్ల మధ్య కనిపించే తక్కువ జీవితకాలం (ఉద్యోగం లేదా క్రాన్ జాబ్) ఉన్న వస్తువుల కోసం, పుష్గేట్వే భాగం ఉంటుంది. స్వల్పకాలిక వస్తువుల నుండి కొలమానాలు దానిలోకి నెట్టబడతాయి: ఉద్యోగం పెరిగింది, చర్యను పూర్తి చేసింది, కొలమానాలను పుష్గేట్వేకి పంపి పూర్తి చేసింది. కొంత సమయం తర్వాత, ప్రోమేతియస్ తన స్వంత వేగంతో వెళ్లి పుష్గేట్వే నుండి ఈ కొలమానాలను తీసుకుంటాడు.
ప్రోమేతియస్లో నోటిఫికేషన్లను కాన్ఫిగర్ చేయడానికి ఒక ప్రత్యేక భాగం ఉంది - హెచ్చరిక నిర్వాహకుడు. మరియు హెచ్చరిక నియమాలు. ఉదాహరణకు, సర్వర్ API 0 అయితే మీరు హెచ్చరికను సృష్టించాలి. ఈవెంట్ ట్రిగ్గర్ చేయబడినప్పుడు, తదుపరి పంపడం కోసం హెచ్చరిక అలర్ట్ మేనేజర్కి పంపబడుతుంది. అలర్ట్ మేనేజర్ చాలా ఫ్లెక్సిబుల్ రూటింగ్ సెట్టింగ్లను కలిగి ఉన్నారు: ఒక గ్రూప్ హెచ్చరికలను అడ్మిన్ల టెలిగ్రామ్ చాట్కు, మరొకటి డెవలపర్ల చాట్కు మరియు మూడవది ఇన్ఫ్రాస్ట్రక్చర్ వర్కర్ల చాట్కు పంపబడుతుంది. నోటిఫికేషన్లను స్లాక్, టెలిగ్రామ్, ఇమెయిల్ మరియు ఇతర ఛానెల్లకు పంపవచ్చు.
చివరగా, ప్రోమేతియస్ యొక్క కిల్లర్ లక్షణం గురించి నేను మీకు చెప్తాను - డిస్కవరింగ్. ప్రోమేతియస్తో పని చేస్తున్నప్పుడు, మీరు పర్యవేక్షించడానికి వస్తువుల యొక్క నిర్దిష్ట చిరునామాలను పేర్కొనవలసిన అవసరం లేదు; వాటి రకాన్ని పేర్కొనడానికి సరిపోతుంది. అంటే, “ఇక్కడ IP చిరునామా ఉంది, ఇక్కడ పోర్ట్ - మానిటర్” అని వ్రాయవలసిన అవసరం లేదు, బదులుగా మీరు ఈ వస్తువులను ఏ సూత్రాల ద్వారా కనుగొనాలి (లక్ష్యాలను - లక్ష్యాలు). ప్రోమేతియస్, ప్రస్తుతం ఏ వస్తువులు సక్రియంగా ఉన్నాయి అనేదానిపై ఆధారపడి, అవసరమైన వాటిని పైకి లాగి వాటిని పర్యవేక్షణకు జోడిస్తుంది.
ఈ విధానం కుబెర్నెటెస్ యొక్క నిర్మాణంతో బాగా సరిపోతుంది, ఇక్కడ ప్రతిదీ కూడా తేలుతుంది: ఈ రోజు 10 సర్వర్లు ఉన్నాయి, రేపు 3. సర్వర్ యొక్క IP చిరునామాను ప్రతిసారీ సూచించకుండా ఉండటానికి, మేము దానిని ఎలా కనుగొనాలో ఒకసారి వ్రాసాము - మరియు డిస్కవరింగ్ దీన్ని చేస్తుంది.
ప్రోమేతియస్ భాష అంటారు PromQL. ఈ భాషను ఉపయోగించి, మీరు నిర్దిష్ట కొలమానాల విలువలను పొందవచ్చు మరియు వాటిని మార్చవచ్చు మరియు వాటి ఆధారంగా విశ్లేషణాత్మక గణనలను రూపొందించవచ్చు.
https://prometheus.io/docs/prometheus/latest/querying/basics/
Простой запрос
container_memory_usage_bytes
Математические операции
container_memory_usage_bytes / 1024 / 1024
Встроенные функции
sum(container_memory_usage_bytes) / 1024 / 1024
Уточнение запроса
100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]) * 100)
ప్రోమేతియస్ వెబ్ ఇంటర్ఫేస్
ప్రోమేతియస్ దాని స్వంత, మినిమలిస్టిక్ వెబ్ ఇంటర్ఫేస్ని కలిగి ఉంది. డీబగ్గింగ్ లేదా ప్రదర్శన కోసం మాత్రమే సరిపోతుంది.
మీరు ఎక్స్ప్రెషన్ లైన్లో PromQLలో ఒక ప్రశ్నను వ్రాయవచ్చు.
హెచ్చరికల ట్యాబ్ హెచ్చరిక నియమాలను కలిగి ఉంది మరియు వాటికి మూడు హోదాలు ఉన్నాయి:
- నిష్క్రియ - ప్రస్తుతానికి హెచ్చరిక సక్రియంగా లేకుంటే, అంటే, దానితో ప్రతిదీ బాగానే ఉంది మరియు అది పని చేయలేదు;
- పెండింగ్లో ఉంది - ఇది హెచ్చరిక ప్రేరేపించబడితే, కానీ పంపడం ఇంకా జరగలేదు. నెట్వర్క్ బ్లింకింగ్కు భర్తీ చేయడానికి ఆలస్యం సెట్ చేయబడింది: పేర్కొన్న సేవ ఒక నిమిషంలోపు పెరిగితే, ఇంకా అలారం మోగించాల్సిన అవసరం లేదు;
- హెచ్చరిక వెలుగులోకి వచ్చి సందేశాలను పంపినప్పుడు కాల్పులు జరపడం మూడవ స్థితి.
స్థితి మెనులో మీరు ప్రోమేతియస్ అంటే ఏమిటో గురించిన సమాచారానికి ప్రాప్యతను కనుగొంటారు. మేము పైన మాట్లాడిన లక్ష్యాలకు పరివర్తన కూడా ఉంది.
ప్రోమేతియస్ ఇంటర్ఫేస్ యొక్క మరింత వివరణాత్మక అవలోకనం కోసం, చూడండి
గ్రాఫానాతో ఏకీకరణ
ప్రోమేతియస్ వెబ్ ఇంటర్ఫేస్లో మీరు అందమైన మరియు అర్థమయ్యే గ్రాఫ్లను కనుగొనలేరు, దాని నుండి మీరు క్లస్టర్ స్థితి గురించి తీర్మానాలు చేయవచ్చు. వాటిని నిర్మించడానికి, ప్రోమేతియస్ గ్రాఫానాతో కలిసిపోతాడు. ఇవి మనకు లభించే డాష్బోర్డ్లు.
ప్రోమేతియస్ మరియు గ్రాఫానా యొక్క ఏకీకరణను సెటప్ చేయడం కష్టం కాదు; సూచనలను డాక్యుమెంటేషన్లో చూడవచ్చు:
కింది కథనాలలో మేము పర్యవేక్షణ అంశాన్ని కొనసాగిస్తాము: మేము గ్రాఫానా లోకి మరియు ప్రత్యామ్నాయ సాధనాలను ఉపయోగించి లాగ్లను సేకరించడం మరియు విశ్లేషించడం గురించి మాట్లాడుతాము.
రచయిత: మార్సెల్ ఇబ్రేవ్, సర్టిఫైడ్ కుబెర్నెట్స్ అడ్మినిస్ట్రేటర్, కంపెనీలో ప్రాక్టీసింగ్ ఇంజనీర్
మూలం: www.habr.com