برنامه نویسی

مدیریت ثبت و ردیابی آسان شد. ادغام Quickwit از طریق Glasskube

Summarize this content to 400 words in Persian Lang
عیب یابی برنامه های توزیع شده می تواند یک کابوس باشد. ممکن است احساس کنید که در غاری بدون چراغ قوه گیر کرده اید، مگر اینکه بودجه ای برای نظارت اختصاصی گران قیمت راه حل های SaaS یا تخصص برای اجرا و نگهداری یک پشته پیچیده ELK داشته باشید.

خوشبختانه، جایگزین های منبع باز قابل اجرا مانند Quickwit اینجا هستند تا به کمک بیایند. با ترکیب ابزارهای موجود برای ورود لاگ و ردیابی و همچنین جفت شدن خوب با داشبورد و ابزارهای تجسم مانند Grafana و Jaeger. و قابلیت‌های ذخیره‌سازی و جستجوی قدرتمند فهرست‌سازی را در این بین قرار دهید. حتی اگر ابزار جدید به نظر برسد، مدت زیادی طول نخواهد کشید.

ما اخیراً Quickwit را با Glasskube ادغام کرده‌ایم و می‌توان آن را به‌راحتی در خوشه شما مستقر کرد. من مستقیماً با فرانسوا ماسو، یکی از بنیانگذاران Quickwit صحبت کردم تا اطلاعات خودی را دریافت کنم و نحوه کار این ابزار را بیاموزم. بیایید شیرجه بزنیم!

اما Quickwit دقیقا چیست؟ 🤷

Quickwit یک موتور جستجوی بومی ابری است که با هدف ایجاد یک جایگزین منبع باز برای نرم افزارهای نظارتی گران قیمت مانند Datadog و Splunk پدیدار شد. در طول مسیر، آنها همچنین چندین مؤلفه را توسعه داده و منبع باز کرده اند، از جمله ChitChat (پروتکل عضویت در خوشه)، mrecordlog (WAL)، Whatlang (تشخیص سریع زبان)، بازیگران شوخ (فریم ورک بازیگر)، و بیت پکینگ (الگوریتم های SIMD برای عدد صحیح). فشرده سازی).

Quickwit با API سازگار با Elasticsearch قوی خود، به خوبی با ابزارهای اکوسیستم OSS، مانند Grafana، Jaeger، و OpenTelemetry ادغام می شود. کاربران با موفقیت Quickwit در مقیاس را با صدها گره و صدها ترابایت داده مصرفی روزانه به کار می‌برند، در حالی که از کاهش قابل توجه هزینه‌ها لذت می‌برند و به لطف Glasskube چگونه می‌توان در کمترین زمان راه‌اندازی و اجرا کرد.

Quickwit در مدیریت گزارش‌ها، ردیابی‌ها، داده‌های امنیتی، و مجموعه داده‌های فقط ضمیمه، با برنامه‌هایی که به زودی از معیارها پشتیبانی می‌کند، برتر است. یک ویژگی کلیدی استفاده از ذخیره سازی اشیا برای داده های نمایه شده است که مدیریت خوشه را ساده می کند، هزینه های زیرساخت را کاهش می دهد و قابلیت اطمینان را افزایش می دهد. چندین گزینه ذخیره سازی مانند دیسک محلی، Amazon S3، ذخیره سازی Azure Blob یا Garage، یک ذخیره سازی شی توزیع شده OSS، در دسترس هستند.

سوالاتی برای یکی از بنیانگذاران فرانسوا ماسو 🙋

مزایای استفاده از Object Storage در مقابل ذخیره سازی متصل به گره چیست؟

مزایای زیادی وجود دارد! از همان ابتدا، ما تصمیم گرفتیم محاسبات و ذخیره سازی را جدا کنیم تا موتور جستجوی خود را مقیاس پذیر، قابل اعتماد و بسیار مقرون به صرفه کنیم. اگر می خواهید یک چیز را به خاطر بسپارید که Quickwit را از موتورهای جستجوی سنتی متمایز می کند، این حافظه و محاسبات جدا شده است.

در مرحله اول، کشش را فراهم می کند و به ما امکان می دهد تا ذخیره سازی و محاسبه منابع را به طور مستقل مقیاس کنیم، که برای محیط های ابری ایده آل است. ثانیا، مقرون به صرفه است، زیرا ذخیره سازی اشیا مانند S3 ارزان تر از ذخیره سازی دیسک سنتی است، به خصوص برای حجم زیادی از داده های گزارش. و شما نیازی به تکرار داده های شاخص خود ندارید. این کار توسط لایه ذخیره سازی شی انجام می شود. علاوه بر این، دوام و در دسترس بودن بالا را تضمین می کند و خطر از دست دادن داده ها را کاهش می دهد. آخرین، اما نه کم اهمیت، مدیریت خوشه را ساده می کند زیرا اکثر اجزای Quickiwt فاقد حالت هستند.

مقایسه عملکرد: آیا Quickwit سریعتر از Elasticsearch است؟

بستگی داره!

در نمایه سازی، Quickwit معمولاً دو برابر سریعتر از Elasticsearch است و از CPU کمتری استفاده می کند. کاربران ما، مانند Binance، کاهش 80 درصدی استفاده از CPU را در نمایه سازی گزارش می دهند!

داستان در مورد پرس و جو متفاوت است، زیرا Elasticsearch تمام داده های خود را بر روی یک دیسک محلی، معمولا SSD، و Quickwit داده های فهرست شده خود را در ذخیره سازی شی بسیار کند دارد. در این حالت می توانید انتظار داشته باشید که زمان پرس و جو کمتر باشد. اما هدف اصلی Quickwit این است که پرس و جوهای فرعی دوم باشد که در حوزه های مشاهده پذیری/امنیت کاملاً خوب است. اگر به این اندیکاتور نگاه کنیم، Quickwit همتراز با Elasticsearch است و حتی برای جستجوهای تحلیلی درخواستی سریعتر است، در حالی که داده ها در ذخیره سازی اشیا ذخیره می شوند!

چه چیزی برای Quickwit در آینده وجود دارد؟

ما یک نقشه راه بسیار جاه طلبانه داریم! در اینجا ویژگی های کلیدی است که در 12 ماه آینده اضافه می شود:

مصرف توزیع شده (ژوئیه 2024): نمایه سازی با توان عملیاتی بالا در ده ها هزار شاخص.
پشتیبانی از داشبورد OpenSearch (Q3 2024): این کار به کاربران OpenSearch امکان می‌دهد تا با داشبوردهای موجود خود به طور یکپارچه به Quickwit مهاجرت کنند.
پشتیبانی از متریک (سه ماهه چهارم 2024): موتور ذخیره سازی جدید بهینه شده برای داده های سری زمانی.
موتور SQL توزیع شده (Q1 2025): موتور SQL توزیع شده برای تجزیه و تحلیل در بالای Apache Arrow، Datafusion و Ballista.
زبان پرس و جو مبتنی بر لوله (Q2 2025): معرفی یک زبان پرس و جو منعطف و قدرتمند مشابه SPL (Splunk Query Language)

موارد استفاده کنید

مدیریت لاگ 🪵

Quickwit از ابتدا ساخته شده است تا به طور موثر داده های بدون ساختار را فهرست کند و آن ها را بدون زحمت در فضای ذخیره سازی ابری جستجو کند. علاوه بر این، Quickwit از پروتکل‌های OpenTelemetry gRPC و HTTP (فقط protobuf) خارج از جعبه پشتیبانی می‌کند و یک REST API آماده برای ورود هر گزارش فرمت‌شده JSON ارائه می‌کند. این باعث می شود Quickwit مناسب برای سیاهههای مربوط باشد!

ردیابی توزیع شده 📊

ردیابی توزیع شده شامل نظارت بر درخواست‌های برنامه‌ای است که از سرویس‌های مختلفی مانند frontend، backend و پایگاه‌های داده عبور می‌کنند. برای درک رفتار برنامه کاربردی و تشخیص مشکلات عملکرد مفید است.

علاوه بر این، Quickwit به طور یکپارچه با OpenTelemetry با استفاده از پروتکل‌های gRPC و HTTP (فقط protobuf)، و همچنین gRPC API Jaeger (فقط SpanReader) یکپارچه می‌شود. این بدان معناست که می‌توانید ردیابی‌ها را در Quickwit ذخیره کنید و با استفاده از رابط کاربری Jaeger به راحتی آنها را جستجو کنید.

ویژگی های کلیدی 🔑

متن کامل جستجو کردن و تجمع پرس و جوها

Elasticsearch پشتیبانی از زبان پرس و جو

جستجوی فرعی در فضای ذخیره سازی ابری (Amazon S3، Azure Blob Storage، …)

محاسبه جدا شده و ذخیره سازی، بی تابعیت نمایه سازها و جستجوگران

بدون طرحواره یا سخت گیرانه طرحواره نمایه سازی

تجزیه و تحلیل بدون طرحواره

گرافانا منبع اطلاعات
بومی جیگر

بومی OTEL برای سیاهههای مربوط و آثار

Kubernetes آماده است از طریق Glasscube
RESTful API

راهنمای نصب 🦮

پیش نیازها

دسترسی به یک خوشه Kubernetes (شما به راحتی می توانید یک خوشه محلی با استفاده از Minikube یا Kind ایجاد کنید)

Kubectl به طور دقیق یک وابستگی برای نصب بسته‌ها از طریق glasskube نیست، اما روش توصیه‌شده برای تعامل با خوشه است. بنابراین بسیار توصیه می شود. دستورالعمل‌های نصب برای macOS، Linux و Windows در دسترس است.

مکعب شیشه ای را نصب کنید

اگر قبلاً glasskube را نصب کرده‌اید، می‌توانید از این مرحله صرفنظر کنید.در غیر این صورت، با پیروی از دستورالعمل‌های خاص توزیع، می‌توان شیشه‌کوب را به راحتی نصب کرد.

برای این نسخه نمایشی از توزیع MacOs استفاده خواهم کرد:

brew install glasskube/tap/glasskube # install the glasskube cli
minikube start # start a minikube Kubernetes cluster
glasskube bootstrap # install glasskube on the kind cluster

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای راهنمای نصب بیشتر، آنها را اینجا پیدا کنید.

پس از نصب Glasskube از طریق UI با:

glasskube serve

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

داشبورد باز خواهد شد http://localhost:8580/.

ایجاد یک سطل سازگار با S3

قبل از نصب Quickwit، باید یک سطل ذخیره اشیاء برای نگهداری Quickwit خود ایجاد کنید indexes. می توانید از ارائه دهنده Cloud انتخابی خود مانند Scaleway، AWS S3 یا MinIO استفاده کنید. برای جزئیات پیکربندی ذخیره سازی به اسناد رسمی Quickwit ما مراجعه کنید.

در اینجا من یک را ایجاد خواهم کرد AWS S3 bucket برای ذخیره ایندکس های Quickwit.

مراحل:

به کنسول مدیریت AWS بروید و یک سطل S3 جدید ایجاد کنید.
در IAM یک کلید API تولید کنید، با مجوزهای S3، “Access Key ID” و “Secret Key” را ذخیره کنید، به زودی به آنها نیاز خواهیم داشت.

Quickwit را مستقر کنید

از داشبورد Glasskube، بسته Quickwit را پیدا کنید و پارامترهای پیکربندی سفارشی خود را اضافه کنید.

defaultIndexRootUri: برای این نسخه ی نمایشی است s3://quickwit-indexes.

metastoreUri: ما از PostgreSQL استفاده نخواهیم کرد، بنابراین بیایید همان مقداری را که برای آن استفاده کردیم انتخاب کنیم defaultIndexRootUri.

s3AccessKeyId: را “Access Key Id” از AWS که قبلا تولید کردیم.

s3Endpoint: نقطه پایانی سفارشی برای استفاده با ارائه دهندگان سازگار با S3. برای پیکربندی S3 مورد نیاز نیست.

طعم s3: ما از پیش فرض استفاده می کنیم empty value برای ذخیره سازی واقعی اشیاء سازگار با S3.

منطقه s3: US-east-1 در مورد من.

s3SecretAccessKey: را “Secret Key” از AWS که قبلا تولید کردیم.

در اینجا می توانید اسناد رسمی Quickwit را برای تکمیل پارامتر پیدا کنید.

همچنین نصب و پیکربندی Quickwit با استفاده از Glasskube CLI با اجرای:

glasskube install quickwit

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از نصب، می توانید ببینید که a quickwit فضای نام ایجاد شده است:

default
flux-system
glasskube-system
kube-node-lease
kube-public
kube-system
kubernetes-dashboard
quickwit

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، بررسی کنید که آیا غلاف ها در حال اجرا هستند یا خیر

NAME READY STATUS RESTARTS AGE
quickwit-quickwit-control-plane-86bd9955f7-bwm2r 1/1 Running 1 (27m ago) 29m
quickwit-quickwit-indexer-0 1/1 Running 1 (27m ago) 29m
quickwit-quickwit-janitor-9479697ff-x4x2c 1/1 Running 1 (27m ago) 29m
quickwit-quickwit-metastore-56ff74df9f-k6d2g 1/1 Running 0 29m
quickwit-quickwit-searcher-0 1/1 Running 1 (27m ago) 29m
quickwit-quickwit-searcher-1 1/1 Running 0 27m
quickwit-quickwit-searcher-2 1/1 Running 0 27m

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما می توانیم با استفاده از دستور زیر سعی کنیم به Quickwit UI دسترسی پیدا کنیم:

$ kubectl -n quickwit port-forward pod/quickwit-quickwit-searcher-0 7280

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به http://localhost:7280 سر بزنید. و شما باید برای رفتن آماده باشید!

اولین شاخص خود را ایجاد کنید

قبل از اضافه کردن اسناد برای Quickwit، باید یک ایجاد کنید فهرست مطالب با یک فایل پیکربندی YAML پیکربندی شده است. این فایل پیکربندی به ویژه به شما این امکان را می دهد که نحوه نگاشت اسناد ورودی خود را به فیلدهای فهرست خود و اینکه آیا این فیلدها باید ذخیره و نمایه شوند را تعریف کنید. مستندات پیکربندی شاخص را ببینید.

بیایید یک فهرست پیکربندی شده برای دریافت پست های Stackoverflow (سوال و پاسخ) ایجاد کنیم.

# First, download the stackoverflow dataset config from Quickwit repository.
curl -o stackoverflow-index-config.yaml https://raw.githubusercontent.com/quickwit-oss/quickwit/main/config/tutorials/stackoverflow/index-config.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی ایندکس سه فیلد را تعریف می کند: عنوان، بدن و تاریخ ایجاد. عنوان و بدن ایندکس و نشانه گذاری می شوند، و همچنین به عنوان فیلدهای جستجوی پیش فرض استفاده می شوند، به این معنی که اگر فیلد خاصی را در جستجوی خود هدف قرار ندهید، برای جستجو استفاده خواهند شد. تاریخ ایجاد به عنوان مهر زمانی برای هر رکورد عمل می کند. هیچ تعریف صریح دیگری برای فیلد وجود ندارد زیرا می‌توانیم از حالت پویا پیش‌فرض استفاده کنیم: فیلدهای اعلام‌نشده همچنان فهرست‌بندی می‌شوند، به‌طور پیش‌فرض فیلدهای سریع برای فعال کردن جستارهای تجمع فعال هستند. و توکنایزر خام برای متن استفاده می شود.

و این هم کانفیگ کامل:

# Index config file for stackoverflow dataset.
#
version: 0.7

index_id: stackoverflow

doc_mapping:
field_mappings:
– name: title
type: text
tokenizer: default
record: position
stored: true
– name: body
type: text
tokenizer: default
record: position
stored: true
– name: creationDate
type: datetime
fast: true
input_formats:
– rfc3339
fast_precision: seconds
timestamp_field: creationDate

search_settings:
default_search_fields: [title, body]

indexing_settings:
commit_timeout_secs: 30

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا با دستور زیر می توانیم ایندکس را ایجاد کنیم:

./quickwit index create –index-config ./stackoverflow-index-config.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک دایرکتوری را بررسی کنید ./qwdata/indexes/stackoverflow ایجاد شده است، Quickwit فایل های فهرست را در اینجا می نویسد و a metastore.json که حاوی فراداده های شاخص است. اکنون آماده پر کردن ایندکس هستید.

برای افزودن اولین اسناد و اجرای اولین درخواست های جستجوی خود، به اسناد Quickwit ادامه دهید.

اگر محتوای ما را دوست دارید و می‌خواهید از ما در این ماموریت حمایت کنید، خوشحال می‌شویم اگر بتوانید در GitHub به ما ستاره بدهید.

⭐️ ما را در GitHub ستاره دار کنید 🙏

عیب یابی برنامه های توزیع شده می تواند یک کابوس باشد. ممکن است احساس کنید که در غاری بدون چراغ قوه گیر کرده اید، مگر اینکه بودجه ای برای نظارت اختصاصی گران قیمت راه حل های SaaS یا تخصص برای اجرا و نگهداری یک پشته پیچیده ELK داشته باشید.

خوشبختانه، جایگزین های منبع باز قابل اجرا مانند Quickwit اینجا هستند تا به کمک بیایند. با ترکیب ابزارهای موجود برای ورود لاگ و ردیابی و همچنین جفت شدن خوب با داشبورد و ابزارهای تجسم مانند Grafana و Jaeger. و قابلیت‌های ذخیره‌سازی و جستجوی قدرتمند فهرست‌سازی را در این بین قرار دهید. حتی اگر ابزار جدید به نظر برسد، مدت زیادی طول نخواهد کشید.

ما اخیراً Quickwit را با Glasskube ادغام کرده‌ایم و می‌توان آن را به‌راحتی در خوشه شما مستقر کرد. من مستقیماً با فرانسوا ماسو، یکی از بنیانگذاران Quickwit صحبت کردم تا اطلاعات خودی را دریافت کنم و نحوه کار این ابزار را بیاموزم. بیایید شیرجه بزنیم!

اما Quickwit دقیقا چیست؟ 🤷

Quickwit یک موتور جستجوی بومی ابری است که با هدف ایجاد یک جایگزین منبع باز برای نرم افزارهای نظارتی گران قیمت مانند Datadog و Splunk پدیدار شد. در طول مسیر، آنها همچنین چندین مؤلفه را توسعه داده و منبع باز کرده اند، از جمله ChitChat (پروتکل عضویت در خوشه)، mrecordlog (WAL)، Whatlang (تشخیص سریع زبان)، بازیگران شوخ (فریم ورک بازیگر)، و بیت پکینگ (الگوریتم های SIMD برای عدد صحیح). فشرده سازی).

Quickwit با API سازگار با Elasticsearch قوی خود، به خوبی با ابزارهای اکوسیستم OSS، مانند Grafana، Jaeger، و OpenTelemetry ادغام می شود. کاربران با موفقیت Quickwit در مقیاس را با صدها گره و صدها ترابایت داده مصرفی روزانه به کار می‌برند، در حالی که از کاهش قابل توجه هزینه‌ها لذت می‌برند و به لطف Glasskube چگونه می‌توان در کمترین زمان راه‌اندازی و اجرا کرد.

Quickwit در مدیریت گزارش‌ها، ردیابی‌ها، داده‌های امنیتی، و مجموعه داده‌های فقط ضمیمه، با برنامه‌هایی که به زودی از معیارها پشتیبانی می‌کند، برتر است. یک ویژگی کلیدی استفاده از ذخیره سازی اشیا برای داده های نمایه شده است که مدیریت خوشه را ساده می کند، هزینه های زیرساخت را کاهش می دهد و قابلیت اطمینان را افزایش می دهد. چندین گزینه ذخیره سازی مانند دیسک محلی، Amazon S3، ذخیره سازی Azure Blob یا Garage، یک ذخیره سازی شی توزیع شده OSS، در دسترس هستند.

سوالاتی برای یکی از بنیانگذاران فرانسوا ماسو 🙋

مزایای استفاده از Object Storage در مقابل ذخیره سازی متصل به گره چیست؟

مزایای زیادی وجود دارد! از همان ابتدا، ما تصمیم گرفتیم محاسبات و ذخیره سازی را جدا کنیم تا موتور جستجوی خود را مقیاس پذیر، قابل اعتماد و بسیار مقرون به صرفه کنیم. اگر می خواهید یک چیز را به خاطر بسپارید که Quickwit را از موتورهای جستجوی سنتی متمایز می کند، این حافظه و محاسبات جدا شده است.

در مرحله اول، کشش را فراهم می کند و به ما امکان می دهد تا ذخیره سازی و محاسبه منابع را به طور مستقل مقیاس کنیم، که برای محیط های ابری ایده آل است. ثانیا، مقرون به صرفه است، زیرا ذخیره سازی اشیا مانند S3 ارزان تر از ذخیره سازی دیسک سنتی است، به خصوص برای حجم زیادی از داده های گزارش. و شما نیازی به تکرار داده های شاخص خود ندارید. این کار توسط لایه ذخیره سازی شی انجام می شود. علاوه بر این، دوام و در دسترس بودن بالا را تضمین می کند و خطر از دست دادن داده ها را کاهش می دهد. آخرین، اما نه کم اهمیت، مدیریت خوشه را ساده می کند زیرا اکثر اجزای Quickiwt فاقد حالت هستند.

مقایسه عملکرد: آیا Quickwit سریعتر از Elasticsearch است؟

بستگی داره!

در نمایه سازی، Quickwit معمولاً دو برابر سریعتر از Elasticsearch است و از CPU کمتری استفاده می کند. کاربران ما، مانند Binance، کاهش 80 درصدی استفاده از CPU را در نمایه سازی گزارش می دهند!

داستان در مورد پرس و جو متفاوت است، زیرا Elasticsearch تمام داده های خود را بر روی یک دیسک محلی، معمولا SSD، و Quickwit داده های فهرست شده خود را در ذخیره سازی شی بسیار کند دارد. در این حالت می توانید انتظار داشته باشید که زمان پرس و جو کمتر باشد. اما هدف اصلی Quickwit این است که پرس و جوهای فرعی دوم باشد که در حوزه های مشاهده پذیری/امنیت کاملاً خوب است. اگر به این اندیکاتور نگاه کنیم، Quickwit همتراز با Elasticsearch است و حتی برای جستجوهای تحلیلی درخواستی سریعتر است، در حالی که داده ها در ذخیره سازی اشیا ذخیره می شوند!

چه چیزی برای Quickwit در آینده وجود دارد؟

ما یک نقشه راه بسیار جاه طلبانه داریم! در اینجا ویژگی های کلیدی است که در 12 ماه آینده اضافه می شود:

  • مصرف توزیع شده (ژوئیه 2024): نمایه سازی با توان عملیاتی بالا در ده ها هزار شاخص.

  • پشتیبانی از داشبورد OpenSearch (Q3 2024): این کار به کاربران OpenSearch امکان می‌دهد تا با داشبوردهای موجود خود به طور یکپارچه به Quickwit مهاجرت کنند.

  • پشتیبانی از متریک (سه ماهه چهارم 2024): موتور ذخیره سازی جدید بهینه شده برای داده های سری زمانی.

  • موتور SQL توزیع شده (Q1 2025): موتور SQL توزیع شده برای تجزیه و تحلیل در بالای Apache Arrow، Datafusion و Ballista.

  • زبان پرس و جو مبتنی بر لوله (Q2 2025): معرفی یک زبان پرس و جو منعطف و قدرتمند مشابه SPL (Splunk Query Language)

موارد استفاده کنید

مدیریت لاگ 🪵

Quickwit از ابتدا ساخته شده است تا به طور موثر داده های بدون ساختار را فهرست کند و آن ها را بدون زحمت در فضای ذخیره سازی ابری جستجو کند. علاوه بر این، Quickwit از پروتکل‌های OpenTelemetry gRPC و HTTP (فقط protobuf) خارج از جعبه پشتیبانی می‌کند و یک REST API آماده برای ورود هر گزارش فرمت‌شده JSON ارائه می‌کند. این باعث می شود Quickwit مناسب برای سیاهههای مربوط باشد!

ردیابی توزیع شده 📊

ردیابی توزیع شده شامل نظارت بر درخواست‌های برنامه‌ای است که از سرویس‌های مختلفی مانند frontend، backend و پایگاه‌های داده عبور می‌کنند. برای درک رفتار برنامه کاربردی و تشخیص مشکلات عملکرد مفید است.

علاوه بر این، Quickwit به طور یکپارچه با OpenTelemetry با استفاده از پروتکل‌های gRPC و HTTP (فقط protobuf)، و همچنین gRPC API Jaeger (فقط SpanReader) یکپارچه می‌شود. این بدان معناست که می‌توانید ردیابی‌ها را در Quickwit ذخیره کنید و با استفاده از رابط کاربری Jaeger به راحتی آنها را جستجو کنید.

ویژگی های کلیدی 🔑

  • متن کامل جستجو کردن و تجمع پرس و جوها
  • Elasticsearch پشتیبانی از زبان پرس و جو
  • جستجوی فرعی در فضای ذخیره سازی ابری (Amazon S3، Azure Blob Storage، …)
  • محاسبه جدا شده و ذخیره سازی، بی تابعیت نمایه سازها و جستجوگران
  • بدون طرحواره یا سخت گیرانه طرحواره نمایه سازی
  • تجزیه و تحلیل بدون طرحواره
  • گرافانا منبع اطلاعات
  • بومی جیگر
  • بومی OTEL برای سیاهههای مربوط و آثار
  • Kubernetes آماده است از طریق Glasscube
  • RESTful API

راهنمای نصب 🦮

پیش نیازها

  • دسترسی به یک خوشه Kubernetes (شما به راحتی می توانید یک خوشه محلی با استفاده از Minikube یا Kind ایجاد کنید)
  • Kubectl به طور دقیق یک وابستگی برای نصب بسته‌ها از طریق glasskube نیست، اما روش توصیه‌شده برای تعامل با خوشه است. بنابراین بسیار توصیه می شود. دستورالعمل‌های نصب برای macOS، Linux و Windows در دسترس است.

مکعب شیشه ای را نصب کنید

اگر قبلاً glasskube را نصب کرده‌اید، می‌توانید از این مرحله صرفنظر کنید.
در غیر این صورت، با پیروی از دستورالعمل‌های خاص توزیع، می‌توان شیشه‌کوب را به راحتی نصب کرد.

برای این نسخه نمایشی از توزیع MacOs استفاده خواهم کرد:

brew install glasskube/tap/glasskube # install the glasskube cli
minikube start # start a minikube Kubernetes cluster
glasskube bootstrap # install glasskube on the kind cluster
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای راهنمای نصب بیشتر، آنها را اینجا پیدا کنید.

پس از نصب Glasskube از طریق UI با:

glasskube serve
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

داشبورد باز خواهد شد http://localhost:8580/.

ایجاد یک سطل سازگار با S3

قبل از نصب Quickwit، باید یک سطل ذخیره اشیاء برای نگهداری Quickwit خود ایجاد کنید indexes. می توانید از ارائه دهنده Cloud انتخابی خود مانند Scaleway، AWS S3 یا MinIO استفاده کنید. برای جزئیات پیکربندی ذخیره سازی به اسناد رسمی Quickwit ما مراجعه کنید.

در اینجا من یک را ایجاد خواهم کرد AWS S3 bucket برای ذخیره ایندکس های Quickwit.
s3-dashboard

مراحل:

  • به کنسول مدیریت AWS بروید و یک سطل S3 جدید ایجاد کنید.
  • در IAM یک کلید API تولید کنید، با مجوزهای S3، “Access Key ID” و “Secret Key” را ذخیره کنید، به زودی به آنها نیاز خواهیم داشت.

Quickwit را مستقر کنید

از داشبورد Glasskube، بسته Quickwit را پیدا کنید و پارامترهای پیکربندی سفارشی خود را اضافه کنید.

پارامترهای quickmit

  • defaultIndexRootUri: برای این نسخه ی نمایشی است s3://quickwit-indexes.
  • metastoreUri: ما از PostgreSQL استفاده نخواهیم کرد، بنابراین بیایید همان مقداری را که برای آن استفاده کردیم انتخاب کنیم defaultIndexRootUri.
  • s3AccessKeyId: را "Access Key Id" از AWS که قبلا تولید کردیم.
  • s3Endpoint: نقطه پایانی سفارشی برای استفاده با ارائه دهندگان سازگار با S3. برای پیکربندی S3 مورد نیاز نیست.
  • طعم s3: ما از پیش فرض استفاده می کنیم empty value برای ذخیره سازی واقعی اشیاء سازگار با S3.
  • منطقه s3: US-east-1 در مورد من.
  • s3SecretAccessKey: را "Secret Key" از AWS که قبلا تولید کردیم.

در اینجا می توانید اسناد رسمی Quickwit را برای تکمیل پارامتر پیدا کنید.

همچنین نصب و پیکربندی Quickwit با استفاده از Glasskube CLI با اجرای:

glasskube install quickwit
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از نصب، می توانید ببینید که a quickwit فضای نام ایجاد شده است:

default
flux-system
glasskube-system
kube-node-lease
kube-public
kube-system
kubernetes-dashboard
quickwit
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، بررسی کنید که آیا غلاف ها در حال اجرا هستند یا خیر

NAME                                               READY   STATUS    RESTARTS      AGE
quickwit-quickwit-control-plane-86bd9955f7-bwm2r   1/1     Running   1 (27m ago)   29m
quickwit-quickwit-indexer-0                        1/1     Running   1 (27m ago)   29m
quickwit-quickwit-janitor-9479697ff-x4x2c          1/1     Running   1 (27m ago)   29m
quickwit-quickwit-metastore-56ff74df9f-k6d2g       1/1     Running   0             29m
quickwit-quickwit-searcher-0                       1/1     Running   1 (27m ago)   29m
quickwit-quickwit-searcher-1                       1/1     Running   0             27m
quickwit-quickwit-searcher-2                       1/1     Running   0             27m
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما می توانیم با استفاده از دستور زیر سعی کنیم به Quickwit UI دسترسی پیدا کنیم:

$ kubectl -n quickwit port-forward pod/quickwit-quickwit-searcher-0 7280
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به http://localhost:7280 سر بزنید. و شما باید برای رفتن آماده باشید!

داشبورد Quickwit

اولین شاخص خود را ایجاد کنید

قبل از اضافه کردن اسناد برای Quickwit، باید یک ایجاد کنید فهرست مطالب با یک فایل پیکربندی YAML پیکربندی شده است. این فایل پیکربندی به ویژه به شما این امکان را می دهد که نحوه نگاشت اسناد ورودی خود را به فیلدهای فهرست خود و اینکه آیا این فیلدها باید ذخیره و نمایه شوند را تعریف کنید. مستندات پیکربندی شاخص را ببینید.

بیایید یک فهرست پیکربندی شده برای دریافت پست های Stackoverflow (سوال و پاسخ) ایجاد کنیم.

# First, download the stackoverflow dataset config from Quickwit repository.
curl -o stackoverflow-index-config.yaml https://raw.githubusercontent.com/quickwit-oss/quickwit/main/config/tutorials/stackoverflow/index-config.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی ایندکس سه فیلد را تعریف می کند: عنوان، بدن و تاریخ ایجاد. عنوان و بدن ایندکس و نشانه گذاری می شوند، و همچنین به عنوان فیلدهای جستجوی پیش فرض استفاده می شوند، به این معنی که اگر فیلد خاصی را در جستجوی خود هدف قرار ندهید، برای جستجو استفاده خواهند شد. تاریخ ایجاد به عنوان مهر زمانی برای هر رکورد عمل می کند. هیچ تعریف صریح دیگری برای فیلد وجود ندارد زیرا می‌توانیم از حالت پویا پیش‌فرض استفاده کنیم: فیلدهای اعلام‌نشده همچنان فهرست‌بندی می‌شوند، به‌طور پیش‌فرض فیلدهای سریع برای فعال کردن جستارهای تجمع فعال هستند. و توکنایزر خام برای متن استفاده می شود.

و این هم کانفیگ کامل:

# Index config file for stackoverflow dataset.
#
version: 0.7

index_id: stackoverflow

doc_mapping:
  field_mappings:
    - name: title
      type: text
      tokenizer: default
      record: position
      stored: true
    - name: body
      type: text
      tokenizer: default
      record: position
      stored: true
    - name: creationDate
      type: datetime
      fast: true
      input_formats:
        - rfc3339
      fast_precision: seconds
  timestamp_field: creationDate

search_settings:
  default_search_fields: [title, body]

indexing_settings:
  commit_timeout_secs: 30
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا با دستور زیر می توانیم ایندکس را ایجاد کنیم:

./quickwit index create --index-config ./stackoverflow-index-config.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک دایرکتوری را بررسی کنید ./qwdata/indexes/stackoverflow ایجاد شده است، Quickwit فایل های فهرست را در اینجا می نویسد و a metastore.json که حاوی فراداده های شاخص است. اکنون آماده پر کردن ایندکس هستید.

برای افزودن اولین اسناد و اجرای اولین درخواست های جستجوی خود، به اسناد Quickwit ادامه دهید.


اگر محتوای ما را دوست دارید و می‌خواهید از ما در این ماموریت حمایت کنید، خوشحال می‌شویم اگر بتوانید در GitHub به ما ستاره بدهید.

داد

⭐️ ما را در GitHub ستاره دار کنید 🙏

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا