Kotlin में Prometheus मेट्रिक्स इंटीग्रेशन: पूरी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

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--
}

पूरा ऐप उदाहरण

सब कुछ एक साथ जोड़ते हैं:

अनुशंसाएँ