Συλλογή ιστορικών δεδομένων με το collectd

Το collectd είναι μια υπηρεσία συστήματος που συγκεντρώνει διάφορες μετρικές από τους υπολογιστές σε ένα δίκτυο και τις αποθηκεύει σε διάφορες μορφές. Η τυπική του χρήση είναι η παρακολούθηση των υπολογιστών σε ένα datacenter. Αλλά και σε ένα τοπικό υπολογιστή η χρήση του είναι χρήσιμη και θα δείξω σε αυτόν τον οδηγό πως μπορείς να το χρησιμοποιήσεις.

Στην περίπτωση μου άρχισα να έχω θέματα με θερμοκρασίες όταν έπαιζα ένα παιγνίδι, με αποτέλεσμα να κολλάει ο υπολογιστής. Για να το επιβεβαιώσω θέλησα να καταγράφω τις θερμοκρασίες.

TL/DR

Οι απλές οδηγίες. Εγκαταστήστε δυο πακέτα

apt install collectd kcollectd

αφήστε λίγο χρόνο να μαζέψει πληροφορίες και τρέξετε το προγραμμα kcollectd.

Εγκατάσταση

Ο υπολογιστής μου είναι βασισμένος σε debian με systemd. Αλλά οι οδηγίες εύκολα μπορούν να μεταφερθούν σε άλλα συστήματα. Η εγκατάσταση του είναι απλή

sudo apt install collectd

και μετά θα κάνω αλλαγές στο αρχείο /etc/collectd/collectd.conf, στο οποίο θα κάνουμε αλλαγές με sudo. Το αρχείο αυτό έχει πολλά σχόλια αλλά η βασική του μορφή χωρίς αυτά είναι


FQDNLookup true

# This is the read interval in milliseconds
Interval 5000

# Load the syslog plugin
LoadPlugin syslog
<Plugin syslog>
    LogLevel error
</Plugin>

# Load the following plugins for collectd to read/write with
LoadPlugin battery
LoadPlugin cpu
LoadPlugin disk
LoadPlugin load
LoadPlugin memory
LoadPlugin swap
LoadPlugin sensors

LoadPlugin rrdtool
LoadPlugin csv


# Configure the csv plugin
<Plugin csv>
    DataDir "/var/lib/collectd/csv"
    StoreRates true
</Plugin>

# Configure the rrdtool plugin
<Plugin rrdtool>
    DataDir "/var/lib/collectd/rrd"
</Plugin>

Μια βασική ρύθμιση είναι το Interval 5000 που είναι πόσο συχνά θα κάνει την καταγραφή. Έχει νόημα να το μεγαλώσεις αν δεν θέλεις τόσο λεπτομερή περιγραφή. Το δεύτερο είναι να φορτώσεις τα plugins που καταγράφουν τις πληροφορίες. Υπάρχουν πολλά plugins διαθέσιμα και η πλήρη λίστα είναι εδώ

https://collectd.org/wiki/index.php/Table_of_Plugins

Αυτά χωρίζονται σε δύο κατηγορίες τα read που διαβάζουν πληροφορίες, στο παράδειγμα τα cpu, memory, sensors,load,... Έχω πρώτα με την βοήθεια του sensors-detect ρυθμίσει τα sensors της μητρικής και του επεξεργαστή.

Κάποια άλλα plugins που γράφουν τις πληροφορίες. Το csv τις αποθηκεύει σε αρχεία τύπου cvs για επεξεργασία με το libreoffice και το rrdtool που τα αποθηκεύει σε μια ειδική βάση δεδομένων για αυτές τις χρήσεις. Στην πραγματικότητα χρησιμοποιώ μόνο αυτήν και συνιστώ να αφαιρέσεις αυτές τις γραμμές.

Μετά τις αλλαγές θα ξεκινήσουμε την υπηρεσία και θα τσεκάρουμε αν όλα πάνε καλά.

sudo systemctl start collectd
sudo systemctl status collectd

Προβολή των πληροφοριών

Έχουμε κάνει την μισή δουλεία. Τα δεδομένα μαζεύονται στις βάσεις του RRDtool αλλά θέλουμε ένα τρόπο να τα δούμε. Μπορούμε με το χέρι να φτιάξουμε μικρά scripts, αλλά υπάρχουν πολλά εργαλεία που μας τα παρουσιάζουν έτοιμα, ενώ επίσης μπορούμε να στείλουμε τα δεδομένα σε ποιο επαγγελματικά προγράμματα παρακολούθησης. Η λίστα μπορεί να βρεθεί εδώ:

https://collectd.org/wiki/index.php/List_of_front-ends

Βλέπουμε πως τα περισσότερα είναι βασισμένα σε κάποια τεχνολογία web, και μόνο ένα πρόγραμμα το kcollectd είναι κλασσικό. Αυτό υπάρχει στα αποθετήρια, αλλά κατεβάζει μαζί όλες τις βιβλιοθήκες του KDE.

Προσωπικά δεν με βόλεψε, αν και μια χαρά κάνει την δουλεία του.

Το να στήσεις μια καλύτερη λύση σε ένα raspberry και να μαζεύει πληροφορίες απο ολους τους υπολογιστές θα ήταν μια ποιο καλή λύση και έχει νόημα σε ένα γραφείο, αλλά στην περίπτωση μου δεν ήθελα να μπω στον κόπο, ή καλοκαιρινή ραστώνη βλέπετε :stuck_out_tongue: Οπότε η λύση είναι το docker μιας και ήταν ήδη έτοιμο και στημένο στο μηχάνημα μου.

Εγκατάσταση και χρήση του docker

Ακολουθήστε τις οδηγίες από εδώ

ή από εδώ

Προσοχή To docker δεν τα πάει καθόλου καλά με το TimeShift

Η εντολή

docker run -v /var/lib/collectd/rrd:/var/lib/collectd/rrd -p 8080:80 --name docker.collectdweb.service konjak/cgp

θα ξεκινήσει ένα web server προσβάσιμο από το localhost:8080. Απο το chrome θα το κάνω ‘εφαρμογή’ προσβάσιμο από το μενού.

Μάλλον πρέπει να προσθέσω αυτούς τους ανεμιστήρες που αφαίρεσα τον χειμώνα.

Για να σταματήσουμε τον docker θα δώσουμε τις εντολές

docker container ls
docker stop docdocker.collectdweb.service

Ξεκίνημα σαν υπηρεσία συστήματος

Θα φτιάξω ένα αρχείο /etc/systemd/system/docker.collectweb.service που θα περιέσχει τα παρακάτω

[Unit]
Description=Collectd web Service
After=docker.service
Requires=docker.service

[Service]
ExecStart=/usr/bin/systemd-docker run --rm --name %n \
    -v /var/lib/collectd/rrd:/var/lib/collectd/rrd \
    -p 8080:80 \
    konjak/cgp
RestartSec=120
TimeoutStartSec=120
TimeoutStopSec=120

[Install]
WantedBy=default.target

και θα ενεργοποιήσω την υπηρεσία, αφού πρώτα εγκαταστήσω και το πακέτο systemd-docker

sudo systemctl enable docker.collectdweb.service
sudo systemctl status docker.collectdweb.service
docker container ls

Κλείνοντας

Το collecd είναι ένα πανίσχυρο πρόγραμμα με πολλές δυνατότητες που μόλις τις αγγίξαμε σε αυτό το άρθρο. Πόσο μάλλον που αγγίξαμε το μεγάλο κεφάλαιο που το λένε docker. Ίσως προσέξατε πως δεν μπήκα στον κόπο να κρατήσω στατιστικά για το δίκτυο. Ο λόγος είναι πως χρησιμοποιώ ήδη για αυτό το vnstat για αυτή την δουλεία μαζί με ένα cinnamon applet οπότε το κράτησα όσο ποιο απλό γίνετε.

Επίσης δεν κρατάω στοιχεία για την κάρτα γραφικών, αν και θα έπρεπε. Για κάποιο λόγο το σχετικό plugin δεν υπάρχει μέσα στο πακέτο apt, και δεν υπάρχει σχετική τεκμηρίωση. Υπάρχουν τρίτες λύσεις (είναι πολύ εύκολο να προσθέσεις τα δικά σου plugins στο collectd), αλλά δεν μπήκα επίσης στον κόπο.

5 Likes