0.7.2 • Published 2 years ago
@lurajon/kibana-url-builder v0.7.2
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-builder
const 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:
quick
andrelative
: 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 test
Enhancements
- Add support for filters
- Add tests: ⚙️ WIP
- Add missing filters: is one of, is between
- Add documentation for filters
- Add documentation for advanced period
- Add support for Visualize query
- Add support for Kibana Query Language in query
- Test compatibility with Kibana 7.x
0.7.2
2 years ago