Kotlin में Prometheus मेट्रिक्स: पूर्ण इंटीग्रेशन गाइड
आधुनिक डेवलपमेंट में, ऐप की स्थिरता बनाए रखने के लिए मॉनिटरिंग और मेट्रिक्स कलेक्शन बेहद ज़रूरी है। Prometheus एक लीडिंग ओपन-सोर्स मॉनिटरिंग सिस्टम है जो परफॉरमेंस डेटा को इकट्ठा, स्टोर और एनालाइज़ करता है। इस लेख में, हम Micrometer लाइब्रेरी और कस्टम HTTP सर्वर का उपयोग करके Kotlin ऐप में Prometheus मेट्रिक्स जोड़ना सीखेंगे।
Kotlin के साथ Prometheus क्यों इस्तेमाल करें?
- लचीलापन: Prometheus कई प्रकार के मेट्रिक्स सपोर्ट करता है: काउंटर, हिस्टोग्राम, समरीज़ और गेज।
- बिल्ट-इन इंटीग्रेशन: Kotlin Java इकोसिस्टम के साथ पूरी तरह कम्पैटिबल है, जिससे Micrometer का उपयोग आसान हो जाता है।
- स्केलेबिलिटी: Prometheus माइक्रोसर्विसेज और डिस्ट्रीब्यूटेड सिस्टम की मॉनिटरिंग के लिए आसानी से स्केल हो जाता है।
Gradle के साथ प्रोजेक्ट सेटअप
शुरुआत करने के लिए, build.gradle.kts फ़ाइल में डिपेंडेंसी जोड़ें:
dependencies {
implementation("io.micrometer:micrometer-core:1.12.0")
implementation("io.micrometer:micrometer-registry-prometheus:1.12.0")
// HTTP सर्वर के लिए (Ktor का उपयोग)
implementation("io.ktor:ktor-server-netty:2.3.7")
implementation("io.ktor:ktor-server-content-negotiation:2.3.7")
}
Prometheus रजिस्ट्री बनाना
मेट्रिक्स कलेक्शन का आधार PrometheusMeterRegistry है। इसे अपने ऐप में बनाएं:
import io.micrometer.prometheus.PrometheusConfig
import io.micrometer.prometheus.PrometheusMeterRegistry
val registry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT)
मेट्रिक्स डिफाइन करना
तीन मुख्य प्रकार के मेट्रिक्स देखें:
- Counter — एक काउंटर जो केवल बढ़ता है (जैसे, रिक्वेस्ट की संख्या)।
- Gauge — वर्तमान मान (जैसे, एक्टिव यूज़र्स की संख्या)।
- Timer — ऑपरेशन के निष्पादन का समय।
मेट्रिक्स बनाने का उदाहरण:
import io.micrometer.core.instrument.Counter
import io.micrometer.core.instrument.Gauge
import io.micrometer.core.instrument.Timer
val requestCounter: Counter = Counter
.builder("api.requests.total")
.description("API को कुल रिक्वेस्ट की संख्या")
.register(registry)
val activeUsersGauge: Gauge = Gauge
.builder("app.users.active")
.description("एक्टिव यूज़र्स की संख्या")
.register(registry) { activeUsersCount }
val requestTimer: Timer = Timer
.builder("api.requests.duration")
.description("रिक्वेस्ट निष्पादन का समय")
.register(registry)
var activeUsersCount = 0
HTTP के माध्यम से मेट्रिक्स एक्सपोर्ट करना
Prometheus को मेट्रिक्स कलेक्ट करने के लिए, उन्हें /metrics फॉर्मेट में एक्सपोर्ट करना होगा। एंडपॉइंट बनाने के लिए Ktor का उपयोग करें:
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty
import io.ktor.server.routing.get
import io.ktor.server.routing.routing
import io.ktor.server.response.respondText
fun startMetricsServer(port: Int = 9090) {
embeddedServer(Netty, port = port) {
routing {
get("/metrics") {
val scrape = registry.scrape()
call.respondText(scrape, contentType = io.ktor.http.ContentType.Text.Plain)
}
}
}.start(wait = false)
}
बिज़नेस लॉजिक के साथ इंटीग्रेशन
अपने ऐप के कोड में मेट्रिक्स अपडेट करें:
fun handleRequest() {
requestTimer.record {
// रिक्वेस्ट प्रोसेसिंग का सिमुलेशन
Thread.sleep(100)
requestCounter.increment()
}
}
fun userLoggedIn() {
activeUsersCount++
}
fun userLoggedOut() {
activeUsersCount--
}
पूरा ऐप उदाहरण
सब कुछ एक साथ जोड़ते हैं:
पुस्तकालय में भी
C# (.NET) में GraphQL: GraphQL.NET लाइब्रेरी के लिए पूर्ण गाइड
Express.js JavaScript (Node.js): पूर्ण गाइड उदाहरण सहित
Swift में Excel के साथ कार्य: iOS/macOS के लिए लाइब्रेरी और टूल्स की संपूर्ण मार्गदर्शिका
Node.js OAuth क्लाइंट: Google और GitHub से लॉगिन करना सीखें