پیکربندی مانیتورینگ با استفاده از اند‌پوینت‌های پرومتئوس

سیستم مانیتورینگ برای سرویس CDN و DNS به‌صورت یک endpoint قابل scrape به فرمت prometheus exporter ارائه می‌شود. به همین دلیل برای استفاده از مانیتورینگ سرویس CDN و DNS باید یک scraper مثل prometheus و یا vmagent سرویس victoria metrics که قابلیت scrap کردن endpointهای پرومتئوس را دارد تنظیم شود.

برای بالا آوردن یک اینستنس (Instance) پرومتئوس می‌توان از فایل docker-compose زیر استفاده کرد:

برای دریافت متریک‌های CDN و DNS باید endpoint زیر به targetهای پرومتئوس اضافه شود. لازم به ذکر است که این endpoint توسط basic authentication محافظت می‌شود و برای دریافت credential به تیم پشتیبانی ستون مراجعه کنید.

به‌عنوان مثال برای اینستنس پرومتئوسی که بالاتر ذکر شد، قرار دادن محتوای زیر در فایل prometheus.yml برای دریافت کردن متریک های CDN و DNS کافیست:

به ازای پارامترهای مختلف سیستم CDN و DNS مسیرهای متفاوتی برای گروه‌های مختلف متریک‌ها در نظر گرفته شده‌است و هر مسیر باید به صورت جداگانه scrape شود. در این بخش metricهای موجود در هر مسیر می‌پردازیم.

۱. مسیر /cdn/request

  • متریک cdn_request_count
    یک counter است که مقدار آن تعداد درخواست هایی است که سیستم cdn دریافت کرده است.
cdn_request_count
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
مقدار ریسپانس کد دریافت شده در کلاینتresponse_code
وضعیت cache که میتواند یکی از HIT، MISS، BYPASS و … باشدcache_status
مقدار هش شده نام سرور cdnidentity

۱- مقدار response_code می‌تواند "-" باشد و این مقدار به این معنی است که برای جواب دادن این ریکوئست نیازی به ارسال درخواست به آپستریم نبوده است. (مانند جواب‌های firewall و یا auto tls redirect)

۲- مقدار cache_status می‌تواند "-" باشد و این مقدار به این معنی است که برای جواب دادن این ریکوئست نیازی به استفاده از cache نبوده. (مانند جواب های firewall و یا auto tls redirect)

۳- در prometheus یک counter میتواند ریست شود و به همین دلیل نیاز است تا این لیبل نیز در متریک‌ها حضور داشته باشد تا توابعی مانند rate و irate به درستی کار کنند.

مثال:

برای حساب کردن تعداد درخواست‌های 2xx که دامنه cdn.test.ir جواب داده است در یک دقیقه گذشته بر اساس نوع کش می‌توان از query زیر استفاده کرد:

  • متریک cdn_request_country_count

یک counter است که مقدار آن تعداد درخواست های دریافت شده توسط سیستم cdn بر اساس موقعیت جغرافیایی است.

cdn_request_country_count
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
مشخصات کشور مبدا ریکوئستcountry
مقدار هش شده نام سرور cdnidentity

مثال:

برای به دست آوردن پراکندگی جغرافیایی درخواست‌های دامنه cdn.test.ir در ۱ روز گذشته می‌توان از query زیر استفاده کرد:

۲. مسیر /cdn/response

  • متریک cdn_response_time

یک histogram است که نشان دهنده باکت‌های مختلف زمانی پاسخ‌ها است.

cdn_response_time
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
مقدار ریسپانس کد دریافت شده در کلاینتresponse_code
وضعیت cache که میتواند یکی از HIT، MISS، BYPASS و … باشدcache_status
مقدار هش شده نام سرور cdnidentity
مقدار سطح بالا برای باکت زمانیle

۱- این متریک متشکل از سه متریک cdn_response_time_bucket , cdn_response_time_sum و cdn_response_time_count میباشد.

مثال:

برای محاسبه زمان بازه ۹۹ درصد زمان پاسخ دهی درخواست ها در یک دقیقه اخیر میتوان از query زیر استفاده کرد:

۳. مسیر /cdn/bytes

  • متریک cdn_bytes_sent_size

یک counter که مقدار آن حجم پاسخ های فرستاده شده از سیستم cdn به client است.

cdn_bytes_sent_size
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
مقدار ریسپانس کد دریافت شده در کلاینتresponse_code
وضعیت cache که میتواند یکی از HIT، MISS، BYPASS و … باشدcache_status
مقدار هش شده نام سرور cdnidentity

مثال:

برای محاسبه حجم ترافیک دریافتی clientها در ۱ ساعت گذشته بر اساس وضعیت cache می‌توان از کوئری زیر استفاده کرد:

برای محاسبه حجم ترافیک دریافتی client ها در صورت پاسخ 2xx میتوان از query زیر استفاده کرد:

۴. مسیر /firewall

  • متریک cdn_firewall_matched

یک counter که مقدار آن تعداد درخواست هایی است که توسط فایروال پردازش شده اند.

cdn_firewall_matched
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
نام قانون فایروال فعال شده برای درخواست هاrule_name
مقدار هش شده نام سرور cdnidentity

مثال:

برای محاسبه تعداد درخواست های پردازش شده توسط یک قانون فایروال در ۵ دقیقه اخیر میتوان از کوئری زیر استفاده کرد:

۵. مسیر /cdn/upstream

  • متریک upstream_requests_total

یک counter که مقدار آن تعداد درخواست health check ای است که برای upstream فرستاده شده است.

upstream_requests_total
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
نام upstream در کانفیگ cdnupstream
وضعیت پاسخ دریافتی از upstreamresponse1
مقدار هش شده نام سرور لبهidentity

۱- این لیبل می‌تواند 1, 2 و یا 3 باشد. 1 به معنی سالم بودن حداقل یکی از IPهای آپ‌استریم است. 2 به معنی آماده نبودن سیستم health check است و 3 به معنی در دسترس نبودن تمام آیپی های ست شده در آپ‌ستریم میباشد.

مثال:

برای محاسبه تعداد درخواست های health check که نتیجه آن 1 شده است از کوئری زیر میتوان استفاده کرد:

  • متریک upstream_requests_total

یک معیار (gauge که مقدار آن نتیجه درخواست‌های health check است.

upstream_requests_total
توضیح labelمقدار label ها
مقدار host ریکوئست ها ورودیhostname
نام upstream در کانفیگ cdnupstream
نام سرور لبهedge

۱- این مقدار می تواند 1,2 و یا 3 باشد که معنای آنها بالاتر گفته شده است.

مثال:

برای بدست آوردن وضعیت فعلی آپ‌استریم‌ها در edge_server های مختلف می‌توان از query زیر استفاده کرد:

همچنین می‌توان آلرت زیر را برای مواقعی که یک آپ‌استریم از دسترس خارج می‌شود تنظیم کرد:

۶. مسیر /dns

  • متریک hermes_requests_seconds

یک histogram است که نشان‌دهنده باکت‌های مختلف زمانی پاسخ‌های DNS است.

hermes_requests_seconds
توضیح labelمقدار label ها
نام دامنهorigin
نوع درخواست dnsrequest_type
کد پاسخ درخواستresponse_code
مقدار هش شده نام سرور cdnidentity
مقدار سطح بالا برای باکت زمانیle

۱- این متریک شامل سه متریک hermes_requests_seconds_bucket, hermes_requests_seconds_sum و hermes_requests_seconds_count می‌باشد.

به صورت کلی یک کانفیگ prometheus که تمام مسیرهای گفته شده را scrap کند به صورت زیر می‌باشد:

آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید

sotoon

کلیه حقوق مادی و معنوی محفوظ است. © ۱۴۰۳ ستون/ شرکت رایانش ابری واحد هزاردستان