This is a Prometheus exporter for Kibana written in Python.
See the changelog.
Configuration is done via environment variables. Available parameters:
| Parameter | Default | Required |
|---|---|---|
| KIBANA_URL | - | Yes |
| LISTEN_PORT | 9563 | No |
| LOG_LEVEL | INFO | No |
| KIBANA_LOGIN | - | No |
| KIBANA_PASSWORD | - | No |
| IGNORE_SSL | FALSE | No |
| REQUESTS_CA_BUNDLE | - | No |
Authentication can also be done via a netrc file. requests natively supports this.
You can provide CA bundle for requests library using the REQUESTS_CA_BUNDLE environment variable
Documentation:
This project is developed using Python 3.7. It will likely work with all supported versions of Python 3, but it's not tested.
This project uses the following libraries:
Install the dependencies:
pip install -r requirements.txt
Run the program specifying options:
KIBANA_URL="https://your_kibana_node.com" python kibana_prometheus_exporter
A docker container is hosted on GitHub Packages. To run it:
docker run -d -p 9563:9563 --name kibana_exporter -e KIBANA_URL="https://your_kibana_node.com" ghcr.io/vladvasiliu/kibana-prometheus-exporter-py:latest
The exporter reads data from the Kibana Stats API. This API only provides "real time" metrics, refreshed every 5 seconds.
As such, some metrics which usually are counters can only be gauges (eg kibana_requests_total).
See below for how Kibana handles this internally :
A possible workaround is setting Kibana ops.interval to the same value as the scrape interval
and using the statistics timestamp from the response as the Prometheus timestamp.
I have noticed since the update to Kibana 6.7 that sometimes the avg request time is missing from the stats dictionary. Source
The reason is probably a division by 0 when there are no requests during the sampling interval. I think it's better to set the value to 0 then to have a gap in the time series.
Please feel free to send a PR for any changes or improvements you may have.
This project uses a branching model inspired by git-flow.
mastershould be ready to be deployed.developis where development happens. May be unstable.feature/*is a work-in-progress on a major new feature.- versions are tagged on master.
It's strongly inspired by Kibana Prometheus Exporter. There are two main reasons I've done this:
- Since version 6 there have been some changes in Kibana itself that interfere with this plugin working correctly with IPv6;
- I want to have a separate exporter that doesn't need updating on every Kibana update.
kibana-prometheus-exporter is created by Vlad Vasiliu.
This project is released under the terms of the GPLv3 license. See COPYING for the full text.