Node.js Grafana API SDK (Loki, Datasources ..)
- Node.js version 18 or higher
- A reverse-proxy to safely expose Loki to internet (if required).
This package is available in the Node Package Repository and can be easily installed with npm or yarn
$ npm i @myunisoft/loki
# or
$ yarn add @myunisoft/loki
import { GrafanaApi } from "@myunisoft/loki";
import { LogQL, StreamSelector } from "@sigyn/logql";
const api = new GrafanaApi({
// Note: if not provided, it will load process.env.GRAFANA_API_TOKEN
apiToken: "...",
remoteApiURL: "https://name.loki.com"
});
const ql = new LogQL(
new StreamSelector({ app: "serviceName", env: "production" })
);
const logs = await api.Loki.queryRange(
ql, // or string `{app="serviceName", env="production"}`
{
start: "1d",
limit: 200
}
);
console.log(logs);
You can also provide a Loki pattern to automatically parse logs (and infer the right type with TypeScript)
const logs = await api.Loki.queryRange(
`{app="serviceName", env="production"}`
{
pattern: "<verb> <_> <endpoint>"
}
);
for (const { verb, endpoint } of logs) {
console.log({verb, endpoint });
}
export interface GrafanaApiOptions {
/**
* Grafana API Token
*/
apiToken?: string;
/**
* User-agent HTTP header to forward to Grafana/Loki API
* @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agents
*/
userAgent?: string;
/**
* Remote Grafana root API URL
*/
remoteApiURL: string | URL;
}
Thanks goes to these wonderful people (emoji key):
Thomas.G 💻 🛡️ 📖 |
PierreDemailly 💻 |
MIT