لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه

سلامونه، د خابروسک اوسیدونکو! د کورس لپاره د نوي نوم لیکنې د پیل په ماښام "DevOps کړنې او وسیلې" موږ ستاسو لپاره د زړه پورې موادو ژباړه چمتو کړې ده.

دا مقاله د لوکي لنډه پیژندنه ده. پروژه لوکي د Grafana لخوا ملاتړ شوی او موخه یې د لاګونو مرکزي راټولول دي (د سرورونو یا کانټینرونو څخه).

د لوکي لپاره اصلي الهام و Prometheus د لاګ مدیریت ته د هغه د تګلارو پلي کولو نظر سره:

  • د معلوماتو ذخیره کولو لپاره د لیبلونو کارول
  • د لږو سرچینو مصرف

موږ به بیرته راګرځو چې څنګه پرومیټیوس کار کوي او د کوبرنیټس په شرایطو کې د دې کارولو ځینې مثالونه وړاندې کوو.

د Prometheus په اړه یو څو خبرې

د دې لپاره چې په بشپړ ډول پوه شئ چې لوکي څنګه کار کوي، دا مهمه ده چې یو ګام شاته واخلو او د پرومیتیس په اړه لږ څه په یاد ولرو.

د Prometheus یو ځانګړی ځانګړتیا د راټولولو نقطو څخه د میټریکونو استخراج (د صادرونکو له لارې) او په TSDB (د وخت لړۍ ډیټا بیس) کې ذخیره کول دي، د لیبلونو په بڼه د میټاډاټا اضافه کولو سره.

ولې اړین دی

په دې وروستیو کې، Prometheus د کانټینرونو او کبرنیټس نړۍ کې د حقیقت معیار ګرځیدلی: د دې نصب کول خورا ساده دي، او د کوبرنیټس کلستر د پرومیتیس لپاره د اصلي پای ټکی سره راځي. Prometheus کولی شي د ځانګړو لیبلونو ذخیره کولو په وخت کې په کانټینر کې ځای پرځای شوي غوښتنلیکونو څخه میټریکونه استخراج کړي. له همدې امله، د غوښتنلیک څارنه د پلي کولو لپاره خورا اسانه ده.

له بده مرغه، د لاګ مدیریت لپاره لا تر اوسه د حل لاره نشته، او تاسو باید د ځان لپاره حل ومومئ:

  • د مرکزي کولو لاګونو لپاره اداره شوي کلاوډ خدمت (AWS، Azure یا Google)
  • د څارنې خدمت "د خدمت په توګه څارنه" (د مثال په توګه، ډیټاډګ)
  • خپل د لاګ راټولولو خدمت رامینځته کول.

د دریم اختیار لپاره ، ما په دودیز ډول Elasticsearch کارولی ، سره له دې چې زه تل له دې څخه خوښ نه وم (په ځانګړي توګه د دې دروندوالي او د ترتیب پیچلتیا).

لوکي د لاندې اصولو سره سم د پلي کولو ساده کولو لپاره ډیزاین شوی و:

  • د پیل کولو لپاره ساده اوسئ
  • لږې سرچینې مصرف کړئ
  • پرته له کوم ځانګړي ساتنې څخه په خپلواکه توګه کار کول
  • د بګ تحقیقاتو کې د مرستې لپاره د پرومیټیوس اضافه کولو په توګه خدمت وکړئ

په هرصورت، دا سادگي د ځینې موافقتنامې په لګښت راځي. یو یې د محتوياتو شاخص نه دی. له همدې امله، د متن لټون خورا اغیزمن یا بډایه نه دی او د متن محتوا په اړه احصایې ته اجازه نه ورکوي. مګر له هغه ځایه چې لوکي غواړي د ګریپ مساوي وي او د پرومیتیس بشپړونکی وي ، دا کوم زیان ندی.

د پېښې څېړنه

د ښه پوهیدو لپاره چې ولې لوکي لیست کولو ته اړتیا نلري ، راځئ چې بیرته د پیښې تفتیش میتود ته لاړ شو چې د لوکي پراختیا کونکو کارولې:

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
1 خبرتیا → 2 ډشبورډ → 3 اډاک پوښتنه → 4 د ننوتلو راټولول → 5 توزیع شوي تعقیب → 6 درست کړئ!
(1 خبرداری → 2 ډشبورډ → 3 اډاک پوښتنه → 4 د ننوتلو راټولول → 5 توزیع شوي تعقیب → 6 اصلاح کول!)

نظر دا دی چې موږ یو ډول خبرتیا ترلاسه کوو (سلیک خبرتیا، SMS، او نور) او له هغې وروسته:

  • د ګرافانا ډشبورډونو ته وګورئ
  • د خدماتو میټریک وګورئ (د مثال په توګه، په پرومیتیوس کې)
  • د ننوتلو ننوتلو ته وګورئ (د مثال په توګه، په Elasticsearch کې)
  • شاید توزیع شوي نښو ته یو نظر وګورئ (جیجر، زپکین، او نور)
  • او په نهایت کې اصلي ستونزه حل کړئ.

دلته، د Grafana + Prometheus + Elasticsearch + Zipkin سټیک په حالت کې، تاسو باید څلور مختلف وسیلې وکاروئ. د وخت کمولو لپاره، دا به ښه وي چې د یوې وسیلې په کارولو سره دا ټول مرحلې ترسره کړئ: ګرافانا. د یادولو وړ ده چې د څیړنې دا طریقه په ګرافانا کې د 6 نسخې راهیسې پلي شوې. په دې توګه، دا ممکنه ده چې د پرومیټیوس ډاټا ته مستقیم له Grafana څخه لاسرسی ومومي.

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
د اکسپلورر سکرین د پرومیټیوس او لوکي ترمینځ ویشل شوی

د دې سکرین څخه تاسو کولی شئ د سپلیټ سکرین مفهوم په کارولو سره د پرومیټیوس میټریک پورې اړوند لوکي لاګونه وګورئ. د 6.5 نسخه راهیسې، ګرافانا تاسو ته اجازه درکوي د لوکي لاګ ننوتلو کې د ټریس ID تجزیه کړئ ترڅو ستاسو د خوښې توزیع شوي ټریسینګ وسیلو (جیجر) سره لینکونه تعقیب کړئ.

محلي لوکي ازموینه

په محلي توګه د لوکي ازموینې ترټولو اسانه لار د ډاکر - کمپوز کارول دي. د ډاکر - کمپوز فایل د لوکي ذخیره کې موقعیت لري. تاسو کولی شئ د لاندې کمانډ په کارولو سره ذخیره ترلاسه کړئ git:

$ git clone https://github.com/grafana/loki.git

بیا تاسو اړتیا لرئ د تولید لارښود ته لاړشئ:

$ cd production

له دې وروسته تاسو کولی شئ د ډاکر عکسونو وروستۍ نسخه ترلاسه کړئ:

$ docker-compose pull

په نهایت کې ، لوکي سټیک د لاندې کمانډ سره پیل شوی:

$ docker-compose up

د لوکي معمارۍ

دلته د لوکي معمارۍ سره یو کوچنی ډیاګرام دی:

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
د لوکي معمارۍ اصول

د ویب پیرودونکی په سرور کې غوښتنلیکونه پرمخ وړي، پرومټیل لاګونه راټولوي او لوکي ته یې لیږي، ویب پیرودونکی هم لوکي ته میټاډاټا لیږي. لوکي هر څه راټولوي او ګرافانا ته یې لیږدوي.
لوکي په لاره اچول کیږي. د شته برخو لیدلو لپاره، لاندې کمانډ چل کړئ:

$ docker ps

د تازه نصب شوي ډاکر په حالت کې، کمانډ باید لاندې پایلې بیرته راولي:

IMAGE               PORTS                  NAMES
grafana/promtail:                          production_promtail_1
grafana/grafana: m  0.0.0.0:3000->3000/tcp production_grafana_1
grafana/loki: late  80/tcp,0.0.0.0:3100... production_loki_1

موږ لاندې برخې ګورو:

  • Promtail: اجنټ چې د لاګونو د مرکزي کولو مسولیت لري
  • ګرافانا: د ډشبورډ مشهور وسیله
  • لوکي: د ډیټا مرکزي کولو ډیمون

د کلاسیک زیربنا د یوې برخې په توګه (د مثال په توګه ، د مجازی ماشینونو پراساس) ، پرومټیل ایجنټ باید په هر ماشین کې ځای په ځای شي. ګرافانا او لوکي په ورته ماشین کې نصب کیدی شي.

کوبرنیټس ته ځای په ځای کول

په Kubernetes کې د لوکي اجزاو نصب کول به په لاندې ډول وي:

  • د سرور کلستر کې په هر ماشین کې د پرومټیل ایجنټ ځای پرځای کولو لپاره ډیمون سیټ
  • ځای پرځای کول لوکي
  • او وروستی یې د ګرافانا ګمارنه ده.

خوشبختانه، لوکي د هیلم پیکج په توګه شتون لري، د دې ځای پرځای کول اسانه کوي.

د هیمل له لارې نصب کول

تاسو باید دمخه هیمل نصب کړی وي. دا د پروژې د GitHub ذخیره څخه ډاونلوډ کیدی شي. دا ستاسو د معمارۍ سره سم آرشیف خلاصولو او د هیلم په اضافه کولو سره نصب شوی $PATH.

نوټ: د هیلم 3.0.0 نسخه پدې وروستیو کې خپره شوې. څرنګه چې پدې کې ډیری بدلونونه راغلي، لوستونکي ته مشوره ورکول کیږي چې د کارولو دمخه یو څه انتظار وکړي..

د هیلم لپاره د سرچینې اضافه کول

لومړی ګام د لاندې کمانډ په کارولو سره د "لوکي" ذخیره اضافه کول دي:

$ helm add loki https://grafana.github.io/loki/charts

له دې وروسته، تاسو کولی شئ د "لوکي" په نوم کڅوړې وپلټئ:

$ helm search loki

پایلې:

loki/loki       0.17.2 v0.4.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.19.1 v0.4.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.0.2  v0.0.1 Uses fluent-bit Loki go plugin for...
loki/promtail   0.13.1 v0.4.0 Responsible for gathering logs and...

دا کڅوړې لاندې ځانګړتیاوې لري:

  • بسته بندي loki/loki یوازې د لوکي سرور سره سمون لري
  • بسته بندي loki/fluent-bit تاسو ته اجازه درکوي د پرومټیل پرځای د لاګونو راټولولو لپاره د فلوین بن په کارولو سره ډیمون سیټ ځای په ځای کړئ
  • بسته بندي loki/promtail د لاګ فایل راټولولو اجنټ لري
  • بسته بندي loki/loki-stack، تاسو ته اجازه درکوي سمدلاسه د پرومټیل سره یوځای لوکي ځای په ځای کړئ.

د لوکي نصب کول

کوبرنیټس ته لوکي ځای په ځای کولو لپاره ، د "څارنې" نوم ځای کې لاندې کمانډ چل کړئ:

$ helm upgrade --install loki loki/loki-stack --namespace monitoring

ډیسک ته د خوندي کولو لپاره ، پیرامیټر اضافه کړئ --set loki.persistence.enabled = true:

$ helm upgrade --install loki loki/loki-stack 
              --namespace monitoring 
              --set loki.persistence.enabled=true

نوټ: که تاسو غواړئ په ورته وخت کې ګرافانا ځای په ځای کړئ ، نو پیرامیټر اضافه کړئ --set grafana.enabled = true

کله چې تاسو دا کمانډ پرمخ وړئ نو تاسو باید لاندې محصول ترلاسه کړئ:

LAST DEPLOYED: Tue Nov 19 15:56:54 2019
NAMESPACE: monitoring
STATUS: DEPLOYED
RESOURCES:
==> v1/ClusterRole
NAME AGE
loki-promtail-clusterrole 189d
…
NOTES:
The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.
See <a href="http://docs.grafana.org/features/datasources/loki/">http://docs.grafana.org/features/datasources/loki/</a> for more details.

د "څارنې" نوم ځای کې د پوډونو حالت ته په کتلو سره، موږ لیدلی شو چې هرڅه ځای پرځای شوي دي:

$ kubectl -n monitoring get pods -l release=loki

پایلې:

NAME                 READY  STATUS   RESTARTS  AGE
loki-0               1/1    Running  0         147m
loki-promtail-9zjvc  1/1    Running  0         3h25m
loki-promtail-f6brf  1/1    Running  0         11h
loki-promtail-hdcj7  1/1    Running  0         3h23m
loki-promtail-jbqhc  1/1    Running  0         11h
loki-promtail-mj642  1/1    Running  0         62m
loki-promtail-nm64g  1/1    Running  0         24m

ټول پوزې روانې دي. اوس دا وخت دی چې ځینې ازموینې ترسره کړئ!

د Grafana سره نښلول

د Kubernetes لاندې Grafana سره د نښلولو لپاره، تاسو اړتیا لرئ چې د هغې پوډ ته یو تونل خلاص کړئ. لاندې د ګرافانا پوډ لپاره د 3000 پورټ خلاصولو قومانده ده:

$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80

بل مهم ټکی د ګرافانا مدیر پټنوم بیرته ترلاسه کولو اړتیا ده. پټنوم پټ ساتل کیږي loki-grafana په ساحه کې .data.admin-user په بیس 64 شکل کې.

د دې بحالولو لپاره، تاسو اړتیا لرئ لاندې کمانډ چل کړئ:

$ kubectl -n monitoring get secret loki-grafana 
 --template '{{index .data "admin-password" | base64decode}}'; echo

دا پاسورډ د ډیفالټ مدیر حساب (اډمین) سره په ګډه وکاروئ.

په ګرافانا کې د لوکي ډیټا سرچینې تعریف کول

تر ټولو لومړی، ډاډ ترلاسه کړئ چې د لوکي ډاټا سرچینه جوړه شوې ده (تنظیم / ډیټا سرچینه).
دلته یو مثال دی:

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
د لوکي لپاره د معلوماتو سرچینې ترتیب کولو مثال

په "ټیسټ" کلیک کولو سره تاسو کولی شئ د لوکي سره اړیکه چیک کړئ.

لوکي ته غوښتنې کول

اوس د "سپړنې" برخې ته ګرافانا ته لاړشئ. کله چې د کانټینرونو څخه لاګونه ترلاسه کوي، لوکي د کوبرنیټس څخه میټاډاټا اضافه کوي. په دې توګه، دا ممکنه ده چې د یو ځانګړي کانټینر لاګونه وګورئ.

د مثال په توګه، د پروموټیل کانټینر لاګونو غوره کولو لپاره، تاسو کولی شئ لاندې پوښتنې وکاروئ: {container_name = "promtail"}.
دلته د لوکي ډیټا سرچینه غوره کول هم په یاد ولرئ.

دا پوښتنه به د کانټینر فعالیت په لاندې ډول بیرته راولي:

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
په ګرافانا کې د پوښتنې پایله

ډشبورډ ته اضافه کړئ

د Grafana 6.4 سره پیل کول، تاسو کولی شئ د لاګ معلومات مستقیم په ډشبورډ کې ځای په ځای کړئ. له دې وروسته، کاروونکي به وکوالی شي په چټکۍ سره د هغه په ​​سایټ کې د غوښتنو شمیر او د غوښتنلیک ټریسونو ترمنځ بدل کړي.

لاندې د ډشبورډ یوه بیلګه ده چې دا تعامل پلي کوي:

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
د پرومیټیوس میټریکونو او لوکي لاګونو سره نمونه ډشبورډ

د لوکي راتلونکی

ما د می / جون په میاشت کې د 0.1 نسخه سره د لوکي کارول پیل کړل. نن ورځ 1 نسخه، او حتی 1.1 او 1.2 لا دمخه خپاره شوي.

دا باید ومنل شي چې نسخه 0.1 کافي مستحکم نه وه. مګر 0.3 دمخه د بلوغ اصلي نښې ښودلې، او ورپسې نسخې (0.4، بیا 1.0) یوازې دا تاثیر پیاوړی کړی.

د 1.0.0 وروسته، هیڅوک نشي کولی د دې په زړه پورې وسیله کارولو لپاره هیڅ عذر ونه لري.

نور پرمختګونه باید د لوکي په اړه نه وي ، بلکه د عالي ګرافانا سره د هغې ادغام. په حقیقت کې ، ګرافانا 6.4 دمخه د ډشبورډونو سره ښه ادغام لري.

Grafana 6.5، چې پدې وروستیو کې خپور شوی، د JSON بڼه کې د لاګ مینځپانګې په اتوماتيک ډول پیژندلو سره دا ادغام نور هم ښه کوي.

لاندې ویډیو د دې میکانیزم یوه کوچنۍ بیلګه ښیې:

لوکي - د پرومیتیوس طریقې په کارولو سره د ننوتلو ټولګه
په ګرافانا کې د افشا شوي لوکي تارونو کارول

دا ممکنه ده چې د JSON ساحو څخه یو وکاروئ، د بیلګې په توګه، د دې لپاره:

  • د بهرنۍ وسیلې سره اړیکې
  • د لاګ منځپانګې فلټر کول

د مثال په توګه، تاسو کولی شئ په TraceId باندې کلیک وکړئ ترڅو Zipkin یا Jaeger ته لاړ شئ.

د معمول په څیر، موږ ستاسو نظرونو ته سترګې په لار یو او تاسو ته بلنه ورکوو خلاص ویبینار، چیرې چې موږ به د دې په اړه وغږیږو چې څنګه د DevOps صنعت د 2019 په جریان کې وده کړې او د 2020 لپاره د احتمالي پراختیا لارو په اړه بحث کوو.

سرچینه: www.habr.com