Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:icinga2_-_graphite

Icinga2 - Graphite

Icinga ist eine vollständig auf Open-Source-Basis basierende, skalierbare und erweiterbare Monitoring-Lösung welche die Verfügbarkeit von definierten Ressource überprüft und über eine Benachrichtigungssystem verfügt.

Zur Einbindung von Graphite in Icinga, wird ein Modul namens

  • icingaweb2-module-graphite

benötigt.

Beschreibung Externer Link
Download https://github.com/findmypast/icingaweb2-module-graphite

Graphite ist eine Datenbank in der linear zeit synchronisiert metrische Daten gespeichert werden, welche dann durch eine „restful API“ und über ein Web-Interface bzw. eine Web-Anwendung zur grafischen Anzeige gebracht werden können.

Graphite besteht im wesentliche aus den nachfolgend genannten drei Komponenten:

  1. carbon - Ein Dienst/Daemon welcher auf einem TCP-Port lauscht um Echtzeitdaten zeit synchronisiert zu empfangen
  2. graphite webapp - Eine auf dem Framework Django basierte Web-Anwendung, welche aus den zeit synchronisierten Daten, unter Einbeziehung von Cairo, Graphen in Echtzeit erstellt.
  3. whisper - Eine einfache Datenbank Bibliothek, zur Speicherung von zeit synchronisierten Daten (ähnlichen dem Design von RRD)

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Voraussetzungen

Als Voraussetzung für die Installation von Icinga sind folgende Komponenten erforderlich:

Vorbereitung

Zur Installation von Graphite aus rpm-Paketen, müssen nachfolgende Repositories genutzt bzw. eingebunden werden:

Repository: EPEL

Nachfolgende Beschreibung bindet das Drittanbieter-Repository von EPEL ein.

Repository: mailserver.guru

Nachfolgend Beschreibung bindet das Drittanbieter-Repository mailserver.guru, welches von dem mir sehr geschätzten Michael Nausch betrieben wird und eine sichere und verlässliche Quelle für rpm-Pakete darstellt, wie unter nachfolgendem internen Link dargestellt, ein:

Herunterladen

icingaweb2-module-graphite

Mit nachfolgendem Befehl kann direkt von GitHub eine gepackte Datei als Archiv direkt in das temporäre Verzeichnis /tmp heruntergeladen werden:

# wget -P /tmp https://github.com/philiphoy/icingaweb2-module-graphite/archive/master.zip
--2015-12-04 14:02:04--  https://github.com/philiphoy/icingaweb2-module-graphite/archive/master.zip
Resolving github.com (github.com)... 192.30.252.130
Connecting to github.com (github.com)|192.30.252.130|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://github.com/findmypast/icingaweb2-module-graphite/archive/master.zip [following]
--2015-12-04 14:02:05--  https://github.com/findmypast/icingaweb2-module-graphite/archive/master.zip
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/findmypast/icingaweb2-module-graphite/zip/master [following]
--2015-12-04 14:02:06--  https://codeload.github.com/findmypast/icingaweb2-module-graphite/zip/master
Resolving codeload.github.com (codeload.github.com)... 192.30.252.146
Connecting to codeload.github.com (codeload.github.com)|192.30.252.146|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 97171 (95K) [application/zip]
Saving to: ‘/tmp/master.zip’

100%[======================================>] 97,171       245KB/s   in 0.4s   

2015-12-04 14:02:07 (245 KB/s) - ‘/tmp/master.zip’ saved [97171/97171]

Installation

Nachdem das Drittanbieter-Repository

erfolgreich eingebunden wurde, können mit nachfolgendem Befehl, die rpm-Pakete

  • python-carbon
  • graphite-web
  • python-whisper

und die benötigten Abhängigkeiten zu den Paketen

  • uwsgi-plugin-carbon
  • MySQL-python

installiert werden:

# yum install python-carbon graphite-web python-whisper uwsgi-plugin-carbon MySQL-python
Loaded plugins: changelog, priorities
213 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package MySQL-python.x86_64 0:1.2.3-11.el7 will be installed
---> Package graphite-web.noarch 0:0.9.12-8.el7 will be installed
--> Processing Dependency: python-django >= 1.3 for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: pytz for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: python-simplejson for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: pyparsing for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: pycairo for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: mod_wsgi for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: django-tagging for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: dejavu-serif-fonts for package: graphite-web-0.9.12-8.el7.noarch
--> Processing Dependency: dejavu-sans-fonts for package: graphite-web-0.9.12-8.el7.noarch
---> Package python-carbon.noarch 0:0.9.12-7.el7 will be installed
--> Processing Dependency: python-twisted-core >= 8.0 for package: python-carbon-0.9.12-7.el7.noarch
---> Package python-whisper.noarch 0:0.9.12-4.el7 will be installed
---> Package uwsgi-plugin-carbon.x86_64 0:2.0.11.1-1.el7 will be installed
--> Processing Dependency: uwsgi-plugin-common for package: uwsgi-plugin-carbon-2.0.11.1-1.el7.x86_64
--> Running transaction check
---> Package dejavu-sans-fonts.noarch 0:2.33-6.el7 will be installed
--> Processing Dependency: dejavu-fonts-common = 2.33-6.el7 for package: dejavu-sans-fonts-2.33-6.el7.noarch
---> Package dejavu-serif-fonts.noarch 0:2.33-6.el7 will be installed
---> Package mod_wsgi.x86_64 0:3.4-12.el7_0 will be installed
---> Package pycairo.x86_64 0:1.8.10-8.el7 will be installed
---> Package pyparsing.noarch 0:1.5.6-9.el7 will be installed
---> Package python-django.noarch 0:1.6.11-3.el7 will be installed
--> Processing Dependency: python-django-bash-completion = 1.6.11-3.el7 for package: python-django-
1.6.11-3.el7.noarch
---> Package python-django-tagging.noarch 0:0.3.1-11.el7 will be installed
---> Package python-simplejson.x86_64 0:3.3.3-1.el7 will be installed
---> Package python-twisted-core.x86_64 0:12.2.0-4.el7 will be installed
--> Processing Dependency: python-zope-interface for package: python-twisted-core-12.2.0-4.el7.x86_64
--> Processing Dependency: pyserial for package: python-twisted-core-12.2.0-4.el7.x86_64
--> Processing Dependency: pyOpenSSL for package: python-twisted-core-12.2.0-4.el7.x86_64
---> Package pytz.noarch 0:2012d-5.el7 will be installed
---> Package uwsgi-plugin-common.x86_64 0:2.0.11.1-1.el7 will be installed
--> Processing Dependency: uwsgi for package: uwsgi-plugin-common-2.0.11.1-1.el7.x86_64
--> Running transaction check
---> Package dejavu-fonts-common.noarch 0:2.33-6.el7 will be installed
---> Package pyOpenSSL.x86_64 0:0.13.1-3.el7 will be installed
---> Package pyserial.noarch 0:2.6-5.el7 will be installed
---> Package python-django-bash-completion.noarch 0:1.6.11-3.el7 will be installed
---> Package python-zope-interface.x86_64 0:4.0.5-4.el7 will be installed
---> Package uwsgi.x86_64 0:2.0.11.1-1.el7 will be installed
--> Processing Dependency: libyaml-0.so.2()(64bit) for package: uwsgi-2.0.11.1-1.el7.x86_64
--> Running transaction check
---> Package libyaml.x86_64 0:0.1.4-11.el7_0 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package                           Arch       Version            Repository
                                                                           Size
================================================================================
Installing:
 MySQL-python                      x86_64     1.2.3-11.el7       base      82 k
 graphite-web                      noarch     0.9.12-8.el7       epel     1.8 M
 python-carbon                     noarch     0.9.12-7.el7       epel     105 k
 python-whisper                    noarch     0.9.12-4.el7       epel      35 k
 uwsgi-plugin-carbon               x86_64     2.0.11.1-1.el7     epel      20 k
Installing for dependencies:
 dejavu-fonts-common               noarch     2.33-6.el7         base      64 k
 dejavu-sans-fonts                 noarch     2.33-6.el7         base     1.4 M
 dejavu-serif-fonts                noarch     2.33-6.el7         base     776 k
 libyaml                           x86_64     0.1.4-11.el7_0     base      55 k
 mod_wsgi                          x86_64     3.4-12.el7_0       base      76 k
 pyOpenSSL                         x86_64     0.13.1-3.el7       base     133 k
 pycairo                           x86_64     1.8.10-8.el7       base     157 k
 pyparsing                         noarch     1.5.6-9.el7        base      94 k
 pyserial                          noarch     2.6-5.el7          base     124 k
 python-django                     noarch     1.6.11-3.el7       epel     4.0 M
 python-django-bash-completion     noarch     1.6.11-3.el7       epel      16 k
 python-django-tagging             noarch     0.3.1-11.el7       epel      58 k
 python-simplejson                 x86_64     3.3.3-1.el7        epel     171 k
 python-twisted-core               x86_64     12.2.0-4.el7       base     2.5 M
 python-zope-interface             x86_64     4.0.5-4.el7        base     138 k
 pytz                              noarch     2012d-5.el7        base      38 k
 uwsgi                             x86_64     2.0.11.1-1.el7     epel     357 k
 uwsgi-plugin-common               x86_64     2.0.11.1-1.el7     epel      46 k

Transaction Summary
================================================================================
Install  5 Packages (+18 Dependent packages)

Total download size: 12 M
Installed size: 50 M
Is this ok [y/d/N]: y
Downloading packages:
(1/23): MySQL-python-1.2.3-11.el7.x86_64.rpm               |  82 kB   00:00     
(2/23): dejavu-fonts-common-2.33-6.el7.noarch.rpm          |  64 kB   00:00     
(3/23): dejavu-serif-fonts-2.33-6.el7.noarch.rpm           | 776 kB   00:00     
(4/23): dejavu-sans-fonts-2.33-6.el7.noarch.rpm            | 1.4 MB   00:00     
(5/23): libyaml-0.1.4-11.el7_0.x86_64.rpm                  |  55 kB   00:00     
(6/23): mod_wsgi-3.4-12.el7_0.x86_64.rpm                   |  76 kB   00:00     
(7/23): pyOpenSSL-0.13.1-3.el7.x86_64.rpm                  | 133 kB   00:00     
(8/23): pycairo-1.8.10-8.el7.x86_64.rpm                    | 157 kB   00:00     
(9/23): pyparsing-1.5.6-9.el7.noarch.rpm                   |  94 kB   00:00     
(10/23): graphite-web-0.9.12-8.el7.noarch.rpm              | 1.8 MB   00:00     
(11/23): pyserial-2.6-5.el7.noarch.rpm                     | 124 kB   00:00     
(12/23): python-django-1.6.11-3.el7.noarch.rpm             | 4.0 MB   00:00     
(13/23): python-django-bash-completion-1.6.11-3.el7.noarch |  16 kB   00:00     
(14/23): python-carbon-0.9.12-7.el7.noarch.rpm             | 105 kB   00:00     
(15/23): python-django-tagging-0.3.1-11.el7.noarch.rpm     |  58 kB   00:00     
(16/23): python-simplejson-3.3.3-1.el7.x86_64.rpm          | 171 kB   00:00     
(17/23): python-whisper-0.9.12-4.el7.noarch.rpm            |  35 kB   00:00     
(18/23): python-twisted-core-12.2.0-4.el7.x86_64.rpm       | 2.5 MB   00:00     
(19/23): python-zope-interface-4.0.5-4.el7.x86_64.rpm      | 138 kB   00:00     
(20/23): pytz-2012d-5.el7.noarch.rpm                       |  38 kB   00:00     
(21/23): uwsgi-2.0.11.1-1.el7.x86_64.rpm                   | 357 kB   00:00     
(22/23): uwsgi-plugin-carbon-2.0.11.1-1.el7.x86_64.rpm     |  20 kB   00:00     
(23/23): uwsgi-plugin-common-2.0.11.1-1.el7.x86_64.rpm     |  46 kB   00:00     
--------------------------------------------------------------------------------
Total                                              7.4 MB/s |  12 MB  00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : dejavu-fonts-common-2.33-6.el7.noarch                       1/23 
  Installing : python-whisper-0.9.12-4.el7.noarch                          2/23 
  Installing : dejavu-serif-fonts-2.33-6.el7.noarch                        3/23 
  Installing : dejavu-sans-fonts-2.33-6.el7.noarch                         4/23 
  Installing : pytz-2012d-5.el7.noarch                                     5/23 
  Installing : pycairo-1.8.10-8.el7.x86_64                                 6/23 
  Installing : libyaml-0.1.4-11.el7_0.x86_64                               7/23 
  Installing : uwsgi-2.0.11.1-1.el7.x86_64                                 8/23 
Executing systemd post-install tasks
  Installing : uwsgi-plugin-common-2.0.11.1-1.el7.x86_64                   9/23 
  Installing : mod_wsgi-3.4-12.el7_0.x86_64                               10/23 
  Installing : python-django-bash-completion-1.6.11-3.el7.noarch          11/23 
  Installing : python-django-1.6.11-3.el7.noarch                          12/23 
  Installing : python-django-tagging-0.3.1-11.el7.noarch                  13/23 
  Installing : pyserial-2.6-5.el7.noarch                                  14/23 
  Installing : python-simplejson-3.3.3-1.el7.x86_64                       15/23 
  Installing : python-zope-interface-4.0.5-4.el7.x86_64                   16/23 
  Installing : pyOpenSSL-0.13.1-3.el7.x86_64                              17/23 
  Installing : python-twisted-core-12.2.0-4.el7.x86_64                    18/23 
  Installing : pyparsing-1.5.6-9.el7.noarch                               19/23 
  Installing : graphite-web-0.9.12-8.el7.noarch                           20/23 
  Installing : python-carbon-0.9.12-7.el7.noarch                          21/23 
  Installing : uwsgi-plugin-carbon-2.0.11.1-1.el7.x86_64                  22/23 
  Installing : MySQL-python-1.2.3-11.el7.x86_64                           23/23 
  Verifying  : uwsgi-plugin-common-2.0.11.1-1.el7.x86_64                   1/23 
  Verifying  : MySQL-python-1.2.3-11.el7.x86_64                            2/23 
  Verifying  : dejavu-serif-fonts-2.33-6.el7.noarch                        3/23 
  Verifying  : pyparsing-1.5.6-9.el7.noarch                                4/23 
  Verifying  : python-whisper-0.9.12-4.el7.noarch                          5/23 
  Verifying  : pyOpenSSL-0.13.1-3.el7.x86_64                               6/23 
  Verifying  : python-zope-interface-4.0.5-4.el7.x86_64                    7/23 
  Verifying  : python-simplejson-3.3.3-1.el7.x86_64                        8/23 
  Verifying  : dejavu-fonts-common-2.33-6.el7.noarch                       9/23 
  Verifying  : python-django-tagging-0.3.1-11.el7.noarch                  10/23 
  Verifying  : pyserial-2.6-5.el7.noarch                                  11/23 
  Verifying  : python-django-bash-completion-1.6.11-3.el7.noarch          12/23 
  Verifying  : python-carbon-0.9.12-7.el7.noarch                          13/23 
  Verifying  : mod_wsgi-3.4-12.el7_0.x86_64                               14/23 
  Verifying  : libyaml-0.1.4-11.el7_0.x86_64                              15/23 
  Verifying  : dejavu-sans-fonts-2.33-6.el7.noarch                        16/23 
  Verifying  : pycairo-1.8.10-8.el7.x86_64                                17/23 
  Verifying  : python-django-1.6.11-3.el7.noarch                          18/23 
  Verifying  : uwsgi-plugin-carbon-2.0.11.1-1.el7.x86_64                  19/23 
  Verifying  : graphite-web-0.9.12-8.el7.noarch                           20/23 
  Verifying  : python-twisted-core-12.2.0-4.el7.x86_64                    21/23 
  Verifying  : uwsgi-2.0.11.1-1.el7.x86_64                                22/23 
  Verifying  : pytz-2012d-5.el7.noarch                                    23/23 

Installed:
  MySQL-python.x86_64 0:1.2.3-11.el7                                            
  graphite-web.noarch 0:0.9.12-8.el7                                            
  python-carbon.noarch 0:0.9.12-7.el7                                           
  python-whisper.noarch 0:0.9.12-4.el7                                          
  uwsgi-plugin-carbon.x86_64 0:2.0.11.1-1.el7                                   

Dependency Installed:
  dejavu-fonts-common.noarch 0:2.33-6.el7                                       
  dejavu-sans-fonts.noarch 0:2.33-6.el7                                         
  dejavu-serif-fonts.noarch 0:2.33-6.el7                                        
  libyaml.x86_64 0:0.1.4-11.el7_0                                               
  mod_wsgi.x86_64 0:3.4-12.el7_0                                                
  pyOpenSSL.x86_64 0:0.13.1-3.el7                                               
  pycairo.x86_64 0:1.8.10-8.el7                                                 
  pyparsing.noarch 0:1.5.6-9.el7                                                
  pyserial.noarch 0:2.6-5.el7                                                   
  python-django.noarch 0:1.6.11-3.el7                                           
  python-django-bash-completion.noarch 0:1.6.11-3.el7                           
  python-django-tagging.noarch 0:0.3.1-11.el7                                   
  python-simplejson.x86_64 0:3.3.3-1.el7                                        
  python-twisted-core.x86_64 0:12.2.0-4.el7                                     
  python-zope-interface.x86_64 0:4.0.5-4.el7                                    
  pytz.noarch 0:2012d-5.el7                                                     
  uwsgi.x86_64 0:2.0.11.1-1.el7                                                 
  uwsgi-plugin-common.x86_64 0:2.0.11.1-1.el7                                   

Complete!

python-carbon

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket python-carbon installiert wurden.

# rpm -qil python-carbon
Name        : python-carbon
Version     : 0.9.12
Release     : 7.el7
Architecture: noarch
Install Date: Fri 04 Dec 2015 01:48:31 PM CET
Group       : System Environment/Daemons
Size        : 357115
License     : ASL 2.0
Signature   : RSA/SHA256, Tue 25 Nov 2014 07:05:51 PM CET, Key ID 6a2faea2352c64e5
Source RPM  : python-carbon-0.9.12-7.el7.src.rpm
Build Date  : Mon 24 Nov 2014 08:47:30 PM CET
Build Host  : buildhw-06.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://github.com/graphite-project
Summary     : Back-end data caching and persistence daemon for Graphite
Description :
Carbon is one of the components of Graphite, and is responsible for
receiving metrics over the network and writing them down to disk using
a storage back-end.
/etc/carbon
/etc/carbon/carbon.conf
/etc/carbon/storage-schemas.conf
/etc/logrotate.d/python-carbon
/usr/bin/carbon-aggregator
/usr/bin/carbon-cache
/usr/bin/carbon-client
/usr/bin/carbon-relay
/usr/bin/validate-storage-schemas
/usr/lib/python2.7/site-packages/carbon
/usr/lib/python2.7/site-packages/carbon-0.9.12-py2.7.egg-info
/usr/lib/python2.7/site-packages/carbon/__init__.py
/usr/lib/python2.7/site-packages/carbon/__init__.pyc
/usr/lib/python2.7/site-packages/carbon/__init__.pyo
/usr/lib/python2.7/site-packages/carbon/aggregator
/usr/lib/python2.7/site-packages/carbon/aggregator/__init__.py
/usr/lib/python2.7/site-packages/carbon/aggregator/__init__.pyc
/usr/lib/python2.7/site-packages/carbon/aggregator/__init__.pyo
/usr/lib/python2.7/site-packages/carbon/aggregator/buffers.py
/usr/lib/python2.7/site-packages/carbon/aggregator/buffers.pyc
/usr/lib/python2.7/site-packages/carbon/aggregator/buffers.pyo
/usr/lib/python2.7/site-packages/carbon/aggregator/receiver.py
/usr/lib/python2.7/site-packages/carbon/aggregator/receiver.pyc
/usr/lib/python2.7/site-packages/carbon/aggregator/receiver.pyo
/usr/lib/python2.7/site-packages/carbon/aggregator/rules.py
/usr/lib/python2.7/site-packages/carbon/aggregator/rules.pyc
/usr/lib/python2.7/site-packages/carbon/aggregator/rules.pyo
/usr/lib/python2.7/site-packages/carbon/amqp0-8.xml
/usr/lib/python2.7/site-packages/carbon/amqp_listener.py
/usr/lib/python2.7/site-packages/carbon/amqp_listener.pyc
/usr/lib/python2.7/site-packages/carbon/amqp_listener.pyo
/usr/lib/python2.7/site-packages/carbon/amqp_publisher.py
/usr/lib/python2.7/site-packages/carbon/amqp_publisher.pyc
/usr/lib/python2.7/site-packages/carbon/amqp_publisher.pyo
/usr/lib/python2.7/site-packages/carbon/cache.py
/usr/lib/python2.7/site-packages/carbon/cache.pyc
/usr/lib/python2.7/site-packages/carbon/cache.pyo
/usr/lib/python2.7/site-packages/carbon/client.py
/usr/lib/python2.7/site-packages/carbon/client.pyc
/usr/lib/python2.7/site-packages/carbon/client.pyo
/usr/lib/python2.7/site-packages/carbon/conf.py
/usr/lib/python2.7/site-packages/carbon/conf.pyc
/usr/lib/python2.7/site-packages/carbon/conf.pyo
/usr/lib/python2.7/site-packages/carbon/events.py
/usr/lib/python2.7/site-packages/carbon/events.pyc
/usr/lib/python2.7/site-packages/carbon/events.pyo
/usr/lib/python2.7/site-packages/carbon/exceptions.py
/usr/lib/python2.7/site-packages/carbon/exceptions.pyc
/usr/lib/python2.7/site-packages/carbon/exceptions.pyo
/usr/lib/python2.7/site-packages/carbon/hashing.py
/usr/lib/python2.7/site-packages/carbon/hashing.pyc
/usr/lib/python2.7/site-packages/carbon/hashing.pyo
/usr/lib/python2.7/site-packages/carbon/instrumentation.py
/usr/lib/python2.7/site-packages/carbon/instrumentation.pyc
/usr/lib/python2.7/site-packages/carbon/instrumentation.pyo
/usr/lib/python2.7/site-packages/carbon/log.py
/usr/lib/python2.7/site-packages/carbon/log.pyc
/usr/lib/python2.7/site-packages/carbon/log.pyo
/usr/lib/python2.7/site-packages/carbon/management.py
/usr/lib/python2.7/site-packages/carbon/management.pyc
/usr/lib/python2.7/site-packages/carbon/management.pyo
/usr/lib/python2.7/site-packages/carbon/manhole.py
/usr/lib/python2.7/site-packages/carbon/manhole.pyc
/usr/lib/python2.7/site-packages/carbon/manhole.pyo
/usr/lib/python2.7/site-packages/carbon/protocols.py
/usr/lib/python2.7/site-packages/carbon/protocols.pyc
/usr/lib/python2.7/site-packages/carbon/protocols.pyo
/usr/lib/python2.7/site-packages/carbon/regexlist.py
/usr/lib/python2.7/site-packages/carbon/regexlist.pyc
/usr/lib/python2.7/site-packages/carbon/regexlist.pyo
/usr/lib/python2.7/site-packages/carbon/relayrules.py
/usr/lib/python2.7/site-packages/carbon/relayrules.pyc
/usr/lib/python2.7/site-packages/carbon/relayrules.pyo
/usr/lib/python2.7/site-packages/carbon/rewrite.py
/usr/lib/python2.7/site-packages/carbon/rewrite.pyc
/usr/lib/python2.7/site-packages/carbon/rewrite.pyo
/usr/lib/python2.7/site-packages/carbon/routers.py
/usr/lib/python2.7/site-packages/carbon/routers.pyc
/usr/lib/python2.7/site-packages/carbon/routers.pyo
/usr/lib/python2.7/site-packages/carbon/service.py
/usr/lib/python2.7/site-packages/carbon/service.pyc
/usr/lib/python2.7/site-packages/carbon/service.pyo
/usr/lib/python2.7/site-packages/carbon/state.py
/usr/lib/python2.7/site-packages/carbon/state.pyc
/usr/lib/python2.7/site-packages/carbon/state.pyo
/usr/lib/python2.7/site-packages/carbon/storage.py
/usr/lib/python2.7/site-packages/carbon/storage.pyc
/usr/lib/python2.7/site-packages/carbon/storage.pyo
/usr/lib/python2.7/site-packages/carbon/util.py
/usr/lib/python2.7/site-packages/carbon/util.pyc
/usr/lib/python2.7/site-packages/carbon/util.pyo
/usr/lib/python2.7/site-packages/carbon/writer.py
/usr/lib/python2.7/site-packages/carbon/writer.pyc
/usr/lib/python2.7/site-packages/carbon/writer.pyo
/usr/lib/python2.7/site-packages/twisted
/usr/lib/python2.7/site-packages/twisted/plugins
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_aggregator_plugin.py
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_aggregator_plugin.pyc
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_aggregator_plugin.pyo
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_cache_plugin.py
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_cache_plugin.pyc
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_cache_plugin.pyo
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_relay_plugin.py
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_relay_plugin.pyc
/usr/lib/python2.7/site-packages/twisted/plugins/carbon_relay_plugin.pyo
/usr/lib/systemd/system/carbon-aggregator.service
/usr/lib/systemd/system/carbon-cache.service
/usr/lib/systemd/system/carbon-relay.service
/usr/share/doc/python-carbon-0.9.12
/usr/share/doc/python-carbon-0.9.12/LICENSE
/usr/share/doc/python-carbon-0.9.12/README.md
/usr/share/doc/python-carbon-0.9.12/conf
/usr/share/doc/python-carbon-0.9.12/conf/aggregation-rules.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/blacklist.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/carbon.amqp.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/carbon.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/relay-rules.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/rewrite-rules.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/storage-aggregation.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/storage-schemas.conf.example
/usr/share/doc/python-carbon-0.9.12/conf/whitelist.conf.example
/usr/share/doc/python-carbon-0.9.12/examples
/usr/share/doc/python-carbon-0.9.12/examples/example-client.py
/usr/share/man/man1/carbon-aggregator.1.gz
/usr/share/man/man1/carbon-cache.1.gz
/usr/share/man/man1/carbon-client.1.gz
/usr/share/man/man1/carbon-relay.1.gz
/usr/share/man/man1/validate-storage-schemas.1.gz
/var/lib/carbon
/var/lib/carbon/lists
/var/lib/carbon/rrd
/var/lib/carbon/whisper
/var/log/carbon

carbon-cache.service: Dienst/Deamon-Start einrichten

Um carbon für Graphite, welches als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable carbon-cache.service
ln -s '/usr/lib/systemd/system/carbon-cache.service' '/etc/systemd/system/multi-user.target.wants/carbon-cache.service'

Eine Überprüfung, ob beim Neustart des Server der carbon-cache.service-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep -e carbon-cache.service
carbon-cache.service                   enabled
bzw.
# systemctl is-enabled carbon-cache.service
enabled

graphite-web

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket graphite-web installiert wurden.

# rpm -qil graphite-web
Name        : graphite-web
Version     : 0.9.12
Release     : 8.el7
Architecture: noarch
Install Date: Fri 04 Dec 2015 01:48:29 PM CET
Group       : Applications/Internet
Size        : 9298581
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 16 Mar 2015 02:31:58 PM CET, Key ID 6a2faea2352c64e5
Source RPM  : graphite-web-0.9.12-8.el7.src.rpm
Build Date  : Fri 13 Mar 2015 11:13:20 PM CET
Build Host  : buildvm-04.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://github.com/graphite-project
Summary     : A Django web application for enterprise scalable realtime graphing
Description :
Graphite consists of a storage backend and a web-based visualization frontend.
Client applications send streams of numeric time-series data to the Graphite
backend (called carbon), where it gets stored in fixed-size database files
similar in design to RRD. The web frontend provides user interfaces
for visualizing this data in graphs as well as a simple URL-based API for
direct graph generation.

Graphite's design is focused on providing simple interfaces (both to users and
applications), real-time visualization, high-availability, and enterprise
scalability.
/etc/graphite-web
/etc/graphite-web/dashboard.conf
/etc/graphite-web/local_settings.py
/etc/graphite-web/local_settings.pyc
/etc/graphite-web/local_settings.pyo
/etc/httpd/conf.d/graphite-web.conf
/etc/logrotate.d/graphite-web
/usr/bin/graphite-build-index
/usr/bin/graphite-manage
/usr/lib/python2.7/site-packages/graphite
/usr/lib/python2.7/site-packages/graphite/__init__.py
/usr/lib/python2.7/site-packages/graphite/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/account
/usr/lib/python2.7/site-packages/graphite/account/__init__.py
/usr/lib/python2.7/site-packages/graphite/account/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/account/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/account/ldapBackend.py
/usr/lib/python2.7/site-packages/graphite/account/ldapBackend.pyc
/usr/lib/python2.7/site-packages/graphite/account/ldapBackend.pyo
/usr/lib/python2.7/site-packages/graphite/account/models.py
/usr/lib/python2.7/site-packages/graphite/account/models.pyc
/usr/lib/python2.7/site-packages/graphite/account/models.pyo
/usr/lib/python2.7/site-packages/graphite/account/urls.py
/usr/lib/python2.7/site-packages/graphite/account/urls.pyc
/usr/lib/python2.7/site-packages/graphite/account/urls.pyo
/usr/lib/python2.7/site-packages/graphite/account/views.py
/usr/lib/python2.7/site-packages/graphite/account/views.pyc
/usr/lib/python2.7/site-packages/graphite/account/views.pyo
/usr/lib/python2.7/site-packages/graphite/app_settings.py
/usr/lib/python2.7/site-packages/graphite/app_settings.pyc
/usr/lib/python2.7/site-packages/graphite/app_settings.pyo
/usr/lib/python2.7/site-packages/graphite/browser
/usr/lib/python2.7/site-packages/graphite/browser/__init__.py
/usr/lib/python2.7/site-packages/graphite/browser/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/browser/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/browser/urls.py
/usr/lib/python2.7/site-packages/graphite/browser/urls.pyc
/usr/lib/python2.7/site-packages/graphite/browser/urls.pyo
/usr/lib/python2.7/site-packages/graphite/browser/views.py
/usr/lib/python2.7/site-packages/graphite/browser/views.pyc
/usr/lib/python2.7/site-packages/graphite/browser/views.pyo
/usr/lib/python2.7/site-packages/graphite/cli
/usr/lib/python2.7/site-packages/graphite/cli/__init__.py
/usr/lib/python2.7/site-packages/graphite/cli/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/cli/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/cli/commands.py
/usr/lib/python2.7/site-packages/graphite/cli/commands.pyc
/usr/lib/python2.7/site-packages/graphite/cli/commands.pyo
/usr/lib/python2.7/site-packages/graphite/cli/completer.py
/usr/lib/python2.7/site-packages/graphite/cli/completer.pyc
/usr/lib/python2.7/site-packages/graphite/cli/completer.pyo
/usr/lib/python2.7/site-packages/graphite/cli/parser.py
/usr/lib/python2.7/site-packages/graphite/cli/parser.pyc
/usr/lib/python2.7/site-packages/graphite/cli/parser.pyo
/usr/lib/python2.7/site-packages/graphite/cli/urls.py
/usr/lib/python2.7/site-packages/graphite/cli/urls.pyc
/usr/lib/python2.7/site-packages/graphite/cli/urls.pyo
/usr/lib/python2.7/site-packages/graphite/cli/views.py
/usr/lib/python2.7/site-packages/graphite/cli/views.pyc
/usr/lib/python2.7/site-packages/graphite/cli/views.pyo
/usr/lib/python2.7/site-packages/graphite/composer
/usr/lib/python2.7/site-packages/graphite/composer/__init__.py
/usr/lib/python2.7/site-packages/graphite/composer/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/composer/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/composer/urls.py
/usr/lib/python2.7/site-packages/graphite/composer/urls.pyc
/usr/lib/python2.7/site-packages/graphite/composer/urls.pyo
/usr/lib/python2.7/site-packages/graphite/composer/views.py
/usr/lib/python2.7/site-packages/graphite/composer/views.pyc
/usr/lib/python2.7/site-packages/graphite/composer/views.pyo
/usr/lib/python2.7/site-packages/graphite/dashboard
/usr/lib/python2.7/site-packages/graphite/dashboard/__init__.py
/usr/lib/python2.7/site-packages/graphite/dashboard/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/dashboard/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/dashboard/admin.py
/usr/lib/python2.7/site-packages/graphite/dashboard/admin.pyc
/usr/lib/python2.7/site-packages/graphite/dashboard/admin.pyo
/usr/lib/python2.7/site-packages/graphite/dashboard/models.py
/usr/lib/python2.7/site-packages/graphite/dashboard/models.pyc
/usr/lib/python2.7/site-packages/graphite/dashboard/models.pyo
/usr/lib/python2.7/site-packages/graphite/dashboard/send_graph.py
/usr/lib/python2.7/site-packages/graphite/dashboard/send_graph.pyc
/usr/lib/python2.7/site-packages/graphite/dashboard/send_graph.pyo
/usr/lib/python2.7/site-packages/graphite/dashboard/urls.py
/usr/lib/python2.7/site-packages/graphite/dashboard/urls.pyc
/usr/lib/python2.7/site-packages/graphite/dashboard/urls.pyo
/usr/lib/python2.7/site-packages/graphite/dashboard/views.py
/usr/lib/python2.7/site-packages/graphite/dashboard/views.pyc
/usr/lib/python2.7/site-packages/graphite/dashboard/views.pyo
/usr/lib/python2.7/site-packages/graphite/events
/usr/lib/python2.7/site-packages/graphite/events/__init__.py
/usr/lib/python2.7/site-packages/graphite/events/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/events/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/events/admin.py
/usr/lib/python2.7/site-packages/graphite/events/admin.pyc
/usr/lib/python2.7/site-packages/graphite/events/admin.pyo
/usr/lib/python2.7/site-packages/graphite/events/models.py
/usr/lib/python2.7/site-packages/graphite/events/models.pyc
/usr/lib/python2.7/site-packages/graphite/events/models.pyo
/usr/lib/python2.7/site-packages/graphite/events/urls.py
/usr/lib/python2.7/site-packages/graphite/events/urls.pyc
/usr/lib/python2.7/site-packages/graphite/events/urls.pyo
/usr/lib/python2.7/site-packages/graphite/events/views.py
/usr/lib/python2.7/site-packages/graphite/events/views.pyc
/usr/lib/python2.7/site-packages/graphite/events/views.pyo
/usr/lib/python2.7/site-packages/graphite/graphlot
/usr/lib/python2.7/site-packages/graphite/graphlot/__init__.py
/usr/lib/python2.7/site-packages/graphite/graphlot/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/graphlot/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/graphlot/urls.py
/usr/lib/python2.7/site-packages/graphite/graphlot/urls.pyc
/usr/lib/python2.7/site-packages/graphite/graphlot/urls.pyo
/usr/lib/python2.7/site-packages/graphite/graphlot/views.py
/usr/lib/python2.7/site-packages/graphite/graphlot/views.pyc
/usr/lib/python2.7/site-packages/graphite/graphlot/views.pyo
/usr/lib/python2.7/site-packages/graphite/local_settings.py
/usr/lib/python2.7/site-packages/graphite/local_settings.py.example
/usr/lib/python2.7/site-packages/graphite/logger.py
/usr/lib/python2.7/site-packages/graphite/logger.pyc
/usr/lib/python2.7/site-packages/graphite/logger.pyo
/usr/lib/python2.7/site-packages/graphite/manage.py
/usr/lib/python2.7/site-packages/graphite/manage.pyc
/usr/lib/python2.7/site-packages/graphite/manage.pyo
/usr/lib/python2.7/site-packages/graphite/metrics
/usr/lib/python2.7/site-packages/graphite/metrics/__init__.py
/usr/lib/python2.7/site-packages/graphite/metrics/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/metrics/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/metrics/search.py
/usr/lib/python2.7/site-packages/graphite/metrics/search.pyc
/usr/lib/python2.7/site-packages/graphite/metrics/search.pyo
/usr/lib/python2.7/site-packages/graphite/metrics/urls.py
/usr/lib/python2.7/site-packages/graphite/metrics/urls.pyc
/usr/lib/python2.7/site-packages/graphite/metrics/urls.pyo
/usr/lib/python2.7/site-packages/graphite/metrics/views.py
/usr/lib/python2.7/site-packages/graphite/metrics/views.pyc
/usr/lib/python2.7/site-packages/graphite/metrics/views.pyo
/usr/lib/python2.7/site-packages/graphite/remote_storage.py
/usr/lib/python2.7/site-packages/graphite/remote_storage.pyc
/usr/lib/python2.7/site-packages/graphite/remote_storage.pyo
/usr/lib/python2.7/site-packages/graphite/render
/usr/lib/python2.7/site-packages/graphite/render/__init__.py
/usr/lib/python2.7/site-packages/graphite/render/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/render/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/render/attime.py
/usr/lib/python2.7/site-packages/graphite/render/attime.pyc
/usr/lib/python2.7/site-packages/graphite/render/attime.pyo
/usr/lib/python2.7/site-packages/graphite/render/datalib.py
/usr/lib/python2.7/site-packages/graphite/render/datalib.pyc
/usr/lib/python2.7/site-packages/graphite/render/datalib.pyo
/usr/lib/python2.7/site-packages/graphite/render/evaluator.py
/usr/lib/python2.7/site-packages/graphite/render/evaluator.pyc
/usr/lib/python2.7/site-packages/graphite/render/evaluator.pyo
/usr/lib/python2.7/site-packages/graphite/render/functions.py
/usr/lib/python2.7/site-packages/graphite/render/functions.pyc
/usr/lib/python2.7/site-packages/graphite/render/functions.pyo
/usr/lib/python2.7/site-packages/graphite/render/functions_test.py
/usr/lib/python2.7/site-packages/graphite/render/functions_test.pyc
/usr/lib/python2.7/site-packages/graphite/render/functions_test.pyo
/usr/lib/python2.7/site-packages/graphite/render/glyph.py
/usr/lib/python2.7/site-packages/graphite/render/glyph.pyc
/usr/lib/python2.7/site-packages/graphite/render/glyph.pyo
/usr/lib/python2.7/site-packages/graphite/render/grammar.py
/usr/lib/python2.7/site-packages/graphite/render/grammar.pyc
/usr/lib/python2.7/site-packages/graphite/render/grammar.pyo
/usr/lib/python2.7/site-packages/graphite/render/hashing.py
/usr/lib/python2.7/site-packages/graphite/render/hashing.pyc
/usr/lib/python2.7/site-packages/graphite/render/hashing.pyo
/usr/lib/python2.7/site-packages/graphite/render/urls.py
/usr/lib/python2.7/site-packages/graphite/render/urls.pyc
/usr/lib/python2.7/site-packages/graphite/render/urls.pyo
/usr/lib/python2.7/site-packages/graphite/render/views.py
/usr/lib/python2.7/site-packages/graphite/render/views.pyc
/usr/lib/python2.7/site-packages/graphite/render/views.pyo
/usr/lib/python2.7/site-packages/graphite/settings.py
/usr/lib/python2.7/site-packages/graphite/settings.pyc
/usr/lib/python2.7/site-packages/graphite/settings.pyo
/usr/lib/python2.7/site-packages/graphite/storage.py
/usr/lib/python2.7/site-packages/graphite/storage.pyc
/usr/lib/python2.7/site-packages/graphite/storage.pyo
/usr/lib/python2.7/site-packages/graphite/templates
/usr/lib/python2.7/site-packages/graphite/templates/500.html
/usr/lib/python2.7/site-packages/graphite/templates/browser.html
/usr/lib/python2.7/site-packages/graphite/templates/browserHeader.html
/usr/lib/python2.7/site-packages/graphite/templates/cli.html
/usr/lib/python2.7/site-packages/graphite/templates/composer.html
/usr/lib/python2.7/site-packages/graphite/templates/dashboard.html
/usr/lib/python2.7/site-packages/graphite/templates/dashboardHelp.html
/usr/lib/python2.7/site-packages/graphite/templates/editProfile.html
/usr/lib/python2.7/site-packages/graphite/templates/event.html
/usr/lib/python2.7/site-packages/graphite/templates/events.html
/usr/lib/python2.7/site-packages/graphite/templates/graphlot.html
/usr/lib/python2.7/site-packages/graphite/templates/login.html
/usr/lib/python2.7/site-packages/graphite/templates/version.html
/usr/lib/python2.7/site-packages/graphite/urls.py
/usr/lib/python2.7/site-packages/graphite/urls.pyc
/usr/lib/python2.7/site-packages/graphite/urls.pyo
/usr/lib/python2.7/site-packages/graphite/util.py
/usr/lib/python2.7/site-packages/graphite/util.pyc
/usr/lib/python2.7/site-packages/graphite/util.pyo
/usr/lib/python2.7/site-packages/graphite/version
/usr/lib/python2.7/site-packages/graphite/version/__init__.py
/usr/lib/python2.7/site-packages/graphite/version/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/version/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/version/urls.py
/usr/lib/python2.7/site-packages/graphite/version/urls.pyc
/usr/lib/python2.7/site-packages/graphite/version/urls.pyo
/usr/lib/python2.7/site-packages/graphite/version/views.py
/usr/lib/python2.7/site-packages/graphite/version/views.pyc
/usr/lib/python2.7/site-packages/graphite/version/views.pyo
/usr/lib/python2.7/site-packages/graphite/views.py
/usr/lib/python2.7/site-packages/graphite/views.pyc
/usr/lib/python2.7/site-packages/graphite/views.pyo
/usr/lib/python2.7/site-packages/graphite/whitelist
/usr/lib/python2.7/site-packages/graphite/whitelist/__init__.py
/usr/lib/python2.7/site-packages/graphite/whitelist/__init__.pyc
/usr/lib/python2.7/site-packages/graphite/whitelist/__init__.pyo
/usr/lib/python2.7/site-packages/graphite/whitelist/urls.py
/usr/lib/python2.7/site-packages/graphite/whitelist/urls.pyc
/usr/lib/python2.7/site-packages/graphite/whitelist/urls.pyo
/usr/lib/python2.7/site-packages/graphite/whitelist/views.py
/usr/lib/python2.7/site-packages/graphite/whitelist/views.pyc
/usr/lib/python2.7/site-packages/graphite/whitelist/views.pyo
/usr/lib/python2.7/site-packages/graphite_web-0.9.12-py2.7.egg-info
/usr/share/doc/graphite-web-0.9.12
/usr/share/doc/graphite-web-0.9.12/LICENSE
/usr/share/doc/graphite-web-0.9.12/README.fedora
/usr/share/doc/graphite-web-0.9.12/dashboard.conf.example
/usr/share/doc/graphite-web-0.9.12/example-client.py
/usr/share/doc/graphite-web-0.9.12/example-graphite-vhost.conf
/usr/share/doc/graphite-web-0.9.12/graphTemplates.conf.example
/usr/share/doc/graphite-web-0.9.12/graphite.wsgi.example
/usr/share/graphite
/usr/share/graphite/graphite-web.wsgi
/usr/share/graphite/webapp
/usr/share/graphite/webapp/content
/usr/share/graphite/webapp/content/css
/usr/share/graphite/webapp/content/css/cli.css
/usr/share/graphite/webapp/content/css/darkX
/usr/share/graphite/webapp/content/css/darkX.css
/usr/share/graphite/webapp/content/css/darkX/button-close-focused.png
/usr/share/graphite/webapp/content/css/darkX/button-maximize-focused.png
/usr/share/graphite/webapp/content/css/darkX/button-minimize-focused.png
/usr/share/graphite/webapp/content/css/darkX/frame-bottom-left-focused.png
/usr/share/graphite/webapp/content/css/darkX/frame-bottom-mid-focused.png
/usr/share/graphite/webapp/content/css/darkX/frame-bottom-right-focused.png
/usr/share/graphite/webapp/content/css/darkX/frame-left-focused.png
/usr/share/graphite/webapp/content/css/darkX/frame-right-focused.png
/usr/share/graphite/webapp/content/css/darkX/titlebar-left-focused.png
/usr/share/graphite/webapp/content/css/darkX/titlebar-mid-focused.png
/usr/share/graphite/webapp/content/css/darkX/titlebar-right-focused.png
/usr/share/graphite/webapp/content/css/dashboard-default.css
/usr/share/graphite/webapp/content/css/dashboard-white.css
/usr/share/graphite/webapp/content/css/dashboard.css
/usr/share/graphite/webapp/content/css/default
/usr/share/graphite/webapp/content/css/default.css
/usr/share/graphite/webapp/content/css/default/bottom_left.gif
/usr/share/graphite/webapp/content/css/default/bottom_mid.gif
/usr/share/graphite/webapp/content/css/default/bottom_right.gif
/usr/share/graphite/webapp/content/css/default/bottom_right_resize.gif
/usr/share/graphite/webapp/content/css/default/center_left.gif
/usr/share/graphite/webapp/content/css/default/center_right.gif
/usr/share/graphite/webapp/content/css/default/clear.gif
/usr/share/graphite/webapp/content/css/default/close.gif
/usr/share/graphite/webapp/content/css/default/inspect.gif
/usr/share/graphite/webapp/content/css/default/maximize.gif
/usr/share/graphite/webapp/content/css/default/minimize.gif
/usr/share/graphite/webapp/content/css/default/overlay.png
/usr/share/graphite/webapp/content/css/default/resize.gif
/usr/share/graphite/webapp/content/css/default/sizer.gif
/usr/share/graphite/webapp/content/css/default/top_left.gif
/usr/share/graphite/webapp/content/css/default/top_mid.gif
/usr/share/graphite/webapp/content/css/default/top_right.gif
/usr/share/graphite/webapp/content/css/jquery.autocomplete.css
/usr/share/graphite/webapp/content/css/table.css
/usr/share/graphite/webapp/content/html
/usr/share/graphite/webapp/content/html/completerHelp.html
/usr/share/graphite/webapp/content/html/searchHelp.html
/usr/share/graphite/webapp/content/html/timeHelp.html
/usr/share/graphite/webapp/content/img
/usr/share/graphite/webapp/content/img/I.gif
/usr/share/graphite/webapp/content/img/L.gif
/usr/share/graphite/webapp/content/img/Lminus.gif
/usr/share/graphite/webapp/content/img/Lplus.gif
/usr/share/graphite/webapp/content/img/T.gif
/usr/share/graphite/webapp/content/img/Tminus.gif
/usr/share/graphite/webapp/content/img/Tplus.gif
/usr/share/graphite/webapp/content/img/arrow1.gif
/usr/share/graphite/webapp/content/img/blank.gif
/usr/share/graphite/webapp/content/img/calBt.gif
/usr/share/graphite/webapp/content/img/carbon-fiber.png
/usr/share/graphite/webapp/content/img/clock_16.png
/usr/share/graphite/webapp/content/img/delete.gif
/usr/share/graphite/webapp/content/img/error.png
/usr/share/graphite/webapp/content/img/folder.png
/usr/share/graphite/webapp/content/img/graphite.png
/usr/share/graphite/webapp/content/img/graphite_short.png
/usr/share/graphite/webapp/content/img/indicator.png
/usr/share/graphite/webapp/content/img/leaf.gif
/usr/share/graphite/webapp/content/img/line_chart.png
/usr/share/graphite/webapp/content/img/mini-bottom2.gif
/usr/share/graphite/webapp/content/img/mini-top2.gif
/usr/share/graphite/webapp/content/img/save.gif
/usr/share/graphite/webapp/content/img/searching.gif
/usr/share/graphite/webapp/content/img/updateGraph.gif
/usr/share/graphite/webapp/content/js
/usr/share/graphite/webapp/content/js/ace
/usr/share/graphite/webapp/content/js/ace/ace.js
/usr/share/graphite/webapp/content/js/ace/keybinding-vim.js
/usr/share/graphite/webapp/content/js/ace/mode-c_cpp.js
/usr/share/graphite/webapp/content/js/ace/mode-clojure.js
/usr/share/graphite/webapp/content/js/ace/mode-coffee.js
/usr/share/graphite/webapp/content/js/ace/mode-csharp.js
/usr/share/graphite/webapp/content/js/ace/mode-css.js
/usr/share/graphite/webapp/content/js/ace/mode-groovy.js
/usr/share/graphite/webapp/content/js/ace/mode-html.js
/usr/share/graphite/webapp/content/js/ace/mode-java.js
/usr/share/graphite/webapp/content/js/ace/mode-javascript.js
/usr/share/graphite/webapp/content/js/ace/mode-json.js
/usr/share/graphite/webapp/content/js/ace/theme-textmate.js
/usr/share/graphite/webapp/content/js/ace/worker-javascript.js
/usr/share/graphite/webapp/content/js/browser.js
/usr/share/graphite/webapp/content/js/cli.js
/usr/share/graphite/webapp/content/js/completer.js
/usr/share/graphite/webapp/content/js/composer.js
/usr/share/graphite/webapp/content/js/composer_widgets.js
/usr/share/graphite/webapp/content/js/dashboard.js
/usr/share/graphite/webapp/content/js/ext
/usr/share/graphite/webapp/content/js/ext/adapter
/usr/share/graphite/webapp/content/js/ext/adapter/ext
/usr/share/graphite/webapp/content/js/ext/adapter/ext/ext-base-debug.js
/usr/share/graphite/webapp/content/js/ext/adapter/ext/ext-base.js
/usr/share/graphite/webapp/content/js/ext/adapter/jquery
/usr/share/graphite/webapp/content/js/ext/adapter/jquery/ext-jquery-adapter-debug.js
/usr/share/graphite/webapp/content/js/ext/adapter/jquery/ext-jquery-adapter.js
/usr/share/graphite/webapp/content/js/ext/adapter/prototype
/usr/share/graphite/webapp/content/js/ext/adapter/prototype/ext-prototype-adapter-debug.js
/usr/share/graphite/webapp/content/js/ext/adapter/prototype/ext-prototype-adapter.js
/usr/share/graphite/webapp/content/js/ext/adapter/yui
/usr/share/graphite/webapp/content/js/ext/adapter/yui/ext-yui-adapter-debug.js
/usr/share/graphite/webapp/content/js/ext/adapter/yui/ext-yui-adapter.js
/usr/share/graphite/webapp/content/js/ext/examples
/usr/share/graphite/webapp/content/js/ext/examples/shared
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/arrow-down.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/arrow-up.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/SILK.txt
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/accept.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/add.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/add.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/application_go.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/application_view_list.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/book.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/cog.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/cog_edit.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/connect.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/connect.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/control_rewind.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/cross.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/delete.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/error.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/feed_add.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/feed_delete.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/feed_error.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/folder_go.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/folder_wrench.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/grid.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/image_add.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/information.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/plugin.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/plugin_add.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/rss_go.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/table_refresh.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_add.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_add.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_comment.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_delete.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_delete.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_edit.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_female.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_female.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_gray.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_green.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_green.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_orange.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_red.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_suit.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/fam/user_suit.png
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/save.gif
/usr/share/graphite/webapp/content/js/ext/examples/shared/icons/silk.css
/usr/share/graphite/webapp/content/js/ext/ext-all-debug.js
/usr/share/graphite/webapp/content/js/ext/ext-all.js
/usr/share/graphite/webapp/content/js/ext/license.txt
/usr/share/graphite/webapp/content/js/ext/pkgs
/usr/share/graphite/webapp/content/js/ext/pkgs/cmp-foundation-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/cmp-foundation.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-foundation-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-foundation.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-grouping-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-grouping.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-json-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-json.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-list-views-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-list-views.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-xml-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/data-xml.js
/usr/share/graphite/webapp/content/js/ext/pkgs/direct-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/direct.js
/usr/share/graphite/webapp/content/js/ext/pkgs/ext-core-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/ext-core.js
/usr/share/graphite/webapp/content/js/ext/pkgs/ext-dd-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/ext-dd.js
/usr/share/graphite/webapp/content/js/ext/pkgs/ext-foundation-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/ext-foundation.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-buttons-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-buttons.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-charts-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-charts.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-forms-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-forms.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-editor-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-editor.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-foundation-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-foundation.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-grouping-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-grouping.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-property-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-grid-property.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-history-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-history.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-menu-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-menu.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-tabs-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-tabs.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-tips-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-tips.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-toolbars-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-toolbars.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-tree-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/pkg-tree.js
/usr/share/graphite/webapp/content/js/ext/pkgs/resizable-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/resizable.js
/usr/share/graphite/webapp/content/js/ext/pkgs/state-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/state.js
/usr/share/graphite/webapp/content/js/ext/pkgs/window-debug.js
/usr/share/graphite/webapp/content/js/ext/pkgs/window.js
/usr/share/graphite/webapp/content/js/ext/resources
/usr/share/graphite/webapp/content/js/ext/resources/css
/usr/share/graphite/webapp/content/js/ext/resources/css/README.txt
/usr/share/graphite/webapp/content/js/ext/resources/css/debug.css
/usr/share/graphite/webapp/content/js/ext/resources/css/ext-all-notheme.css
/usr/share/graphite/webapp/content/js/ext/resources/css/ext-all.css
/usr/share/graphite/webapp/content/js/ext/resources/css/reset-min.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/borders.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/box.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/button.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/combo.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/core.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/date-picker.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/dd.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/debug.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/dialog.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/editor.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/form.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/grid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/layout.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/list-view.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/menu.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/panel-reset.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/panel.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/pivotgrid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/progress.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/qtips.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/reset.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/resizable.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/slider.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/tabs.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/toolbar.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/tree.css
/usr/share/graphite/webapp/content/js/ext/resources/css/structure/window.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/borders.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/box.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/button.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/combo.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/core.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/date-picker.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/dd.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/debug.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/dialog.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/editor.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/form.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/grid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/layout.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/list-view.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/menu.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/panel.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/progress.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/qtips.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/resizable.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/slider.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/tabs.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/toolbar.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/tree.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-access/window.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/borders.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/box.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/button.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/combo.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/core.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/date-picker.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/dd.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/debug.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/dialog.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/editor.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/form.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/grid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/layout.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/list-view.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/menu.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/panel.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/pivotgrid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/progress.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/qtips.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/resizable.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/slider.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/tabs.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/toolbar.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/tree.css
/usr/share/graphite/webapp/content/js/ext/resources/css/theme-gray/window.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/borders.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/box.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/button.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/combo.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/core.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/date-picker.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/dd.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/debug.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/dialog.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/editor.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/form.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/grid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/layout.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/list-view.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/menu.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/panel.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/pivotgrid.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/progress.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/qtips.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/resizable.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/slider.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/tabs.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/toolbar.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/tree.css
/usr/share/graphite/webapp/content/js/ext/resources/css/visual/window.css
/usr/share/graphite/webapp/content/js/ext/resources/css/xtheme-access.css
/usr/share/graphite/webapp/content/js/ext/resources/css/xtheme-blue.css
/usr/share/graphite/webapp/content/js/ext/resources/css/xtheme-gray.css
/usr/share/graphite/webapp/content/js/ext/resources/css/yourtheme.css
/usr/share/graphite/webapp/content/js/ext/resources/images
/usr/share/graphite/webapp/content/js/ext/resources/images/default
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/corners-blue.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/corners.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/l-blue.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/l.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/r-blue.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/r.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/tb-blue.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/box/tb.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/arrow.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/btn.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/group-cs.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/group-lr.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/group-tb.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/s-arrow-b-noline.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/s-arrow-b.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/s-arrow-bo.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/s-arrow-noline.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/s-arrow-o.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/button/s-arrow.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/dd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/dd/drop-add.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/dd/drop-no.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/dd/drop-yes.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/editor
/usr/share/graphite/webapp/content/js/ext/resources/images/default/editor/tb-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/checkbox.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/clear-trigger.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/clear-trigger.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/date-trigger.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/date-trigger.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/error-tip-corners.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/exclamation.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/radio.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/search-trigger.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/search-trigger.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/text-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/trigger-square.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/trigger-square.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/trigger-tpl.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/trigger.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/form/trigger.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/gradient-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/arrow-left-white.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/arrow-right-white.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/col-move-bottom.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/col-move-top.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/columns.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/dirty.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/done.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/drop-no.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/drop-yes.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/footer-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid-blue-hd.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid-blue-split.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid-hrow.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid-loading.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid-split.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid-vista-hd.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid3-hd-btn.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid3-hrow-over.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid3-hrow.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid3-rowheader.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid3-special-col-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/grid3-special-col-sel-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/group-by.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/group-collapse.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/group-expand-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/group-expand.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hd-pop.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hmenu-asc.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hmenu-desc.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hmenu-lock.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hmenu-lock.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hmenu-unlock.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/hmenu-unlock.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/invalid_line.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/loading.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/mso-hd.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/nowait.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-first-disabled.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-first.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-last-disabled.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-last.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-next-disabled.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-next.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-prev-disabled.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/page-prev.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/pick-button.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/refresh-disabled.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/refresh.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/row-check-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/row-expand-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/row-over.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/row-sel.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/sort-hd.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/sort_asc.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/sort_desc.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/grid/wait.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/collapse.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/expand.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/gradient-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/mini-bottom.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/mini-left.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/mini-right.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/mini-top.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/ns-collapse.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/ns-expand.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/panel-close.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/panel-title-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/panel-title-light-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/stick.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/stuck.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/tab-close-on.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/layout/tab-close.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu/checked.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu/group-checked.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu/item-over.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu/menu-parent.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu/menu.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/menu/unchecked.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/corners-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/left-right.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/light-hd.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/tool-sprite-tpl.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/tool-sprites.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/tools-sprites-trans.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/top-bottom.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/top-bottom.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/white-corners-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/white-left-right.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/panel/white-top-bottom.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/progress
/usr/share/graphite/webapp/content/js/ext/resources/images/default/progress/progress-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/qtip
/usr/share/graphite/webapp/content/js/ext/resources/images/default/qtip/bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/qtip/close.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/qtip/tip-anchor-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/qtip/tip-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/s.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shadow-c.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shadow-lr.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shadow.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/blue-loading.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/calendar.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/glass-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/hd-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/large-loading.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/left-btn.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/loading-balls.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/right-btn.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/shared/warning.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/e-handle-dark.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/e-handle.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/ne-handle-dark.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/ne-handle.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/nw-handle-dark.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/nw-handle.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/s-handle-dark.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/s-handle.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/se-handle-dark.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/se-handle.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/square.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/sw-handle-dark.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/sizer/sw-handle.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/slider
/usr/share/graphite/webapp/content/js/ext/resources/images/default/slider/slider-bg.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/slider/slider-thumb.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/slider/slider-v-bg.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/slider/slider-v-thumb.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/scroll-left.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/scroll-right.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/scroller-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-btm-inactive-left-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-btm-inactive-right-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-btm-left-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-btm-over-left-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-btm-over-right-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-btm-right-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-close.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-strip-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-strip-bg.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tab-strip-btm-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tabs/tabs-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/btn-arrow-light.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/btn-arrow.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/btn-over-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/gray-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/more.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/tb-bg.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/tb-btn-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/tb-xl-btn-sprite.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/toolbar/tb-xl-sep.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/arrows.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/drop-add.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/drop-between.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/drop-no.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/drop-over.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/drop-under.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/drop-yes.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-end-minus-nl.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-end-minus.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-end-plus-nl.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-end-plus.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-end.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-line.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-minus-nl.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-minus.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-plus-nl.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow-plus.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/elbow.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/folder-open.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/folder.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/leaf.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/loading.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/tree/s.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/icon-error.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/icon-info.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/icon-question.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/icon-warning.gif
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/left-corners.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/left-corners.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/left-right.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/left-right.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/right-corners.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/right-corners.psd
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/top-bottom.png
/usr/share/graphite/webapp/content/js/ext/resources/images/default/window/top-bottom.psd
/usr/share/graphite/webapp/content/js/ext/ux
/usr/share/graphite/webapp/content/js/ext/ux/DataViewTransition.js
/usr/share/graphite/webapp/content/js/jquery.autocomplete.js
/usr/share/graphite/webapp/content/js/jquery.flot.crosshair.js
/usr/share/graphite/webapp/content/js/jquery.flot.js
/usr/share/graphite/webapp/content/js/jquery.flot.selection.js
/usr/share/graphite/webapp/content/js/jquery.graphite.js
/usr/share/graphite/webapp/content/js/jquery.js
/usr/share/graphite/webapp/content/js/scriptaculous
/usr/share/graphite/webapp/content/js/scriptaculous/builder.js
/usr/share/graphite/webapp/content/js/scriptaculous/controls.js
/usr/share/graphite/webapp/content/js/scriptaculous/dragdrop.js
/usr/share/graphite/webapp/content/js/scriptaculous/effects.js
/usr/share/graphite/webapp/content/js/scriptaculous/scriptaculous.js
/usr/share/graphite/webapp/content/js/scriptaculous/slider.js
/usr/share/graphite/webapp/content/js/window
/usr/share/graphite/webapp/content/js/window/effects.js
/usr/share/graphite/webapp/content/js/window/prototype.js
/usr/share/graphite/webapp/content/js/window/window.js
/usr/share/graphite/webapp/content/js/window/window_effects.js
/var/lib/graphite-web
/var/log/graphite-web

python-whisper

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket python-whisper installiert wurden.

# rpm -qil python-whisper
Name        : python-whisper
Version     : 0.9.12
Release     : 4.el7
Architecture: noarch
Install Date: Fri 04 Dec 2015 01:47:57 PM CET
Group       : Development/Libraries
Size        : 109732
License     : ASL 2.0
Signature   : RSA/SHA256, Tue 25 Nov 2014 07:06:20 PM CET, Key ID 6a2faea2352c64e5
Source RPM  : python-whisper-0.9.12-4.el7.src.rpm
Build Date  : Mon 24 Nov 2014 08:15:31 PM CET
Build Host  : buildvm-05.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://github.com/graphite-project
Summary     : Simple database library for storing time-series data
Description :
Whisper is a fixed-size database, similar in design and purpose to RRD
(round-robin-database). It provides fast, reliable storage of numeric
data over time. Whisper allows for higher resolution (seconds per point)
of recent data to degrade into lower resolutions for long-term retention
of historical data.
/usr/bin/rrd2whisper
/usr/bin/whisper-create
/usr/bin/whisper-dump
/usr/bin/whisper-fetch
/usr/bin/whisper-info
/usr/bin/whisper-merge
/usr/bin/whisper-resize
/usr/bin/whisper-set-aggregation-method
/usr/bin/whisper-update
/usr/lib/python2.7/site-packages/whisper-0.9.12-py2.7.egg-info
/usr/lib/python2.7/site-packages/whisper.py
/usr/lib/python2.7/site-packages/whisper.pyc
/usr/lib/python2.7/site-packages/whisper.pyo
/usr/share/doc/python-whisper-0.9.12
/usr/share/doc/python-whisper-0.9.12/LICENSE
/usr/share/man/man1/rrd2whisper.1.gz
/usr/share/man/man1/whisper-create.1.gz
/usr/share/man/man1/whisper-dump.1.gz
/usr/share/man/man1/whisper-fetch.1.gz
/usr/share/man/man1/whisper-info.1.gz
/usr/share/man/man1/whisper-merge.1.gz
/usr/share/man/man1/whisper-resize.1.gz
/usr/share/man/man1/whisper-set-aggregation-method.1.gz
/usr/share/man/man1/whisper-update.1.gz

icingaweb2-module-graphite

Mit nachfolgendem Befehl kann die zuvor, wie unter nachfolgendem internen Link beschrieben

heruntergeladene Datei, in das Zielverzeichnis

  • /usr/share/icingaweb2/modules

entpackt werden:

# unzip /tmp/master.zip -d /usr/share/icingaweb2/modules

Abschließend muss nun noch das durch das entpacken neu entstandene Verzeichnis mit nachfolgendem Befehl umbenannt werden:

# mv /usr/share/icingaweb2/modules/icingaweb2-module-graphite-master /usr/share/icingaweb2/modules/graphite

Konfiguration: carbon

Nachfolgende Konfigurationen basieren auf den Informationen unter nachfolgenden externen Links:

/etc/carbon/carbon.conf

Nachfolgende Konfigurationsdatei

  • /etc/carbon/carbon.conf

beinhaltete alle Konfigurationsdirektiven für die Abschnitte

  1. cache
  2. relay
  3. aggregator

Nachfolgende die komplette Konfigurationsdatei:

[cache]
# Configure carbon directories.
#
# OS environment variables can be used to tell carbon where graphite is
# installed, where to read configuration from and where to write data.
#
#   GRAPHITE_ROOT        - Root directory of the graphite installation.
#                          Defaults to ../
#   GRAPHITE_CONF_DIR    - Configuration directory (where this file lives).
#                          Defaults to $GRAPHITE_ROOT/conf/
#   GRAPHITE_STORAGE_DIR - Storage directory for whipser/rrd/log/pid files.
#                          Defaults to $GRAPHITE_ROOT/storage/
#
# To change other directory paths, add settings to this file. The following
# configuration variables are available with these default values:
#
#   STORAGE_DIR    = $GRAPHITE_STORAGE_DIR
#   LOCAL_DATA_DIR = STORAGE_DIR/whisper/
#   WHITELISTS_DIR = STORAGE_DIR/lists/
#   CONF_DIR       = STORAGE_DIR/conf/
#   LOG_DIR        = STORAGE_DIR/log/
#   PID_DIR        = STORAGE_DIR/
#
# For FHS style directory structures, use:
#
#   STORAGE_DIR    = /var/lib/carbon/
#   CONF_DIR       = /etc/carbon/
#   LOG_DIR        = /var/log/carbon/
#   PID_DIR        = /var/run/
#
#LOCAL_DATA_DIR = /opt/graphite/storage/whisper/
 
STORAGE_DIR    = /var/lib/carbon/
LOCAL_DATA_DIR = /var/lib/carbon/whisper/
WHITELISTS_DIR = /var/lib/carbon/lists/
CONF_DIR       = /etc/carbon/
LOG_DIR        = /var/log/carbon/
PID_DIR        = /var/run/
 
# Enable daily log rotation. If disabled, a kill -HUP can be used after a manual rotate
# Tachtler
# default: ENABLE_LOGROTATION = False
ENABLE_LOGROTATION = True
 
# Specify the user to drop privileges to
# If this is blank carbon runs as the user that invokes it
# This user must have write access to the local data directory
USER = carbon
#
# NOTE: The above settings must be set under [relay] and [aggregator]
#       to take effect for those daemons as well
 
# Limit the size of the cache to avoid swapping or becoming CPU bound.
# Sorts and serving cache queries gets more expensive as the cache grows.
# Use the value "inf" (infinity) for an unlimited cache size.
MAX_CACHE_SIZE = inf
 
# Limits the number of whisper update_many() calls per second, which effectively
# means the number of write requests sent to the disk. This is intended to
# prevent over-utilizing the disk and thus starving the rest of the system.
# When the rate of required updates exceeds this, then carbon's caching will
# take effect and increase the overall throughput accordingly.
MAX_UPDATES_PER_SECOND = 500
 
# If defined, this changes the MAX_UPDATES_PER_SECOND in Carbon when a
# stop/shutdown is initiated.  This helps when MAX_UPDATES_PER_SECOND is
# relatively low and carbon has cached a lot of updates; it enables the carbon
# daemon to shutdown more quickly. 
# MAX_UPDATES_PER_SECOND_ON_SHUTDOWN = 1000
 
# Softly limits the number of whisper files that get created each minute.
# Setting this value low (like at 50) is a good way to ensure your graphite
# system will not be adversely impacted when a bunch of new metrics are
# sent to it. The trade off is that it will take much longer for those metrics'
# database files to all get created and thus longer until the data becomes usable.
# Setting this value high (like "inf" for infinity) will cause graphite to create
# the files quickly but at the risk of slowing I/O down considerably for a while.
MAX_CREATES_PER_MINUTE = 50
 
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2003
 
# Set this to True to enable the UDP listener. By default this is off
# because it is very common to run multiple carbon daemons and managing
# another (rarely used) port for every carbon instance is not fun.
ENABLE_UDP_LISTENER = False
UDP_RECEIVER_INTERFACE = 0.0.0.0
UDP_RECEIVER_PORT = 2003
 
PICKLE_RECEIVER_INTERFACE = 0.0.0.0
PICKLE_RECEIVER_PORT = 2004
 
# Set to false to disable logging of successful connections
LOG_LISTENER_CONNECTIONS = True
 
# Per security concerns outlined in Bug #817247 the pickle receiver
# will use a more secure and slightly less efficient unpickler.
# Set this to True to revert to the old-fashioned insecure unpickler.
USE_INSECURE_UNPICKLER = False
 
CACHE_QUERY_INTERFACE = 0.0.0.0
CACHE_QUERY_PORT = 7002
 
# Set this to False to drop datapoints received after the cache
# reaches MAX_CACHE_SIZE. If this is True (the default) then sockets
# over which metrics are received will temporarily stop accepting
# data until the cache size falls below 95% MAX_CACHE_SIZE.
USE_FLOW_CONTROL = True
 
# By default, carbon-cache will log every whisper update and cache hit. This can be excessive and
# degrade performance if logging on the same volume as the whisper data is stored.
LOG_UPDATES = False
LOG_CACHE_HITS = False
LOG_CACHE_QUEUE_SORTS = True
 
# The thread that writes metrics to disk can use on of the following strategies
# determining the order in which metrics are removed from cache and flushed to
# disk. The default option preserves the same behavior as has been historically
# available in version 0.9.10.
#
# sorted - All metrics in the cache will be counted and an ordered list of
# them will be sorted according to the number of datapoints in the cache at the
# moment of the list's creation. Metrics will then be flushed from the cache to
# disk in that order.
#
# max - The writer thread will always pop and flush the metric from cache
# that has the most datapoints. This will give a strong flush preference to
# frequently updated metrics and will also reduce random file-io. Infrequently
# updated metrics may only ever be persisted to disk at daemon shutdown if
# there are a large number of metrics which receive very frequent updates OR if
# disk i/o is very slow.
#
# naive - Metrics will be flushed from the cache to disk in an unordered
# fashion. This strategy may be desirable in situations where the storage for
# whisper files is solid state, CPU resources are very limited or deference to
# the OS's i/o scheduler is expected to compensate for the random write
# pattern.
#
CACHE_WRITE_STRATEGY = sorted
 
# On some systems it is desirable for whisper to write synchronously.
# Set this option to True if you'd like to try this. Basically it will
# shift the onus of buffering writes from the kernel into carbon's cache.
WHISPER_AUTOFLUSH = False
 
# By default new Whisper files are created pre-allocated with the data region
# filled with zeros to prevent fragmentation and speed up contiguous reads and
# writes (which are common). Enabling this option will cause Whisper to create
# the file sparsely instead. Enabling this option may allow a large increase of
# MAX_CREATES_PER_MINUTE but may have longer term performance implications
# depending on the underlying storage configuration.
# WHISPER_SPARSE_CREATE = False
 
# Only beneficial on linux filesystems that support the fallocate system call.
# It maintains the benefits of contiguous reads/writes, but with a potentially
# much faster creation speed, by allowing the kernel to handle the block
# allocation and zero-ing. Enabling this option may allow a large increase of
# MAX_CREATES_PER_MINUTE. If enabled on an OS or filesystem that is unsupported
# this option will gracefully fallback to standard POSIX file access methods.
WHISPER_FALLOCATE_CREATE = True
 
# Enabling this option will cause Whisper to lock each Whisper file it writes
# to with an exclusive lock (LOCK_EX, see: man 2 flock). This is useful when
# multiple carbon-cache daemons are writing to the same files
# WHISPER_LOCK_WRITES = False
 
# Set this to True to enable whitelisting and blacklisting of metrics in
# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
# empty, all metrics will pass through
# USE_WHITELIST = False
 
# By default, carbon itself will log statistics (such as a count,
# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
# CARBON_METRIC_PREFIX = carbon
# CARBON_METRIC_INTERVAL = 60
 
# Enable AMQP if you want to receve metrics using an amqp broker
# ENABLE_AMQP = False
 
# Verbose means a line will be logged for every metric received
# useful for testing
# AMQP_VERBOSE = False
 
# AMQP_HOST = localhost
# AMQP_PORT = 5672
# AMQP_VHOST = /
# AMQP_USER = guest
# AMQP_PASSWORD = guest
# AMQP_EXCHANGE = graphite
# AMQP_METRIC_NAME_IN_BODY = False
 
# The manhole interface allows you to SSH into the carbon daemon
# and get a python interpreter. BE CAREFUL WITH THIS! If you do
# something like time.sleep() in the interpreter, the whole process
# will sleep! This is *extremely* helpful in debugging, assuming
# you are familiar with the code. If you are not, please don't
# mess with this, you are asking for trouble :)
#
# ENABLE_MANHOLE = False
# MANHOLE_INTERFACE = 127.0.0.1
# MANHOLE_PORT = 7222
# MANHOLE_USER = admin
# MANHOLE_PUBLIC_KEY = ssh-rsa AAAAB3NzaC1yc2EAAAABiwAaAIEAoxN0sv/e4eZCPpi3N3KYvyzRaBaMeS2RsOQ
/cDuKv11dlNzVeiyc3RFmCv5Rjwn/lQ79y0zyHxw67qLyhQ/kDzINc4cY41ivuQXm2tPmgvexdrBv5nsfEpjs3gLZfJnyvlcVyWK
/lId8WUvEWSWHTzsbtmXAF2raJMdgLTbQ8wE=
 
# Patterns for all of the metrics this machine will store. Read more at
# http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol#Bindings
#
# Example: store all sales, linux servers, and utilization metrics
# BIND_PATTERNS = sales.#, servers.linux.#, #.utilization
#
# Example: store everything
# BIND_PATTERNS = #
 
# To configure special settings for the carbon-cache instance 'b', uncomment this:
#[cache:b]
#LINE_RECEIVER_PORT = 2103
#PICKLE_RECEIVER_PORT = 2104
#CACHE_QUERY_PORT = 7102
# and any other settings you want to customize, defaults are inherited
# from [carbon] section.
# You can then specify the --instance=b option to manage this instance
 
 
 
[relay]
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2013
PICKLE_RECEIVER_INTERFACE = 0.0.0.0
PICKLE_RECEIVER_PORT = 2014
 
# Set to false to disable logging of successful connections
LOG_LISTENER_CONNECTIONS = True
 
# Carbon-relay has several options for metric routing controlled by RELAY_METHOD
#
# Use relay-rules.conf to route metrics to destinations based on pattern rules
#RELAY_METHOD = rules
#
# Use consistent-hashing for even distribution of metrics between destinations
#RELAY_METHOD = consistent-hashing
#
# Use consistent-hashing but take into account an aggregation-rules.conf shared
# by downstream carbon-aggregator daemons. This will ensure that all metrics
# that map to a given aggregation rule are sent to the same carbon-aggregator
# instance.
# Enable this for carbon-relays that send to a group of carbon-aggregators
#RELAY_METHOD = aggregated-consistent-hashing
RELAY_METHOD = rules
 
# If you use consistent-hashing you can add redundancy by replicating every
# datapoint to more than one machine.
REPLICATION_FACTOR = 1
 
# This is a list of carbon daemons we will send any relayed or
# generated metrics to. The default provided would send to a single
# carbon-cache instance on the default port. However if you
# use multiple carbon-cache instances then it would look like this:
#
# DESTINATIONS = 127.0.0.1:2004:a, 127.0.0.1:2104:b
#
# The general form is IP:PORT:INSTANCE where the :INSTANCE part is
# optional and refers to the "None" instance if omitted.
#
# Note that if the destinations are all carbon-caches then this should
# exactly match the webapp's CARBONLINK_HOSTS setting in terms of
# instances listed (order matters!).
#
# If using RELAY_METHOD = rules, all destinations used in relay-rules.conf
# must be defined in this list
DESTINATIONS = 127.0.0.1:2004
 
# This defines the maximum "message size" between carbon daemons.
# You shouldn't need to tune this unless you really know what you're doing.
MAX_DATAPOINTS_PER_MESSAGE = 500
MAX_QUEUE_SIZE = 10000
 
# Set this to False to drop datapoints when any send queue (sending datapoints
# to a downstream carbon daemon) hits MAX_QUEUE_SIZE. If this is True (the
# default) then sockets over which metrics are received will temporarily stop accepting
# data until the send queues fall below 80% MAX_QUEUE_SIZE.
USE_FLOW_CONTROL = True
 
# Set this to True to enable whitelisting and blacklisting of metrics in
# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
# empty, all metrics will pass through
# USE_WHITELIST = False
 
# By default, carbon itself will log statistics (such as a count,
# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
# CARBON_METRIC_PREFIX = carbon
# CARBON_METRIC_INTERVAL = 60
 
 
[aggregator]
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2023
 
PICKLE_RECEIVER_INTERFACE = 0.0.0.0
PICKLE_RECEIVER_PORT = 2024
 
# Set to false to disable logging of successful connections
LOG_LISTENER_CONNECTIONS = True
 
# If set true, metric received will be forwarded to DESTINATIONS in addition to
# the output of the aggregation rules. If set false the carbon-aggregator will
# only ever send the output of aggregation.
FORWARD_ALL = True
 
# This is a list of carbon daemons we will send any relayed or
# generated metrics to. The default provided would send to a single
# carbon-cache instance on the default port. However if you
# use multiple carbon-cache instances then it would look like this:
#
# DESTINATIONS = 127.0.0.1:2004:a, 127.0.0.1:2104:b
# 
# The format is comma-delimited IP:PORT:INSTANCE where the :INSTANCE part is
# optional and refers to the "None" instance if omitted.
#
# Note that if the destinations are all carbon-caches then this should
# exactly match the webapp's CARBONLINK_HOSTS setting in terms of
# instances listed (order matters!).
DESTINATIONS = 127.0.0.1:2004
 
# If you want to add redundancy to your data by replicating every
# datapoint to more than one machine, increase this.
REPLICATION_FACTOR = 1
 
# This is the maximum number of datapoints that can be queued up
# for a single destination. Once this limit is hit, we will
# stop accepting new data if USE_FLOW_CONTROL is True, otherwise
# we will drop any subsequently received datapoints.
MAX_QUEUE_SIZE = 10000
 
# Set this to False to drop datapoints when any send queue (sending datapoints
# to a downstream carbon daemon) hits MAX_QUEUE_SIZE. If this is True (the
# default) then sockets over which metrics are received will temporarily stop accepting
# data until the send queues fall below 80% MAX_QUEUE_SIZE.
USE_FLOW_CONTROL = True
 
# This defines the maximum "message size" between carbon daemons.
# You shouldn't need to tune this unless you really know what you're doing.
MAX_DATAPOINTS_PER_MESSAGE = 500
 
# This defines how many datapoints the aggregator remembers for
# each metric. Aggregation only happens for datapoints that fall in
# the past MAX_AGGREGATION_INTERVALS * intervalSize seconds.
MAX_AGGREGATION_INTERVALS = 5
 
# By default (WRITE_BACK_FREQUENCY = 0), carbon-aggregator will write back
# aggregated data points once every rule.frequency seconds, on a per-rule basis.
# Set this (WRITE_BACK_FREQUENCY = N) to write back all aggregated data points
# every N seconds, independent of rule frequency. This is useful, for example,
# to be able to query partially aggregated metrics from carbon-cache without
# having to first wait rule.frequency seconds.
# WRITE_BACK_FREQUENCY = 0
 
# Set this to True to enable whitelisting and blacklisting of metrics in
# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
# empty, all metrics will pass through
# USE_WHITELIST = False
 
# By default, carbon itself will log statistics (such as a count,
# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
# CARBON_METRIC_PREFIX = carbon
# CARBON_METRIC_INTERVAL = 60

Erklärung zu den vorhergehenden Anpassugnen:

  • ENABLE_LOGROTATION = True

Aktivierung des LOG-Rotate.

/etc/carbon/storage-schemas.conf

Nachfolgende Konfigurationsdatei

  • /etc/carbon/storage-schemas.conf

beinhaltete die Konfigurationen, damit die Aggregation der Daten in carbon funktioniert. Hier müssen in der Konfigurationsdatei die Intervalle und Vorhaltezeiten eingetragen werden, nach denen carbon arbeiten soll.

:!: HINWEIS - Diese sind unter nachfolgendem externen Link zu finden:

Nachfolgende die komplette Konfigurationsdatei:

# Schema definitions for Whisper files. Entries are scanned in order,
# and first match wins. This file is scanned for changes every 60 seconds.
#
#  [name]
#  pattern = regex
#  retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ...
 
# Carbon's internal metrics. This entry should match what is specified in
# CARBON_METRIC_PREFIX and CARBON_METRIC_INTERVAL settings
[carbon]
pattern = ^carbon\.
retentions = 60:90d
 
# Tachtler
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/module/icinga2/chapter
# /icinga2-features#graphite-carbon-cache-writer-schema
[icinga2_default]
# intervals like PNP4Nagios uses them per default
pattern = ^icinga2\.
retentions = 1m:2d,5m:10d,15m:30d,30m:90d,360m:4y
 
[default_1min_for_1day]
pattern = .*
retentions = 60s:1d

Erklärung zu den vorhergehenden Anpassugnen:

  • [icinga2_default]
    # intervals like PNP4Nagios uses them per default
    pattern = ^icinga2\.
    retentions = 1m:2d,5m:10d,15m:30d,30m:90d,360m:4y

Die Daten können aus der Icinga-Dokumentation entnommen werden.

:!: WICHTIG - Die Reihenfolge ist entscheidend, da der erste Treffer relevant ist!

Konfiguration: MariaDB

graphite: Datenbank

Nachfolgende SQL-Datei kann z.B. im Verzeichnis /tmp mit dem Namen

  • create_database_graphite.sql

erstellt werden, um die Neuanlage einer Datenbank mit dem Namen graphite durchzuführen:

-- CREATE DATABASE graphite;
CREATE DATABASE graphite;

Zur Ausführung der SQL-Datei kann nachfolgender Befehl genutzt werden, welcher jedoch die Kenntnis des root-Passwort für die Datenbank voraussetzt!:

# /usr/bin/mysql -u root -p < create_database_graphite.sql 
Enter password:
* Das Erscheinen keiner Fehlermeldung, bedeutet die korrekte Ausführung des Befehls!

graphite: Benutzer/Rechte

Nachfolgende SQL-Datei kann z.B. im Verzeichnis /tmp mit dem Namen

  • create_users_for_remote_access_to_database_graphite.sql

erstellt werden, um einen Benutzer für die Datenbank graphite zu erstellen und diesen mit den benötigten rechten auszustatten:

-- Use database.
USE mysql;
 
-- Create new users.
CREATE USER 'graphiteuser'@'192.168.0.110' IDENTIFIED BY 'geheim';
CREATE USER 'graphiteuser'@'server11.idmz.tachtler.net' IDENTIFIED BY 'geheim';
 
-- Grant privileges for database graphite to new users.
GRANT ALL PRIVILEGES ON graphite.* TO 'graphiteuser'@'192.168.0.110' IDENTIFIED BY 'geheim' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON graphite.* TO 'graphiteuser'@'server11.idmz.tachtler.net' IDENTIFIED BY 'geheim' WITH GRANT OPTION;
 
-- Make sure that priviliges are reloaded.
FLUSH PRIVILEGES;

Zur Ausführung der SQL-Datei kann nachfolgender Befehl genutzt werden, welcher jedoch die Kenntnis des root-Passwort für die Datenbank voraussetzt!:

# /usr/bin/mysql -u root -p < create_users_for_remote_access_to_database_graphite.sql
Enter password:
* Das Erscheinen keiner Fehlermeldung, bedeutet die korrekte Ausführung des Befehls!

:!: HINWEIS - Die Einrichtung der Tabellen erfolgt zu einem späteren Installationsschritt!

Konfiguration: graphite-web

:!: HINWEIS - Noch bevor die Tabellen für die Datenbank eingerichtet werden können, ist die graphite-web Web-Anwendung einzurichten, da sonst die Anzeige der Daten und die Konfiguration von whisper unvollständig ist.

/etc/graphite-web/local_settings.py

Nachfolgende Konfigurationsdatei

  • /etc/graphite-web/local_settings.py

beinhaltete die Konfigurationseinstellungen für die Web-Anwendung. Darunter befinden sich nachfolgende Bereiche:

  1. Generelle Einstellungen
  2. Dateisystem Pfade
  3. E-Mail Konfigurationen (Zur Bereitstellung von Graphen per e-Mail)
  4. Autehtifikation
  5. Dashboard Einstellungen
  6. Datenbank Konfiguration
  7. Cluster Konfiguration
  8. Erweitere Framework Django Einstellungen

Nachfolgende die komplette Konfigurationsdatei:

## Graphite local_settings.py
# Edit this file to customize the default Graphite webapp settings
#
# Additional customizations to Django settings can be added to this file as well
 
#####################################
# General Configuration #
#####################################
# Set this to a long, random unique string to use as a secret key for this
# install. This key is used for salting of hashes used in auth tokens,
# CRSF middleware, cookie storage, etc. This should be set identically among
# instances if used behind a load balancer.
# Tachtler
# default: #SECRET_KEY = 'UNSAFE_DEFAULT'
SECRET_KEY = 'ONqM1MgmBMk4hKWwW5xvTPtKNVQ1BPi7XN1BxwOSnMEC9CCrk1tXeK2sU2ky6Ol'
 
# In Django 1.5+ set this to the list of hosts your graphite instances is
# accessible as. See:
# https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-ALLOWED_HOSTS
#ALLOWED_HOSTS = [ '*' ]
 
# Set your local timezone (Django's default is America/Chicago)
# If your graphs appear to be offset by a couple hours then this probably
# needs to be explicitly set to your local timezone.
# Tachtler
# default: #TIME_ZONE = 'America/Los_Angeles'
TIME_ZONE = 'Europe/Berlin'
 
# Override this to provide documentation specific to your Graphite deployment
#DOCUMENTATION_URL = "http://graphite.readthedocs.org/"
 
# Logging
# Tachtler
# default: #LOG_RENDERING_PERFORMANCE = True
LOG_RENDERING_PERFORMANCE = True
# Tachtler
# default: #LOG_CACHE_PERFORMANCE = True
LOG_CACHE_PERFORMANCE = True
# Tachtler
# default: #LOG_METRIC_ACCESS = True
LOG_METRIC_ACCESS = True
 
# Enable full debug page display on exceptions (Internal Server Error pages)
#DEBUG = True
 
# If using RRD files and rrdcached, set to the address or socket of the daemon
#FLUSHRRDCACHED = 'unix:/var/run/rrdcached.sock'
 
# This lists the memcached servers that will be used by this webapp.
# If you have a cluster of webapps you should ensure all of them
# have the *exact* same value for this setting. That will maximize cache
# efficiency. Setting MEMCACHE_HOSTS to be empty will turn off use of
# memcached entirely.
#
# You should not use the loopback address (127.0.0.1) here if using clustering
# as every webapp in the cluster should use the exact same values to prevent
# unneeded cache misses. Set to [] to disable caching of images and fetched data
#MEMCACHE_HOSTS = ['10.10.10.10:11211', '10.10.10.11:11211', '10.10.10.12:11211']
#DEFAULT_CACHE_DURATION = 60 # Cache images and data for 1 minute
 
 
#####################################
# Filesystem Paths #
#####################################
# Change only GRAPHITE_ROOT if your install is merely shifted from /opt/graphite
# to somewhere else
GRAPHITE_ROOT = '/usr/share/graphite'
 
# Most installs done outside of a separate tree such as /opt/graphite will only
# need to change these three settings. Note that the default settings for each
# of these is relative to GRAPHITE_ROOT
#CONF_DIR = '/opt/graphite/conf'
#STORAGE_DIR = '/opt/graphite/storage'
#CONTENT_DIR = '/opt/graphite/webapp/content'
CONF_DIR = '/etc/graphite-web'
STORAGE_DIR = '/var/lib/graphite-web'
CONTENT_DIR = '/usr/share/graphite/webapp/content'
 
# To further or fully customize the paths, modify the following. Note that the
# default settings for each of these are relative to CONF_DIR and STORAGE_DIR
#
## Webapp config files
#DASHBOARD_CONF = '/opt/graphite/conf/dashboard.conf'
#GRAPHTEMPLATES_CONF = '/opt/graphite/conf/graphTemplates.conf'
DASHBOARD_CONF = '/etc/graphite-web/dashboard.conf'
GRAPHTEMPLATES_CONF = '/etc/graphite-web/graphTemplates.conf'
 
## Data directories
# NOTE: If any directory is unreadable in DATA_DIRS it will break metric browsing
#WHISPER_DIR = '/opt/graphite/storage/whisper'
#RRD_DIR = '/opt/graphite/storage/rrd'
#DATA_DIRS = [WHISPER_DIR, RRD_DIR] # Default: set from the above variables
#LOG_DIR = '/opt/graphite/storage/log/webapp'
#INDEX_FILE = '/opt/graphite/storage/index'  # Search index file
WHISPER_DIR = '/var/lib/carbon/whisper'
RRD_DIR = '/var/lib/carbon/rrd'
DATA_DIRS = [WHISPER_DIR, RRD_DIR] # Default: set from the above variables
LOG_DIR = '/var/log/graphite-web/'
INDEX_FILE = '/var/lib/graphite-web/index'  # Search index file
 
#####################################
# Email Configuration #
#####################################
# This is used for emailing rendered Graphs
# Default backend is SMTP
#EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
#EMAIL_HOST = 'localhost'
#EMAIL_PORT = 25
#EMAIL_HOST_USER = ''
#EMAIL_HOST_PASSWORD = ''
#EMAIL_USE_TLS = False
# To drop emails on the floor, enable the Dummy backend:
#EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
 
 
#####################################
# Authentication Configuration #
#####################################
## LDAP / ActiveDirectory authentication setup
#USE_LDAP_AUTH = True
#LDAP_SERVER = "ldap.mycompany.com"
#LDAP_PORT = 389
#	OR
#LDAP_URI = "ldaps://ldap.mycompany.com:636"
#LDAP_SEARCH_BASE = "OU=users,DC=mycompany,DC=com"
#LDAP_BASE_USER = "CN=some_readonly_account,DC=mycompany,DC=com"
#LDAP_BASE_PASS = "readonly_account_password"
#LDAP_USER_QUERY = "(username=%s)"  #For Active Directory use "(sAMAccountName=%s)"
#
# If you want to further customize the ldap connection options you should
# directly use ldap.set_option to set the ldap module's global options.
# For example:
#
#import ldap
#ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
#ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, "/etc/ssl/ca")
#ldap.set_option(ldap.OPT_X_TLS_CERTFILE, "/etc/ssl/mycert.pem")
#ldap.set_option(ldap.OPT_X_TLS_KEYFILE, "/etc/ssl/mykey.pem")
# See http://www.python-ldap.org/ for further details on these options.
 
## REMOTE_USER authentication. See: https://docs.djangoproject.com/en/dev/howto/auth-remote-user/
#USE_REMOTE_USER_AUTHENTICATION = True
 
# Override the URL for the login link (e.g. for django_openid_auth)
#LOGIN_URL = '/account/login'
 
 
##########################
# Database Configuration #
##########################
# By default sqlite is used. If you cluster multiple webapps you will need
# to setup an external database (such as MySQL) and configure all of the webapp
# instances to use the same database. Note that this database is only used to store
# Django models such as saved graphs, dashboards, user preferences, etc.
# Metric data is not stored here.
#
# DO NOT FORGET TO RUN 'manage.py syncdb' AFTER SETTING UP A NEW DATABASE
#
# The following built-in database engines are available:
#  django.db.backends.postgresql          # Removed in Django 1.4
#  django.db.backends.postgresql_psycopg2
#  django.db.backends.mysql
#  django.db.backends.sqlite3
#  django.db.backends.oracle
#
# The default is 'django.db.backends.sqlite3' with file 'graphite.db'
# located in STORAGE_DIR
#
#DATABASES = {
#    'default': {
#        'NAME': '/opt/graphite/storage/graphite.db',
#        'ENGINE': 'django.db.backends.sqlite3',
#        'USER': '',
#        'PASSWORD': '',
#        'HOST': '',
#        'PORT': ''
#    }
#}
#
# Tachtler
DATABASES = {
    'default': {
        'NAME': 'graphite',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'graphiteuser',
        'PASSWORD': 'geheim',
        'HOST': 'db.idmz.tachtler.net',
        'PORT': '3306'
    }
}
 
 
#########################
# Cluster Configuration #
#########################
# (To avoid excessive DNS lookups you want to stick to using IP addresses only in this entire section)
#
# This should list the IP address (and optionally port) of the webapp on each
# remote server in the cluster. These servers must each have local access to
# metric data. Note that the first server to return a match for a query will be
# used.
#CLUSTER_SERVERS = ["10.0.2.2:80", "10.0.2.3:80"]
 
## These are timeout values (in seconds) for requests to remote webapps
#REMOTE_STORE_FETCH_TIMEOUT = 6   # Timeout to fetch series data
#REMOTE_STORE_FIND_TIMEOUT = 2.5  # Timeout for metric find requests
#REMOTE_STORE_RETRY_DELAY = 60    # Time before retrying a failed remote webapp
#REMOTE_FIND_CACHE_DURATION = 300 # Time to cache remote metric find results
 
## Remote rendering settings
# Set to True to enable rendering of Graphs on a remote webapp
#REMOTE_RENDERING = True
# List of IP (and optionally port) of the webapp on each remote server that
# will be used for rendering. Note that each rendering host should have local
# access to metric data or should have CLUSTER_SERVERS configured
#RENDERING_HOSTS = []
#REMOTE_RENDER_CONNECT_TIMEOUT = 1.0
 
# If you are running multiple carbon-caches on this machine (typically behind a relay using
# consistent hashing), you'll need to list the ip address, cache query port, and instance name of each carbon-cache
# instance on the local machine (NOT every carbon-cache in the entire cluster). The default cache query port is 7002
# and a common scheme is to use 7102 for instance b, 7202 for instance c, etc.
#
# You *should* use 127.0.0.1 here in most cases
#CARBONLINK_HOSTS = ["127.0.0.1:7002:a", "127.0.0.1:7102:b", "127.0.0.1:7202:c"]
#CARBONLINK_TIMEOUT = 1.0
 
#####################################
# Additional Django Settings #
#####################################
# Uncomment the following line for direct access to Django settings such as
# MIDDLEWARE_CLASSES or APPS
#from graphite.app_settings import *

Erklärung zu den vorhergehenden Anpassungen:

  • SECRET_KEY = 'ONqM1MgmBMk4hKWwW5xvTPtKNVQ1BPi7XN1BxwOSnMEC9CCrk1tXeK2sU2ky6Ol'

Diese Zeichenkombination dient zu Erstellung von z.B. „Hashes“ welche in Authentifizierungs-„Tokens“ genutzt werden.

  • TIME_ZONE = 'Europe/Berlin'

Angabe der Zeitzone für die Anzeige. Siehe auch nachfolgenden externen Link: http://php.net/manual/de/timezones.php.

  • # Logging
    # Tachtler
    # default: #LOG_RENDERING_PERFORMANCE = True
    LOG_RENDERING_PERFORMANCE = True
    # Tachtler
    # default: #LOG_CACHE_PERFORMANCE = True
    LOG_CACHE_PERFORMANCE = True
    # Tachtler
    # default: #LOG_METRIC_ACCESS = True
    LOG_METRIC_ACCESS = True

Explizites einschalten der LOG-Schreibung, da dies ggf nicht immer die Standardwerte sind und es sonst zu nachfolgenden Fehlermeldungen im Apache HTTP Server -LOG (error_log) kommt:

(Jeweils nur relevanter Ausschnitt))

...
[Thu Dec 17 10:42:53.765820 2015] [:error] [pid 2161] No handlers could be found for logger "cache"
...
[Thu Dec 17 10:58:01.239438 2015] [:error] [pid 2613] No handlers could be found for logger "rendering"
...
[Thu Dec 17 11:05:49.683547 2015] [:error] [pid 3038] No handlers could be found for logger "metric_access"
...

  • DATABASES = {
        'default': {
            'NAME': 'graphite',
            'ENGINE': 'django.db.backends.mysql',
            'USER': 'graphiteuser',
            'PASSWORD': 'geheim',
            'HOST': 'db.idmz.tachtler.net',
            'PORT': '3306'
        }
    }

Angabe der Konfigurationsparameter um die Datenbank nutzen zu können.

/etc/httpd/conf.d/graphite-web.conf

Nachfolgende Konfigurationsdatei

  • /etc/httpd/conf.d/graphite-web.conf

beinhaltete die Konfigurationseinstellungen für den Apache HTTP Server.

Es soll ein virtueller Host im Apache HTTP Server eingerichtet werden.

Siehe dazu auch nachfolgende interne Links:

Dazu kann der Inhalt einer möglichen Konfigurationsdatei

  • /etc/httpd/conf.d/graphite-web.conf

wie nachfolgend dargestellt entsprechend angepasst werden:

(Komplette Konfigurationsdatei)

#
# graphite.tachtler.net (Graphite für Icinga Web 2)
#
<VirtualHost *:80>
        ServerAdmin webmaster@tachtler.net
        ServerName graphite.tachtler.net
        ServerAlias www.graphite.tachtler.net
        ServerPath /
 
        # Header set Access-Control-Allow-Origin "*"
        # Header set Access-Control-Allow-Methods "GET, OPTIONS"
        # Header set Access-Control-Allow-Headers "origin, authorization, accept"
        # Header set Access-Control-Allow-Credentials true
 
        WSGIScriptAlias / /usr/share/graphite/graphite-web.wsgi
        WSGIImportScript /usr/share/graphite/graphite-web.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}
 
        Alias /media/ "/usr/lib/python2.7/site-packages/django/contrib/admin/media/"
 
        DocumentRoot "/usr/share/graphite/webapp"
        <Directory "/usr/share/graphite">
                Options -Indexes +SymLinksIfOwnerMatch
                # AllowOverride AuthConfig
                AllowOverride None
                # Tachtler - LDAP
                AuthType Basic
                AuthName "Graphite (graphite.tachtler.net)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/ou=People,dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        # Tachtler (enable for LDAP access)
                        Require ldap-user klaus
                </RequireAll>
        </Directory>
 
        <Location "/content/">
                SetHandler None
        </Location>
 
        <Location "/media/">
                SetHandler None
        </Location>
 
        DirectoryIndex index.php
 
        ErrorLog logs/graphite_error.log
        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
        CustomLog logs/graphite_access.log combined env=!forwarded
        CustomLog logs/graphite_access.log combined_proxypass env=forwarded
</VirtualHost>

Dazu kann aber auch der Inhalt einer möglichen Konfigurationsdatei

  • /etc/httpd/conf.d/graphite-web.conf

in die Konfigurationsdatei

  • /etc/httpd/conf.d/icingaweb2.conf

wie nachfolgend dargestellt entsprechend integriert und angepasst werden:

Nachfolgend ein Beispiel wie der graphite VHOST in den icingaweb2 VHOST integriert werden kann:

#
# icinga.tachtler.net (icingaweb2)
#
<VirtualHost *:80>
        ServerAdmin webmaster@tachtler.net
        ServerName icinga.tachtler.net
        ServerAlias www.icinga.tachtler.net
        ServerPath /
 
        RewriteEngine on
        RewriteCond %{REQUEST_URI} ^/$
        RewriteRule (.*) /icingaweb2/ [R=301]
 
        Alias /icingaweb2 "/usr/share/icingaweb2/public"
 
        # Header set Access-Control-Allow-Origin "*"
        # Header set Access-Control-Allow-Methods "GET, OPTIONS"
        # Header set Access-Control-Allow-Headers "origin, authorization, accept"
        # Header set Access-Control-Allow-Credentials true
 
        WSGIScriptAlias / /usr/share/graphite/graphite-web.wsgi
        WSGIImportScript /usr/share/graphite/graphite-web.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}
 
        Alias /graphite/ "/usr/share/graphite/graphite-web.wsgi"
        Alias /graphite/media/ "/usr/lib/python2.7/site-packages/django/contrib/admin/media/"
 
        <Location "/graphite/content/">
                SetHandler None
        </Location>
 
        <Location "/graphite/media/">
                SetHandler None
        </Location>
 
        DocumentRoot "/usr/share/graphite/webapp"
        <Directory "/usr/share/graphite">
                Options -Indexes +SymLinksIfOwnerMatch
                # AllowOverride AuthConfig
                AllowOverride None
                # Tachtler - LDAP
                AuthType Basic
                AuthName "Graphite (graphite.tachtler.net)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/ou=People,dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        # Tachtler (enable for LDAP access)
                        Require ldap-user klaus
                </RequireAll>
        </Directory>
 
        <Directory "/usr/share/icingaweb2/public">
                Options -Indexes +SymLinksIfOwnerMatch
                # AllowOverride AuthConfig
                AllowOverride None
                # Tachtler - LDAP
                AuthType Basic
                AuthName "Icinga Web 2 (icinga.tachtler.net)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/ou=People,dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        # Tachtler (enable for LDAP access)
                        Require ldap-user klaus 
                </RequireAll>
 
                SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"
 
                <IfModule mod_rewrite.c>
                        RewriteEngine on
                        RewriteBase /icingaweb2
                        RewriteCond %{REQUEST_FILENAME} -s [OR]
                        RewriteCond %{REQUEST_FILENAME} -l [OR]
                        RewriteCond %{REQUEST_FILENAME} -d
                        RewriteRule ^.*$ - [NC,L]
                        RewriteRule ^.*$ index.php [NC,L]
                </IfModule>
 
                <IfModule !mod_rewrite.c>
                        DirectoryIndex error_norewrite.html
                        ErrorDocument 404 /error_norewrite.html
                </IfModule>
        </Directory>
 
        DirectoryIndex index.php
 
        ErrorLog logs/icinga_error.log
        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
        CustomLog logs/icinga_access.log combined env=!forwarded
        CustomLog logs/icinga_access.log combined_proxypass env=forwarded
</VirtualHost>

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Apache VHOST-Konfiguration angezogen werden:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

Konfiguration: whisper

:!: HINWEIS - Die nachfolgenden Konfiguration werden nur dann erfolgreich sein, wenn vorhergehende Konfigurationen ebenfalls komplett durchgeführt wurden!

Durch die Ausführung des nachfolgenden Skripts

  • /usr/lib/python*/site-packages/graphite/manage.py

mit dem Parameter

  • syncdb

werden die benötigten Tabellen in der Datenbank erstellt und weitere Einstellungen durchgeführt:

# /usr/lib/python*/site-packages/graphite/manage.py syncdb

Nachfolgend wird die Ausführung dargestellt:

# /usr/lib/python*/site-packages/graphite/manage.py syncdb
Creating tables ...
Creating table account_profile
Creating table account_variable
Creating table account_view
Creating table account_window
Creating table account_mygraph
Creating table dashboard_dashboard_owners
Creating table dashboard_dashboard
Creating table events_event
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_session
Creating table django_admin_log
Creating table django_content_type
Creating table tagging_tag
Creating table tagging_taggeditem

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): root
Email address: webmaster@tachtler.net
Password: 
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Konfiguration: icingaweb2-module-graphite

Nachfolgende Konfigurationsdirektiven sind ursprünglich unter nachfolgendem externen Link einsehbar:

oder in der README.md-Datei im Verzeichnis

  • /usr/share/icingaweb2/modules/graphite/README.md

/etc/icingaweb2/modules/graphite/config.ini

Zuerst muss die das Verzeichnis und die Konfigurationsdatei

  • /etc/icingaweb2/modules/graphite/config.ini

neu erstellt werden, was mit nachfolgenden Befehlen durchgeführt werden kann:

Neuerstellung des Verzeichnisses:

# mkdir /etc/icingaweb2/modules/graphite

Neuanlage der Konfigurationsdatei in dem zuvor erstellten Verzeichnis:

# touch /etc/icingaweb2/modules/graphite/config.ini

Der Inhalt der Konfigurationsdatei sollte dann wie folgt aussehen:

[graphite]
metric_prefix = icinga2
base_url = https://graphite.tachtler.net/render?
legacy_mode = false
;if legacy mode is false (2.4 and newer):
service_name_template = "icinga2.$host.name$.services.$service.name$.$service.check_command$.perfdata.$metric$.value"
host_name_template = "icinga2.$host.name$.host.$host.check_command$.perfdata.$metric$.value"
;if legacy mode is true (pre 2.4):
;service_name_template = "icinga.$host.name$.services.$service.name$.$service.check_command$"
;host_name_template = "icinga.$host.name$.host.$host.check_command$"
;this template is used for the small image, macro $target$ can used.
;Tachtler
;graphite_args_template = "&target=$target$&source=0&width=300&height=120&hideAxes=true&lineWidth=2&hideLegend=true&colorList=049BAF"
graphite_args_template = "&target=alias(color($target$_warn,'yellow'),'warning')&target=alias(color($target$_crit,'red'),'critical')&target=$target$&source=0&width=380&height=120&hideLegend=true&colorList=049BAF&lineMode=connected&from=-10min"
;this template is used for the large image, macro $target$ can used.
graphite_large_args_template = "&target=alias(color($target$_warn,'yellow'),'warning')&target=alias(color($target$_crit,'red'),'critical')&target=$target$&source=0&width=800&height=700&colorList=049BAF&lineMode=connected"

carbon-cache: Erster Start

Der Graphite carbon-cache-Server kann mit nachfolgendem Befehle gestartet werden:

# systemctl start carbon-cache

Mit nachfolgendem Befehl kann der Status des Graphite-carbon-Servers abgefragt werden:

# systemctl status carbon-cache
carbon-cache.service - Graphite Carbon Cache
   Loaded: loaded (/usr/lib/systemd/system/carbon-cache.service; enabled)
   Active: active (running) since Sat 2015-12-05 09:19:20 CET; 12s ago
  Process: 11145 ExecStart=/usr/bin/carbon-cache --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-cache.pid --logdir=/var/log/carbon/ start (code=exited, status=0/SUCCESS)
 Main PID: 11149 (carbon-cache)
   CGroup: /system.slice/carbon-cache.service
           └─11149 /usr/bin/python /usr/bin/carbon-cache --config=/etc/carbon...

Dec 05 09:19:20 server11.idmz.tachtler.net systemd[1]: Starting Graphite Carb...
Dec 05 09:19:20 server11.idmz.tachtler.net systemd[1]: PID file /var/run/carb...
Dec 05 09:19:20 server11.idmz.tachtler.net systemd[1]: Started Graphite Carbo...
Hint: Some lines were ellipsized, use -l to show in full.

icinga2: graphite

Bevor der Neustart von Icinga an dieser Stelle der Konfiguration durchgeführt werden soll, ist noch aktuell nachfolgendes inaktive Modul

  • graphite

mit nachfolgendem Befehl zu aktivieren:

# icinga2 feature enable graphite
Enabling feature graphite. Make sure to restart Icinga 2 for these changes to take effect.

icinga2: Neustart

Danach kann der icinga2-Server mit nachfolgendem Befehle neu gestartet werden:

# systemctl restart icinga2

Mit nachfolgendem Befehl kann der Status des Icinga-Servers abgefragt werden:

# systemctl status icinga2
icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled)
   Active: active (running) since Sat 2015-12-05 09:20:11 CET; 9s ago
  Process: 11276 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS)
  Process: 11183 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS)
 Main PID: 11317 (icinga2)
   CGroup: /system.slice/icinga2.service
           └─11317 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -...

Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:10 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:...
Dec 05 09:20:11 server11.idmz.tachtler.net icinga2[11276]: [2015-12-05 09:20:
Dec 05 09:20:11 server11.idmz.tachtler.net systemd[1]: Started Icinga host/se...
Hint: Some lines were ellipsized, use -l to show in full.

Nachfolgende LOG-Dateien sollten Auskunft darüber geben, wie der Start und der Status des Icinga-Servers ist.

  • /var/log/icinga2/icinga2.log
  • /var/log/icinga2/error.log

Der Inhalt der LOG-Datei /var/log/icinga2/icinga2.log könnte demnach wie folgt aussehen:

[2015-12-05 09:20:10 +0100] information/Application: Shutting down...
[2015-12-05 09:20:10 +0100] information/CheckerComponent: Checker stopped.
[2015-12-05 09:20:10 +0100] information/DbConnection: Pausing IDO connection: ido-mysql
[2015-12-05 09:20:11 +0100] information/JsonRpcConnection: Reconnecting to API endpoint 'server10.idmz.tachtler.net' via host '192.168.0.10' and port '5665'
[2015-12-05 09:20:11 +0100] information/DbConnection: Resuming IDO connection: ido-mysql
[2015-12-05 09:20:11 +0100] information/ConfigItem: Activated all objects.
[2015-12-05 09:20:11 +0100] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified-attributes.conf
[2015-12-05 09:20:11 +0100] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.0')
[2015-12-05 09:20:11 +0100] information/ApiListener: New client connection for identity 'server10.idmz.tachtler.net'
[2015-12-05 09:20:11 +0100] information/ApiListener: Sending updates for endpoint 'server10.idmz.tachtler.net'.
[2015-12-05 09:20:11 +0100] information/ApiListener: Syncing runtime objects to endpoint 'server10.idmz.tachtler.net'.
[2015-12-05 09:20:11 +0100] information/ApiListener: Finished sending updates for endpoint 'server10.idmz.tachtler.net'.

Die LOG-Datei /var/log/icinga2/error.log sollte hingegen leer sein!

icingaweb2: Graphite (Setup)

Nach der erfolgreichen Inbetriebnahme des Graphite-carbon-Server, des Icinga-Servers und des Icinga-Web, kann nun die Web-Anwendung aufgerufen werden und die Konfiguration und Aktivierung von Graphite durchgeführt werden.

Bevor die Konfiguration und Aktivierung von Graphite durchgeführt werden kann, ist es erforderlich sich über die Icinga-Web-Anwendung anzumelden.

Icinga Web 2 - Anmeldung

Nach erfolgreicher Anmeldung an der Icinga-Web-Anwendung ist der Menüpunkt: Konfiguration | Module auszuwählen, wonach nachfolgende Ansicht zur Anzeige kommen sollte:

Icinga2 Web - Konfiguration - Module

Durch die Auswahl des Module | graphite werden weitere Konfigurationen zum Modul graphite angezeigt, darunter auch die Status disabled aktivieren (welche noch auf disabled eingestellt ist). Durch die Auswahl des [Links] aktivieren, kann nun Graphite aktiviert werden:

Icinga2 Web - Konfiguration - Module - Graphite - aktivieren

Nach erfolgreicher Aktivierung, sollte sich die Anzeige wie folgt verändert haben:

Icinga2 Web - Konfiguration - Module - Graphite - aktivieren - fertig

Graphite ist nun aktiviert!

carbon-cache: RAM-Disk

Zur Verbesserung der Performance, könnte der Graphite carbon-cache-Server das Schreiben seiner Daten auch in eine RAM-Disk durchführen.

Nachfolgende Schritte zeigen, wie dies eingerichtet werden kann.

carbon-cache: RAM-Disk - Server stoppen

Der Graphite carbon-cache-Server kann mit nachfolgendem Befehle gestoppt werden:

# systemctl stop carbon-cache

carbon-cache: RAM-Disk - Verzeichnisse

Nachdem der Graphite carbon-cache-Server gestoppt ist, sollte ein neues Verzeichnis mit nachfolgendem Befehl angelegt werden:

# mkdir -p /var/lib/carbon/whisper.persistent

:!: HINWEIS - Das so neu entstandene Verzeichnis, stellt die dauerhafte Kopie auf der Fetsplatte dar.

Anschließend kann der Inhalt des bisherigen Verzeichnisses und des zukünftigen Mount-Points der RAM-Disk in das neue Verzeichnis verschoben werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# mv /var/lib/carbon/whisper/* /var/lib/carbon/whisper.persistent/

:!: HINWEIS - Anschließend sollte nun das bishergige Verzeichnis - leer sein!

carbon-cache: RAM-Disk - anlegen

Nachfolgende Veränderung der Konfigurationsdatei

  • /etc/fstab

zeigt, welche Ergänzungen hier durchgeführt werden müssen, um eine RAM-Disk anzulegen. Die RAM-Disk soll auch nch nach einem Neustart des Servers wieder Verfügbar sein.

(Nur relevanter Ausschnitt):

...
tmpfs /var/lib/carbon/whisper 		tmpfs defaults,size=512m,mode=750,uid=394,gid=391	0 0
...

Die vorhergehende Zeile bewirkt, dass

  • das Verzeichnis /var/lib/carbon/whisper als RAM-Disk „gemountet“ wird
  • das „Dateisystem“ ist hier tmpfs
  • es gelten die defaults und weitere Angaben wie
    • Größe der RAM-Disk, hier 512 MB
    • Die Dateirechte sollen 750 lauten
    • Der Benutzer hat die ID des Benutzers: carbon
    • Die Gruppe hat die ID der Gruppe: carbon
    • Weitere mount/sync Angaben 0 0

Abschließend kann nun, durch nachfolgenden Befehl, die RAM-Disk tatsächlich „gemounted“ werden.:

# mount -a

Nachfolgende RAM-Disk - /var/lib/carbon/whisper sollte nun zu sehen sein, was mit nachfolgendem Befehl überprüft werden kann:

# df -h | grep /var/lib/carbon/whisper
tmpfs                         512M     0  512M   0% /var/lib/carbon/whisper

carbon-cache: RAM-Disk - systemd-Daemon anpassen

Damit beim Neustart oder Herunterfahren des Servers die Daten aus der RAM-Disk nicht verloren gehen, soll beim Starten und Stoppen des Graphite carbon-cache-Servers, die RAM-Disk entsprechend beim

  • Start - einlesen der Daten von der Festplatte in die RAM-Disk
  • Stoppen - schreiben der Daten aus der RAM-Disk auf die Festplatte

durchgeführt werden.

Dazu kann der systemd-Dienst des Graphite carbon-cache-Server, wie folgt angepasst werden.

Zuerst sollte eine Kopie des ursprünglichen systemd-Dienstes wie folgt angefertigt werden, damit bei eventuellen Updates des Graphite carbon-cache-Server die nachfolgenden Änderungen nicht verloren gehen:

# cp -a /usr/lib/systemd/system/carbon-cache.service /etc/systemd/system/carbon-cache.service

Anschließend kann die so entstandene neue systemd-Dienst-Datei wie folgt angepasst werden:

(Komplette Konfigurationsdatei)

[Unit]
Description=Graphite Carbon Cache
After=network.target

[Service]
Type=forking
StandardOutput=syslog
StandardError=syslog
ExecStartPre=/usr/bin/rsync -ratv /var/lib/carbon/whisper.persistent/ /var/lib/carbon/whisper/
ExecStart=/usr/bin/carbon-cache --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-cache.pid --logdir=/var/log/carbon/ start
ExecReload=/bin/kill -USR1 $MAINPID
ExecStopPost=/usr/bin/rsync -ratv /var/lib/carbon/whisper/ /var/lib/carbon/whisper.persistent/
PIDFile=/var/run/carbon-cache.pid
TimeoutStartSec=2min 30s
TimeoutStopSec=2min 30s

[Install]
WantedBy=multi-user.target

Neu sind hier die vier nachfolgenden Zeilen:

Die erste Zeile bewirkt, dass die Daten von der Festplatte in die RAM-Disk eingelesen werden, bevor der Graphite carbon-cache-Server gestartet wird.

ExecStartPre=/usr/bin/rsync -ratv /var/lib/carbon/whisper.persistent/ /var/lib/carbon/whisper/

Die zweite Zeile bewirkt, dass die Daten von der RAM-Disk auf die Festplatte geschrieben werden, nachdem der Graphite carbon-cache-Server gestoppt wurde.

ExecStopPost=/usr/bin/rsync -ratv /var/lib/carbon/whisper/ /var/lib/carbon/whisper.persistent/

Die dritte Zeile bewirkt, dass ein Möglicher Timeout beim starten des Daemon/Dienstes von standardmäßig - 1min 30s auf z.B. hier 2min 30s erhöht wird, was notwendig sein kann, wenn viele Daten via rsync zu kopieren sind!

TimeoutStartSec=2min 30s

Die vierte Zeile bewirkt, dass ein Möglicher Timeout beim beenden des Daemon/Dienstes von standardmäßig - 1min 30s auf z.B. hier 2min 30s erhöht wird, was notwendig sein kann, wenn viele Daten via rsync zu kopieren sind!

TimeoutStopSec=2min 30s

Nachfolgender Befehl, gibt die Änderungen dem systemd-Dienst bekannt: (Änderung der „Timeout“-Zeiten)

# systemctl daemon-reexec

Nachfolgender Befehl, gibt die Änderungen dem systemd-Dienst bekannt: (Änderung von „Exec-Start/Stop)

# systemctl daemon-reload

carbon-cache: RAM-Disk - cron-Job

Um nicht nur beim Stoppen des Graphite carbon-cache-Server die Daten von der RAM-Disk auf die Festplatte zu schreiben, sondern dies auch in regelmäßigen Abständen durchzuführen, kann nachfolgender cron-Job angelegt werden:

(Nur relevnater Ausschnitt)

PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

# Tachtler
# rsync from RAM-Disk: /var/lib/carbon/whisper/(all files) to HDD-Disk: /var/lib/carbon/whisper.persistant/(all files)  
*/30 * * * * root /usr/bin/rsync -ratv /var/lib/carbon/whisper/ /var/lib/carbon/whisper.persistent/ >/dev/null 2>&1

:!: HINWEIS - Vorhergehender cron-job synchronisiert alle 30 Minuten die Daten aus der RAM-Disk auf die Festplatte.

carbon-cache: RAM-Disk - Server starten

Der Graphite carbon-cache-Server kann mit nachfolgendem Befehle gestartet werden:

# systemctl start carbon-cache

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/icinga2_-_graphite.txt · Zuletzt geändert: 2017/07/28 14:36 von klaus