Swift (iOS/macOS) में Prometheus मेट्रिक्स: मोबाइल और डेस्कटॉप ऐप्स की निगरानी
Prometheus एक ओपन-सोर्स मॉनिटरिंग और अलर्टिंग सिस्टम है जो टाइम-सीरीज़ के रूप में मेट्रिक्स इकट्ठा करता है। Apple इकोसिस्टम (iOS और macOS) में Prometheus का उपयोग करके आप ऐप के प्रदर्शन, उपयोगकर्ता व्यवहार, नेटवर्क स्थिति और अन्य महत्वपूर्ण मापदंडों को ट्रैक कर सकते हैं। इस लेख में हम जानेंगे कि Swift प्रोजेक्ट्स में Prometheus मेट्रिक्स कैसे शामिल करें, इसके लिए कौन सी लाइब्रेरी उपलब्ध हैं और डेटा एक्सपोर्ट कैसे सेट करें।
मोबाइल ऐप्स में Prometheus मेट्रिक्स की आवश्यकता क्यों?
मोबाइल और डेस्कटॉप ऐप्स अक्सर सीमित संसाधनों और अस्थिर कनेक्शन की स्थितियों में काम करते हैं। मेट्रिक्स संग्रह से मदद मिलती है:
- प्रदर्शन की बाधाओं की पहचान (UI लैग, मेमोरी लीक)
- त्रुटियों की आवृत्ति और प्रकार ट्रैक करना (क्रैश, नेटवर्क एरर)
- उपयोगकर्ता व्यवहार का विश्लेषण (सत्र अवधि, स्क्रीन)
- महत्वपूर्ण मूल्यों पर अलर्ट सेट करना (जैसे, API रिस्पॉन्स टाइम > 5 सेकंड)
Prometheus मेट्रिक्स के मुख्य प्रकार
Prometheus चार मुख्य मेट्रिक प्रकारों को सपोर्ट करता है, जिन्हें Swift में लागू किया जा सकता है:
- Counter (काउंटर) — एकतरफा बढ़ने वाला मान (अनुरोधों की संख्या, त्रुटियां)
- Gauge (गेज) — कोई भी मान जो बढ़ या घट सकता है (वर्तमान मेमोरी, सक्रिय उपयोगकर्ता)
- Histogram (हिस्टोग्राम) — निर्धारित अंतरालों में मानों का वितरण (फ़ंक्शन निष्पादन समय)
- Summary (समरी) — क्वांटाइल के साथ वितरण (विलंबता)
Swift के लिए लाइब्रेरी
वर्तमान में Swift में Prometheus के लिए सबसे लोकप्रिय लाइब्रेरी SwiftPrometheus है। यह मेट्रिक्स बनाने और रजिस्टर करने के लिए एक सरल API प्रदान करती है, और Prometheus-संगत प्रारूप में एक्सपोर्ट को सपोर्ट करती है।
Swift Package Manager के माध्यम से इंस्टॉलेशन:
// Package.swift
dependencies: [
.package(url: "https://github.com/reddavis/SwiftPrometheus.git", from: "1.0.0")
]
Swift कोड उदाहरण
1. API अनुरोधों के लिए काउंटर बनाना
import SwiftPrometheus
let prometheus = Prometheus()
let apiRequests = prometheus.createCounter(
named: "api_requests_total",
help: "API अनुरोधों की कुल संख्या",
labels: ["endpoint"]
)
// प्रत्येक अनुरोध पर वृद्धि
apiRequests.inc(["endpoint": "/users"])
apiRequests.inc(["endpoint": "/posts"])
2. मेमोरी ट्रैक करने के लिए गेज
let memoryGauge = prometheus.createGauge(
named: "app_memory_bytes",
help: "बाइट्स में वर्तमान मेमोरी उपयोग"
)
// मेमोरी बदलने पर अपडेट
memoryGauge.set(Double(reportMemoryUsage()))
3. डेटा लोड समय के लिए हिस्टोग्राम
let loadDuration = prometheus.createHistogram(
named: "data_load_duration_seconds",
help: "डेटा लोडिंग समय का हिस्टोग्राम",
buckets: [0.1, 0.5, 1.0, 2.0, 5.0]
)
let start = CFAbsoluteTimeGetCurrent()
// ... डेटा लोड करें
let elapsed = CFAbsoluteTimeGetCurrent() - start
loadDuration.observe(elapsed)
Prometheus में मेट्रिक्स एक्सपोर्ट करना
Prometheus को मेट्रिक्स इकट्ठा करने के लिए, आपके ऐप को एक एंडपॉइंट प्रदान करना होगा जो टेक्स्ट फॉर्मेट (plain text exposition format) में डेटा लौटाए। iOS/macOS के लिए, यह एक लोकल HTTP सर्वर (जैसे, Network.framework या थर्ड-पार्टी लाइब्रेरी) के माध्यम से किया जा सकता है।
एक्सपोर्ट के लिए सरल HTTP सर्वर का उदाहरण:
import SwiftPrometheus
import Network
class MetricsServer {
let prometheus: Prometheus
var listener: NWListener?
init(prometheus: Prometheus, port: UInt16 = 9090) {
self.prometheus = prometheus
startServer(port: port)
}
private func startServer(port: UInt16) {
let params = NWParame