https://github.com/bobbytes/kibana-generic-visualization
Create dynamic Kibana visualizations and dashboards
https://github.com/bobbytes/kibana-generic-visualization
Last synced: 11 months ago
JSON representation
Create dynamic Kibana visualizations and dashboards
- Host: GitHub
- URL: https://github.com/bobbytes/kibana-generic-visualization
- Owner: bobbytes
- Created: 2019-02-20T10:19:23.000Z (over 7 years ago)
- Default Branch: develop
- Last Pushed: 2019-05-09T10:43:58.000Z (about 7 years ago)
- Last Synced: 2025-03-23T01:36:32.121Z (over 1 year ago)
- Language: TypeScript
- Size: 380 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
Kibana Generic Visualizaton

## ❯ Why
Generate kibana visualizations and dashboards dynamically.

## ❯ Table of Contents
- [Quick Start](#-quick-start)
- [API](#-api)

## ❯ Quick Start
### Installation
Install library by using `npm`
```shell
npm install kibana-generic-visualization
```
or by using `yarn`
```shell
yarn add kibana-generic-visualization
```
### How to use
#### Step 1: Import KibanaGenericVisualization
Using `CommonJS` module loader:
```javascript
const { KibanaGenericVisualization } = require('kibana-generic-visualization');
```
Using `ES6` module loader:
```javascript
import { KibanaGenericVisualization } from 'kibana-generic-visualization';
```
#### Step 2: Create new instance of KibanaGenericVisualization
Create new instance of `KibanaGenericVisualization` and provide config ([about config have a look at API section](#-api)):
```javascript
const options = {
kibanaVersion: '6.3.2',
api: {
host: 'https://api-eu.logz.io/v1',
token: 'your-kibana-api-secret-token',
},
};
const kibanaGenericVisualization = new KibanaGenericVisualization(options);
```
#### Step 3: Create visualizations and dashboard
Create visualizations for each service instance and combine them in a dashboard.
```javascript
const serviceNames {
'my-first-redis-service',
'my-second-redis-service',
};
const metrics = [
{ fieldName: 'metrics.mem_fragmentation_ratio', customLabel: 'Memory Fragmentation Ratio' },
{ fieldName: 'metrics.evicted_keys', customLabel: 'Removed Keys' },
];
const redisVisualizationIds = await kibanaGenericVisualization.createVisualizations(
'line', // visualization type
serviceNames, // service names array
serviceName => `Redis ${serviceName} Metric`, // generic visualization name
metrics, // log attributes to display
'my-saved-search-id' // saved search id
);
const dashboardGridOptions = {
width: 24,
height: 15,
maxWidth: 48,
};
kibanaGenericVisualization.createDashboard('Redis Dashboard', redisVisualizationIds.created, dashboardGridOptions);
```

## API
### Options
| Option | Description |
| --------------- | ------------------------- |
| `kibanaVersion` | Version of Kibana |
| `api.host` | Kibana API endpoint host |
| `api.token` | Kibana API endpoint token |
### Methods
| Method | Description |
| ----------------------------------------------------------------------------- | -------------------------------------- |
| `createVisualizations(stateType, serviceNames, title, fields, savedSearchId)` | Create kibana visualizations |
| `createDashboard(title, visualizationIds, dashboardGridConfig)` | Create kibana dashboard |
| `getKibanaObjectsByType(objectType)` | Get objects from kibana by object type |
