پرش به مطلب اصلی

مانیتورینگ متریک‌های دامنه

قابلیت Metric Exporter برای ساده کردن فرآیند جمع‌آوری و تجزیه و تحلیل داده‌های دامنه‌ طراحی شده است و به شما کمک می‌کند با استفاده از روشی سریع و کارآمد اطلاعاتی کاربردی از عملکرد، رفتار و خطاهای دامنه‌ی خود به‌دست آورید. این ابزار به‌طور خودکار با پردازش لاگ‌های شما، متریک‌های مختلفی را تولید می‌کند که می‌توانید با استفاده از آن‌ها در برنامه‌هایی نظیر Grafana ،Prometheus و Splunk نمودارها و گزارش‌های متنوعی بسازید. فرمت ارسالی این داده‌ها Plain Text است.

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

متریک‌های ارسالی

با استفاده از قابلیت مانیتورینگ متریک‌های دامنه می‌توانید Upstream Error Metrics ،DNS Metrics ،HTTP Access Metrics و Event Metrics دامنه‌هایتان را دریافت کنید.

متریک‌های Access

متریک‌های Accessتوضیحنوعبرچسب
http_top_requests_ip۱۰ IP با بیش‌ترین تعداد درخواستCounterhostname: نام میزبان

ip: آی‌پی کاربر
http_top_requests_server_code۱۰ Server Code با بیش‌ترین تعداد درخواستCounterhostname: نام میزبان

server_code: شماره سرور CDN
http_top_requests_asn۱۰ ASN با بیش‌ترین تعداد درخواستCounterhostname: نام میزبان

asn: شماره asnای که از آن به سرور اصلی درخواست ارسال شده
http_requests_totalمجموع تعداد درخواست‌هاCounterhostname: نام میزبان

method: متد HTTP درخواست

content_type: نوع محتوای ارسالی درخواست

status: کد وضعیت HTTP دریافتی از CDN

server_code: شماره سرور CDN
http_bytes_sent_totalمجموع تعداد بایت‌های ارسال‌شده در پاسخ‌های HTTPCounterhostname: نام میزبان

method: متد HTTP درخواست

content_type: نوع محتوای ارسالی درخواست
http_bytes_received_totalمجموع تعداد بایت‌های دریافت‌شده در درخواست‌های HTTPCounterhostname: نام میزبان

method: متد HTTP درخواست

content_type: نوع محتوای ارسالی درخواست
cache_hit_totalتعداد کل درخواست‌ها بر اساس وضعیت کشGaugehostname: نام میزبان

cache: وضعیت کش که می‌تواند مقادیر Hit ،Miss، ‌Bypass و Updating را داشته باشد
http_server_port_usageتعداد دفعات استفاده از پورت‌های سرورGaugehostname: نام میزبان

server_port: پورت سرور اصلی که درخواست‌ها به آن می‌رسد
http_request_latest_upstream_timeمدت زمان پردازش آخرین درخواست از Upstream (میلی‌ثانیه)Gaugehostname: نام میزبان
http_requests_country_totalتعداد درخواست‌ها به‌تفکیک کشورCounterhostname: نام میزبان

country: نام کشوری که درخواست از آن به سرور اصلی رسیده
unique_visitors_totalتعداد بازدیدکنندگان منحصربه‌فردGaugehostname: نام میزبان

visitor: تعداد بازدیدکنندگان منحصربه‌فرد (این عدد ترکیب‌های یکتا IP و User Agent را شمارش می کند و ممکن است کمی با بازدیدکنندگان یکتای واقعی اختلاف داشته باشد.)
http_response_time_aggregatedزمان پاسخ تجمیعی سرورهای اصلیHistogramhostname: نام میزبان

le: زمان پاسخ تجمیعی سرورهای آپ‌استریم به‌شکل هیستوگرام بر اساس باکت‌های مختلف (10، 100، 200، ...)

متریک‌های DNS

متریک‌های DNSتوضیحنوعبرچسب
dns_record_popularityنرخ درخواست بر اساس نوع رکوردCounterhostname: نام میزبان

type: نوع رکورد DNS مانند A ،AAAA و ...
dns_response_code_countتعداد کدهای وضعیت DNSCounterhostname: نام میزبان

response_code: کدهای وضعیت DNS
dns_top_query_count_by_asn۱۰ ASN با بیش‌ترین کوئری (در بازه زمانی ریست می‌شود)Counterhostname: نام میزبان

asn: شماره asnای که درخواست از آن ارسال شده
dns_query_count_by_countryمجموع درخواست‌های DNS بر اساس کشورCounterhostname: نام میزبان

country: نام کشوری که درخواست از آن ارسال شده
dns_query_count_by_recordمجموع درخواست‌های DNS بر اساس نوع رکوردCounterhostname: نام میزبان

record: نوع رکورد DNS مانند A ،AAAA و ...

متریک‌های Upstream Error

متریک‌های Upstream Errorتوضیحنوعبرچسب
per_pop_site_error_countتعداد خطاها به ازای پاپ‌سایت‌های CDNCounterhostname: نام میزبان

pop: نام پاپ‌سایت CDN
per_upstream_address_error_countتعداد خطاها به ازای UpstreamهاCounterhostname: نام میزبان

upstream_ip: آی‌پی سرور اصلی که خطا از آن دریافت شده
per_origin_error_countتعداد خطاها به ازای OriginCounterhostname: نام میزبان

origin: نام originای که خطا از آن دریافت شده
per_uri_top_error_count۱۰ URI با بیش‌ترین خطا (در بازه زمانی ریست می‌شود)Counterhostname: نام میزبان

uri: مسیری که خطا از آن دریافت شده

متریک‌های Event

متریک‌های Eventتوضیحنوعبرچسب
top_request_tlsfingerprint۱۰ JA3 Fingerprint با بیش‌ترین درخواست HTTPCounterhostname: نام میزبان

tls_figerprint: مقدار Fingerprint ای که از کاربر به سرور اصلی ارسال می‌شود
rate_limit_rule_matched_countتعداد درخواست‌های تطبیق‌داده‌شده با قوانین Rate LimitCounterhostname: نام میزبان

rlimit_matched: شناسه‌ی قانون Rate Limitای که تطبیق‌داده شده
rate_limit_action_countتعداد اکشن‌های Rate Limit که روی درخواست‌ها اعمال شدندCounterhostname: نام میزبان

rlimit_action: نوع عملکرد Rate Limit مانند Block, Allow, Challenge, Ignore
firewall_rule_matched_countتعداد درخواست‌های تطبیق‌داده‌شده با قوانین فایروالCounterhostname: نام میزبان

firewall_matched: شناسه قانون فایروالی که تطبیق داده شده
firewall_action_countتعداد اکشن‌های فایروال که روی درخواست‌ها اعمال شدندCounterhostname: نام میزبان

firewall_action: نوع عملکرد فایروال مانند Allow, Bypass, Deny و Challenge
pagerule_matched_countتعداد درخواست‌های تطبیق‌داده‌شده با قوانین صفحاتCounterhostname: نام میزبان

pagerule_matched: شناسه قانون صفحه‌ای که تطبیق داده شده
ddos_challenge_action_countتعداد اکشن‌های چالش‌های DDoS که روی درخواست‌ها اعمال شدندCounterhostname: نام میزبان

ddos_challenge_action: نوع عملکرد مقابله با DDoS مانند Ignored, Passed, Issued, Preflight
ddos_challenge_decision_countتعداد تصمیم‌های نهایی چالش‌های DDoSCounterhostname: نام میزبان

ddos_challenge_decision: نوع تصمیم مانند Ignored, Passed, Issued, Preflight
waf_rule_matched_countتعداد درخواست‌های تطبیق‌داده‌شده با قوانین WAFCounterhostname: نام میزبان

waf_rule_matched: شناسه قانون WAFای که تطبیق داده شده

مدیریت مانیتورینگ متریک‌های دامنه در پنل

از پنل کاربری آروان وارد بخش «شبکه توزیع محتوا» شوید و «مانیتورینگ متریک‌های دامنه‌» را انتخاب کنید.

روی دکمه‌ی «مانیتورینگ جدید» کلیک کنید.

در این صفحه، دامنه‌ای که می‌خواهید متریک‌های آن را دریافت کنید، نوع لاگ و بازه‌ی جمع‌آوری را انتخاب و روی دکمه‌ی «ذخیره» کلیک کنید.

از این پس می‌توانید مانیتورینگ‌ها را فعال یا غیرفعال کنید، آن‌ها را ویرایش و مدیریت و یا حذف کنید.

مدیریت مانیتورینگ متریک‌های دامنه با API

برای کار با APIهای قابلیت مانیتورینگ متریک‌های دامنه می‌توانید از مستندات API این قابلیت استفاده کنید. پیش از استفاده از API باید در پنل کاربری یک کلید دسترسی بسازید. این کار را می‌توانید با ایجاد و دریافت کلید دسترسی و سپس ایجاد قانون دسترسی با حداقل سطح "بیننده شبکه توزیع محتوا" انجام دهید.

کلید دسترسی‌ای را که در این مرحله دریافت می‌کنید در جایی امن ذخیره کنید.

ایجاد مانیتورینگ متریک دامنه با API

برای ایجاد مانیتورینگ متریک دامنه از طریق API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/[domain]/metric-exporters' \
--header 'Content-Type: application/json' \
--header 'Authorization:[apikey]' \
--data '{"name": "hello", "type": "access", "interval": "10s", "status": true }'

توجه داشته باشید که باید به‌جای [domain] و [apikey] نام دامنه و کلید API خود را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید.

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

برای دریافت لیست مانیتورینگ‌های متریک دامنه از طریق API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/metric-exporters' \
--header 'Authorization:[apikey]'

توجه داشته باشید که باید به‌جای [apikey] کلید API خود را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید.

پاسخ این درخواست به‌شکل زیر خواهد بود:

"data": [
{
"id": "[metricExporterId]",
"domain": "arvancloud.ir",
"type": "access|dns|error|event",
"name": "string",
"url": "https://napi.arvancloud.ir/cdn-metrics/v1/metrics/arvancloud.ir/id/[endPointId]",
"interval": "10s",
"status": true
}
]

نمایش یک مانیتورینگ متریک دامنه

برای دریافت جزییات یک مانیتورینگ متریک دامنه از طریق API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl \
--location 'https://napi.arvancloud.ir/cdn/4.0/domains/[domain]/metric-exporters/[metricExporterId]' \
--header 'Authorization:[apikey]'

توجه داشته باشید که باید به‌جای [domain] و [apikey] نام دامنه و کلید API خود را قرار دهید. کلید API را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید. هم‌چنین پارامتر [metricExporterId] را می‌توانید از فیلد id در خروجی لیست مانیتورینگ‌های متریک دامنه بردارید.

پاسخ این درخواست به‌شکل زیر خواهد بود:

"data": {
"id": "[metricExporterId]",
"domain": "arvancloud.ir",
"type": "event",
"name": "string1",
"url": "https://napi.arvancloud.ir/cdn-metrics/v1/metrics/arvancloud.ir/id/[endPointId]",
"interval": "10s",
"status": true
},
"message": ""

می‌توانید با استفاده از Endpoint ارسال شده در url، مقادیر متریک را دریافت کنید. (قابل استفاده در Prometheus). برای نمونه:

curl \
--location 'https://napi.arvancloud.ir/cdn-metrics/v1/metrics/arvancloud.ir/id/[endPointId]' \
--header 'Authorization:[apikey]'

توجه داشته باشید که باید به‌جای [apikey] کلید API خود را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید.

پاسخ این درخواست به‌شکل زیر خواهد بود:

# HELP dns_query_count_by_country Total number of DNS queries by country
# TYPE dns_query_count_by_country counter
dns_query_count_by_country{country="DE",hostname="arvancloud.ir"} 136
# HELP dns_query_count_by_record Total number of DNS queries by record
# TYPE dns_query_count_by_record counter
dns_query_count_by_record{hostname="arvancloud.ir",record="dev.arvancloud.ir."} 98
# HELP dns_record_popularity Frequency of queries for different DNS record types
# TYPE dns_record_popularity counter
dns_record_popularity{hostname="arvancloud.ir",type="A"} 466
# HELP dns_response_code_count Count of DNS response codes
# TYPE dns_response_code_count counter
dns_response_code_count{hostname="arvancloud.ir",response_code="3"} 16
# HELP dns_top_query_count_by_asn Total number of DNS queries by ASN
# TYPE dns_top_query_count_by_asn counter
dns_top_query_count_by_asn{asn="12880",hostname="arvancloud.ir"} 1

اگر بخواهید همه‌ی متریک‌های یک دامنه را دریافت کنید فقط کافیست بخش id را از url جدا کنید؛ به طور مثال:

curl \
--location 'https://napi.arvancloud.ir/cdn-metrics/v1/metrics/' \
--header 'Authorization:[apikey]'

توجه داشته باشید که باید به‌جای [apikey] کلید API خود را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید.

ویرایش یک مانیتورینگ متریک دامنه

برای ویرایش یک مانیتورینگ متریک دامنه از طریق API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location --request PUT 'https://napi.arvancloud.ir/cdn/4.0/domains/[domain]/metric-exporters/[metricExporterId]' \
--header 'Authorization:[apikey]' \
--header 'Content-Type: application/json' \
--data '{"name": "hello", "type": "access", "interval": "10s", "status": true}'

توجه داشته باشید که باید به‌جای [domain] و [apikey] نام دامنه و کلید API خود را قرار دهید. کلید API را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید. هم‌چنین پارامتر [metricExporterId] را می‌توانید از فیلد id در خروجی لیست مانیتورینگ‌های متریک دامنه بردارید.

حذف یک مانیتورینگ متریک دامنه

برای حذف یک مانیتورینگ متریک دامنه از طریق API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location --request DELETE 'https://napi.arvancloud.ir/cdn/4.0/domains/[domain]/metric-exporters/[metricExporterId]' \
--header 'Authorization:[apikey]'

توجه داشته باشید که باید به‌جای [domain] و [apikey] نام دامنه و کلید API خود را قرار دهید. کلید API را با فرمت apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx قرار دهید. هم‌چنین پارامتر [metricExporterId] را می‌توانید از فیلد id در خروجی لیست مانیتورینگ‌های متریک دامنه بردارید.