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

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

قابلیت 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 با بیش‌ترین تعداد درخواستCounterhostname: نام میزبان

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

server_code: شماره سرور CDN
http_top_requests_asn_count۱۰ 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_totalتعداد دفعات استفاده از پورت‌های سرورGaugehostname: نام میزبان

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

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

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

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

متریک‌های DNS

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

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

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

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

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

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

متریک‌های Upstream Error

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

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

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

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

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

متریک‌های Event

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

tls_figerprint: مقدار Fingerprint ای که از کاربر به سرور اصلی ارسال می‌شود
rate_limit_top_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_top_rule_matched_countتعداد درخواست‌های تطبیق‌داده‌شده با قوانین فایروالCounterhostname: نام میزبان

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

firewall_action: نوع عملکرد فایروال مانند Allow, Bypass, Deny و Challenge
pagerule_top_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

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

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

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

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

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

مدیریت مانیتورینگ متریک‌های دامنه با 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 در خروجی لیست مانیتورینگ‌های متریک دامنه بردارید.