0.7.2 • Published 3 years ago

@clickandmortar/kibana-url-builder v0.7.2

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

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'
})

// 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, 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
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
0.7.2

3 years ago

0.7.1

3 years ago

0.7.0

3 years ago

0.6.0

3 years ago

0.5.0

3 years ago

0.4.1

3 years ago

0.4.0

3 years ago

0.3.1

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

0.1.0

3 years ago