Watchlog • APM

پایش کارایی اپلیکیشن (APM) برای بک‌اندهای مدرن

رهگیری درخواست‌ها، کشف گلوگاه‌ها و کنترل خطاها — با مسیرهای نرمال‌سازی‌شده، اسپن‌های دیتابیس و نمودارهای p95/p99، آماده برای رشد محصول شما.

OpenTelemetry (OTLP)Traces + Metrics + LogsAlerts & Webhooks
service: checkout-api
{
    "route": "/orders/:id",
    "method": "GET",
    "latency_ms": 182,
    "p95_ms": 341,
    "db": { "engine": "postgres", "duration_ms": 73 },
    "cache": { "hit": true, "provider": "redis" },
    "status": 200,
    "traceId": "apm_9b20…3a",
    "error": null
  }

چرا واچ‌لاگ APM؟

دید عملیاتی قابل اتکا، بدون شلوغی

  • رهگیری سرتاسری میان سرویس‌ها، دیتابیس و فراخوانی‌های بیرونی.
  • p95/p99 لحظه‌ای + مقایسه قبل/بعد از استقرار (Regression Spotting).
  • SQL/NoSQL Slow Query، N+1 Detector و برآورد هزینه کوئری.
  • هشدار هوشمند (Spike/Drop) با Webhook/Slack/Telegram.
رهگیری‌ها در APM

نمونه نمایشی — داده‌های ساختگی

امکانات کلیدی • APM

همه‌چیز برای پیدا کردن گلوگاه‌ها

از اسپن‌های مسیر تا دیتابیس، از خطاها تا حافظه — همه در یک نما.

Trace کامل درخواست‌ها

Route, Method, Status, Duration, Child Spans

  • نرمال‌سازی مسیرها (/:id)
  • پرش از اسپن به لاگ مرتبط
  • نمونه‌برداری پویا بر اساس خطا/کندی

متریک‌های عملکرد

میانگین، p95/p99، Throughput و Error Rate به تفکیک سرویس/مسیر

  • مقایسه بازه‌ها (قبل/بعد از دیپلوی)
  • Grouping بر اساس Tag/Env/Version

بینش دیتابیس

Slow Query، Plan ساده، فراوانی و سهم از کل زمان پاسخ

  • N+1 Detector
  • فیلتر بر اساس جدول/ایندکس
  • پیشنهادهای ساده تنظیم

مدیریت خطا

استک‌تریس، دسته‌بندی، Rate محدودیت، Ignore Rules

  • Auto-grouping بر اساس امضا
  • پیوند به درخواست/کاربر
  • Alert روی روند غیرعادی

پایش حافظه و منابع

RSS/Heap، CPU، GC Events و ارتباط با ترافیک

  • نشت احتمالی حافظه (trend)
  • حد آستانه با آلارم
  • Export برای تحلیل آفلاین

هشدار و خودکارسازی

Threshold/Anomaly برای تأخیر/خطا/منابع + Webhook/Slack/Telegram

  • Windowed thresholds
  • Auto-mute روی طغیان خطا
  • Maintenance windows

OpenTelemetry SDKs پشتیبانی‌شده

واچ‌لاگ از پروتکل استاندارد OpenTelemetry (OTLP) پشتیبانی می‌کند. از هر زبان یا فریم‌ورکی که OpenTelemetry را پشتیبانی می‌کند استفاده کنید.

Node.js

OpenTelemetry JS SDK با پشتیبانی از Express, NestJS و ...

Python

OpenTelemetry Python SDK با پشتیبانی از FastAPI, Django, Flask

Java

OpenTelemetry Java SDK با پشتیبانی از Spring Boot و ...

Go

OpenTelemetry Go SDK با پشتیبانی از Gin, Echo و ...

پیکربندی OpenTelemetry

کافی است OpenTelemetry OTLP exporter را به endpoint واچ‌لاگ متصل کنید. نیازی به پکیج اختصاصی نیست.

مثال پیکربندی

OpenTelemetry OTLP exporter خود را به endpoint زیر متصل کنید:

محیط Local:
http://localhost:3774/apm/YOUR_APP_NAME/v1/traces
محیط Docker:
http://watchlog-agent:3774/apm/YOUR_APP_NAME/v1/traces

توجه:

  • localhost:3774 یا watchlog-agent:3774 را با آدرس و پورت agent خود جایگزین کنید
  • YOUR_APP_NAME را با نام اپلیکیشن خود جایگزین کنید

Node.js

javascript

Usage

// Install OpenTelemetry packages
npm install @opentelemetry/api
npm install @opentelemetry/sdk-node
npm install @opentelemetry/exporter-trace-otlp-http
npm install @opentelemetry/instrumentation

// tracing.js
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');

const sdk = new NodeSDK({
  traceExporter: new OTLPTraceExporter({
    url: 'http://localhost:3774/apm/YOUR_APP_NAME/v1/traces',
  }),
  instrumentations: [getNodeAutoInstrumentations()],
});

sdk.start();

// index.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello Watchlog APM with OpenTelemetry!');
});

app.listen(3000);
زبان دیگری می‌خواهید؟ مستندات OpenTelemetry را ببینید.مستندات واچ‌لاگ

دید عمیق روی درخواست‌ها

Route spans + child spans (DB, Cache, HTTP)

  • زمان‌بندی مسیر با مسیرهای نرمال‌سازی‌شده
  • اسپن‌های دیتابیس برای SQL و NoSQL (کوئری، ردیف، زمان)
  • ابزارسازی فراخوانی‌های بیرونی (HTTP، کش)

روندهای قابل اقدام

میانگین/p95/بیشینه، حافظه، نرخ خطا و مقایسه دیپلوی

  • درخواست، خطا، میانگین/p95/بیشینه و روند حافظه
  • مقایسهٔ قبل/بعد از استقرار برای کشف پسرفت
  • جدول مسیرهای برتر و رهگیری‌های کند

متن خطاها

استک‌تریس + همبستگی با لاگ‌ها برای پرش سریع

  • استک‌تریس با متن درخواست/هدرها
  • همبستگی با لاگ برای پرش از خطا به لاگ
  • پیوند به متریک‌های مرتبط برای دید ۳۶۰ درجه

مقایسه سریع

چرا واچ‌لاگ APM برای تیم‌های چابک مناسب‌تر است؟

Watchlog APM

  • ⚡️ نصب در چند دقیقه، حداقل تنظیمات
  • 🧭 مسیرهای نرمال‌سازی‌شده بدون کاردینالیتی وحشی
  • 🔗 پرش یک‌کلیک از اسپن به لاگ/متریک مرتبط
  • 📈 داشبوردهای آماده + Export

ابزارهای عمومی

  • ⏳ راه‌اندازی طولانی و پرهزینه
  • 🌀 مسیرهای متنوع = نمودارهای شلوغ و بی‌فایده
  • 🔍 ارتباط دستی بین لاگ/متریک/تریس
  • 🧩 وابستگی به افزونه‌های متعدد

سوالات متداول

چرا OpenTelemetry؟

OpenTelemetry یک استاندارد صنعتی است که با هر زبان و فریم‌ورکی کار می‌کند. نیازی به پکیج اختصاصی نیست و می‌توانید از SDKهای استاندارد استفاده کنید.

سربار OpenTelemetry چقدر است؟

در حالت معمول ۲–۵٪ CPU بسته به نمونه‌برداری و اینتگریشن‌ها. نرخ نمونه‌برداری و نوع اسپن‌ها قابل تنظیم است.

آیا می‌توانم نمونه‌برداری کنم؟

بله، سراسری یا در سطح مسیر/اسپن. می‌توانید روی خطا/کندی نمونه‌برداری را بالا ببرید.

کارهای پس‌زمینه پشتیبانی می‌شود؟

بله، برای جاب/صف/کران می‌توانید اسپن‌های سفارشی بسازید و به Trace متصل کنید.

نرمال‌سازی مسیرها چگونه است؟

بخش‌های پویا (مانند /users/:id) نرمال می‌شوند تا کاردینالیتی کنترل شود و نمودارها معنادار بمانند.

متن کوئری دیتابیس قابل مشاهده است؟

در محیط‌های حساس فقط زمان و نام جدول را ذخیره کنید. امکان ماسک/حذف بخش‌های حساس وجود دارد.

آمادهٔ رهگیری اولین درخواست هستید؟

OpenTelemetry را پیکربندی کنید و مسیرها، کوئری‌ها و خطاها را زنده ببینید.