متریکهای دامنه
قابلیت Metric Exporter برای ساده کردن فرآیند جمعآوری و تجزیه و تحلیل دادههای دامنه طراحی شده است و به شما کمک میکند با استفاده از روشی سریع و کارآمد اطلاعاتی کاربردی از عملکرد، رفتار و خطاهای دامنهی خود بهدست آورید. این ابزار بهطور خودکار با پردازش لاگهای شما، متریکهای مختلفی را تولید میکند که میتوانید با استفاده از آنها در برنامههایی نظیر Grafana ،Prometheus و Splunk نمودارها و گزارشهای متنوعی بسازید. فرمت ارسالی این دادهها Plain Text است.
متریکهای دامنه نسبت به ارسال لاگ متفاوت عمل میکند. لاگها بهدلیل حجم زیاد به فضای ذخیرهسازی بیشتری نیاز دارند، درحالی که متریکها ساختاریافته و سبکتر هستند. از طرف دیگر، لاگها بیشتر برای عیبیابی و تحلیل جزییات رویدادها استفاده میشوند، اما متریکها برای نظارت، هشداردهی و تحلیل الگوها و روندها مناسب هستند.
متریکهای ارسالی
با استفاده از قابلیت متریکهای دامنه میتوانید Upstream Error Metrics ،DNS Metrics ،HTTP Access Metrics و Event Metrics دامنههایتان را دریافت کنید.
متریکهای Access
| متریکهای Access | توضیح | نوع | برچسب |
|---|---|---|---|
| http_top_requests_ip_count | ۱۰ IP با بیشترین تعداد درخواست | Counter | hostname: نام میزبان ip: آیپی کاربر |
| http_top_requests_server_code_count | ۱۰ Server Code با بیشترین تعداد درخواست | Counter | hostname: نام میزبان server_code: شماره سرور CDN |
| http_top_requests_asn_count | ۱۰ ASN با بیشترین تعداد درخواست | Counter | hostname: نام میزبان asn: شماره asnای که از آن به سرور اصلی درخواست ارسال شده |
| http_requests_total | مجموع تعداد درخواستها | Counter | hostname: نام میزبان method: متد HTTP درخواست upstream_addr: آیپی سرور اصلی * status: کد وضعیت HTTP دریافتی از CDN |
| http_bytes_sent_total | مجموع تعداد بایتهای ارسالشده در پاسخهای HTTP | Counter | hostname: نام میزبان method: متد HTTP درخواست |
| http_bytes_received_total | مجموع تعداد بایتهای دریافتشده در درخواستهای HTTP | Counter | hostname: نام میزبان method: متد HTTP درخواست |
| http_cache_hit_total | تعداد کل درخواستها بر اساس وضعیت کش | Gauge | hostname: نام میزبان cache: وضعیت کش که میتواند مقادیر Hit ،Miss، Bypass و Updating را داشته باشد |
| http_server_port_usage_total | تعداد دفعات استفاده از پورتهای سرور | Gauge | hostname: نام میزبان server_port: پورت سرور اصلی که درخواستها به آن میرسد |
| http_request_latest_upstream_time_total | مدت زمان پردازش آخرین درخواست از Upstream (میلیثانیه) | Gauge | hostname: نام میزبان |
| http_top_requests_country_total | تعداد درخواستها بهتفکیک کشور | Counter | hostname: نام میزبان country: نام کشوری که درخواست از آن به سرور اصلی رسیده |
| unique_visitors_total | تعداد بازدیدکنندگان منحصربهفرد | Gauge | hostname: نام میزبان visitor: تعداد بازدیدکنندگان منحصربهفرد (این عدد ترکیبهای یکتا IP و User Agent را شمارش میکند و ممکن است کمی با بازدیدکنندگان یکتای واقعی اختلاف داشته باشد.) |
| http_response_time_aggregated_milliseconds | زمان پاسخ تجمیعی سرورهای اصلی | Histogram | hostname: نام میزبان le: زمان پاسخ تجمیعی سرورهای آپاستریم بهشکل هیستوگرام بر اساس باکتهای مختلف (10، 100، 200، ...) |
* مقدار این متریک آخرین IPای است که درخواست به آن ارسال شده است. ممکن است بهدلیل وجود پارامتر try_next_upstream در تنظیمات دامنهتان، درخواست به سرورهای دیگری نیز ارسال شده باشد.
متریکهای DNS
| متریکهای DNS | توضیح | نوع | برچسب |
|---|---|---|---|
| dns_record_popularity_count | نرخ درخواست بر اساس نوع رکورد | Counter | hostname: نام میزبان type: نوع رکورد DNS مانند A ،AAAA و ... |
| dns_response_code_count | تعداد کدهای وضعیت DNS | Counter | hostname: نام میزبان response_code: کدهای وضعیت DNS |
| dns_top_query_by_asn_count | ۱۰ ASN با بیشترین کوئری (در بازه زمانی ریست میشود) | Counter | hostname: نام میزبان asn: شماره asnای که درخواست از آن ارسال شده |
| dns_query_count_by_country_count | مجموع درخواستهای DNS بر اساس کشور | Counter | hostname: نام میزبان country: نام کشوری که درخواست از آن ارسال شده |
| dns_query_count_by_record_count | مجموع درخواستهای DNS بر اساس نوع رکورد | Counter | hostname: نام میزبان record: نوع رکورد DNS مانند A ،AAAA و ... |
متریکهای Upstream Error
| متریکهای Upstream Error | توضیح | نوع | برچسب |
|---|---|---|---|
| per_pop_site_error_count | تعداد خطاها به ازای پاپسایتهای CDN | Counter | hostname: نام میزبان pop: نام پاپسایت CDN |
| per_upstream_top_address_error_count | تعداد خطاها به ازای Upstreamها | Counter | hostname: نام میزبان upstream_ip: آیپی سرور اصلی که خطا از آن دریافت شده |
| per_origin_top_error_count | تعداد خطاها به ازای Origin | Counter | hostname: نام میزبان origin: نام originای که خطا از آن دریافت شده |
| per_uri_top_error_count | ۱۰ URI با بیشترین خطا (در بازه زمانی ریست میشود) | Counter | hostname: نام میزبان uri: مسیری که خطا از آن دریافت شده |
متریکهای Event
| متریکهای Event | توضیح | نوع | برچسب |
|---|---|---|---|
| top_request_tlsfingerprint_count | ۱۰ JA3 Fingerprint با بیشترین درخواست HTTP | Counter | hostname: نام میزبان tls_figerprint: مقدار Fingerprint ای که از کاربر به سرور اصلی ارسال میشود |
| rate_limit_top_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_top_rule_matched_count | تعداد درخواستهای تطبیقدادهشده با قوانین فایروال | Counter | hostname: نام میزبان firewall_matched: شناسه قانون فایروالی که تطبیق داده شده |
| firewall_action_count | تعداد اکشنهای فایروال که روی درخواستها اعمال شدند | Counter | hostname: نام میزبان firewall_action: نوع عملکرد فایروال مانند Allow, Bypass, Deny و Challenge |
| pagerule_top_matched_count | تعداد درخواستهای تطبیقدادهشده با قوانین صفحات | Counter | hostname: نام میزبان pagerule_matched: شناسه قانون صفحهای که تطبیق داده شده |
| ddos_challenge_decision_count | تعداد تصمیمهای نهایی چالشهای DDoS | Counter | hostname: نام میزبان ddos_challenge_decision: نوع تصمیم مانند Ignored, Passed, Issued, Preflight |
| end_to_end_response_time_milliseconds_bucket | زمان پاسخ تجمیعی End to End | Histogram | hostname: نام میزبان le: زمان پاسخ تجمیعی End to End (آپستریم به کاربر) بهشکل هیستوگرام بر اساس باکتهای مختلف (10، 100، 200 و...) |
مدیریت متریکهای دامنه در پنل
از پنل کاربری آروان وارد بخش «شبکه توزیع محتوا» شوید و «متریکهای دامنه» را انتخاب کنید.

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

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

مدیریت متریکهای دامنه با 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 http_bytes_received_total Total number of bytes received in HTTP requests.
# TYPE http_bytes_received_total counter
http_bytes_received_total{hostname="voyd.ir",method="get"} 88587
# HELP http_bytes_sent_total Total number of bytes sent in HTTP responses.
# TYPE http_bytes_sent_total counter
http_bytes_sent_total{hostname="voyd.ir",method="get"} 476612
# HELP http_cache_hit_total Total number of requests per cache type.
# TYPE http_cache_hit_total gauge
http_cache_hit_total{cache="bypass",hostname="voyd.ir"} 26
http_cache_hit_total{cache="hit",hostname="voyd.ir"} 22
http_cache_hit_total{cache="miss",hostname="voyd.ir"} 1
# HELP http_request_latest_upstream_time_total Time to process the latest request from upstream in milliseconds
# TYPE http_request_latest_upstream_time_total gauge
http_request_latest_upstream_time_total{hostname="voyd.ir"} 28
# HELP http_requests_total Total number of HTTP requests processed
# TYPE http_requests_total counter
http_requests_total{hostname="voyd.ir",method="get",status="200",upstream_addr="188.121.111.32"} 4
http_requests_total{hostname="voyd.ir",method="get",status="304",upstream_addr="188.121.111.32"} 23
# HELP http_response_time_aggregated_count Count of http_response_time
# TYPE http_response_time_aggregated_count gauge
http_response_time_aggregated_count{hostname="voyd.ir"} 27
# HELP http_response_time_aggregated_milliseconds Aggregated metrics for http_response_time
# TYPE http_response_time_aggregated_milliseconds gauge
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="+Inf"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="10"} 0
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="100"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="1000"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="10000"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="200"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="2000"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="50"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="500"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="5000"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="700"} 27
http_response_time_aggregated_milliseconds{hostname="voyd.ir",le="7000"} 27
# HELP http_response_time_aggregated_sum Sum of http_response_time
# TYPE http_response_time_aggregated_sum gauge
http_response_time_aggregated_sum{hostname="voyd.ir"} 659
# HELP http_server_port_usage_total Usage of different server ports.
# TYPE http_server_port_usage_total gauge
http_server_port_usage_total{hostname="voyd.ir",server_port="443"} 98
http_server_port_usage_total{hostname="voyd.ir",server_port="80"} 2
# HELP http_top_requests_asn_count Top(10) ASNs with highest requests (resets on each fetch)
# TYPE http_top_requests_asn_count counter
http_top_requests_asn_count{asn="14061",hostname="voyd.ir"} 6
# HELP http_top_requests_country_total Top(10) number of requests per country (resets on each fetch)
# TYPE http_top_requests_country_total counter
http_top_requests_country_total{country="de",hostname="voyd.ir"} 6
# HELP http_top_requests_ip_count Top(10) HTTP request IPs (resets on each fetch)
# TYPE http_top_requests_ip_count counter
http_top_requests_ip_count{hostname="voyd.ir",ip="164.92.190.159"} 6
# HELP http_top_requests_server_code_count Top(10) PoP sites with highest requests (resets on each fetch)
# TYPE http_top_requests_server_code_count counter
http_top_requests_server_code_count{hostname="voyd.ir",server_code="6120"} 6
# HELP unique_visitors_total Number of unique visitors
# TYPE unique_visitors_total gauge
unique_visitors_total{hostname="voyd.ir"} 3
اگر بخواهید همهی متریکهای یک دامنه را دریافت کنید فقط کافیست بخش 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 در خروجی لیست مانیتورینگهای متریک دامنه بردارید.
داشبورد آماده متریکهای دامنه
داشبورد آماده متریکهای دامنه به شما امکان میدهد تا عملکرد و وضعیت سیستم را در سطح دامنه بهطور جامع و بلادرنگ بررسی کنید. با استفاده از این داشبورد، میتو انید مقادیر مختلف متریکها را بهشکل گرافیکی مشاهده و مشکلات احتمالی را سریعتر شناسایی و برطرف کنید.
برای استفاده از این داشبورد آماده به لینک زیر سر بزنید:
https://git.arvancloud.ir/arvancloud/cdn/monitoring-template