مقاييس Prometheus في Swift: مراقبة تطبيقات iOS/macOS

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقاييس Prometheus في Swift (iOS/macOS)

Prometheus هو نظام مراقبة وتنبيه مفتوح المصدر وقوي، يقوم بجمع المقاييس من التطبيقات المستهدفة عبر HTTP. في بيئة Swift لنظامي iOS وmacOS، توجد عدة مكتبات تسمح بتصدير المقاييس بتنسيق Prometheus. في هذه المقالة، سنستعرض مكتبة SwiftPrometheus - وهي أداة خفيفة الوزن لجمع وتصدير المقاييس في تطبيقات Swift.



ما هو SwiftPrometheus؟

SwiftPrometheus هي مكتبة عميل بلغة Swift، تطبق مواصفات Prometheus. تتيح إنشاء ثلاثة أنواع رئيسية من المقاييس: Counter (عداد)، Gauge (مقياس)، وHistogram (مدرج تكراري). المكتبة مكتوبة بالكامل بلغة Swift، وتدعم iOS 13+، macOS 10.15+، watchOS 6+، وtvOS 13+.



التثبيت

أضف التبعية إلى ملف Package.swift الخاص بك:

// swift-tools-version:5.5import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/QuickBirdEng/SwiftPrometheus.git", from: "2.0.0") ], targets: [ .target( name: "MyApp", dependencies: ["SwiftPrometheus"] ) ])


أو عبر CocoaPods في ملف Podfile:

pod 'SwiftPrometheus', '~> 2.0'


الأنواع الرئيسية للمقاييس

  • Counter — عداد متزايد بشكل رتيب (مثل عدد الطلبات).
  • Gauge — قيمة يمكن أن تنخفض وتزداد (مثل درجة الحرارة الحالية).
  • Histogram — توزيع القيم عبر فترات زمنية محددة (مثل وقت الاستجابة).


مثال على استخدام Counter

import SwiftPrometheus

let prometheus = Prometheus()let httpRequests = prometheus.createCounter(for: "http_requests_total", help: "Total number of HTTP requests", labels: ["method", "path"])

httpRequests.inc() // +1httpRequests.inc(5) // +5httpRequests.labels(["GET", "/api/v1/users"]).inc() // مع تسميات


مثال على استخدام Gauge

let temperature = prometheus.createGauge(for: "device_temperature_celsius",                                         help: "Current device temperature")

temperature.set(36.5) // تعيين القيمةtemperature.inc(2.0) // زيادة بمقدار 2temperature.dec(1.0) // تقليل بمقدار 1


مثال على استخدام Histogram

let requestDuration = prometheus.createHistogram(for: "request_duration_seconds",                                                help: "Request duration in seconds",                                                buckets: [0.1, 0.5, 1.0, 2.5, 5.0])

requestDuration.observe(0.3) // تسجيل القيمة


تصدير المقاييس بتنسيق Prometheus

للتصدير، قم بإنشاء نقطة نهاية HTTP (endpoint) تقوم بتقديم المقاييس بتنسيق نصي. مثال باستخدام Vapor (الجانب الخادم):

import Vaporimport SwiftPrometheus

func routes(_ app: Application) throws { app.get("metrics") { req in let metrics = prometheus.collect() return Response(body: .init(string: metrics)) }}


لتطبيقات iOS/macOS، يمكن استخدام URLSession المدمج لإرسال المقاييس إلى خادم Prometheus:

func sendMetrics() {    let metrics = prometheus.collect()    var request = URLRequest(url: URL(string: "https://pushgateway.example.org/metrics")!)    request.httpMethod = "POST"    request.httpBody = metrics.data(using: .utf8)    URLSession.shared.dataTask(with: request).resume()}


إمكانيات إضافية

  • تسميات

توصيات