مانیتورینگ متریکهای دامنه
قابلیت 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 درخواست 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_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، ...) |
متریکهای 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_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 |
مدیریت مانیتورینگ متریکهای دامنه در پنل
از پنل کاربری آروان وارد بخش «شبکه توزیع محتوا» شوید و «مانیتورینگ متریکهای دامنه» را انتخاب کنید.
روی دکمهی «مانیتورینگ جدید» کلیک کنید.
در این صفحه، دامنهای که میخواهید متریکهای آن را دریافت کنید، نوع لاگ و بازهی جمعآوری را انتخاب و روی دکمهی «ذخیره» کلیک کنید.
از این پس میتوانید مانیتو رینگها را فعال یا غیرفعال کنید، آنها را ویرایش و مدیریت و یا حذف کنید.
مدیریت مانیتورینگ متریکهای دامنه با 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 ddos_challenge_decision_count Number of ddos challenge final decision
# TYPE ddos_challenge_decision_count counter
ddos_challenge_decision_count{ddos_challenge_decision="ignore",hostname="arvancloud.ir"} 30
# HELP firewall_action_count Number of firewall actions applied to requests
# TYPE firewall_action_count counter
firewall_action_count{firewall_action="allow",hostname="arvancloud.ir"} 30
# HELP firewall_top_rule_matched_count Top(10) firewall rules matched with requests (resets on each fetch)
# TYPE firewall_top_rule_matched_count counter
firewall_top_rule_matched_count{firewall_matched="default",hostname="arvancloud.ir"} 9
# HELP pagerule_top_matched_count Top(10) page-rules matched with requests (resets on each fetch)
# TYPE pagerule_top_matched_count counter
pagerule_top_matched_count{hostname="arvancloud.ir",pagerule_matched="1"} 9
# HELP rate_limit_action_count Number of rate limit actions applied to requests
# TYPE rate_limit_action_count counter
rate_limit_action_count{hostname="arvancloud.ir",rlimit_action="allow"} 30
# HELP rate_limit_top_rule_matched_count Top(10) rate limit rules matched with requests (resets on each fetch)
# TYPE rate_limit_top_rule_matched_count counter
rate_limit_top_rule_matched_count{hostname="arvancloud.ir",rlimit_matched="2fe72d23-f7e3-421a-86c8-8d9bab1d2d13"} 9
# HELP http_bytes_received_total Total number of bytes received in HTTP requests.
# TYPE http_bytes_received_total counter
http_bytes_received_total{hostname="arvancloud.ir",method="get"} 2295
# HELP http_bytes_sent_total Total number of bytes sent in HTTP responses.
# TYPE http_bytes_sent_total counter
http_bytes_sent_total{hostname="arvancloud.ir",method="get"} 6001
# 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="arvancloud.ir"} 17
# 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="arvancloud.ir"} 200
# HELP http_requests_total Total number of HTTP requests processed
# TYPE http_requests_total counter
http_requests_total{hostname="arvancloud.ir",method="get",status="200"} 17
# HELP http_server_port_usage_total Usage of different server ports.
# TYPE http_server_port_usage_total gauge
http_server_port_usage_total{hostname="arvancloud.ir",server_port="80"} 17
# 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="202468",hostname="arvancloud.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="ir",hostname="arvancloud.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="arvancloud.ir",ip="37.152.183.235"} 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="arvancloud.ir",server_code="3001"} 1
# HELP unique_visitors_total Number of unique visitors
# TYPE unique_visitors_total gauge
unique_visitors_total{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 در خروجی لیست مانیتورینگهای متریک دامنه بردارید.