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
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/icinga2_-_graphite.txt · Zuletzt geändert: 2017/07/28 14:36 von klaus