1
0
Fork 0
mirror of synced 2024-11-25 02:05:36 -05:00
Grafana SaltStack Formula
Find a file
Simon Pasquier f6e5544264 Manage dashboards only for the current datasource
This change adds a new 'datasource' parameter to the dashboard metadata.
This way, the Grafana client state will manage only the dashboards that
match with the deployed datasource (either InfluxDB or Prometheus). For
backward compatibility, the client will always manage the dashboards
that don't set this new parameter.

Change-Id: Iac323d756aff6ca4180f4b648a1d02692ebf292b
2017-05-24 10:33:54 +02:00
_states Merge pull request #25 from thouveng/build-main-dashboard-yaml 2017-02-06 18:06:36 +01:00
debian Add salt-master into build depends 2016-04-14 11:57:49 +02:00
grafana Manage dashboards only for the current datasource 2017-05-24 10:33:54 +02:00
metadata/service Merge "Add a dashboard to show the uptime of services" 2017-03-24 13:33:43 +00:00
.gitignore Unify Makefile, .gitignore and update readme 2017-02-02 13:02:03 +01:00
Makefile Unify Makefile, .gitignore and update readme 2017-02-02 13:02:03 +01:00
metadata.yml Add metadata.yml 2016-04-14 14:56:42 +02:00
README.rst Allow the installation of Grafana plugins 2017-03-15 10:14:52 +01:00
VERSION Debian packaging 2016-03-31 21:06:44 +02:00

=======
Grafana
=======

A beautiful, easy to use and feature rich Graphite dashboard replacement and graph editor.


Sample pillars
==============


Server deployments
------------------

Server installed from system package and listening on 1.2.3.4:3000 (the default
is 0.0.0.0:3000)

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        bind:
          address: 1.2.3.4
          port: 3000
        admin:
          user: admin
          password: passwd
        database:
          engine: sqlite

Server installed with PostgreSQL database

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        admin:
          user: admin
          password: passwd
        database:
          engine: postgresql
          host: localhost
          port: 5432
          name: grafana
          user: grafana
          password: passwd

Server installed with LDAP authentication and all authenticated users are
administrators

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        admin:
          user: admin
          password: passwd
        auth:
          ldap:
            enabled: true
            host: '127.0.0.1'
            port: 389
            use_ssl: false
            bind_dn: "cn=admin,dc=grafana,dc=org"
            bind_password: "grafana"
            user_search_filter: "(cn=%s)"
            user_search_base_dns:
            - "dc=grafana,dc=org"

Server installed with LDAP and basic authentication

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        admin:
          user: admin
          password: passwd
        auth:
          basic:
            enabled: true
          ldap:
            enabled: true
            host: '127.0.0.1'
            port: 389
            use_ssl: false
            bind_dn: "cn=admin,dc=grafana,dc=org"
            bind_password: "grafana"
            user_search_filter: "(cn=%s)"
            user_search_base_dns:
            - "dc=grafana,dc=org"

Server installed with LDAP for authentication and authorization

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        admin:
          user: admin
          password: passwd
        auth:
          ldap:
            enabled: true
            host: '127.0.0.1'
            port: 389
            use_ssl: false
            bind_dn: "cn=admin,dc=grafana,dc=org"
            bind_password: "grafana"
            user_search_filter: "(cn=%s)"
            user_search_base_dns:
            - "dc=grafana,dc=org"
            group_search_filter: "(&(objectClass=posixGroup)(memberUid=%s))"
            group_search_base_dns:
            - "ou=groups,dc=grafana,dc=org"
            authorization:
              enabled: true
              admin_group: "admins"
              editor_group: "editors"
              viewer_group: "viewers"

Server installed with default StackLight JSON dashboards. This will
be replaced by the possibility for a service to provide its own dashboard
using salt-mine.

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        dashboards:
          enabled: true
          path: /var/lib/grafana/dashboards

Server with theme overrides

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        theme:
          light:
            css_override:
              source: http://path.to.theme
              source_hash: sha256=xyz
              build: xyz
          dark:
            css_override:
              source: salt://path.to.theme

Server with two additionals plugins. It requires to have access to the Internet.

.. code-block:: yaml

    grafana:
      server:
        enabled: true
        plugins:
          grafana-piechart-panel:
            enabled: true
          grafana-example-app:
            enabled: true

Collector setup
---------------

Used to aggregate dashboards from monitoring node.

.. code-block:: yaml

    grafana:
      collector:
        enabled: true


Client setups
-------------

Client with token based auth

.. code-block:: yaml

    grafana:
      client:
        enabled: true
        server:
          protocol: https
          host: grafana.host
          port: 3000
          token: token

Client with base auth

.. code-block:: yaml

    grafana:
      client:
        enabled: true
        server:
          protocol: https
          host: grafana.host
          port: 3000
          user: admin
          password: password

Client enforcing graphite data source

.. code-block:: yaml

    grafana:
      client:
        enabled: true
        datasource:
          graphite:
            type: graphite
            host: mtr01.domain.com
            protocol: https
            port: 443

Client enforcing elasticsearch data source

.. code-block:: yaml

    grafana:
      client:
        enabled: true
        datasource:
          elasticsearch:
            type: elasticsearch
            host: log01.domain.com
            port: 80
            index: grafana-dash

Client defined and enforced dashboard

.. code-block:: yaml

    grafana:
      client:
        enabled: true
        server:
          host: grafana.host
          port: 3000
          token: token
        dashboard:
          system_metrics:
            title: "Generic system metrics"
            style: dark
            editable: false
            row:
              top:
                title: "First row"

Client enforced dashboards defined in salt-mine

.. code-block:: yaml

    grafana:
      client:
        enabled: true
        remote_data:
          engine: salt_mine
        server:
          host: grafana.host
          port: 3000
          token: token


Usage
=====

There's a difference between JSON dashboard representation and models we us.
The lists used in JSON format [for rows, panels and target] were replaced by
dictionaries. This form of serialization allows better merging and overrides
of hierarchical data structures that dashboard models are.

The default format of Grafana dashboards with lists for rows, panels and targets.

.. code-block:: yaml

    system_metrics:
      title: graph
      editable: true
      hideControls: false
      rows:
      - title: Usage
        height: 250px
        panels:
        - title: Panel Title
          span: 6
          editable: false
          type: graph
          targets:
          - refId: A
            target: "support_prd.cfg01_iot_tcpcloud_eu.cpu.0.idle"
          datasource: graphite01
          renderer: flot
        showTitle: true

The modified version of Grafana dashboard format with dictionary declarations.
Please note that dictionary keys are only for logical separation and are not
displayed in generated dashboards.

.. code-block:: yaml

    system_metrics:
        system_metrics2:
          title: graph
          editable: true
          hideControls: false
          row:
            usage:
              title: Usage
              height: 250px
              panel:
                usage-panel:
                  title: Panel Title
                  span: 6
                  editable: false
                  type: graph
                  target:
                    A:
                      refId: A
                      target: "support_prd.cfg01_iot_tcpcloud_eu.cpu.0.idle"
                  datasource: graphite01
                  renderer: flot
              showTitle: true


Read more
=========

* http://grafana.org/
* http://docs.grafana.org/reference/export_import/

Documentation and Bugs
======================

To learn how to install and update salt-formulas, consult the documentation
available online at:

    http://salt-formulas.readthedocs.io/

In the unfortunate event that bugs are discovered, they should be reported to
the appropriate issue tracker. Use Github issue tracker for specific salt
formula:

    https://github.com/salt-formulas/salt-formula-grafana/issues

For feature requests, bug reports or blueprints affecting entire ecosystem,
use Launchpad salt-formulas project:

    https://launchpad.net/salt-formulas

You can also join salt-formulas-users team and subscribe to mailing list:

    https://launchpad.net/~salt-formulas-users

Developers wishing to work on the salt-formulas projects should always base
their work on master branch and submit pull request against specific formula.

    https://github.com/salt-formulas/salt-formula-grafana

Any questions or feedback is always welcome so feel free to join our IRC
channel:

    #salt-formulas @ irc.freenode.net