Kibana URL builder
This library allows building Kibana URLs, for instance when sending notifications.
:warning: Generated Kibana URLs have currently been tested on Kibana 6.x only.
Usage
# Using npm
npm install @clickandmortar/kibana-url-builder
# Using Yarn
yarn add @clickandmortar/kibana-url-builder
const kub = require('@clickandmortar/kibana-url-builder')
const url = kub.buildDiscoverUrl({
host: 'http://kibana:5601',
columns: ['_source'],
filters: [],
query: 'my query'
})
Methods
buildDiscoverUrl ({ host, refreshInterval, period, columns, filters, index, interval, query, sort }: KibanaDiscoverUrlBuildParameters): string
This method returns a stateless Kibana "Discover" URL, which can be shared and used by anyone having access to the Kibana instance.
Parameter | Type | Default | Required | Example |
---|
host | string | | ✅ | http://kibana:5601 |
columns | string[] | ['_source'] | | ['_source', 'log'] |
filters | KibanaQueryFilter[] | [] | | See below |
query | string | | | foo AND bar (Lucene syntax) |
period | KibanaQueryPeriod | { "from": "now-15m", "mode": "quick", "to": "now" } | | See below |
index | string | | When using filters | my-index-pattern |
interval | string | auto | | 15m |
refreshInterval | KibanaQueryRefreshInterval | { "pause": true, "value": 300000 } | | |
sort | KibanaQuerySort | { "field": "@timestamp", "direction": "desc" } | | |
Filters
When using filters, you must provide the index pattern name using index
property.
Supported filter types:
- Exists / Not exists (type =
exists
) - Is / Is not (type =
query
) - One of / Not one of (type =
phrases
) - Between / Not between (type =
range
)
"Not" filters can be used setting the negate
property of the filter to true
.
All filters are of type KibanaQueryFilter
and share the following properties:
Property | Type | Default | Required | Description |
---|
type | string | - | ✅ | See below examples |
field | string | - | ✅ | Name of the ES field |
value | string|boolean|number|string[] | - | ✅ | See below examples |
negate | boolean | false | - | Negate the filter |
alias | string | none | | Alias for the filter |
disabled | boolean | false | | Mark filter as disabled |
Exists / Not exists
{
type: 'exists',
field: 'statusCode'
}
Is / Is not
{
type: 'query',
field: 'namespace',
value: 'kube-system'
}
One of / Not one of
{
type: 'phrases',
field: 'namespace',
value: ['kube-system', 'default']
}
Between / Not between
{
type: 'range',
field: 'statusCode',
value: [400, 499]
}
Period
Three period presets are available:
Quick & Relative periods
{
from: 'now-7d',
to: 'now',
mode: 'quick'
}
Absolute periods
{
from: '2021-03-31T22:00:00.000Z',
to: '2021-04-02T21:59:59.999Z',
mode: 'absolute'
}
Testing
npm run test
Enhancements