@clickandmortar/kibana-url-builder
TypeScript icon, indicating that this package has built-in type declarations

0.7.2 • Public • Published

Kibana URL builder

This library allows building Kibana URLs, for instance when sending notifications.

⚠️ 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.

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

  • [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

Package Sidebar

Install

npm i @clickandmortar/kibana-url-builder

Weekly Downloads

688

Version

0.7.2

License

MIT

Unpacked Size

10.2 kB

Total Files

8

Last publish

Collaborators

  • michaelbouvy