0.7.2 • Published 2 years ago

@lurajon/kibana-url-builder v0.7.2

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

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.

ParameterTypeDefaultRequiredExample
hoststringhttp://kibana:5601
discoveryIdstring9a0b4094-bf81-4de9-a3e7-26d8bb822476
columnsstring[]['_source']['_source', 'log']
filtersKibanaQueryFilter[][]See below
querystringfoo AND bar (Lucene syntax)
periodKibanaQueryPeriod{ "from": "now-15m", "mode": "quick", "to": "now" }See below
indexstringWhen using filtersmy-index-pattern
intervalstringauto15m
refreshIntervalKibanaQueryRefreshInterval{ "pause": true, "value": 300000 }
sortKibanaQuerySort{ "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:

PropertyTypeDefaultRequiredDescription
typestring-See below examples
fieldstring-Name of the ES field
valuestring|boolean|number|string[]-See below examples
negatebooleanfalse-Negate the filter
aliasstringnoneAlias for the filter
disabledbooleanfalseMark 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

  • 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