Datadog یک پلتفرم مشاهدهپذیری ابری است که مانیتورینگ زیرساخت، APM، لاگگیری و تجربه دیجیتال را در یک رابط واحد ترکیب میکند. این پلتفرم معیارها، ترِیسها و لاگها را از سرورها، کانتینرها و دستگاههای موبایل در زمان واقعی جمعآوری میکند و به تیمها امکان میدهد ریشه مشکلات را سریع پیدا کنند. به گزارش Datadog، 2025، این پلتفرم روزانه بیش از ۲.۵ پتابایت داده از هزاران مشتری در سراسر جهان پردازش میکند. برای توسعهدهندگان موبایل، Datadog SDKهای بومی برای Android و iOS با جمعآوری خودکار معیارهای عملکرد ارائه میدهد.
نکات کلیدی
Datadog یک پلتفرم ابری برای مانیتورینگ و مشاهدهپذیری است که در سال ۲۰۱۰ توسط اولیویه پومل و الکسیس لو-کیوک راهاندازی شد. این پلتفرم یک پنل واحد برای جمعآوری معیارها، لاگها و ترِیسها از زیرساخت، برنامهها و دستگاههای کاربران فراهم میکند. برخلاف راهحلهای نقطهای، Datadog APM، لاگها، مانیتورینگ زیرساخت، Synthetic Monitoring و RUM را در یک محصول واحد ترکیب میکند.
معماری Datadog بر اساس عاملها (agent) ساخته شده است - برنامههای سبکی که روی سرورها نصب یا در برنامهها جاسازی میشوند. عامل دادهها را جمعآوری کرده و از طریق اتصال رمزگذاریشده به زیرساخت ابری Datadog ارسال میکند. برای پلتفرمهای موبایل، Datadog SDKهای بومی ارائه میدهد که روی Android (Kotlin, Java) و iOS (Swift, Objective-C) کار میکنند.
طبق گزارش Gartner Magic Quadrant for APM and Observability (2024)، Datadog به عنوان رهبر در رده مشاهدهپذیری با گستردهترین مجموعه قابلیتهای یکپارچه شناخته شده است. این پلتفرم توسط شرکتهایی مانند Samsung، Adidas و Peloton برای مانیتورینگ روزانه میلیونها دستگاه استفاده میشود.
برای تیمهای موبایل، Datadog به ویژه ارزشمند است زیرا عملکرد بکاند را با تجربه کاربری روی دستگاه مرتبط میکند. اگر API کندتر پاسخ دهد، Datadog نه تنها زمان پاسخ سرور، بلکه تأثیر آن بر زمان راهاندازی یا رندر صفحه در مدل خاصی از تلفن را نشان میدهد.
Infrastructure Monitoring معیارهای CPU، حافظه، دیسک و شبکه را برای سرورها، کانتینرها و کلاسترهای Kubernetes ردیابی میکند. APM (Application Performance Monitoring) برای هر درخواست عبوری از سیستم توزیعشده ترِیس جمعآوری میکند و تأخیرها را در هر مرحله نشان میدهد. Log Management همه لاگها - از سیستمی تا کاربردی - را با قابلیت جستجوی تمام متن و ایجاد معیارها بر اساس لاگها متمرکز میکند. Synthetic Monitoring سناریوهای کاربر را از نقاط جغرافیایی مختلف شبیهسازی میکند. Real User Monitoring (RUM) دادهها را از دستگاههای واقعی کاربران از جمله تلفنها و تبلتها جمعآوری میکند.
Datadog از مدل pay-as-you-go با تقسیمبندی بر اساس محصولات استفاده میکند: هاستهای زیرساخت، هاستهای APM، لاگها (حجم بر حسب گیگابایت)، جلسات RUM و تستهای Synthetic. هر محصول جداگانه قیمتگذاری میشود که این امکان را میدهد فقط برای قابلیتهای استفادهشده پرداخت کنید. هزینه از ۱۵ دلار به ازای هر هاست در ماه برای مانیتورینگ زیرساخت و از ۱ دلار به ازای ۱۰,۰۰۰ جلسه RUM شروع میشود. برای استارتاپها برنامه Datadog for Startups با اعتبار تا ۱۰۰,۰۰۰ دلار در دسترس است.
Application Performance Monitoring (APM) در Datadog یک سیستم distributed tracing است که هر درخواست را از لحظه ورود به سیستم تا تکمیل تمام عملیاتهای تو در تو ردیابی میکند. APM به طور خودکار فریمورکها و کتابخانههای محبوب را instrument میکند: Spring Boot، Django، Express.js، ASP.NET Core و دیگران. برای هر درخواست، APM یک flame graph - نمایش تصویری زمان اجرای تمام بخشهای کد - میسازد.
Flame graph نشان میدهد که هر فراخوانی تابع یا درخواست به سرویس خارجی چقدر زمان برده است. اگر متد پایگاه داده به جای ۲۰۰ میلیثانیه مورد انتظار، ۲ ثانیه اجرا شود، بلافاصله روی نمودار قابل مشاهده است. Datadog APM از OpenTelemetry - استاندارد باز جمعآوری تلهمتری - پشتیبانی میکند که امکان اتصال ابزارهای instrument از هر ارائهدهنده سازگاری را فراهم میکند.
طبق وبلاگ مهندسی Benchling (2024)، مهاجرت به Datadog APM به تیم اجازه داد زمان تشخیص رویدادها را از ۴۵ دقیقه به ۸ دقیقه کاهش دهد، که به لطف همبستگی خودکار ترِیسها با لاگها و معیارها امکانپذیر شد. سناریوی کلیدی trace-to-log correlation است: با یک trace ID میتوان تمام لاگهای مربوط به یک درخواست خاص را بدون جستجوی دستی پیدا کرد.
Service Map یک نمودار گرافی خودکار ساخته شده از تمام سرویسهای سیستم و ارتباطات متقابل آنهاست. هر سرویس به عنوان یک گره نمایش داده میشود و اتصالات بین گرهها نشان میدهد که چه فراخوانیهایی بین سرویسها رخ میدهد. رنگ گره وضعیت سلامت را منعکس میکند: سبز - عملکرد عادی، زرد - تأخیر افزایشیافته، قرمز - خطاها. Service Map به شناسایی سریع سرویس گلوگاهی حتی بدون مطالعه قبلی معماری کمک میکند.
import datadog.trace.api.Trace;
import io.opentelemetry.api.trace.Span;
public class PaymentService {
@Trace(resourceName = "PaymentService.processPayment")
public PaymentResult processPayment(Order order) {
Span span = Tracer.buildSpan("validate.payment").start();
try {
PaymentGateway gateway = new PaymentGateway();
PaymentResult result = gateway.charge(order.getAmount());
span.setTag("payment.provider", "stripe");
return result;
} finally {
span.close();
}
}
}
Real User Monitoring (RUM) در Datadog دادهها را از دستگاههای واقعی کاربران جمعآوری میکند - زمان بارگذاری صفحهها، پاسخ به لمسها، مصرف حافظه، فراوانی ANR (Application Not Responding) و نرخ crash. RUM SDK برای Android و iOS در برنامه جاسازی میشود و به طور خودکار جلساتی ایجاد میکند و تمام رویدادها را در چارچوب یک تعامل کاربر گروهبندی میکند.
هر جلسه RUM شامل دنبالهای از رویدادهاست: باز شدن صفحه، فشردن دکمه، درخواست شبکه، اسکرول. برای هر رویداد، Datadog یک برچسب زمانی، مدت زمان و مشخصات فنی دستگاه را ثبت میکند: مدل، سیستمعامل، نسخه برنامه، نوع اتصال. این امکان فیلتر کردن معیارها بر اساس نسخهها و دستگاههای خاص را فراهم میکند. به عنوان مثال، میتوان دید که زمان راهاندازی در Android 14 با استفاده از مدل خاصی از Samsung افزایش یافته است.
RUM به طور نزدیک با APM یکپارچه شده است: اگر جلسه کاربر با خطا در صفحه پرداخت به پایان برسد، Datadog به طور خودکار ترِیس مربوطه را از بکاند نشان میدهد. این کار تشخیص را ۵-۷ برابر در مقایسه با تطبیق دستی لاگهای فرانتاند و بکاند تسریع میکند. برای تیمهای موبایل، RUM همچنین گزارشهای watchlist - خلاصه هفتگی از بدتر شدن معیارهای کلیدی - ارائه میدهد.
Datadog RUM به طور خودکار گزارشهای crash را با stacktrace کامل شامل شماره خطوط کد منبع جمعآوری میکند. برای Android این کار از طریق ادغام با ACRA یا Firebase Crashlytics و برای iOS از طریق PLCrashReporter انجام میشود. هر crash به جلسه کاربر متصل میشود که امکان بازتولید دنباله اقدامات منجر به سقوط را فراهم میکند. RUM همچنین ANR - یکی از بحرانیترین رویدادها برای برنامههای Android - را ردیابی میکند. اگر برنامه بیش از ۵ ثانیه پاسخ ندهد، Datadog ANR را ثبت و dump کامل thread را در لحظه مسدود شدن UI نشان میدهد.
Log Management در Datadog تمام لاگهای برنامه و زیرساخت را در یک مخزن واحد با جستجوی تمام متن متمرکز میکند. لاگهای موبایل (رویدادهای تحلیلی، خطاهای API، تلهمتری) از طریق SDK از دستگاه ارسال شده و با لاگهای سرور با شناسه مشترک ترکیب میشوند. Datadog به طور خودکار لاگها را به فیلدهای ساختاریافته تجزیه میکند: سطح (INFO, WARN, ERROR)، سرویس، هاست، برچسب زمانی، پیام.
برای فیلتر کردن لاگها از زبان پرسوجوی خود با پشتیبانی از wildcard، عبارات منظم و facetها استفاده میشود. لاگها را میتوان بر اساس الگوها گروهبندی کرد - Datadog به طور خودکار الگوهای تکراری را تشخیص داده و آنها را به عنوان یک خوشه نشان میدهد. این به ویژه هنگام تجزیه و تحلیل هزاران لاگ از دستگاههای موبایل مفید است: خطاهای یکسان گروهبندی میشوند و توسعهدهنده به جای ۱۰,۰۰۰ خط، ۱۰ خوشه با فراوانی وقوع میبیند.
Metrics سریهای زمانی عددی هستند که در بازههای ۱ ثانیه جمعآوری میشوند. Datadog از سه نوع معیار پشتیبانی میکند: gauge (مقدار فعلی)، count (مجموع در بازه) و rate (سرعت تغییر). برای برنامههای موبایل، معیارهای سفارشی میتوانند تعداد باز شدن صفحه، زمان اجرای سناریوی کلیدی کسبوکار یا فراوانی استفاده از یک تابع خاص را ردیابی کنند. معیارهای سفارشی از طریق DogStatsD - پروتکل سازگار با StatsD با افزونههای Datadog - ارسال میشوند.
import com.datadog.android.Datadog
import com.datadog.android.log.Logger
class PaymentAnalytics {
private val logger = Logger.Builder()
.setDatadogLogsEnabled(true)
.setNetworkInfoEnabled(true)
.setBundleWithTraceEnabled(true)
.build()
fun trackCheckout(orderId: String, amount: Double) {
logger.info(
"Checkout initiated for order {orderId}",
mapOf(
"order.id" to orderId,
"order.amount" to amount,
"payment.method" to "credit_card"
)
)
}
}
Datadog SDK برای Android و iOS مجموعهای یکپارچه از ماژولها ارائه میدهد: Core (راهاندازی)، RUM (مانیتورینگ تجربه کاربر)، Logs (ارسال لاگ)، Trace (ردیابی درخواست). برای Android SDK از طریق Gradle و برای iOS از طریق CocoaPods یا Swift Package Manager اضافه میشود. پس از نصب، SDK در Application.onCreate (Android) یا AppDelegate (iOS) با ارسال client token، environment و نام برنامه راهاندازی میشود.
برای ردیابی خودکار درخواستهای شبکه در Android از OkHttp Interceptor و در iOS از NSURLProtocol یا URLSession delegate استفاده میشود. Datadog همچنین از ادغام با کلاینتهای HTTP محبوب پشتیبانی میکند: Retrofit، Apollo GraphQL، Ktor، Alamofire. پس از اتصال Interceptor، هر درخواست HTTP به طور خودکار به جلسه RUM و APM-trace متصل میشود و یک زنجیره واحد از کلاینت تا سرور تشکیل میدهد.
dependencies {
// SDK و ماژول RUM اصلی
implementation "com.datadoghq:dd-sdk-android-core:2.15.0"
implementation "com.datadoghq:dd-sdk-android-rum:2.15.0"
// یکپارچگی با OkHttp برای ردیابی خودکار
implementation "com.datadoghq:dd-sdk-android-okhttp:2.15.0"
// NDK crash reporting
implementation "com.datadoghq:dd-sdk-android-ndk:2.15.0"
}
import DatadogCore
import DatadogRUM
import DatadogLogs
@main class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Datadog.initialize(
with: DatadogConfiguration.builder(
clientToken: "your_client_token",
environment: "production"
).build()
)
RUM.enable(
with: RUMConfiguration(applicationID: "your_rum_app_id")
)
return true
}
}
Datadog ویرایشگر گرافیکی داشبورد ارائه میدهد که در آن میتوان نمودارهای معیارها، جداول لاگها، treemap توزیع خطاها و ویجتهای SLO را ترکیب کرد. داشبوردها از متغیرهای الگو پشتیبانی میکنند - به عنوان مثال، میتوان یک داشبورد برای همه سرویسها ایجاد کرد و زمینه را از طریق لیست کشویی با نام سرویس تغییر داد. هر داشبورد را میتوان در حالت فقط خواندنی برای ذینفعان خارجی از طریق لینک عمومی منتشر کرد.
سیستم Monitors (اعلانها) امکان تعیین شرایط آستانه برای هر معیاری را فراهم میکند: اگر تأخیر بیش از ۵ دقیقه از ۵۰۰ میلیثانیه تجاوز کند - اعلانی به Slack، PagerDuty یا ایمیل ارسال کن. Datadog از شرایط ترکیبی پشتیبانی میکند: "اگر خطاهای 5xx > 1% و تعداد درخواستها > 1000/دقیقه، اولویت را به بحرانی افزایش بده". برای تیمهای موبایل، مانیتور regression detection به ویژه مفید است - Datadog به طور خودکار معیار جاری را با خط پایه تاریخی مقایسه کرده و در صورت بدتر شدن از نظر آماری معنیدار اعلان میدهد.
طبق Gartner Peer Insights (2024)، میانگین زمان حل هشدار (MTTR) در تیمهایی که از مانیتورهای Datadog با همبستگی خودکار استفاده میکنند، در ماه اول پس از پیادهسازی ۳۵٪ کاهش مییابد. این به این دلیل حاصل میشود که هر اعلان نه تنها شرط فعالسازی، بلکه لینک به داشبوردهای مرتبط، لاگها و ترِیسها را نیز شامل میشود - توسعهدهنده نیازی به جابجایی بین ابزارها ندارد.
سوالات متداول
Datadog با یک پلتفرم واحد که معیارها، لاگها، ترِیسها و RUM را در یک رابط ترکیب میکند متمایز میشود. برخلاف Grafana + Prometheus (فقط معیارها) یا ELK (فقط لاگها)، Datadog همبستگی داخلی بین همه انواع داده را بدون نیاز به پیکربندی دستی یکپارچهسازیها فراهم میکند.
هزینه از ۱ دلار به ازای هر ۱۰,۰۰۰ جلسه RUM در ماه شروع میشود. برای پروژههای کوچک با ۵۰,۰۰۰ جلسه در ماه، هزینهها حدود ۵ دلار خواهد بود. APM و لاگها جداگانه قیمتگذاری میشوند. برای استارتاپها، برنامه Datadog for Startups با اعتبار تا ۱۰۰,۰۰۰ دلار در سال اول در دسترس است.
Datadog SDK از Android (API 21+, Kotlin و Java)، iOS (iOS 13+, Swift و Objective-C) و React Native پشتیبانی میکند. برای Flutter و Xamarin یکپارچهسازیهای انجمنی در دسترس است. SDK از طریق Maven Central، CocoaPods و Swift Package Manager توزیع میشود.
Datadog Data Scrubbing - حذف خودکار PII از لاگها و دادههای RUM را فراهم میکند. میتوان قوانین ماسک کردن را تنظیم کرد: جایگزینی ایمیل، تلفن و کارتهای اعتباری با هش یا ستاره. دادهها در هنگام انتقال (TLS 1.3) و ذخیرهسازی (AES-256) رمزگذاری میشوند.
بله، میتوان فقط ماژول Logs را بدون APM و RUM متصل کرد. در این صورت فقط برای حجم لاگها پرداخت میکنید. Datadog هر محصول را جداگانه قیمتگذاری میکند که این امکان را میدهد با یک ماژول شروع کرده و بدون نیاز به ادغام مجدد، بقیه را در صورت نیاز اضافه کنید.
جمعبندی
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید