A user-friendly package to use Prometheus HTTP-API in more easier way.
import { PrometheusQuery, PrometheusRules, PrometheusMetadata } from 'prom-api-client';
// Prometheus Query -->
const prometheusQueryInstance = new PrometheusQuery('http://localhost:9090');
// Prometheus Alert
const prometheusAlertInstance = new PrometheusRules('http://localhost:9090');
// Prometheus Metadata
const prometheusMetadataInstance = new PrometheusMetadata('http://localhost:9090');
This will helps to add additional headers (enables to pass the tenant Id)
// Passed the headers on instance definition
const headers = {
// used in MIMIR to support multi-tenant
'X-Scope-OrgID': "dd51439f-64f6-42d3-92c1-634faf6af418",
}
const prometheusAlertInstance = new PrometheusRules('http://localhost:9090', headers);
// OR used it as a chain
const prometheusAlertInstance = new PrometheusRules('http://localhost:9090');
const activeAlertData = await prometheusAlertInstance.setHeaders(headers).getActiveAlerts();
const alertRules = await prometheusAlertInstance.getAlertRules({rule_name: 'test'});
const activeAlertData = await prometheusAlertInstance.getActiveAlerts();
const queryResult = await prometheusQueryInstance.getQueryInstant({
query: 'up'
});
const data = await prometheusQueryInstance.getQueryRange({
query: 'up{job="prometheus"}',
start: '1711046500',
end: '1711046510',
step: '2s'
});
const dataLabel = await prometheusQueryInstance.getLabelNames();
const dataLabel = await prometheusQueryInstance.getLabelNames({
match: ['up{job="prometheus"}'],
start: 1711217119,
end: 1711217121,
});
const dataSeries = await prometheusQueryInstance.getSeries({
match: ['up{job="prometheus"}'],
start: 1711217119,
end: 1711217121,
});
const dataLabelValues = await prometheusQueryInstance.getLabelValuesByLabelName('job', {
match: ['up{job="prometheus"}']
});
const alertmanagerData = await prometheusMetadataInstance.getAlertManagerList();
console.log(JSON.stringify(alertmanagerData));
const allTargetDiscovery = await prometheusMetadataInstance.getTargetDiscovery();
const targetDiscovery = await prometheusMetadataInstance.getTargetDiscovery({
state: 'dropped',
scrapePool: 'prometheus'
});
const targetMeta = await prometheusMetadataInstance.getTargetMetadata({
match_target: '{job="prometheus"}',
metric: 'go_goroutines',
limit: 2,
});
const metaData = await prometheusMetadataInstance.getMetadata({
metric: 'http_requests_total'
});
const promFlag = await prometheusMetadataInstance.getFlag();
console.log(promFlag);
const promRuntimeInfo = await prometheusMetadataInstance.getRunTimeInfo()
console.log(promRuntimeInfo);
const promBuildInfo = await prometheusMetadataInstance.getBuildInfo()
console.log(promBuildInfo);
const promTsdb = await prometheusMetadataInstance.getTsdb()
console.log(JSON.stringify(promTsdb));
const walreplay = await prometheusMetadataInstance.getWlRePlay()
console.log(JSON.stringify(walreplay));