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

با استفاده از این قابلیت‌ها می‌توانید روی زیرساخت خود نظارت کنید و عملکرد CDN و DNS خود را بصورت لحظه‌ای رصد کنید.

با استفاده از این داده‌ها می‌توانید:

  • روی مصرف منابع‌تان نظارت کنید
    به تفکیک دامنه و سرور لبه از میزان مصرف CDN و DNS خود با خبر شوید.
  • از سلامت سرورهای اصلی (Upstream) خود اطمینان حاصل کنید
    سرورهای لبه بطور دائمی سلامت سرورهای اصلی شما را بررسی می‌کنند. با استفاده از این قابلیت می‌توانید سلامت سرورهای اصلی خود را با استفاده از شبکه گسترده‌ی ستون ارزیابی کنید.
  • با حملات منع دسترسی مقابله کنید
    با استفاده از داده‌هایی مثل IPهای پرمصرف، تعداد بازدیدکنندگان و مسیر‌های پراستفاده می‌توانید از وقوع حملات سایبری اطلاع پیدا کنید و با این نوع حملات مقابله کنید.
  • فرایند عیب‌یابی را تسریع کنید
    با استفاده از این قابلیت می‌توانید به سرعت از وجود مشکل در ارتباط CDN با سرور اصلی‌تان یا کاربران با خبر شوید و زمان عیب‌یابی و حل مشکلات را بطور چشمگیری کاهش دهید.
  • درخواست‌های گوگل را بصورت زنده مشاهده کنید
    با استفاده از داده‌های تفکیک شده‌ی خزشگرهای گوگل (Google Crawler) عملکرد خود را بصورت زنده مشاهده کنید و برای بهبود جایگاهتان در گوگل تنظیمات خود را بهبود دهید.
  • سرعت پاسخگویی درخواست‌ها را بهبود دهید
    با استفاده از این داده‌ها می‌توانید تنظیمات مربوط به کش (Cache) را بهبود دهید و در نتیجه سرعت پاسخگویی (Response Time) کاربران را افزایش دهید.
  • مانیتورینگ را بصورت یکپارچه و روی زیرساخت خودتان مدیریت کنید
    این قابلیت متناسب با نیاز سازمان‌ها توسعه داده شده. با استفاده از این قابلیت می‌توانید داشبورد‌های مرتبط با CDN و DNS را روی پنل گرافانای سازمان‌تان و بصورت یکپارچه مشاهده کنید.
  • هشدارهایی متناسب با نیازهایتان بسازید
    معماری مانیتورینگ CDN و DNS ستون به شما اجازه می‌دهد هشدارهایی متناسب با نیازهایتان تعریف کنید.

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

۱. نام‌کاربری و رمز عبور مانیتورینگ خود را از پشتیبانی بگیرید

داده‌های شما با مکانیزم Basic Authentication محافظت می‌شود. برای دسترسی به نام‌کاربری و رمز عبور با پشتیبانی تماس بگیرید.

۲. زیرساخت جمع‌آوری و نمایش داده‌ها را ایجاد کنید

داده‌های مانیتورینگ با فرمت Prometheus Exporter در اختیار شما قرار می‌گیرد. برای جمع‌آوری و نگهداری این داده‌ها به Prometheus (یا ابزارهای مشابه مثل VictoriaMetrics) نیاز دارید. همچنین برای نمایش این داده‌ها به ابزاری مثل Grafana نیاز دارید.

در صورتی که این زیرساخت را ندارید می‌توانید با استفاده از فایل Docker Compose زیر یک نسخه از Prometheus و Grafana آماده کنید.

برای این کار فایل docker-compose.yaml با محتوای زیر را ایجاد کنید:

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

۲. داده‌‌‌‌‌‌‌ها را جمع آوری کنید

برای دریافت داده‌ها فایل prometheus.yaml را مشابه فایل زیر ایجاد کنید و مقادیر username و password را با نام‌کاربری و رمز عبورتان جایگزین کنید. سپس سرویس Prometheus خود را ریستارت کنید:


برای دریافت متریک‌های 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

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