Code Monkey home page Code Monkey logo

glpi_app_grafana's Introduction

GLPI app for Grafana

Introduction

This application gets information in GLPI (Gestion Libre de Parc Informatique). It use the REST API added in version 9.1. You will be able to have graphs, singlestat, tables... of your data (tickets, devices, users...).

screenshot

This is an example:

screenshot1

Datasource

For the GLPI datasource, you will need:

  • the URL of the GLPI API (like http://127.0.0.1/glpi/apirest.php)
  • the App-token, you can generate and get it in GLPI in the menu Setup > General > API
  • the User token, you can generate and get it in the user account/preferences panel in GLPI (named API Token)
  • In the menu Setup > General > API, Enable Rest API and Enable login with external

GLPI Webserver

On your GLPI webserver, you need active the CORS. Documentation about CORS

Apache

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE"
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding, App-Token, Session-Token"

NGINX

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Origin,Content-Type,Accept,Authorization,App-Token,Session-Token';

Dashboard

You can get a simple dashboard here

screenshot1

Table panel

Create a new Table panel and then edit the panel. Select the GLPI datasource and add a new Query in the panel Metrics.

The configuration will require:

  • Query: do a search into GLPI and copy paste the URL here
  • Alias: the alias name of this query, it will appear in the panel
  • Timerange based on: define on which GLPI date field you will get the data. This field is used by the timerange defined in top of grafana
  • Count element: if the panel is a Table, select yes, otherwise keep to no
  • Is it a table?: to display the query result as a Table, check this option else uncheck.

When Is it a table is checked, the query result will be displayed as a table and you can define up to 6 columns to be displayed. For each column in the table, select the query result field and the name of the column.

When Is it a table is not checked, the query result is considered as a usual Grafana timeseries and it will displayed as is. See Grafana table panel for more information.

Single stat panel

Problem with server access

If you have the message: There isn't an active API client matching your IP address in the configuration (ip, ip) where you have 2 IPs and the same, you need apply a patch into GLPI:

diff --git a/inc/api.class.php b/inc/api.class.php
index 3ae2966ce..a4a18dc9e 100644
--- a/inc/api.class.php
+++ b/inc/api.class.php
@@ -105,6 +105,10 @@ abstract class API extends CommonGLPI {

       // retrieve ip of client
       $this->iptxt = Toolbox::getRemoteIpAddress();
+      $spl = explode(',', $this->iptxt);
+      if (count($spl) > 1) {
+         $this->iptxt = $spl[0];
+      }
       $this->ipnum = (strstr($this->iptxt, ':')===false ? ip2long($this->iptxt) : '');

       // check ip access

Bugs / features

If you have a bug repoort or request feature, you can open issues in the github repository

Professional support

Do you need professional support, training, others?

Please contact the DCS Easyware company / send a mail to [email protected]

Changelog

2.0.1

  • compatibility with Grafana 9.x

2.0.0 (unreleased)

  • compatibility with Grafana 8.x
  • rewrite part of code to be easier to read

1.4.0

  • manage variables for GLPI datasource (use the variable name with [[]] like [[myvar]] in the query)
  • add type query in the variable with copy / paste search like for standard queries (it use the name + id of item)

1.3.0

  • add Apache / NGINX configuration in the readme
  • add more instructions in the readme to configure API into GLPI
  • add link of a user dashboard in the readme
  • add the patch of GLPI in the readme when use the datasource in mode server
  • fix PHP timezone in the datasource
  • update dependencies (and so fix some vulnerabilities)
  • fix a bug in number elements displayed in the singlestat panel

1.2.0

  • allow to get a query count without selecting a date field
  • fix #16: no more need to force grunt for rebuilding
  • fix #17: fix error when receiving integer values not formated in strings
  • fix some typos
  • dev: allow to set/unset browser console log

1.1.0

  • compatibility with GLPI 9.2
  • autofill the field Timerange based on in the query
  • when adding a new query, add by default a ticket query instead undefined
  • get correct values in the tooltip when the mouse is hovering the graph
  • enhance error message when defining the datasource
  • add the possibility to have the count of elements by hour of the day with the panel histogram

1.0.0

First version

glpi_app_grafana's People

Contributors

ddurieux avatar mohierf avatar upperm avatar

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.