Kubernetes නිරීක්ෂණ සංකල්පය සලකා බලන්න, Prometheus මෙවලම සමඟ දැන හඳුනා ගන්න, සහ අනතුරු ඇඟවීම ගැන කතා කරන්න.
අධීක්ෂණ මාතෘකාව විශාලයි, එය එක් ලිපියකින් විසුරුවා හැරිය නොහැක. මෙම පාඨයේ අරමුණ වන්නේ මෙවලම්, සංකල්ප සහ ප්රවේශයන් පිළිබඳ දළ විශ්ලේෂණයක් සැපයීමයි.
ලිපියේ ද්රව්යය මිරිකීමකි
Kubernetes පොකුරක් තුළ නිරීක්ෂණය කරනු ලබන දේ
භෞතික සේවාදායකයන්. Kubernetes පොකුර එහි සේවාදායකයන් මත යොදවා ඇත්නම්, ඔබ ඔවුන්ගේ සෞඛ්යය නිරීක්ෂණය කළ යුතුය. Zabbix මෙම කාර්යය හසුරුවයි; ඔබ ඔහු සමඟ වැඩ කරන්නේ නම්, ඔබ ප්රතික්ෂේප කිරීමට අවශ්ය නැත, ගැටුම් ඇති නොවේ. අපගේ සේවාදායකයන්ගේ තත්වය නිරීක්ෂණය කරන්නේ Zabbix ය.
අපි පොකුරු මට්ටමේ නිරීක්ෂණ වෙත යමු.
පාලන තලයේ සංරචක: API, Scheduler සහ වෙනත් අය. අවම වශයෙන්, ඔබ සේවාදායකයන්ගේ හෝ etcd වල API 0 ට වඩා වැඩි බව සහතික කර ගත යුතුය. Etcd බොහෝ ප්රමිතික ආපසු ලබා දිය හැක: එය කැරකෙන තැටි මගින්, එහි etcd පොකුරේ සෞඛ්යය සහ වෙනත් අය.
Docker බොහෝ කලකට පෙර දර්ශනය වූ අතර එහි ගැටළු පිළිබඳව සෑම දෙනාම හොඳින් දනී: බොහෝ බහාලුම් කැටි කිරීම සහ වෙනත් ගැටළු ඇති කරයි. එබැවින්, පද්ධතියක් ලෙස, අවම වශයෙන් ලබා ගත හැකි වීම සඳහා ඩොකර් ද පාලනය කළ යුතුය.
ඩී.එන්.එස්. පොකුරේ DNS වැටුනහොත්, සම්පූර්ණ ඩිස්කවරි සේවාව ඉන් පසුව වැටෙනු ඇත, කරල් වලින් කරල් වලට ඇමතුම් ක්රියා කිරීම නවත්වනු ඇත. මගේ භාවිතයේදී, එවැනි ගැටළු කිසිවක් නොතිබුණි, නමුත් මෙයින් අදහස් කරන්නේ DNS හි තත්වය නිරීක්ෂණය කිරීම අවශ්ය නොවේ. ඉල්ලීම් ප්රමාදය සහ තවත් සමහර ප්රමිතික CoreDNS මත නිරීක්ෂණය කළ හැක.
ඇතුල් වීම. ව්යාපෘතියට ඇතුල් වන ස්ථාන ලෙස ඇතුල්වීම් (ආග්රහණ පාලකය ඇතුළුව) තිබීම පාලනය කිරීම අවශ්ය වේ.
පොකුරේ ප්රධාන සංරචක විසුරුවා හැර ඇත - දැන් අපි වියුක්ත මට්ටමට යමු.
යෙදුම් කරල් වල ක්රියාත්මක වන බව පෙනේ, එයින් අදහස් කරන්නේ ඒවා පාලනය කළ යුතු නමුත් යථාර්ථයේ දී ඒවා එසේ නොවේ. කරල් තාවකාලිකයි: අද ඒවා එක් සේවාදායකයක ක්රියාත්මක වේ, හෙට තවත් සේවාදායකයක; අද 10ක් තියෙනවා, හෙට 2. ඒ නිසා කවුරුත් කරල් නිරීක්ෂණය කරන්නේ නැහැ. ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පයක් තුළ, සමස්තයක් ලෙස යෙදුමේ ඇති බව පාලනය කිරීම වඩාත් වැදගත් වේ. විශේෂයෙන්, සේවා අවසන් ස්ථාන තිබේදැයි පරීක්ෂා කරන්න: කිසිවක් වැඩ කරන්නේද? යෙදුම තිබේ නම්, එය පිටුපස සිදු වන්නේ කුමක්ද, දැන් කොපමණ අනුරූ - මේවා දෙවන අනුපිළිවෙලෙහි ප්රශ්න වේ. තනි අවස්ථා නිරීක්ෂණය කිරීම අවශ්ය නොවේ.
අවසාන මට්ටමේදී, ඔබ යෙදුමේ ක්රියාකාරිත්වය පාලනය කළ යුතුය, ව්යාපාර ප්රමිතික ගත යුතුය: ඇණවුම් ගණන, පරිශීලක හැසිරීම සහ යනාදිය.
Prometheus
පොකුරක් නිරීක්ෂණය කිරීම සඳහා හොඳම පද්ධතිය වේ
Prometheus සමඟ ආරම්භ කිරීම සඳහා විකල්ප කිහිපයක් තිබේ: Helm භාවිතයෙන්, ඔබට සාමාන්ය Prometheus හෝ Prometheus ක්රියාකරු ස්ථාපනය කළ හැකිය.
- නිතිපතා Prometheus. ඔහු සමඟ සෑම දෙයක්ම හොඳයි, නමුත් ඔබට ConfigMap වින්යාස කිරීමට අවශ්ය වේ - ඇත්ත වශයෙන්ම, අපි පෙර කළ පරිදි, ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පයට පෙර, පෙළ මත පදනම් වූ වින්යාස ගොනු ලියන්න.
- Prometheus Operator තව ටිකක් පැතිරී ඇත, අභ්යන්තර තර්කනය අනුව ටිකක් සංකීර්ණයි, නමුත් එය සමඟ වැඩ කිරීම පහසුය: වෙනම වස්තූන් ඇත, වියුක්ත කිරීම් පොකුරට එකතු වේ, එබැවින් ඒවා පාලනය කිරීමට සහ වින්යාස කිරීමට වඩාත් පහසු වේ.
නිෂ්පාදිතය අවබෝධ කර ගැනීම සඳහා, මම මුලින්ම නිතිපතා Prometheus ස්ථාපනය කිරීම නිර්දේශ කරමි. ඔබට වින්යාසය හරහා සෑම දෙයක්ම වින්යාස කිරීමට සිදුවනු ඇත, නමුත් මෙය ප්රයෝජනවත් වනු ඇත: කුමන දේට අයත් වන්නේද සහ එය වින්යාස කර ඇත්තේ කෙසේද යන්න ඔබ සොයා ගනු ඇත. Prometheus Operator හි, ඔබට අවශ්ය නම් ඔබට ගැඹුරින් සොයා බැලිය හැකි වුවද, ඔබ වහාම වියුක්ත අගයකට ඉහළ යයි.
Prometheus Kubernetes සමඟ හොඳින් ඒකාබද්ධ වී ඇත: එයට API සේවාදායකයට ප්රවේශ වීමට සහ අන්තර්ක්රියා කිරීමට හැකිය.
Prometheus ජනප්රියයි, ඒ නිසා යෙදුම් සහ ක්රමලේඛන භාෂා විශාල සංඛ්යාවක් එයට සහය දක්වයි. Prometheus හට තමන්ගේම ප්රමිතික ආකෘතියක් ඇති බැවින් සහය අවශ්ය වන අතර, එය මාරු කිරීමට, ඔබට යෙදුම තුළ පුස්තකාලයක් හෝ සූදානම් කළ අපනයනකරුවෙකු අවශ්ය වේ. ඒ වගේම එවැනි අපනයනකරුවන් කිහිප දෙනෙක් ඉන්නවා. උදාහරණයක් ලෙස, PostgreSQL Exporter ඇත: එය PostgreSQL වෙතින් දත්ත ලබාගෙන එය Prometheus ආකෘතියට පරිවර්තනය කරයි, එවිට Prometheus හට එය සමඟ වැඩ කළ හැකිය.
Prometheus ගෘහ නිර්මාණ ශිල්පය
Prometheus සේවාදායකය ප්රොමිතියස්ගේ මොළය පිටුපස කෙළවර වේ. මෙට්රික්ස් මෙහි ගබඩා කර සකසනු ලැබේ.
ප්රමිතික කාල ශ්රේණියේ දත්ත ගබඩාවේ (TSDB) ගබඩා කර ඇත. TSDB යනු වෙනම දත්ත සමුදායක් නොව, ප්රොමිතියස් හි තැන්පත් කර ඇති Go භාෂාවේ පැකේජයකි. දළ වශයෙන් කිවහොත්, සෑම දෙයක්ම එක් ද්විමය තුළ ඇත.
TSDB හි දිගු කාලයක් දත්ත ගබඩා නොකරන්න
ප්රොමිතියස් යටිතල ව්යුහය ප්රමිතික දිගු කාලීන ගබඩා කිරීම සඳහා සුදුසු නොවේ. පෙරනිමි රඳවා ගැනීමේ කාලය දින 15 කි. ඔබට මෙම සීමාව ඉක්මවිය හැක, නමුත් මතක තබා ගන්න: ඔබ TSDB හි ගබඩා කරන වැඩි දත්ත සහ ඔබ එය වැඩි කාලයක් කරන විට, එය වැඩිපුර සම්පත් පරිභෝජනය කරනු ඇත. Prometheus හි ඓතිහාසික දත්ත ගබඩා කිරීම නරක පුරුද්දක් ලෙස සැලකේ.
ඔබට විශාල තදබදයක් තිබේ නම්, ප්රමිතික ගණන තත්පරයකට සිය දහස් ගණනක් වේ, එවිට ඒවායේ ගබඩාව තැටි අවකාශයෙන් හෝ කාල සීමාව අනුව සීමා කිරීම වඩා හොඳය. සාමාන්යයෙන්, “උණුසුම් දත්ත” පැය කිහිපයකින් TSDB, ප්රමිතික තුළ ගබඩා වේ. දිගු ගබඩා කිරීම සඳහා, බාහිර ආචයනය මේ සඳහා සැබවින්ම සුදුසු දත්ත සමුදායන් තුළ භාවිතා වේ, උදාහරණයක් ලෙස, InfluxDB, ClickHouse, සහ යනාදිය. මම ClickHouse ගැන තවත් හොඳ විචාර දැක්කා.
Prometheus Server ආකෘතිය මත ක්රියා කරයි අදින්න: අපි ඔහුට ලබා දුන් එම අන්ත ලක්ෂ්යවලට ඔහු ප්රමිතික සඳහා යයි. ඔවුන් පැවසුවේ: "API සේවාදායකය වෙත යන්න", ඔහු සෑම තත්පර n-th ගණනකටම එහි ගොස් මිනුම් ලබා ගනී.
සීරීම් කාල සීමාවන් අතර දිස්විය හැකි කෙටි ආයු කාලයක් (රැකියා හෝ ක්රෝන් රැකියාව) සහිත වස්තූන් සඳහා, Pushgateway සංරචකයක් ඇත. කෙටි කාලීන වස්තූන්ගෙන් මෙට්රික්ස් එයට තල්ලු කරනු ලැබේ: රැකියාව ඉහළ ගොස්, ක්රියාවක් සිදු කර, පුෂ්ගේට්වේ වෙත ප්රමිතික යවා සම්පූර්ණ කර ඇත. ටික වේලාවකට පසු, ප්රොමිතියස් ස්වකීය වේගයකින් බැස මෙම ප්රමිතික පුෂ්ගේට්වේ වෙතින් ලබා ගනී.
Prometheus හි දැනුම්දීම් වින්යාස කිරීම සඳහා වෙනම සංරචකයක් ඇත - අනතුරු ඇඟවීමේ කළමනාකරු. සහ අනතුරු ඇඟවීමේ නීති. උදාහරණයක් ලෙස, සේවාදායක API 0 නම් ඔබට අනතුරු ඇඟවීමක් සෑදිය යුතුය. සිදුවීම ගිනිගත් විට, අනතුරු ඇඟවීම තවදුරටත් යැවීම සඳහා ඇඟවීම් කළමනාකරු වෙත යවනු ලැබේ. අනතුරු ඇඟවීමේ කළමනාකරුට තරමක් නම්යශීලී මාර්ගගත සැකසුම් ඇත: එක් ඇඟවීම් සමූහයක් පරිපාලකයන්ගේ විදුලි පණිවුඩ කතාබස් වෙත ද, තවත් එකක් සංවර්ධකයන්ගේ කතාබස් වෙත ද, තුනෙන් එකක් යටිතල පහසුකම් සේවකයින්ගේ කතාබහට ද යැවිය හැක. දැනුම්දීම් Slack, Telegram, Email, සහ වෙනත් නාලිකා වෙත යැවිය හැක.
අවසාන වශයෙන්, මම ඔබට Prometheus මිනීමරු විශේෂාංගය ගැන කියන්නම් - සොයා ගැනීම. Prometheus සමඟ වැඩ කරන විට, නිරීක්ෂණය සඳහා වස්තූන්ගේ නිශ්චිත ලිපිනයන් සඳහන් කිරීමට ඔබට අවශ්ය නැත, එය ඔවුන්ගේ වර්ගය සැකසීමට ප්රමාණවත් වේ. එනම්, ඔබට “මෙන්න IP ලිපිනය, මෙන්න වරාය - මොනිටරය” ලිවීමට අවශ්ය නැත, ඒ වෙනුවට, මෙම වස්තු සොයා ගැනීමට කුමන මූලධර්ම මගින් ඔබ තීරණය කළ යුතුය (ඉලක්කවලට - ඉලක්ක). Prometheus විසින්ම, දැනට ක්රියාත්මක වන වස්තූන් මත පදනම්ව, අවශ්ය ඒවා ඉහළට ගෙන ඒවා අධීක්ෂණයට එක් කරයි.
මෙම ප්රවේශය Kubernetes ව්යුහය සමඟ හොඳින් ගැලපේ, එහිදී සියල්ල ද පාවෙන: අද සේවාදායකයන් 10 ක් ඇත, හෙට 3. සෑම අවස්ථාවකදීම සේවාදායකයේ IP ලිපිනය සඳහන් නොකිරීමට, ඔවුන් එය සොයා ගන්නේ කෙසේදැයි වරක් ලියා ඇත - සහ Discovering එය කරනු ඇත. .
Prometheus භාෂාව ලෙස හැඳින්වේ 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)
Prometheus වෙබ් අතුරු මුහුණත
Prometheus හට තමන්ගේම, තරමක් අවම වෙබ් අතුරු මුහුණතක් ඇත. දෝශ නිරාකරණය හෝ නිරූපණය සඳහා පමණක් සුදුසු වේ.
ප්රකාශන රේඛාවේදී, ඔබට PromQL භාෂාවෙන් විමසුමක් ලිවිය හැකිය.
ඇඟවීම් පටිත්තෙහි අනතුරු ඇඟවීමේ නීති අඩංගු වන අතර ඒවාට තත්ව තුනක් ඇත:
- අක්රිය - මේ මොහොතේ අනතුරු ඇඟවීම සක්රීය නොවේ නම්, එනම්, එය සමඟ සියල්ල හොඳින් ඇති අතර එය ක්රියා කළේ නැත;
- පොරොත්තුවෙන් - මෙය අනතුරු ඇඟවීම ක්රියාත්මක වූයේ නම්, නමුත් යැවීම තවමත් සමත් වී නැත. ජාලය දැල්වීම සඳහා වන්දි ගෙවීමට ප්රමාදය සකසා ඇත: නිශ්චිත සේවාව විනාඩියක් ඇතුළත ඉහළ ගොස් තිබේ නම්, අනතුරු ඇඟවීම තවම නාද නොකළ යුතුය;
- අනතුරු ඇඟවීම දැල්වී පණිවිඩ යවන විට වෙඩි තැබීම තුන්වන තත්ත්වයයි.
තත්ව මෙනුව තුළ ඔබට Prometheus යනු කුමක්ද යන්න පිළිබඳ තොරතුරු වෙත ප්රවේශය සොයාගත හැකිය. අප ඉහත කතා කළ ඉලක්ක (ඉලක්ක) වෙත මාරුවීමක් ද ඇත.
Prometheus අතුරුමුහුණත පිළිබඳ වඩාත් සවිස්තරාත්මක දළ විශ්ලේෂණයක් සඳහා, බලන්න
Grafana සමඟ ඒකාබද්ධ වීම
Prometheus වෙබ් අතුරු මුහුණතෙහි, ඔබට පොකුරේ තත්ත්වය පිළිබඳ නිගමනයකට එළඹිය හැකි ලස්සන සහ තේරුම්ගත හැකි ප්රස්ථාර සොයාගත නොහැක. ඒවා තැනීමට Prometheus ග්රැෆානා සමඟ ඒකාබද්ධ වේ. අපට එවැනි උපකරණ පුවරු ලැබේ.
Prometheus සහ Grafana ඒකාබද්ධ කිරීම සැකසීම කිසිසේත් අපහසු නැත, ඔබට ලේඛනවල උපදෙස් සොයාගත හැකිය:
පහත දැක්වෙන ලිපිවලදී, අපි නිරීක්ෂණයේ මාතෘකාව දිගටම කරගෙන යන්නෙමු: අපි Grafana Loki සහ විකල්ප මෙවලම් භාවිතයෙන් ලොග් එකතු කිරීම සහ විශ්ලේෂණය කිරීම ගැන කතා කරමු.
කර්තෘ: Marcel Ibraev, සහතික කළ Kubernetes පරිපාලක, සමාගමේ පුහුණු ඉංජිනේරු
මූලාශ්රය: www.habr.com