دو روش برای جمع آوری داده های مربوط به متریک وجود دارد: pull یا push. این که کدام روش بهتر است، بحثی دائمی است و پاسخ روشنی وجود ندارد. در این مقاله ما به مدل pull نگاهی خواهیم انداخت. شکل 1 جمع آوری داده ها با مدل pull روی HTTP را نشان می دهد. ما جمع کننده های اختصاصی معیار داریم که به صورت دوره ای مقادیر معیار را از برنامه های در حال اجرا دریافت می کنند.
در این رویکرد، جمع کننده متریک باید لیست کامل نقاط انتهایی سرویس (service endpoint) را که داده ها از آنها جمع آوری می شود را بداند. یک رویکرد ساده استفاده از یک فایل برای نگهداری اطلاعات DNS/IP برای هر نقطه انتهایی سرویس در سرورهای «جمع کننده متریک (metric collector)» است. در حالی که این ایده ساده است، اما نگهداری از این رویکرد در محیطی با مقیاس بزرگ که سرورها به طور مکرر اضافه یا حذف می شوند تا حدودی دشوار است و ما می خواهیم اطمینان حاصل کنیم که جمع کننده های متریک جمع آوری دادههای متریک را از سرورهای جدید از دست ندهند.
خبر خوب این است که ما یک راه حل قابل اعتماد، مقیاس پذیر و قابل نگهداری از طریق Service Discovery ارائه شده توسط Kubernetes یا Zookeeper و غیره در اختیار داریم، که در آن سرویس ها میزان در دسترس بودن (availability) خود را ثبت می کنند و هر زمان که لیست نقاط انتهایی سرویس تغییر کند، جمع کننده متریک می تواند توسط مؤلفه کشف سرویس مطلع شود. کشف سرویس شامل قوانین پیکربندی در مورد زمان و مکان جمع آوری معیارها است، همانطور که در شکل 2 نشان داده شده است.
شکل 3 مدل pull را به صورت جزئی توضیح می دهد.