Prometheus मेट्रिक्स Swift (iOS/macOS) में
Prometheus एक शक्तिशाली ओपन-सोर्स मॉनिटरिंग और अलर्टिंग सिस्टम है जो HTTP के माध्यम से लक्ष्य ऐप्स से मेट्रिक्स एकत्र करता है। iOS और macOS के लिए Swift इकोसिस्टम में कई लाइब्रेरीज़ मौजूद हैं जो 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"] ) ])या Podfile में CocoaPods के माध्यम से:
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) // 2 से बढ़ाएंtemperature.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 ऐप्स के लिए, Prometheus सर्वर पर मेट्रिक्स भेजने के लिए अंतर्निहित URLSession का उपयोग किया जा सकता है:
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()}अतिरिक्त सुविधाएँ
- लेबल