راهنمای ARQL: زبان کوئری آروانکلاد
ARQL یا Arvancloud Query Language، یک زبان کوئری اختصاصی بر پایهی منطق بولی (Boolean) است. این زبان به شما امکان میدهد با ترکیب شرطهای مختلف، از میان حجم انبوه دادهها، لاگهای مورد نظر خود را با دقت بالا جستوجو، فیلتر و تحلیل کنید.
ویژگیهای کلیدی ARQL:
- منطق ساده: ساختار عبارات مشابه منطق ریاضی و برنامهنویسی است.
- عدم حساسیت به حروف (Case Insensitivity): بهجز در موارد استفاده از Regex، این زبان نسبت به بزرگی و کوچکی حروف حساس نیست.
- انعطافپذیری: پشتیبانی از فیلدهای تودرتو (Nested Fields) و عملگرهای متنوع.
ساختار و قواعد نگارشی
هر کوئری در ARQL از ترکیب یک یا چند «عبارت شرطی» ساخته میشود. ساختار استاندارد هر عبارت بهشکل زیر است:
<field> <comparison_operator> <value>
که در آن:
-
field: یک فیلد در لاگ (مانند resource.type)
-
comparison_operator: یک عملگر مقایسهای (مانند ==, !=, =~)
-
value: مقدار مورد نظر (مانند "iaasServer")
است. برای نمونه:
resource.type == "iaasServer"
یا
resource.type == "iaasServer" AND ((severity == "ERROR") OR (severity == "error"))
یا
resource.type == "iaasServer" AND
severity != "ERROR" AND
payload.errorText !~ "^apache"
این کوئری تمام لاگهایی را که مربوط به سرور ابری اس ت و سطح severity آنها برابر با "ERROR" نیست و پیام آنها با کلمه "apache" شروع نمیشود را برمیگرداند.
عملگرهای مقایسهای (Comparison Operators)
این عملگرها رابطهی بین یک فیلد و یک مقدار را تعیین میکنند:
| عملگر | توضیح |
|---|---|
== | مساوی بودن دقیق |
!= | نامساوی بودن |
=~ | تطبیق با الگوی Regex |
!~ | تطبیق نداشتن با الگوی Regex |
> , >= | بزرگتر / بزرگتر یا مساوی |
< , <= | کوچکتر / کوچکتر یا مساوی |
IN | عضویت در یک مجموعه (Set) |
برای نمونه:
- یافتن مقادیر خالی:
jsonPayload.field = NULL_VALUE - حذف مقادیر خالی:
NOT jsonPayload.field = NULL_VALUE
عملگرهای منطقی (Boolean Operators)
برای ترکیب چند شرط با یکدیگر از عملگرهای زیر استفاده میشود:
| عملگر | توضیح | اولویت اجرا |
|---|---|---|
NOT یا - | نقیض شرط (شرط برقرار نباشد) | ۱ (بالاترین) |
| OR | یا (برقراری حداقل یکی از شرطها) | ۲ |
| AND | و (برقراری تمام شرطها) | ۳ |
برای جلوگیری از ابهام و تعیین دقیق اولویتها، حتمن از پرانتز () استفاده کنید.
نمونه:
resource.type == "iaasServer" AND (severity == "ERROR" OR severity == "CRITICAL")
شناساگر فیلدها (Field Identifiers)
برای دسترسی به دادهها، از مسیر (Path) دقیق فیلد استفاده میشود. این مسیرها معمولن با نقطه (dot-separated) از هم جدا میشوند.
برای نمونه:
| فیلد |
|---|