در دنیای سرویس‌های توزیع‌شده و میکروسرویس‌ها، نظارت بر عملکرد (Monitoring) به تنهایی کافی نیست. ما نیاز به قابلیت مشاهده (Observability) کامل داریم؛ یعنی درک کامل وضعیت داخلی سیستم بر اساس داده‌های خروجی آن. Elastic APM (Application Performance Monitoring) ابزاری حیاتی است که در قلب مجموعه Elastic Observability قرار دارد و به شما کمک می‌کند تا به این دید عمیق دست پیدا کنید.


Elastic APM: جزء کلیدی Observability

Elastic Observability یک راهکار جامع است که داده‌های مربوط به سه ستون اصلی را تجمیع می‌کند:

  • Logs (لاگ‌ها): ثبت وقایع و پیام‌های سیستم.

  • Metrics (مَتریک‌ها): اندازه‌گیری‌های کمی عملکرد (مانند مصرف CPU، حافظه).

  • Traces (ردیابی‌ها/APM): پیگیری جریان درخواست در طول سرویس‌های مختلف و اندازه‌گیری زمان پاسخ‌دهی.

Elastic APM با جمع‌آوری داده‌های Traces، نقش کلیدی در شناسایی گلوگاه‌ها، ردیابی خطاها و تجزیه و تحلیل عملکرد اپلیکیشن‌ها ایفا می‌کند.


اجزای اصلی Elastic APM

سیستم Elastic APM از دو بخش اساسی تشکیل شده است:

  • APM Agents (کتابخانه‌ها): کتابخانه‌های سبکی که برای زبان‌های مختلف ارائه شده‌اند و به صورت خودکار داده‌های عملکردی را جمع‌آوری می‌کنند.

  • APM Server: داده‌های جمع‌آوری‌شده توسط Agentها را پردازش کرده و برای ذخیره‌سازی و تحلیل به Elasticsearch می‌فرستد.

پوشش گسترده Agentها: ابزاری برای تمام تیم‌ها

یکی از نقاط قوت Elastic APM، پشتیبانی گسترده آن از زبان‌های برنامه‌نویسی است: Java، Python، Ruby، Go، Node.js، .NET و PHP.


تمرکز بر PHP: مزایا و قابلیت‌ها

اگر پروژه شما بر مبنای PHP است، Elastic APM Agent برای PHP ابزاری فوق‌العاده است. بدون افزودن حتی یک خط کد می‌توانید عملکرد اپلیکیشن خود را نظارت کنید.

ویژگی‌ها:

  • زمان اجرا و پاسخ: نظارت دقیق بر توابع و درخواست‌ها.

  • Trace عمیق: پیگیری کامل چرخه حیات درخواست.

  • شناسایی خطاها: ثبت و ردیابی خودکار خطاها.

  • پشتیبانی از فریم‌ورک‌ها: سازگاری با Laravel، Symfony، CodeIgniter و Zend.


زمان پیاده‌سازی: گام به گام نصب Agent PHP (نسخه 1.15.1)

روش اول: نصب روی سیستم‌عامل (لینوکس) 🐧

۱. دانلود و نصب کتابخانه

# دانلود کتابخانه (نسخه 1.15.1)

wget https://github.com/elastic/apm-agent-php/releases/download/v1.15.1/apm-agent-php_1.15.1_all.deb

# اجرای نصب پکیج

dpkg -i /usr/src/apm-agent-php.deb

۲. تنظیمات در php.ini

elastic_apm.secret_token="xxxxxxx"

elastic_apm.server_url="http://your apm url"

elastic_apm.service_name="my-service-name"

elastic_apm.environment="my-environment"

(پس از تغییرات، سرویس PHP را ری‌استارت کنید.)


روش دوم: نصب روی کانتینر (Docker/Kubernetes) 🐳

۱. افزودن به Dockerfile

RUN wget -O /usr/src/apm-agent-php.deb https://github.com/elastic/apm-agent-php/releases/download/v1.15.1/apm-agent-php_1.15.1_all.deb \ && dpkg -i /usr/src/apm-agent-php.deb \ && rm /usr/src/apm-agent-php.deb

۲. پیکربندی با Environment Variables

ELASTIC_APM_SECRET_TOKEN="xxxxx"

ELASTIC_APM_SERVICE_NAME="my-service"

ELASTIC_APM_API_KEY="xxxxxxx"

ELASTIC_APM_TRANSACTION_MAX_SPANS=1000

ELASTIC_APM_TRANSACTION_SAMPLE_RATE=1.0

ELASTIC_APM_ENVIRONMENT="dev"

ELASTIC_APM_ENABLED="true"

ELASTIC_APM_VERIFY_SERVER_CERT="false"

# ... و سایر تنظیمات

۳. بیلد و اجرا پس از بیلد مجدد ایمیج، Agent به صورت خودکار داده‌ها را ارسال می‌کند.


مشاهده نتایج در Kibana

پس از فعال شدن Agent:

  • Kibana را اجرا کنید.

  • مسیر: Observability → APM → Services.

در این بخش، داده‌های کامل Traces, Metrics و Logs برای سرویس PHP شما قابل مشاهده است.


نمونه پیاده‌سازی (PHP)

نمونه پروژه در گیت‌هاب: 🔗 https://github.com/mohammadalipour/metrific