Giter Club home page Giter Club logo

json.grafana.datasources's Introduction

JSON.Grafana.datasources

Deze tool is ontstaan omdat ik op mijn werk in grafana een dashboard wilde hebben uit verschillende bronnen welke elke nacht geupdaten moet worden. We hadden 3 waarheden en deze tool maakte een overzicht of al deze waarheden nog overeenkwamen.

Werking

Deze tool kan aangeroepen worden met de SimpleJson plugin binnen Grafana link

installeren op de grafana machine:

grafana-cli plugins install grafana-simple-json-datasource

Enkele bron

Een compleet overzicht (table) opsturen voor een dashboard.

Meerdere bronnen

Met deze tool is het mogelijk om onder een noemer (in ons geval een landschap), meerdere key-value lijsten op te sturen. De keys worden bij elkaar gezet en de values worden in een kolom gezet. Een voorbeeld:

input:

lijst Kolom A voor noemer TEST

key value
abc-001 1
abc-003 1
abc-004 2

lijst Kolom B voor noemer TEST

key value
abc-001 A
abc-002 B
abc-003 C
abc-004 C

lijst Kolom C voor noemer TEST

key value
abc-001 12
abc-002 14
abc-003 17
abc-004 12
abc-005 12

geeft voor noemer TEST als output (mits geconfigureerd):

key A B C
abc-001 1 A 12
abc-002 B 14
abc-003 1 C 17
abc-004 2 C 12
abc-005 2 12

Dit is een voorbeeld van 1 noemer. maar je kan er dus meerdere hebben. Dus meerdere tabellen kan je zo genereren.

configureren

Hier een voorbeeld van een docker-compose file hoe je deze tool kan draaien

version: '2'

services:
  grafana:
    image: grafana/grafana:6.5.0
    container_name: grafana
    ports:
      - 8182:3000
    networks:
      default:
        aliases:
          - grafana      
  jsongrafana:
    image: opvolger/json.grafana.datasources:latest
    container_name: jsongrafanadatasources
    ports:
      - 8181:80
    networks:
      default:
        aliases:
          - jsongrafana
    volumes:
        - $PWD/data:/home/data
    restart: always

installeer plugin:

grafana-cli plugins install grafana-simple-json-datasource

Aanmaken DataSource in grafana

zet deze naar de "json.grafana.datasources" http://jsongrafana:80/simpeljson

Voorbeeld (enkele bron, hele table)

Je kan een compleet tabel sturen met de volgende manier.

Aanmaken table/info

Post de volgende info in storedata/set_info, dit kan via swagger

{
  "name": "test_enkel",
  "info": {
    "description": "Overzicht voor test_enkel",
    "type": "default"
  },
  "table": [
    {
        "jsonvalue":  "key",
        "type":  "string",
        "text":  "Machinename"
    },
    {
        "jsonvalue":  "kolom_bool",
        "type":  "bool",
        "text":  "bool kolom"
    },
    {
        "jsonvalue":  "kolom_time",
        "type":  "time",
        "text":  "tijd kolom"
    },
    {
        "jsonvalue":  "kolom_string",
        "type":  "string",
        "text":  "string kolom"
    }
  ]
}

Dit zal in de data-folder een dit test aanmaken met 2 files erin, table.json en info.json

Data sturen

Post de volgende info in storedata/send_data, dit kan via swagger

4x dus

{
  "name": "test_enkel",
  "json_data": [ 
    { "key": "machine1", "kolom_bool": true, "kolom_time": "2020-10-27T21:24:31.78Z", "kolom_string": "iets" },
    { "key": "machine2", "kolom_bool": true, "kolom_time": "2020-10-27T21:24:31.78Z", "kolom_string": "iets meer" },
    { "key": "machine3", "kolom_bool": false, "kolom_time": "2020-10-28T21:24:31.78Z", "kolom_string": "iets minder" },
    { "key": "machine4", "kolom_bool": false, "kolom_time": "2020-11-27T21:24:31.78Z", "kolom_string": "niets" },
    { "key": "machine5", "kolom_bool": true, "kolom_time": "2019-10-27T21:24:31.78Z", "kolom_string": "hoi iets" }
  ] 
}

Voorbeeld (uit meerdere bronnen)

We willen uit 3 bronnen data halen en in 1 overzicht hebben, we zullen dus eerst het overzicht moeten maken, dit kan met:

Aanmaken table/info

Post de volgende info in storedatakeyvalue/set_info, dit kan via swagger

{
  "name": "test",
  "info": {
    "description": "Overzicht voor test",
    "type": "key_value"
  },
  "table": [
    {
        "jsonvalue":  "key",
        "type":  "string",
        "text":  "Machinename"
    },
    {
        "jsonvalue":  "bron1_bool",
        "type":  "bool",
        "text":  "Bron1 bool"
    },
    {
        "jsonvalue":  "bron1_time",
        "type":  "time",
        "text":  "Bron1 tijd"
    },
    {
        "jsonvalue":  "bron2_bool",
        "type":  "bool",
        "text":  "Bron2 Bool"
    },
    {
        "jsonvalue":  "bron3_string",
        "type":  "string",
        "text":  "Bron3 string"
    }
  ]
}

Dit zal in de data-folder een dit test aanmaken met 2 files erin, table.json en info.json

Data sturen

Post de volgende info in storedatakeyvalue/send_data, dit kan via swagger

4x dus

{
  "subject": "bron1_bool",
  "name": "test",
  "json_data": { "machine1": true , "machine2": true , "machine3": false , "machine5": true } 
}
{
  "subject": "bron1_time",
  "name": "test",
  "json_data": { "machine1": "2020-10-27T21:24:31.78Z" , "machine3": "2020-10-29T23:24:32.78Z",  "machine4": "2020-10-30T22:24:34.78Z", "machine5": "2020-09-01T21:24:36.78Z" } 
}
{
  "subject": "bron2_bool",
  "name": "test",
  "json_data": { "machine1": false , "machine2": false , "machine3": false , "machine4": true, "machine5": true } 
}
{
  "subject": "bron3_string",
  "name": "test",
  "json_data": { "machine1": "heel goed" , "machine2": "erg fout" , "machine3": "welkom" , "machine4": "iets anders", "machine5": "iets" }
}

Dashboard maken

Je kan nu in Grafana een dashboard maken kies table ipv timeserie en natuurlijk de SimpleJson Als bron. Kies test en zie je dashboard.

TODO

Als je info wegschrijft via API worden in de info.json en table.json enums als getallen weggeschreven ipv enum-strings

json.grafana.datasources's People

Contributors

opvolger avatar

Watchers

 avatar  avatar  avatar

Forkers

marck

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.