مانیتورینگ متریکهای دامنه
قابلیت Metric Exporter برای ساده کردن فرآیند جمعآوری و تجزیه و تحلیل دادههای دامنه طراحی شده است و به شما کمک میکند با استفاده از روشی سریع و کارآمد اطلاعاتی کاربردی از عملکرد، رفتار و خطاهای دامنهی خود بهدست آورید. این ابزار بهطور خودکار با پردازش لاگهای شما، متریکهای مختلفی را تولید میکند که میتوانید با استفاده از آنها در برنامههایی نظیر Grafana ،Prometheus و Splunk نمودارها و گزارشهای متنوعی بسازید. فرمت ارسالی این دادهها Plain Text است.
مانیتورینگ متریکهای دامنه نسبت به ارسال لاگ متفاوت عمل میکند. لاگها بهدلیل حجم زیاد به فضای ذخیرهسازی بیشتری نیاز دارند، درحالی که متریکها ساختاریافته و سبکتر هستند. از طرف دیگر، لاگها بیشتر برای عیبیابی و تحلیل جزییات رویدادها استفاده میشوند، اما متریکها برای نظارت، هشداردهی و تحلیل الگوها و روندها مناسب هستند.
متریکهای ارسالی
با استفاده از قابلیت مانیتورینگ متریکهای دامنه میتوانید Upstream Error Metrics ،DNS Metrics ،HTTP Access Metrics و Event Metrics دامنههایتان را دریافت کنید.
متریک های Access
متریکهای Access | توضیح | نوع | برچسب |
---|---|---|---|
http_top_requests_ip | ۱۰ IP با بیشترین تعداد درخواست | Counter | hostname: نام میزبان ip: آیپی کاربر |
http_top_requests_server_code | ۱۰ Server Code با بیشترین تعداد درخواست | Counter | hostname: نام میزبان server_code: شماره سرور CDN |
http_top_requests_asn | ۱۰ ASN با بیشترین تعداد درخواست | Counter | hostname: نام میزبان asn: شماره asnای که از آن به سرور اصلی درخواست ارسال شده |
http_requests_total | مجموع تعداد درخواستها | Counter | hostname: نام میزبان method: متد HTTP درخواست content_type: نوع محتوای ارسالی درخواست status: کد وضعیت HTTP دریافتی از CDN server_code: شماره سرور CDN |
http_bytes_sent_total | مجموع تعداد بایتهای ارسالشده در پاسخهای HTTP | Counter | hostname: نام میزبان method: متد HTTP درخواست content_type: نوع محتوای ارسالی درخواست |
http_bytes_received_total | مجموع تعداد بایتهای دریافتشده در درخواستهای HTTP | Counter | hostname: نام میزبان method: متد HTTP درخواست content_type: نوع محتوای ارسالی درخواست |
cache_hit_total | تعداد کل درخواستها بر اساس وضعیت کش | Gauge | hostname: نام میزبان cache: وضعیت کش که میتواند مقادیر Hit ،Miss، Bypass و Updating را داشته باشد |
http_server_port_usage | تعداد دفعات استفاده از پورتهای سرور | Gauge | hostname: نام میزبان server_port: پورت سرور اصلی که درخواستها به آن میرسد |
http_request_latest_upstream_time | مدت زمان پردازش آخرین درخواست از Upstream (میلیثانیه) | Gauge | hostname: نام میزبان |
http_requests_country_total | تعداد درخواستها بهتفکیک کشور | Counter | hostname: نام میزبان country: نام کشوری که درخواست از آن به سرور اصلی رسیده |
unique_visitors_total | تعداد بازدیدکنندگان منحصربهفرد | Gauge | hostname: نام میزبان visitor: تعداد بازدیدکنندگان منحصربهفرد (این عدد ترکیبهای یکتا IP و User Agent را شمارش می کند و ممکن است کمی با بازدیدکنندگان یکتای واقعی اختلاف داشته باشد.) |
http_response_time_aggregated | زمان پاسخ تجمیعی سرورهای اصلی | Histogram | hostname: نام میزبان le: زمان پاسخ تجمیعی سرورهای آپاستریم بهشکل هیستوگرام بر اساس باکتهای مختلف (10، 100، 200، ...) |
متریکهای DNS
متریکهای DNS | توضیح | نوع | برچسب |
---|---|---|---|
dns_record_popularity | نرخ درخواست بر اساس نوع رکورد | Counter | hostname: نام میزبان type: نوع رکورد DNS مانند A ،AAAA و ... |
dns_response_code_count | تعداد کدهای وضعیت DNS | Counter | hostname: نام میزبان response_code: کدهای وضعیت DNS |
dns_top_query_count_by_asn | ۱۰ ASN با بیشترین کوئری (در بازه زمانی ریست میشود) | Counter | hostname: نام میزبان asn: شماره asnای که درخواست از آن ارسال شده |
dns_query_count_by_country | مجموع درخواستهای DNS بر اساس کشور | Counter | hostname: نام میزبان country: نام کشوری که درخواست از آن ارسال شده |
dns_query_count_by_record | مجموع درخواستهای DNS بر اساس نوع رکورد | Counter | hostname: نام میزبان record: نوع رکورد DNS مانند A ،AAAA و ... |
متریکهای Upstream Error
متریکهای Upstream Error | توضیح | نوع | برچسب |
---|---|---|---|
per_pop_site_error_count | تعداد خطاها به ازای پاپسایتهای CDN | Counter | hostname: نام میزبان pop: نام پاپسایت CDN |
per_upstream_address_error_count | تعداد خطاها به ازای Upstreamها | Counter | hostname: نام میزبان upstream_ip: آیپی سرور اصلی که خطا از آن دریافت شده |
per_origin_error_count | تعداد خطاها به ازای Origin | Counter | hostname: نام میزبان origin: نام originای که خطا از آن دریافت شده |
per_uri_top_error_count | ۱۰ URI با بیشترین خطا (در بازه زمانی ریست میشود) | Counter | hostname: نام میزبان uri: مسیری که خطا از آن دریافت شده |
متریکهای Event
متریکهای Event | توضیح | نوع | برچسب |
---|---|---|---|
top_request_tlsfingerprint | ۱۰ JA3 Fingerprint با بیشترین درخواست HTTP | Counter | hostname: نام میزبان tls_figerprint: مقدار Fingerprint ای که از کاربر به سرور اصلی ارسال میشود |
rate_limit_rule_matched_count | تعداد درخواستهای تطبیقدادهشده با قوانین Rate Limit | Counter | hostname: نام میزبان rlimit_matched: شناسهی قانون Rate Limitای که تطبیقداده شده |
rate_limit_action_count | تعداد اکشنهای Rate Limit که روی درخواستها اعمال شدند | Counter | hostname: نام میزبان rlimit_action: نوع عملکرد Rate Limit مانند Block, Allow, Challenge, Ignore |
firewall_rule_matched_count | تعداد درخواستهای تطبیقدادهشده با قوانین فایروال | Counter | hostname: نام میزب ان firewall_matched: شناسه قانون فایروالی که تطبیق داده شده |
firewall_action_count | تعداد اکشنهای فایروال که روی درخواستها اعمال شدند | Counter | hostname: نام میزبان firewall_action: نوع عملکرد فایروال مانند Allow, Bypass, Deny و Challenge |
pagerule_matched_count | تعداد درخواستهای تطبیقدادهشده با قوانین صفحات | Counter | hostname: نام میزبان pagerule_matched: شناسه قانون صفحهای که تطبیق داده شده |
ddos_challenge_action_count | تعداد اکشنهای چالشهای DDoS که روی درخواستها اعمال شدند | Counter | hostname: نام میزبان ddos_challenge_action: نوع عملکرد مقابله با DDoS مانند Ignored, Passed, Issued, Preflight |
ddos_challenge_decision_count | تعداد تصمیمهای نهایی چالشهای DDoS | Counter | hostname: نام میزبان ddos_challenge_decision: نوع تصمیم مانند Ignored, Passed, Issued, Preflight |
waf_rule_matched_count | تعداد درخواستهای تطبیقدادهشده با قوانین WAF | Counter | hostname: نام میزبان 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 در خروجی لیست مانیتورینگهای متریک دامنه بردارید.