Application Performance Monitoring (APM)- بخش اول / دیده‌بانی با نظارت بر عملکرد برنامه

Application Performance Monitoring (APM)دیده‌بان (lookout) در کشتی مسئول نظارت و پایش بر امنیت کشتی است و وظیفه‌ای اساسی برای جلوگیری از وقوع حوادث و تهدیدات مختلف دارد. یک دیده‌بان کمک می‌کند تا تهدیداتی مانند سایر کشتی ها، شناورها و پرتابهای دریایی را شناسایی کرده و در صورت لزوم به ناخدای کشتی اعلام کند. به این ترتیب، او با همکاری و تعامل موثر با ناخدا، به جلوگیری از وقوع حوادث افزایش امنیت کشتی کمک می کنند.اگر کشتی را یه نرم افزار در نظر بگیریم وظیفه کنترل عملکرد برنامه شما بر عهده کیست !؟Application Performance Monitoring یا به اختصار APM به مانند یک دیده‌بان در کشتی عمل کرده و از بالا به صورت مداوم و همیشگی وظیفه نظارت و کنترل عملکرد برنامه شما را بر عهده خواهند داشت ! Application Performance Monitoring (APM) چرا به یک دیده‌بان برای پروژه نرم افزاری خود نیاز داریم ؟یه سیستم نظارت بر عملکرد پروژه های نرم افزار یا APM، برنامه‌ی شما به طور مداوم و بدون نیاز به استفاده از کد خاصی کنترل و در صورت بروز هرگونه نقص یا خطا در عملکرد آن، شما را آگاه و خطرات احتمالی را به حداقل می رساند.اهمیت این سیستم ها به خصوص در نرم افزارهایی در مقیاس متوسط و بزرگ از دید هیچ سازمانی پوشیده نیست و عدم وجود آن خطرات مالی و غیر مالی غیر قابل بازگشتی را برای این شرکت‌ها به دنبال خواهد داشت! این سیستم‌ها می‌توانند به ما کمک کنند تا میزان استفاده از منابع سیستم، زمان پاسخگویی برنامه‌ها، تعداد درخواست‌ها و غیره را مشاهده و در صورت نیاز اقدامات لازم را انجام دهیم. علاوه بر این، این ابزارها به ما امکان می‌دهند تا رفتار کاربران را نیز مانیتور و با تحلیل داده‌های موجود، عملکرد و کیفیت برنامه‌های خود را بهبود بخشیم و در نهایت یا یک تیر دو نشان بزنیم :هزینه‌های نگهداری و زمان از دست رفته کمتری داشته باشیمبرنامه بهتری برای کاربر نهایی خود بسازیمابزارهای مختلفی برای نظارت بر عملکرد برنامه های نرم افزاری ارائه شده. در زیر، معروف ترین ابزارهای APM را برای شما معرفی می کنیم:New RelicAppDynamicsDynatraceDatadogSolarWinds AppOpticsStackifyScout APMRaygunInstanaElastic APMاما مشلکی که سر راه ما برای استفاده از تقریبا تمام این ابزارهاست هزینه‌های زیاد آنها است ! ولی تقریبا تمام آنها و نه همه‌ی آنها !!! بله گزینه اقتصادی تری هم وجود دارد :Elastic APMElastic APMابزار Elastic APM، سیستم مانیتورینگ عملکرد برای برنامه های کاربردی وب است که توسط شرکت Elastic توسعه داده شده است. این سیستم قابلیت اندازه گیری و نظارت بر عملکرد برنامه های کاربردی وب را با استفاده از متریک های مختلفی مانند زمان پاسخ دهی، خطاهای کاربر و تعداد درخواست ها دارد. Elastic APM همچنین به کاربران این امکان را می دهد تا با استفاده از ابزارهای گرافیکی و جداول مختلف، عملکرد برنامه های کاربردی خود را مشاهده و تجزیه و تحلیل کنند. این سیستم در ارتباط با سایر محصولات شرکت Elastic مانند Elasticsearch، Kibana به کار می رود.ابزار Elastic APM دارای مزایای زیادی است که به کاربران کمک می کند تا عملکرد برنامه های خود را بهبود بخشند. برخی از این مزایا عبارتند از:1- جمع‌آوری دقیق داده‌های عملکردی: با استفاده از Elastic APM، توسعه‌دهندگان می‌توانند داده‌های عملکردی برنامه‌های خود را با دقت بالا جمع‌آوری کنند.2- پشتیبانی از زبان‌های برنامه‌نویسی مختلف: Elastic APM به سادگی با زبان‌های برنامه‌نویسی مختلف ادغام می‌شود، از جمله iOS, Android, PHP,Java، .NET، Node.js، Ruby، Python و Go.3- نظارت بر عملکرد برنامه‌ها: با استفاده از Elastic APM، توسعه‌دهندگان می‌توانند به صورت زنده و در زمان واقعی بر روی عملکرد برنامه‌های خود نظارت کنند و مشکلات عملکردی را شناسایی کنند.4- امنیت بالا: Elastic APM از پروتکل HTTPS برای ارتباط با سرور استفاده می‌کند و برای جلوگیری از سوء استفاده از داده‌های حساس، از رمزنگاری استفاده می‌کند.5- ادغام با سایر محصولات Elastic: Elastic APM به راحتی با سایر محصولات Elastic مانند Elasticsearch و Kibana ادغام می‌شود.6- عملکرد SQL query های خود را در سطح کد بررسی کنید و عیب یابی کنید. بیایید کمی عمیق‌تر به این ابزار بپردازیم :چیزی که در بیشتر سیستم های مانیتوریک معرفی شده در بالا مشترک است، عامل (Agent) جمع آوری کننده داده‌های عملکرد سیستم نرم‌افزاری شما است که باید با توجه به زبان‌برنامه نویسی پروژه شما انتخاب و روی پروژه شما نصب شود . این عامل (Agent) با توجه به نوع توسعه و اجرای برنامه شما (روی سیستم عامل و یا کانتینر) متفاوت خواهد بود. روش کاری این ابزار به این صورت می‌باشد که شما Elastic Agent را با توجه زبان برنامه نویسی پروژه اضافه کرده و با توجه به نوع ELK نصب شده (ابری یا لوکال) داده ها را برای سرور ELK خود ارسال میکنید. در حقیقت دو روش برای ارسال داده های مورد نیاز به ELK وجود دارد :1- عامل نصب شده روی پروژه شما، داده ها را به APM Integration مرکزی ارسال می کنند:Sending data to a centrally hosted APM integration 2- عامل نصب شده و APM Integration در پروژه شما قرار گرفته اند و از طریق یک Elastic Agent لوکال با نسخه Elastic Agent مرکزی در ارتباط هستند :APM agents and the APM integration live on edge machines and enroll via a centrally hosted Elastic Agentدر این پست ما به روش اول می پردازیم !و اما Elastic APM Agent که در هر دو روش مشترک هستند:همانطور که اشاره شد، وظیفه جمع آوری داده‌های عملکردی برنامه‌های نرم‌افزاری توسط این عامل برای Elastic agent مرکزی ارسال می شود. این ابزار قابلیت جمع‌آوری و نمایش داده‌های عملکردی برای زبان‌های برنامه‌نویسی مختلف از جمله Java، .NET، Node.js، Ruby،IOS، Android، Python ، Go و PHP را داراست. ممکن است زبان های برنامه نویسی جدیدی نیز در آینده اضافه شوند! این زبان ها آخرین آپدیت اریه شده تا زمان انتشار این پست می باشند با استفاده از Elastic APM Agent، توسعه‌دهندگان می‌توانند عملکرد برنامه‌های خود را بدون اضافه کردن هیچ کدی به صورت (نزدیک به) Real time نظارت و مشکلات عملکردی را شناسایی و رفع کنند. در بخش بعدی این پست قصد داریم تا یک مدل کامل سیستم مانیتورینگ کنترل عملکرد با استفاده از Elastic APM روی یک پروژه با زبان برنامه نویسی PHP پیاده کنیم . این پست ادامه دارد ....