Inhaltsverzeichnis
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:
carbon
- Ein Dienst/Daemon welcher auf einem TCP-Port lauscht um Echtzeitdaten zeit synchronisiert zu empfangenwhisper
- Eine einfache Datenbank Bibliothek, zur Speicherung von zeit synchronisierten Daten (ähnlichen dem Design von RRD)
Beschreibung | Externer Link |
---|---|
Homepage | http://graphite.wikidot.com/ |
Dokumentation | http://graphite.wikidot.com/documentation |
Dokumentation | http://graphite.readthedocs.org/en/latest/ |
Dokumentation | https://wiki.icinga.org/display/howtos/graphite |
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:
- Lauffähiger Datenbank-Server z.B. MariaDB
- Siehe auch den internen Link: MariaDB CentOS 7
- Lauffähiger Web-Server z.B. Apache HTTP Server
- Siehe auch den internen Link: Apache HTTP Server CentOS 7
Vorbereitung
Zur Installation von Graphite aus rpm
-Paketen, müssen nachfolgende Repositories genutzt bzw. eingebunden werden:
- EPEL-Repository
- mailserver.guru-Repository
Repository: EPEL
Nachfolgende Beschreibung bindet das Drittanbieter-Repository von EPEL ein.
- Siehe nachfolgenden internen Link: EPEL CentOS 7
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:
- Siehe nachfolgenden internen Link: mailserver.guru CentOS 7
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
cache
relay
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/graphTemplates.conf
Um für Icinga2 ab Version 2.10.x ein dunkles-Standard-Theme zur Verfügung zu stellen, muss nachfolgende mitgelieferte Konfigurationsdatei aus dem Verzeichnis
/usr/share/doc/graphite-web-0.9.16/graphTemplates.conf.example
nach
/etc/graphite-web/graphTemplates.conf
kopiert und umbenannt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# cp -a /usr/share/doc/graphite-web-0.9.16/graphTemplates.conf.example /etc/graphite-web/graphTemplates.conf
/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:
- Generelle Einstellungen
- Dateisystem Pfade
- E-Mail Konfigurationen (Zur Bereitstellung von Graphen per e-Mail)
- Autehtifikation
- Dashboard Einstellungen
- Datenbank Konfiguration
- Cluster Konfiguration
- 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.
Nach erfolgreicher Anmeldung an der Icinga-Web-Anwendung ist der Menüpunkt: Konfiguration | Module auszuwählen, wonach nachfolgende Ansicht zur Anzeige kommen sollte:
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:
Nach erfolgreicher Aktivierung, sollte sich die Anzeige wie folgt verändert haben:
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