package org.kie.server.ext.prometheus;
import io.prometheus.client.Gauge;
import org.kie.dmn.api.core.ast.DecisionNode;
import org.kie.dmn.api.core.event.AfterEvaluateBKMEvent;
import org.kie.dmn.api.core.event.AfterEvaluateContextEntryEvent;
import org.kie.dmn.api.core.event.AfterEvaluateDecisionEvent;
import org.kie.dmn.api.core.event.AfterEvaluateDecisionServiceEvent;
import org.kie.dmn.api.core.event.AfterEvaluateDecisionTableEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateBKMEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateContextEntryEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateDecisionEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateDecisionServiceEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateDecisionTableEvent;
import org.kie.dmn.api.core.event.DMNRuntimeEventListener;
import org.kie.server.api.model.ReleaseId;
import org.kie.server.services.api.KieContainerInstance;
public class ExampleCustomPrometheusMetricListener implements DMNRuntimeEventListener {
private final KieContainerInstance kieContainer;
private final Gauge randomGauge = Gauge.build()
.name("random_gauge_nanosecond")
.help("Random gauge as an example of custom KIE Prometheus metric")
.labelNames("container_id", "group_id", "artifact_id", "version", "decision_namespace", "decision_name")
.register();
public ExampleCustomPrometheusMetricListener(KieContainerInstance containerInstance) {
kieContainer = containerInstance;
}
public void beforeEvaluateDecision(BeforeEvaluateDecisionEvent e) {
}
public void afterEvaluateDecision(AfterEvaluateDecisionEvent e) {
DecisionNode decisionNode = e.getDecision();
ReleaseId releaseId = kieContainer.getResource().getReleaseId();
randomGauge.labels(kieContainer.getContainerId(), releaseId.getGroupId(),
releaseId.getArtifactId(), releaseId.getVersion(),
decisionNode.getModelName(), decisionNode.getModelNamespace())
.set((int) (Math.random() * 100));
}
public void beforeEvaluateBKM(BeforeEvaluateBKMEvent event) {
}
public void afterEvaluateBKM(AfterEvaluateBKMEvent event) {
}
public void beforeEvaluateContextEntry(BeforeEvaluateContextEntryEvent event) {
}
public void afterEvaluateContextEntry(AfterEvaluateContextEntryEvent event) {
}
public void beforeEvaluateDecisionTable(BeforeEvaluateDecisionTableEvent event) {
}
public void afterEvaluateDecisionTable(AfterEvaluateDecisionTableEvent event) {
}
public void beforeEvaluateDecisionService(BeforeEvaluateDecisionServiceEvent event) {
}
public void afterEvaluateDecisionService(AfterEvaluateDecisionServiceEvent event) {
}
}
package org.kie.server.ext.prometheus;
import io.prometheus.client.Gauge;
import org.kie.dmn.api.core.ast.DecisionNode;
import org.kie.dmn.api.core.event.AfterEvaluateBKMEvent;
import org.kie.dmn.api.core.event.AfterEvaluateContextEntryEvent;
import org.kie.dmn.api.core.event.AfterEvaluateDecisionEvent;
import org.kie.dmn.api.core.event.AfterEvaluateDecisionServiceEvent;
import org.kie.dmn.api.core.event.AfterEvaluateDecisionTableEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateBKMEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateContextEntryEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateDecisionEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateDecisionServiceEvent;
import org.kie.dmn.api.core.event.BeforeEvaluateDecisionTableEvent;
import org.kie.dmn.api.core.event.DMNRuntimeEventListener;
import org.kie.server.api.model.ReleaseId;
import org.kie.server.services.api.KieContainerInstance;
public class ExampleCustomPrometheusMetricListener implements DMNRuntimeEventListener {
private final KieContainerInstance kieContainer;
private final Gauge randomGauge = Gauge.build()
.name("random_gauge_nanosecond")
.help("Random gauge as an example of custom KIE Prometheus metric")
.labelNames("container_id", "group_id", "artifact_id", "version", "decision_namespace", "decision_name")
.register();
public ExampleCustomPrometheusMetricListener(KieContainerInstance containerInstance) {
kieContainer = containerInstance;
}
public void beforeEvaluateDecision(BeforeEvaluateDecisionEvent e) {
}
public void afterEvaluateDecision(AfterEvaluateDecisionEvent e) {
DecisionNode decisionNode = e.getDecision();
ReleaseId releaseId = kieContainer.getResource().getReleaseId();
randomGauge.labels(kieContainer.getContainerId(), releaseId.getGroupId(),
releaseId.getArtifactId(), releaseId.getVersion(),
decisionNode.getModelName(), decisionNode.getModelNamespace())
.set((int) (Math.random() * 100));
}
public void beforeEvaluateBKM(BeforeEvaluateBKMEvent event) {
}
public void afterEvaluateBKM(AfterEvaluateBKMEvent event) {
}
public void beforeEvaluateContextEntry(BeforeEvaluateContextEntryEvent event) {
}
public void afterEvaluateContextEntry(AfterEvaluateContextEntryEvent event) {
}
public void beforeEvaluateDecisionTable(BeforeEvaluateDecisionTableEvent event) {
}
public void afterEvaluateDecisionTable(AfterEvaluateDecisionTableEvent event) {
}
public void beforeEvaluateDecisionService(BeforeEvaluateDecisionServiceEvent event) {
}
public void afterEvaluateDecisionService(AfterEvaluateDecisionServiceEvent event) {
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow