collectd_graphite_grafana

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
collectd_graphite_grafana [2017/03/30 19:44] – created brotcollectd_graphite_grafana [2017/07/05 13:40] (current) – [Konfiguration] brot
Line 7: Line 7:
 Fehlen nurnoch Datenquellen. Als alternative für die von munin gesammelten Daten bietet sich [[https://collectd.org/|collectd]] an. Der Umfang der "Sensoren" ist ähnlich, die Konfiguration mit hilfe von Plugins wenig aufwendig. Neben den fertigen Tools gibt es auch einfache Librarys die einem das senden an Daten an graphite erleichtern, z.B. [[https://github.com/daniellawrence/graphitesend|die Python library graphitesend]]. Fehlen nurnoch Datenquellen. Als alternative für die von munin gesammelten Daten bietet sich [[https://collectd.org/|collectd]] an. Der Umfang der "Sensoren" ist ähnlich, die Konfiguration mit hilfe von Plugins wenig aufwendig. Neben den fertigen Tools gibt es auch einfache Librarys die einem das senden an Daten an graphite erleichtern, z.B. [[https://github.com/daniellawrence/graphitesend|die Python library graphitesend]].
  
 +===== collectd =====
  
 +Da collectd die Datensammlung übernimmt, muss es auf jedem Host installiert werden, der später im Monitoring zu sehen sein soll. collectd ist hier aber dank der Plugin-Architektur sehr flexibel und für alle Linuxe verfügbar.
  
 +==== Installation ====
 +
 +<code bash gentoo>
 +nas brot # grep COLLECT /etc/portage/make.conf
 +COLLECTD_PLUGINS="aggregation df interface irq load memory swap syslog apcups chrony cpu disk hddtemp md netlink network nfs processes sensors smart thermal uptime users virt write_graphite"
 +nas brot # emerge -av collectd
 +</code>
 +
 +
 +===== Graphite =====
 +
 +Graphite ist aufgeteilt in mehrere Teile, Carbon kümmert sich um das Speichern der Daten, Graphite stellt eine Web-API zur verfügung um die Daten zu queryen bzw diese zu aggregieren. Beide Teile sind in Python geschrieben, was heißt dass für Graphite auch ein Webserver benötigt wird. Da bei mir die Dienste auf einem Raspbery Pi Zero laufen werden, ist die Installation auf Debian vorgenommen. Als Webserver wird der recht sparsame nginx verwendet.
 +
 +==== Installation ====
 +
 +<code bash ->
 +root@minipi:/home/pi# apt install graphite-carbon graphite-web nginx-full uwsgi uwsgi-plugin-python
 +</code>
 +
 +==== Konfiguration ====
 +
 +=== Carbon ===
 +
 +<file - /etc/carbon/storage-schemas.conf>
 +# 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
 +
 +[collectd]
 +pattern = ^collectd.*
 +retentions = 10s:1h,1m:1d,10m:1y,1h:10y
 +
 +[default_1min_for_1day]
 +pattern = .*
 +</file>
 +
 +=== Graphite-web ===
 +
 +  - graphite initialisieren
 +  - graphite api als uwsgi app definieren
 +  - nginx seite definieren
 +  - configs aktivieren, dienste neustarten
 +
 +<code bash ->
 +
 +root@minipi:/usr/share/graphite-web# nano/etc/graphite/local_settings.py
 +(secret salt setzen)
 +
 +root@minipi:/usr/share/graphite-web# graphite-manage migrate
 +
 +</code>
 +
 +<file shell /etc/uwsgi/apps-available/graphite.ini>
 +
 +[uwsgi]
 +processes = 2
 +uid = _graphite
 +gid = _graphite
 +chdir = /usr/share/graphite-web
 +file = graphite.wsgi
 +chmod-socket = 666
 +
 +
 +</file>
 +
 +<file shell  /etc/nginx/sites-available/graphite.conf>
 +# /etc/nginx/sites-available/graphite.conf
 +
 +server {
 +    listen 80;
 +
 +    location / {
 +        include uwsgi_params;
 +        uwsgi_pass unix:/run/uwsgi/app/graphite/socket;
 +    }
 +}
 +</file>
 +
 +<code bash ->
 +root@minipi:/home/pi# ln -sv /etc/uwsgi/apps-available/graphite.ini /etc/uwsgi/apps-enabled/
 +‘/etc/uwsgi/apps-enabled/graphite.ini’ -> ‘/etc/uwsgi/apps-available/graphite.ini’
 +root@minipi:/home/pi# ln -sv /etc/nginx/sites-available/graphite.conf /etc/nginx/sites-enabled/
 +‘/etc/nginx/sites-enabled/graphite.conf’ -> ‘/etc/nginx/sites-available/graphite.conf’
 +root@minipi:/home/pi# rm /etc/nginx/sites-enabled/default
 +root@minipi:/home/pi# sudo -u _graphite graphite-manage syncdb --noinput
 +root@minipi:/home/pi# systemctl restart uwsgi
 +root@minipi:/home/pi# systemctl restart nginx
 +</code>
 +
 +===== Grafana =====
 +
 +==== Installation ====
 +
 +Grafana soll, wie auch der Rest der Software, auf einem Raspberry Pi laufen. Die Grafana-Pakete gibt es allerdings nicht für raspian, und die debian unstable pakete wollen auf einem rpi1 nicht so ohne weiteres laufen. Aber es gibt abhilfe: Ein [[https://github.com/fg2it/grafana-on-raspberry|Github Projekt für grafana auf Raspberys]] inkl dazugehörigem [[https://dl.bintray.com/fg2it/deb-rpi-1b/|repository]]
 +
 +<code bash ->
 +apt install apt-transport-https curl
 +curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
 +echo "deb https://dl.bintray.com/fg2it/deb-rpi-1b jessie main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
 +apt update
 +apt install grafana
 +</code>
  
  
  
  • collectd_graphite_grafana.1490903046.txt.gz
  • Last modified: 2017/03/30 19:44
  • by brot