@lurajon/kibana-url-builder
v0.7.2
Published
Kibana URL builder
Downloads
31
Maintainers
Readme
Kibana URL builder
This library allows building Kibana URLs, for instance when sending notifications.
It has been tested with Kibana 6.x and 7.x versions.
Usage
# Using npm
npm install @lurajon/kibana-url-builder
# Using Yarn
yarn add @lurajon/kibana-url-builderconst kub = require('@lurajon/kibana-url-builder')
const url = kub.buildDiscoverUrl({
host: 'http://kibana:5601',
columns: ['_source'],
filters: [],
query: 'my query'
})
// url = http://kibana:5601/app/kibana#/discover?_g=(time:(from:now-15m,mode:quick,to:now))&_a=(columns:!(_source),filters:!(),interval:auto,query:(language:lucene,query:'my query'),sort:!('@timestamp',desc))Methods
buildDiscoverUrl ({ host, discoveryId, 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 |
| discoveryId | string | | 9a0b4094-bf81-4de9-a3e7-26d8bb822476 |
| 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:
quickandrelative: dates using Elasticsearch Date Math, ie.now,now-7d, etc.absolute: absolute dates
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 testEnhancements
- [x] Add support for filters
- [ ] Add tests: ⚙️ WIP
- [x] Add missing filters: is one of, is between
- [x] Add documentation for filters
- [x] Add documentation for advanced period
- [ ] Add support for Visualize query
- [ ] Add support for Kibana Query Language in query
- [x] Test compatibility with Kibana 7.x
