مزایای استفاده از Grafana Loki چیست و نحوه کار با آن چگونه است؟
بروز خرابی در یک محیط تولید بدون شک غیرقابل پذیرش است. این کار می تواند منجر به از دست دادن بخش قابل توجهی از درآمد شده و به برندینگ نیز لطمه وارد کند. اما در صورتی که یک سیستم ثبت و مانیتورینگ حرفه ای داشته باشید، می توانید سناریوهایی که منجر به خرابی می شوند را شناسایی کرده و از بروز آن ها جلوگیری کنید. امروزه هر سازمانی در هر اندازه ای از اصول و ابزارهای DevOps استفاده می کند. کانتینرها و Kubernetes را می توان محبوب ترین آن ها به شمار آورد. از سوی دیگر، نظارت بر چنین سیستم هایی با پرومتئوس انجام می شود. اما از آن جایی که پرومتئوس نمی تواند به خوبی این کار را انجام دهد و یک سیستم گزارش گیری متمرکز شناخته نمی شود، می توان از Grafana Loki استفاده کرد. این کار به صرفه جویی در هزینه ها و شناسایی مشکلات و خرابی ها در آینده کمک فراوانی می کند. حال اجازه دهید تا در ادامه به صورت کامل در خصوص Grafana Loki صحبت کنیم.
Grafana Loki چیست؟
Loki را می توان یک سیستم جمع آوری لاگ چند مستاجره (multi-tenant log) دانست که توسط گرافانا در سال 2018 راه اندازی شد. این سیستم در آن سال تحت مجوزی به نام Apache 2.0 منتشر و در اختیار مصرف کنندگان قرار گرفت. با این وجود می توان اشاره کرد که Grafana Loki با الهام از پرومتئوس ساخته شده است. این سیستم به صورت عمده با ارائه دهندگان ابر و با ابزارهایی مانند Prometheus و Grafana مورد استفاده قرار می گیرد.
Loki شبیه به پشته ELK/EFK است؛ اما راه اندازی و کارکرد آن با عملکردهای بهتر و آسان تری صورت می گیرد. Loki محتوای گزارش را فهرست نمی کند، بلکه تایم استمپ ها و مجموعه ای از برچسب ها را برای یک جریان گزارش، نمایه خواهد کرد. این امر شاخص را کوچکتر کرده، عملیات را ساده تر می کند و در نهایت می تواند منجر به کاهش هزینه ها شود.
مزایای استفاده از گرافانا لوکی
شاید برای شما هم این سوال ایجاد شده باشد که دلیل محبوبیت بسیار زیاد Grafana Loki چیست؟ باید اشاره داشت که مزایای استفاده از چنین سیستمی موجب شده تا طرفداران بسیار زیادی در سراسر دنیا به دست بیاورد. از جمله مزایای استفاده از Loki در پشته می توان به موارد زیر اشاره کرد:
- Loki بسیار مقرون به صرفه است؛ زیرا تنها ابرداده را نمایه سازی می کند. اجرای شاخص ها برای پردازش متن کامل به RAM بزرگتری نیاز دارد که بسیار گران است. ذخیره کردن لاگ ها در اشیا ذخیره شده مانند S3 نیز باعث ارزان تر شدن آن خواهد شد.
- با استفاده از tenantID می تواند از multi-tenancy پشتیبانی کند. از این رو tenants داده های خود را به صورت جداگانه ذخیره می کنند.
- می توانید Loki را به صورت محلی برای مقیاس های کوچک نیز اجرا کنید یا به راحتی آن را به صورت افقی برای عملیات بزرگ تنظیم و مقیاس بندی کنید.
- Loki از dynamo-style برای اطمینان از ثبات حد نصاب جهت عملیات خواندن و نوشتن استفاده می کند.
- به صورت پیش فرص پیکربندی شده است که دارای 3 کپی از گزارش ها باشد تا خطر خرابی فرایند و خروج ناگهانی، از محلی که لاگ ها گم می شوند را برآورده کند. با این که امکان افزایش هزینه ها وجود دارد، اما یکپارچگی داده ها را حفظ خواهد کرد.
- Loki به شما امکان اتصال آسان با ابزارهای محبوبی مانند Kubernetes، Prometheus، و visualization در Grafana را می دهد.
آشنایی با معماری گرافانا لوکی
معماری Grafana Loki دارای سه جزء کلی است: Promtail، Loki و Grafana.
Promtail عاملی است که باید روی هر گره ای که برنامه ها یا خدمات شما اجرا می کنند، نصب شود. مسئولیت اصلی Promtail این است که هدف را کشف کرده، برچسب ها را به جریان های log streams متصل کرده و آن لاگ ها را به نمونه های Loki بچسباند. عامل promtail لاگ ها را از سیستم فایل محلی دنبال کرده و گزارش ها را به سرور مرکزی Loki ارسال می کند. پس از این می توانید با استفاده از Grafana، کوئری های مختلف را در میان لاگ های خود اجرا کنید.
موارد استفاده از Grafana Loki
حال که با Grafana Loki به صورت کامل آشنا شدید، شاید بخواهید بدانید که از این سیستم در چه مواردی می توان استفاده کرد. برخی از مهمترین موارد استفاده از سیستم Loki به شرح زیر خواهد بود:
- هوش تجاری
Loki در هوش تجاری می تواند به ایجاد بینش عملی از داده های گزارش کمک کند. از سوی دیگر Loki قادر است تا به درک داده های گزارش نیز کمک کرده و شما را در ایجاد استراتژی های جدید برای رشد کسب و کارتان، یاری برساند. به عنوان مثال از طریق داده های گزارش یک سازمان، می تواند به شما در شناسایی نرخ تبدیل از یک کانال تبلیغاتی، کمک کند.
- مانیتورینگ
پرومتئوس در صنعت به وفور برای نظارت مورد استفاده قرار می گیرد. اما شما می توانید با نظارت بر لاگ های خود به کمک ابزاری مانند Grafana Loki چیزهای بیشتری را کشف و شناسایی کنید. این می تواند به شما کمک کرده تا نرخ خطا را در وب سایت خود با مرور گزارش ها و ارسال هشدار پس از عبور از آستانه، نظارت کنید.
- اشکال زدایی و عیب یابی
Loki همچنین می تواند به تیم های DevOps در زمان هایی که برنامه از کار می افتد، دلایل خرابی برنامه ها، آخرین وضعیت آن ها قبل از خرابی و غیره جهت دریافت پاسخ سریع، کمک کند.
- امنیت سایبری
در چند سال اخیر حملات سایبری به پورتال های تجاری افزایش زیادی پیدا کرده است. به کمک Grafana Loki می توانید گزارش ها را بررسی کرده تا هر گونه تهدید یا مشکل یا فعالیت های مخرب در سیستم های سازمانی را شناسایی کنید. در صورتی که هک موفقیت آمیز هم باشد، باز هم Loki می تواند برای درک آن چیزی که اتفاق افتاده است، مورد استفاده قرار بگیرد. برخی از افراد از این سیستم برای شناسایی هکرها نیز استفاده می کنند.
- انطباق
برای رعایت مقررات، سازمان ها باید گزارش های حسابرسی خود را در تا مدت زمانی طولانی نگهداری کنند. مقامات محلی می توانند به کمک لاگ ها، اطلاعات مربوطه به هر زمانی را مورد بررسی قرار دهند. با تکیه بر Grafana Loki می توانید گزارش های حسابرسی خودتان را با خیال راحت، ذخیره سازی کنید.
نحوه نصب Grafana Loki و Promtail
حال اگر قصد داشته باشید تا از این سیستم استفاده کنید، لازم است دریابید که چگونه لاگ ها را در Grafana نصب و قابل نمایش کنیم. در این مثال، ما از پیکربندی عمومی استفاده می کنیم که گزارش ها را از /var/log/*log بیرون می کشد.
برای نصب Grafana Loki ابتدا به صفحه نسخه های منتشر شده از Loki مراجعه کنید. سپس به قسمت Assets رفته و چندین بسته Loki و Promtail را پیدا کنید. بسته Loki متناسب با سیستم خود را انتخاب و سپس دانلود کنید. بسته های cli یا canary Loki را دانلود نکنید. پس از اتمام دانلود، فایل های Loki و Promtail را استخراج کرده و در یک دایرکتوری واحد قرار دهید:
geekflare@geekflare:~$ mkdir loki
geekflare@geekflare:~$ mv loki-linux-amd64 promtail-linux-amd64 loki
geekflare@geekflare:~$ cd loki/
geekflare@geekflare:~/loki$ ls
loki-linux-amd64 promtail-linux-amd64
اکنون فایل پیکربندی عمومی Loki و Promtail را دانلود کنید.
geekflare@geekflare:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
--2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1832 (1.8K) [text/plain]
Saving to: ‘loki-local-config.yaml’
loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s
2021-04-30 12:00:51 (16.6 MB/s) - ‘loki-local-config.yaml’ saved [1832/1832]
geekflare@geekflare:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
--2021-04-30 12:05:07-- https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
Resolving github.com (github.com)... 13.234.210.38
Connecting to github.com (github.com)|13.234.210.38|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘promtail-local-config.yaml’
promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s in 0.002s
2021-04-30 12:05:08 (66.8 MB/s) - ‘promtail-local-config.yaml’ saved [111779]
geekflare@geekflare:~/loki$ ls
loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yaml
برای راه اندازی Loki، دستور زیر را با فایل پیکربندی Loki اجرا کنید. با این کار Loki فعالیت های خود را آغاز کرده و گزارش های Loki را در ترمینال نمایش می دهد.
geekflare@geekflare:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml
level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses"
level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode"
level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp
level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory"
level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables"
level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store
level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv
level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server
level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester
level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"
برای راه اندازی Promtail، دستور زیر را با فایل پیکربندی Promtail اجرا کنید. Promtail برای وارد کردن گزارشها به Grafana Loki نیاز دارد.
geekflare@geekflare:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml
level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses"
level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}"
ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}"
level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log
level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log
ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}"
ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}"
ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}"
ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}"
level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log
level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}"
level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log
ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"
نمایش لاگ ها با استفاده از Loki و Grafana
Grafana پشتیبان داخلی برای Loki را فراهم می کند. Loki در حال حاضر در منابع داده Grafana حضور دارد. برای این کار، لازم است تا مراحل زیر را انجام دهید:
زمان مورد نیاز: 10 دقیقه
آموزش قدم به قدم قابل نمایش کردن لاگ ها در گرافانا لوکی
- مرحله اول:
به تنظیمات گرافانا رفته و روی گزینه “Data Sources” کلیک کنید.
- مرحله دوم:
در Data Sources می توانید منبع را بر اساس نام یا نوع آن، جستجو کنید.
- مرحله سوم:
نام Loki را جستجو کنید. می توانید ببینید که این منبع داده در حال حاضر در Grafana وجود دارد. روی گزینه Select کلیک کنید.
- مرحله چهارم:
نامی را که می خواهید به منبع داده بدهید وارد کنید و http://localhost:3100 را در آدرس URL قرار دهید. (اگر Loki روی سرور دیگری غیر از Grafana اجرا می شود آن را به IP سرور تغییر دهید)
- مرحله پنجم:
روی دکمه Test and Save در پایین کلیک کنید. اگر تنظیمات Grafana Loki را به خوبی انجام داده باشید، پیامی مبنی بر موفقیت آمیز بودن دریافت خواهید کرد.
- مرحله ششم:
روی تب Explore در سمت چپ کلیک کنید. Loki را از منوی کشویی انتخاب منبع داده، انتخاب کنید. اکنون می خواهیم فعالیت لاگ های گرافانا را قابل نمایش کنیم. برای انجام این کار، باید عبارت
<em>{filename="/var/log/grafana/grafana.log"}</em>
در مرورگر لاگ، اضافه کنید. - مرحله هفتم:
شما می توانید محدوده زمانی برای نمایش داده ها روی داشبورد را انتخاب کنید. همچنین می توانید بازه تازه سازی کوئری ها را نیز تنظیم کرده تا پس از آن کوئری دوباره اجرا شود. برای مشاهده جزئیات بیشتر از گزارش ها، به پایین اسکرول کرده و روی یکی از ورودی های گزارش کلیک کنید. حال می توانید انواع اطلاعات مربوط به گزارش ها را دریافت کنید.
اکنون شما موفق به نصب گرافانا لوکی و نمایش لاگ های آن در صفحه داشبورد خود شده اید. امیدواریم از این آموزش نهایت استفاده را برده باشید.
منبع: https://geekflare.com/