در perfmetrics فراهم می کند یک راه ساده برای اضافه کردن نرم افزار معیارهای عملکرد به کتابخانه ها و برنامه های کاربردی پایتون و nbsp؛ استفاده perfmetrics برای پیدا کردن تنگناها واقعی در یک برنامه تولید.
بسته perfmetrics یک مشتری از شبح Statsd توسط Etsy، است که به نوبه خود یک مشتری از گرافیت (به طور خاص، شبح کربن) می باشد. از آنجا که بسته perfmetrics بسته UDP به Statsd می فرستد، perfmetrics می افزاید هیچ تاخیر I / O به برنامه ها و سربار CPU کم است. این می تواند در موضوعی (همزمان) و یا (آسنکرون) نرم افزار رویداد محور کار به طور مساوی.
استفاده
استفاده از تزئینmetric وmetricmethod به بسته بندی توابع و روش است که باید زمان را به Statsd ارسال و تماس آمار. اضافه کردن تزئین به هر تابع یا روش است که می تواند تنگنا، از جمله توابع کتابخانه.
نمونه:
از perfmetrics وارد متریک
از perfmetrics واردات metricmethod
metric
دف myfunction ():
و nbsp؛ "" "آیا چیزی است که ممکن است گران" ""
کلاس MyClass (شی):
را لمس کنید و.metricmethod
و nbsp؛ دف MyMethod داشته باشیم پس (خود):
و nbsp؛ "" "آیا برخی از چیز دیگری احتمالا گران قیمت" ""
بعد، perfmetrics بگویید که چگونه برای اتصال به Statsd. (تا زمانی که کار، تزئین هیچ اثر.) در حالت ایده آل، برنامه شما باید Statsd URI از یک فایل پیکربندی در زمان راه اندازی به عنوان خوانده شده، اما مثال زیر با استفاده از یک URI سخت رمزی برای سادگی:
از perfmetrics واردات set_statsd_client
set_statsd_client ('statsd: // localhost را: 8125)
برای من در xrange (1000):
را لمس کنید و. myfunction ()
را لمس کنید و.. MyClass () MyMethod داشته باشیم پس ()
اگر شما که کد اجرا شود، آن را به 2000 بسته UDP در بندر 8125. آتش با این حال، مگر اینکه شما در حال حاضر نصب گرافیت و Statsd، همه از آن بسته خواهد شد نادیده گرفته و کاهش یافته است. حذف یک چیز خوبی است: شما نمی خواهید برنامه تولید خود را به شکست و یا کم کردن سرعت فقط به خاطر اینکه سیستم نظارت بر عملکرد خود را متوقف و یا کار نمی کند.
نصب گرافیت و Statsd برای دریافت و گراف معیارهای. یکی از راه های خوب به آنها را نصب کنید به عنوان مثال graphite_buildout در گیتهاب، که نصب گرافیت و Statsd در یک محل سفارشی بدون دسترسی ریشه است.
نخ کشی
در حالی که اکثر برنامه های ارسال معیارهای از هر موضوع به یک سرور واحد جهانی Statsd، برخی از برنامه های نیاز به استفاده از سرور Statsd مختلف برای هر موضوع. اگر شما تنها نیاز به یک سرور جهانی Statsd، استفاده از تابع set_statsd_client در هنگام راه اندازی نرم افزار. اگر شما نیاز به استفاده از یک سرور Statsd مختلف برای هر موضوع، استفاده از شی statsd_client_stack در هر موضوع. با استفاده از فشار، پاپ، و روش روشن است.
نکات گرافیت
فروشگاه گرافیت هر متریک به عنوان یک سری زمانی با قطعنامه های متعدد. این قطعنامه فروشگاه graphite_buildout نمونه 10 دوم به مدت 48 ساعت، ساعت قطعنامه 1 برای 31 روز، و روز وضوح 1 به مدت 5 سال. برای تولید یک مقدار دانه درشت از مقدار دانه ریز، گرافیت محاسبه مقدار متوسط (متوسط) برای هر مدت زمان.
از آنجا گرافیت محاسبه مقادیر میانگین به طور ضمنی، معقول ترین راه برای درمان شمارنده در گرافیت است به عنوان یک "بازدید در هر ثانیه" ارزش. به این ترتیب، یک گراف می تواند نتایج صحیح مهم نیست که قطعنامه سطح آن استفاده می کند تولید کند.
درمان شمارنده به عنوان بازدید در هر ثانیه است عواقب ناگوار، با این حال. اگر برخی از متریک را می بیند سنبله 1000 ضربه در یک ثانیه، و سپس سقوط به صفر به مدت حداقل 9 ثانیه، نمودار گرافیت برای که متریک خواهد سنبله از 100، نه 1000 نشان می دهد، از گرافیت معیارهای هر 10 ثانیه دریافت و سنبله به نظر می رسد به گرافیت مانند 100 بازدید در هر ثانیه بیش از یک دوره 10 دوم.
اگر می خواهید گراف خود را به نشان می دهد 1000 بازدیدها جای 100 بازدید در هر ثانیه، اعمال hitcount گرافیت تابع ()، با استفاده از یک قطعنامه از 10 ثانیه یا بیشتر. تابع hitcount ارزش در ثانیه تبدیل به تقریبی تعداد ضربه خام. مطمئن باشید که به ارائه ارزش قطعنامه به اندازه کافی بزرگ را به حداقل یکی عرض پیکسل در نمودار منجر به نمایندگی، در غیر این صورت گرافیت خواهد میانگین تعداد ضربه محاسبه و تولید یک گراف گیج کننده است.
معمولا حس می کند برای درمان مقادیر null در گرافیت به عنوان صفر، هر چند که به طور پیش فرض نیست؛ به طور پیش فرض، گرافیت تساوی هیچ چیزی برای ارزش های پوچ. شما می توانید بر روی آن گزینه برای هر گراف تبدیل شود.
مستندات مرجع
تزئین
metric
& nbsp؛ در اطلاع Statsd با استفاده از UDP هر بار که تابع نامیده می شود. می فرستد هر دو تماس و اطلاعات زمان بندی. نام متریک فرستاده شده به Statsd است <ماژول>. <نام تابع>.
metricmethod
و nbsp؛ مانندmetric، اما نام Statsd متریک <ماژول کلاس> است <نام کلاس> <نام متد>...
متریک (آمار = هیچ، نرخ = 1، روش = کاذب، تعداد = واقعی، زمان = واقعی)
& nbsp؛ یک مدیر دکوراتور یا زمینه با گزینه.
& nbsp؛ در آمار نام متریک برای ارسال است. تنظیم آن را به هیچ یک برای استفاده از نام تابع و یا روش. نرخ شما اجازه می دهد تعدادی از بسته با انتخاب یک نمونه تصادفی به Statsd فرستاده کاهش دهد؛ به عنوان مثال، آن را به 0.1 تنظیم برای ارسال یک دهم از بسته. اگر پارامتر روش درست است، به طور پیش فرض نام متریک است در نام کلاس روش به جای نام ماژول است. تنظیم تعداد به غلط غیر فعال آمار شمارنده فرستاده شده به Statsd. تنظیم زمان بندی به غلط غیر فعال آمار زمان فرستاده شده به Statsd.
استفاده نمونه به عنوان یک دکوراتور، و nbsp:
& nbsp؛ درMetric ('frequent_func'، نرخ = 0.1، زمان = FALSE)
و nbsp؛ دف frequent_func ():
و nbsp؛ "" "آیا چیزی سریع و غالبا" ""
& nbsp؛ از نمونه به عنوان یک مدیر زمینه:
و nbsp؛ دف do_something ():
& nbsp؛ با متریک ('doing_something'):
& nbsp؛ از پاس
& nbsp؛ اگر perfmetrics بسته بیش از حد اغلب می فرستد، بسته های بی سیم ممکن است از دست داده و عملکرد نرم افزار ممکن است تحت تاثیر قرار. شما می توانید تعداد بسته و سربار CPU با استفاده از دکوراتور متری با گزینه به جای متریک و یا metricmethod را کاهش دهد. به عنوان مثال دکوراتور بالا با استفاده از نرخ نمونه و یک نام متریک استاتیک می باشد. این نیز غیر فعال مجموعه ای از زمان بندی اطلاعات است.
& nbsp؛ وقتی با استفاده از متریک به عنوان یک مدیر زمینه، شما باید پارامتر آمار ارائه یا چیزی ثبت خواهد شد.
توابع
statsd_client ()
و nbsp؛ بازگشت StatsdClient در حال حاضر پیکربندی شده است. را برمی گرداند مشتری موضوع محلی در صورت وجود، یا مشتری جهانی اگر یکی، یا هیچ کدام وجود دارد.
set_statsd_client (client_or_uri)
& nbsp؛ در تنظیم StatsdClient جهانی است. client_or_uri می تواند یک StatsdClient، statsd: // URI، و یا هیچ.
statsd_client_from_uri (URI)
& nbsp؛ ایجاد StatsdClient از URI. URI معمولی statsd است: // localhost را: 8125. پارامترهای پرس و جو اختیاری پشتیبانی می پیشوند و gauge_suffix. پیشوند پیش فرض خالی است و gauge_suffix به طور پیش فرض است .. مستندات StatsdClient برای اطلاعات بیشتر در مورد gauge_suffix را ببینید.
مواد و روش ها StatsdClient
کد پایتون می تواند معیارهای سفارشی توسط اولین گرفتن StatsdClient فعلی با استفاده از روش statsd_client () ارسال کنید. توجه داشته باشید که statsd_client () هیچ گرداند اگر هیچ مشتری پیکربندی شده است.
بسیاری از روش زیر پارامترهای سرعت و buf اختیاری است. پارامتر نرخ، هنگامی که به یک مقدار کمتر از 1 مجموعه، باعث StatsdClient برای ارسال یک نمونه تصادفی از بسته های به جای هر بسته. اگر پارامتر buf یک لیست است، StatsdClient اضافه محتویات بسته به لیست buf به جای ارسال بسته، و آن را ممکن است برای ارسال به روز رسانی های متعدد در یک بسته واحد. به خاطر داشته باشید که اندازه بسته UDP محدود است (حد توسط شبکه متفاوت است، اما 1000 کلمه در ادامه متن است که معمولا یک حدس خوب) و هر بایت اضافی خواهد شد در سکوت کنه.
زمان بندی (آمار، ارزش، نرخ = 1، buf = هیچ)
& nbsp؛ از ضبط اطلاعات زمان بندی. آمار نام متریک برای ضبط است و ارزش اندازه گیری زمان در میلی ثانیه است. توجه داشته باشید که Statsd حفظ چند نقطه داده ها برای هر متریک زمان، بنابراین معیارهای زمان بندی می تواند فضای دیسک بیش از شمارنده یا ابزار اندازه گیری کنند.
سنج (آمار، ارزش، پسوند = هیچ، نرخ = 1، buf = هیچ)
& nbsp؛ از به روز رسانی یک مقدار گیج. آمار نام متریک برای ضبط است و ارزش ارزش سنج جدید است. سنج نشان دهنده ارزش مداوم مانند اندازه استخر. از آنجا که اندازه گیری از ماشین آلات مختلف اغلب درگیری ها، پسوند معمولا برای ارزیابی نام استفاده شود. اگر پارامتر پسوند یک رشته (از جمله یک رشته خالی) است، آن را لغو پسوند به طور پیش فرض سنج.
incr (آمار، تعداد = 1، نرخ = 1، buf = هیچ)
& nbsp؛ از افزایش یک شمارنده شمارش. توجه داشته باشید که Statsd پاک تمام ضد ارزش هر بار که آن معیارهای فرستد به گرافیت، که معمولا هر 10 ثانیه اتفاق می افتد. اگر شما نیاز به یک ارزش پایدار، ممکن است مناسب تر به استفاده از سنج به جای یک شمارنده.
decr (آمار، تعداد = 1، نرخ = 1، buf = هیچ)
& nbsp؛ از کاهش یک شمارنده شمارش.
sendbuf (buf)
& nbsp؛ ارسال محتویات از لیست buf به Statsd
چه در این نسخه جدید است:
در بین هرم اختیاری و یک برنامه فیلتر WSGI مشابه که مجموعه تا مشتری Statsd اضافه شده. برای هر درخواست.
جدید در نسخه 0.9.4 است:
در بهینه استفاده از کاهش نرخ نمونه.
جدید در نسخه 0.9.2 است:
متریک هم اکنون می توانید به عنوان یکی از دو دکوراتور و یا یک مدیر زمینه استفاده می شود.
نویسنده امضای StatsdClient بیشتر شبیه StatsClient جیمز Socol است.
مورد نیاز:
پایتون
نظر یافت نشد