Κυριακή, Αυγούστου 12, 2018

Μετακομίζουμε

Το παρόν blog πακετάρει και μετακομίζει. Ανανεώστε τα feeds σας - αν θέλετε δηλαδή, δεν αναγκάζουμε κανέναν :)

https://blog.dtsomp.net


Αντιός blogspot, καλά ξεκουμπίδια.

Σάββατο, Ιουλίου 08, 2017

Debian 9 και provisioning με Ansible

Βγήκε το Debian Stretch πρόσφατα και ο καλύτερος υποψήφιος για δοκιμή είναι το travel laptop μου, ένα Macbook Air 11".

Το MBA είναι παλιό (μοντέλο 2012, i5 @ 1.6GHz, 2GB RAM) αλλά το Stretch με Gnome 3 δουλεύει αξιοπρεπέστατα, πολύ ευχαριστημένος, would install again, κλπ. Το επόμενο βήμα είναι το Thinkpad X220 και ένα Mac Mini που κυκλοφορούν στο σπίτι, κάποια περιφεριακά συστήματα που διαχειρίζομαι και ενδεχομένως το laptop της δουλειάς.

Εκτός όλων αυτών, ζούμε σε έναν κόσμο όπου πρέπει να κάνεις wipe το travel laptop κάθε φορά που περνάς τα σύνορα της ΕΕ - πχ δες εδώ.

Όλα αυτά είναι πολλά Debian installations και προφανώς βαριέμαι να τα σετάρω με το χέρι.

Με 2-3 απογευματάκια δουλειάς βρήκα την ευκαιρία να ξαναπιάσω Ansible και έτσι έφτιαξα ένα σετάκι από playbooks για να σετάρω όλα αυτά τα συστήματα. Είναι φυσικά διαθέσιμο στο Github.

Αν κάποιος έχει ένα καλό τρόπο για την εγκατάσταση Firefox plugins μέσω cli, είμαι όλος αυτιά :)

Δευτέρα, Ιανουαρίου 16, 2017

Πίσω στο XMPP

Επιστροφή στο XMPP/Jabber, γιατί κουράστηκα με τα Telegram, Whatsapp και τις υπόλοιπες αηδίες. Αν ξαναδώ τηλεφωνικό αριθμό ως account id σε messaging app θα ξεράσω.

Το Conversations είναι ε-ξαι-ρε-τι-κός Jabber client για Android. Οι δημιουργοί του μάλιστα προσφέρουν hosted service για €12 τον χρόνο. Τσίμπησα account, έστησα το προσωπικό μου domain, άρχοντας.

Στο desktop Adium/Pidgin γιατί είμαι παραδοσιακός κατά βάθος. Το Finch είναι η command-line έκδοση του Pidgin και βολεύει τρελά αν είσαι ο τύπος που έχεις ένα tmux ανοιχτό όλη την ώρα.

Ευτυχία είναι να μπορείς να διαλέξεις όποιο ρημάδι client θες :)

By the way, τα παιδιά του hackerspace.gr έχουν κάνει πολύ καλή δουλειά στο στήσιμο του gnu.gr, ενός ελληνικού public jabber server. Εξαιρετική επιλογή αν δεν θες να ασχοληθείς με στήσιμο δικού σου server/domain και απλά θες ένα account και να ξεκινήσεις. Άσε που το να έχεις username τύπου "me παπάκι gnu.gr" είναι απείρως cool :)

Δευτέρα, Δεκεμβρίου 12, 2016

Reading challenge 2016

Τα πάντα είναι θέμα κινήτρου.

Τα τελευταία 10 περίπου χρόνια διάβαζα βιβλία πολύ αραία. Μοναδική και παντοτινή εξαίρεση βέβαια ο αγαπημένος Pratchett, άντε και λίγο η αρρώστια με το Game of Thrones που με έσπρωξε να κατεβάσω αμάσητα όλους τους τόμους της σειράς Song of fire and ice, αλλά από λογοτεχνία ως εκεί.

Στον τεχνικό τομέα τα ίδια. Πολλά, πάμπολλα, αναρίθμητα τεχνικά άρθρα αποθηκευμένα στο Pocket. Κάθε τόσο αγοράζα κάποιο βιβλίο από O'Reilly και το άφηνα σε κάποια γωνιά, για "αργότερα". Η εικονική στοίβα με τα epubs μόνο μεγάλωνε.

Πριν ενάμισι περίπου χρόνο αγόρασα ένα e-reader της Kobo για να αντικαταστήσω το παλιό Sony PRS 650, κυρίως λόγω του Pocket integration με το αυτόματο syncing μέσω wifi. Με βοήθησε να αρχίσω να μειώνω τον αριθμό των ανέγγιχτων άρθρων που περίμεναν με υπομονή να ασχοληθώ μαζί τους. Δυο-τρία αρθράκια στο τρένο/λεωφορείο για την δουλειά κάθε μέρα και η λίστα μειώθηκε σε πιο νορμάλ μεγέθη.

Κάπου τον Μάρτιο ανακάλυψα ότι το Goodreads (social network για βιβλιοφάγους) έχει reading challenge: συμμετέχεις δηλώνοντας πόσα βιβλία στοχεύεις να διαβάσεις μέχρι το τέλος του χρόνου. Ξεκινάς κάποιο βιβλίο; Το μαρκάρεις ως 'currently reading'. To τελείωσες; Mark as read.

Τσίμπησα και έβαλα στόχο τα 30 βιβλία για φέτος. Λίγο αισιόδοξος ο στόχος, δεδομένου ότι ξεκίνησα κάπου τον Μάρτιο. Τα πράγματα έγιναν λίγο χειρότερα το καλοκαίρι καθώς λόγω ενός burnout στην δουλειά δεν είχα κουράγιο να ασχοληθώ με τίποτα και πέρασα ολόκληρο τον Ιούλιο στο χαζοκούτι, σε παραλίες και στις μπύρες, μη διαβάζοντας ούτε σειρά.

Ο στόχος τελικά επετεύχθη - και μάλιστα στις τελευταίες μέρες του Νοέμβρη - για αυτό και το καμαρωτό post στο ξεχασμένο τούτο blog :)

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

Η πλήρης λίστα είναι εδώ: https://www.goodreads.com/user_challenges/4142422.

Νομίζω φαίνεται ότι ξεκίνησα λίγο από τα classics, με 1984 και Lord of the Flies εκεί μέσα.
Χαίρομαι πολύ που διάβασα Lovecraft, Edgar Allan Poe και Philip K. Dick. Η τριλογία Hannibal Lecter ήταν αρκετά ενδιαφέρουσα και η μεταφορά της στο σινεμά ήταν, απ'ότι φαίνεται, πολύ πιστή. Παρομοίως και το Godfather, πολύ καλό. Το American Psycho ήταν ένα πολύ κουραστικό βιβλίο και διαβάζεται μόνο μια φορά, και αυτή με το ζόρι.

Στα τεχνικά βιβλία, το βαρύγδουπο όνομα είναι το Site Reliability Engineering της Google, ένα must read, αλλά όχι απαραίτητα κορυφαίο. Ωραίο το insight για το πως δουλεύει η φάμπρικα της Google, αλλά το scale of operations και οι πόροι που έχει στην διάθεση της η εταιρεία τα κάνει όλα διαστημικά για εμάς τους πτωχούς πλην τίμιους εργάτες στα μαγαζάκια των 50, 100, 200 ατόμων.
Θεωρώ το Clean Coder ως πολύ πιο σημαντικό ανάγνωσμα από το SRE book. Περιέχει μαθήματα επαγγελματισμού για τον κάθε IT worker, ανεξαρτήτως ειδικότητας, και νομίζω ότι θα έπρεπε να μοιράζεται δωρεάν σε κάθε απόφοιτο, μαζί με το πτυχίο του. Απλά εξαιρετικό.
Την λίστα συμπληρώνουν το Art of Monitoring (πολύ Reimann, λίγο Graphite και ELK) και το Logstash book, και τα δύο από τον James Turnbull. Ωραία, απλή γραφή, αλλά περισσότερο για αρχάριους παρά για experts στο εκάστοτε αντικείμενο. Πάραυτα, ενδιαφέροντα βιβλία.

Δεδομένου ότι το έτος δεν έχει τελείωσει, η ανάγνωση συνεχίζεται και ίσως προλάβω να στριμώξω 2-3 βιβλία ακόμα. Διαβάζω ταυτόχρονα το Martian, που είναι εξαιρετικό, και το early preview του Modern System Administration, το οποίο αναλύει τα devops-y skills που πλέον χρειάζεται ένας sysadmin.

Μ'αυτά και μ'αυτά, είμαι πολύ χαρούμενος που πίεσα τον εαυτό μου να διαβάσει περισσότερο. Το reading challenge ήταν ακριβώς αυτό που χρειαζόμουν για να πιάσω ρυθμό. Τώρα το μόνο κακό είναι ότι μπαίνω ενθουσιασμένος στο μαγαζί του O'Reilly και του Kobo και απλά πατάω κουμπιά και αγοράζω και η στοίβα μεγαλώνει :)

Τρίτη, Μαΐου 24, 2016

Θεωρία για το Game of Thrones

Προφανώς και έχω spoilers παρακάτω. Όσοι δεν έχετε δει s6e5 ("The Door"), Σεπτέμβριο με τον κηδεμόνα σας.

Spoilers λέμε!

You have been warned.

Το "The Door" είναι χαλαρά από τα καλύτερα επεισόδια της σειράς, επάξιο του Hardhome και του Red Wedding. Καλή τηλεόραση ρε φίλε, πως το λένε.

Η τελική σκηνή ("hold the dοor", κλάααμααα) ξεκίνησε ουσιαστικά από ένα συμβάν: ο Μπραν ανακάλυψε ότι δεν κάνει απλά flashbacks, αλλά έχει την δύναμη να αλληλεπιδρά με το παρελθόν. Τι warging και αηδίες, αυτή είναι η κορυφαία υπερδύναμη στο Westeros. Πιάσαμε φάση Lost.

Κάπου εδώ ξεκινάει η θεωρία μου, φορέστε ζώνη.

Ο Μπραν έχει την δύναμη να επηρεάσει πράγματα στο παρελθόν. Μάλλον σε πολύ μεγάλο βαθμό. Σε βαθμό που να... χτίσει το Τείχος;

Σύμφωνα με τον θρύλο, ο Bran the Builder το έχτισε. Εδώ ο κουτσο-Μπραν μόλις τα έκανε σκατά με τους Whitewalkers, σίγουρα θα φτάσει η ώρα που θα το μετανιώσει και θα προσπαθήσει να αλλάξει το παρελθόν για να τα διορθώσει.
Σε αυτό το σημείο αναρωτιέμαι αν το σημάδι από τον Night's King του έδωσε κάποιες δυνάμεις να ελέγχει τον πάγο, κάτι πολύ χρήσιμο για την ανέγερση του Τείχους.

Αν λοιπόν ο κουτσό-Μπραν είναι/γίνει όντως ο Bran the Builder... δεν αντιπροσωπεύει τρόπο τινά τον "Smith", τον έναν από τους Εφτά (the Seven ή the new Gods);

Ρίξε μια ματιά στους υπόλοπους του Faith of the Seven. Κάποιες περιγραφές είναι ΠΟΛΥ γνώριμες.

The Stranger: αντιπροσωπεύει τον θάνατο, δεν ξέρουν καν αν είναι άντρας ή γυναίκα και έχει το πρόσωπο κρυμμένο. Για σκέψου τώρα... πόσες φορές έχει τονιστεί ότι η Arya είναι αγοροκόριτσο; Σαν φωτογραφική προκήρυξη για θέση στο δημόσιο είναι.
The Warrior: στοιχηματίζω Jon Snow.
The Mother: mother of dragons, mother of slaves, γενικά mother του πλανήτη.
The Crone: γριά, guiding wisdom, φως στο σκοτάδι, Μελισάνδρη μυρίζει, Catelyn Stark δεύτερη επιλογή.
Τhe Father: μουσάτος λέει, υπόδειγμα δικαιοσύνης λέει, εγώ ψηφίζω Ned Stark.
The Maiden: innocence, chastity, protects a maiden's virtue, σαν Brienne μου ακούγεται.

Μπορεί να έχασα κάποιες λεπτομέρειες και να βγουν κάποιοι άλλοι, αλλά το βασικό κόνσεπτ είναι το ίδιο. Επίσης μου έχει κολλήσει ότι ίσως και οι υπόλοιπες θρησκείες να έχουν το ίδιο θέμα, οπότε ξεκινήστε να ψάχνετε για R'hllor και Drowned God. Φαντάζεσαι Tyrion και Theon αντίστοιχα;

Μετά από τέτοιο παραλογισμό, ούτε καν με νοιάζει ποιος θα πάρει τον Iron Throne.


Πέμπτη, Δεκεμβρίου 24, 2015

Το 2015 ενός sysadmin

Ήρθε η περίοδος του self-reflection, ε; Θα κάνω μια προσπάθεια, αλλά θα μου επιτρέψετε να μείνω στα sysadminικά και να μην πιάσω τα προσωπικά μου.

Ξεκίνησα να μπλέκομαι στην στην διαδικασία προσλήψεων της εταιρίας, τουλάχιστον για τους sysadmins. Υπάρχει παλιότερο post επί της διαδικασίας, αργότερα ακολούθησαν και κάποιες άλλες συνεντεύξεις και άλλη μια πρόσληψη - τρεις στο σύνολο για το έτος.

Μαθήματα από την διαδικασία:
  • Πρέπει να είσαι ξεκάθαρος με τον υποψήφιο. Πρέπει να είσαι ακόμα πιο ξεκάθαρος με τον νεο-προσληφθέντα. Δικαιούνται να ξέρουν τι γίνεται και πρέπει να έχουν τακτικό και ειλικρινό feedback. Ειδικά αν η εταιρία έχει δοκιμαστική περίοδο πρόσληψης πριν το μόνιμο συμβόλαιο (σουηδικός νόμος), δώσε feedback τακτικά στον νέοπα για να ξέρει πως τα πάει και αν πιάνει τους στόχους που του έχει θέσει η εταιρία. Η μαγική λέξη είναι "τακτικά", τουλάχιστον κάθε δύο μήνες, αν όχι κάθε μήνα.
  • Πρέπει να είσαι ξεκάθαρος στον εαυτό σου. Φρόντισε να ορίσεις τι κενό ακριβώς θέλεις να γεμίσεις με έναν νέο συνάδελφο. Θα είναι καλύτερα και για σένα και για την εταιρία και για τον νέο συνάδελφο.
  • Η δοκιμαστική περίοδος στην Σουηδία είναι έξι μήνες, όπου η εταιρία έχει την δυνατότητα να διώξει τον νέο υπάλληλο άμεσα αν δει ότι δεν τραβάει/δεν κολλάει στο πνεύμα της εταιρίας. Σιγουρέψου ότι ο υποψήφιος το ξέρει από πριν. 
  • Η τεχνική κατάρτιση βρίσκεται εύκολα. Η εργασιακή προσωπικότητα που ταιριάζει στην ομάδα σου όμως είναι δυσεύρετη. Ξέρεις τι ακριβώς χαρακτήρα έχει η ομάδα σου και πως δουλεύει;
  • Μη βασίζεσαι στο HR για την μη τεχνική εκτίμηση του υποψηφίου. Just don't.
  • Πρέπει να διώξεις sysadmin; Όσο φιλικά και να γίνει, πολύ πιθανόν να πρέπει να κλείσουν τα accounts του όση ώρα του μιλάει ο μάνατζερ του. Δυστυχώς οι sysadmins ανήκουν σε αυτή την ειδική κατηγορία που σε μια έκρηξη θυμού μπορούν να κάνουν ζημιά. Και αυτή η έκρηξη μπορεί να μην έρθει άμεσα, μπορεί να έρθει το βράδυ, μετά από δύο μέρες, την επόμενη βδομάδα.
Αν όλα αυτά σου ακούγονται σαν προϊόν κακών εμπειριών, έπεσες μέσα.

Δυστυχώς η τελευταία μας πρόσληψη δεν πήγε όσο καλά θα περιμέναμε και αναγκαστήκαμε να τον αφήσουμε να φύγει στο τέλος της δοκιμαστικής περιόδου του. Πέρα από τα δικά του και τα δικά μας λάθη (τα οποία έγιναν πικρά μαθήματα), ήταν περίεργο να βλέπεις πόσοι νέοι συνάδελφοι συνειδητοποίησαν ξαφνικά ότι η δοκιμαστική περίοδος δεν συνεπάγεται αυτόματα μόνιμο συμβόλαιο.
Instant μαθήματα επαγγελματικής ζωής για όλους, λοιπόν.

Στις νέες προσθήκες στην εργαλειοθήκη μου έχουμε τα εξής:
  • Ansible
    Νομίζω ότι είχα σχηματίσει μια άλλη εικόνα για την Ansible πριν αρχίσω να την χρησιμοποιώ. Ερχόμενος από τον κόσμο του Puppet, περίμενα κάτι πιο structured και managed. Η Ansible είναι ακριβώς το αντίθετο και θα την περιέγραφα ως ένα python-based SSH loop. Η χρήση της είναι εύκολη, γράφεις τα βήματα που θέλεις να κάνει σε YAML format και ορίζεις σε ποια hosts θα συνδεθεί για να εκτελέσει το playbook.
    Τα προβλήματα που βλέπω στην Ansible είναι η σχετική ανωριμότητα του εργαλείου. Υπάρχουν κάτι bugs από δω κι από κει, υπάρχουν και κάτι προβλήματα performance. Μακάρι να έλεγα ότι οφείλεται στην (προς το παρόν) απλοϊκή χρήση που κάνω, αλλά πήγα σε ένα continuous deployment meetup και ο ένας παρουσιαστής, από μια Ansible-heavy εταιρία, έκραζε για αυτά ακριβώς τα προβλήματα.
    Προς το παρόν την βλέπω ως ένα βολικό orchestration tool, ειδικά στην περίπτωση ενός rolling update, αλλά θα αφήσω το Puppet να κάνει την βαριά δουλειά.
    Πάντως, φαίνεται να είναι φοβερά δημοφιλής, το community της αναπτύσσεται ραγδαία και έχει φτάσει στο σημείο να εξαγοραστεί από την RedHat. Σίγουρα ένα καλό εργαλείο να μάθεις για λόγους επαγγελματικής προόδου.
  • Travis CI
    Δεν είναι τόσο το συγκεκριμένο εργαλείο, όσο το τι εκπροσωπεί: Test driven development + Continuous Integration. Η συζήτηση γίνεται μέσα στο context του infrastructure operations, οπότε μη φαγωθείτε να με κράξετε φίλοι devs :)
    Για τους λίγους σαν εμένα που δεν ξέρουν, το Travis CI αναλαμβάνει να τρέξει κάποια προκαθορισμένα tests στον κώδικα σου κάθε φορά που κάνεις commit. Το πόσο περίπλοκα θα είναι τα tests είναι δικό σου θέμα, αλλά συνήθως μιλάμε για unit testing μαζί με code style conformity.
    Καθώς ασχολούμαι κυρίως με Puppet σε αυτή την περίπτωση, τα tests αυτά τρέχουν με rspec-puppet και puppet-lint. Τα functionality tests τα τρέχω σε vagrant με το χέρι γιατί είμαι κολλημένος, αλλά θα το διορθώσω κι αυτό σύντομα :)
    Βέβαια το Travis CI είναι κατιτις Github-specific. Καθώς στην εταιρία είμαστε οπαδοί του Gitlab, έχουμε προγραμματίσει να κάνουμε deploy το Gitlab-CI, το οποίο δίνει ακριβώς το ίδιο functionality με το Travis. Για μαθησιακούς σκοπούς πάντως το να σηκώσεις ένα Github repo και να το συνδέσεις στο Travis είναι πανεύκολο και δωρεάν, highly recommended.
  • Puppet-lint
    Το puppet-lint είναι ένα ελαφρώς... κομπλεξικό εργαλειάκι που φροντίζει ο κώδικας σου να είναι γραμμένος σύμφωνα με τα puppet code styles. Σπαστικό ώρες-ώρες και η διαφορά που θα κάνει στο τελικό αποτέλεσμα είναι μικρή, αλλά που και που πιάνει κάποιο θέμα συμβατότητας (πχ κώδικας που τρέχει σε παλιότερες εκδόσεις puppet αλλά όχι 3.8+). Είναι στιγμαίο σε εκτέλεση, οπότε δεν υπάρχει σοβαρός λόγος να μη το χρησιμοποιήσεις.
  • Rspec-puppet
    Το rspec-puppet είναι ένα νόθο αδέρφι του rspec που αναλαμβάνει να δει ότι πχ το nginx module σου δεν έχει ξεχάσει να κάνει start το service. Πολύ χρήσιμο αν π.χ. δώσεις στον junior sysadmin ένα module που δεν έχει τροποποιηθεί πάνω από χρόνο και θέλεις να σιγουρευτείς ότι δεν θα σβήσει απαραίτητα κομμάτια. Το γράφεις τώρα και κάνεις επένδυση για το μέλλον.
  • Jenkins
    Κάπου εδώ φρικάρουν οι περισσότεροι έμπειροι αναγνώστες τελείως. "ΤΩΡΑ ΕΜΑΘΕΣ JENKINS;"
    Εντάξει παιδιά, και στα γεράματα καλά είναι :P
    Η επαφή μου με τον Jenkins ήταν μικρή, στα πλαίσια του commit-push-deploy-restart. Για να είμαι ειλικρινής, εφόσον έσπρωχνε το puppet code μου, δεν με ένοιαζε και πολύ, άφηνα τους devs να παίζουν με το jenkins, αυτά είναι του διαβόλου, μη με μπλέκετε με maven κλπ κλπ.
    Ο λόγος που άρχισα να δουλεύω λίγο παραπάνω με Jenkins είναι ότι αποφασίσαμε να το χρησιμοποιήσουμε ως troubleshooting tool. Σε συνεργασία με το DBA team και τους senior devs έχουμε γράψει αρκετά jobs που μαζεύουν forensics ή κάνουν maintenance tasks. Πολύ-πολύ χρήσιμο όταν πρέπει να τρέξεις τέτοια πράγματα από το κινητό σου και εύκολο να δώσεις access στον καημένο junior που είναι on-call, χωρίς να έχει shell/DB access.
  • Debian packaging
    Έχω απαγορεύσει στους devs μας να εγκαθιστούν software με το χέρι. Πατ. Τζιζ. Θέλεις Tomcat στο local env σου;
    apt-get install tomcat
    Θέλεις Tomcat σε dev/test/staging/prod server;
    package{'tomcat': ensure => installed}
    Μαλώνουμε λίγο αλλά δεν πειράζει. Μόλις δούνε ότι δεν χρειάζεται να κάνουν καν ssh στο vm, αρχίζουν να γλυκαίνονται. Στην τελική, ο μέσος dev αυτό θέλει: να γράφει τον κώδικα και να μην ασχολείται με την εγκατάσταση του.
    Για να το πετύχει αυτό η ομάδα, θα πρέπει να σπρώξεις λίγο τα κατάλληλα εργαλεία. Ευτυχώς κάποια standalone services αναπτύχθηκαν εξαρχής σε Dropwizard, για τα υπόλοιπα προσπαθώ να φτιάξω jobs που παίρνουν τα deployables και τα πακετάρουν σε .deb format. Απέχουμε ακόμα από 100% κάλυψη, αλλά το παλεύουμε.
    Επί της ευκαιρίας, I'll toot my own horn και θα λινκάρω την παρουσίαση που έκανα στην εταιρία για εισαγωγή στο Debian packaging, ίσως κάποιοι την βρουν χρήσιμη:
    http://www.slideshare.net/DimitrisTsompanidis/debian-packaging-55056414
  • Graphite
    Late to the party, ξέρω. Είμαστε ακόμα σε δοκιμαστική περίοδο, αλλά έχουμε ζητήσει beta access σε μια καινούρια startup, την Raintank (παιδί του δημιουργού του Grafana), που αναλαμβάνει την διαχείριση του dashboard σου. Το μέλλον προβλέπεται ενδιαφέρον.
Τι έχω στην λίστα για το 2016;

Automation, automation, automation. Πραγματικά, δεν έχω καμιά όρεξη να κάθομαι να κάνω manually δουλειές που θα έπρεπε να κάνουν οι υπολογιστές για μένα. Deployments, provisioning, packaging, testing, δεν με νοιάζει, θέλω μόνο να βλέπω ένα Job succeeded στο Hipchat.


Τα πρώτα εργαλεία που θα κοιτάξω να πιάσω τον επόμενο χρόνο είναι Packer, serverspec, Rundeck, Puppet v4 και ένα καλό χέρι ELK stack. Ειδικά το τελευταίο, όλοι το διαφημίζουν σαν ΤΗΝ λύση για centralized logging, αλλά δεν σου λέει κανένας ότι θα σου γεμίσει ό,τι δίσκο και μνήμη του πετάξεις αν δεν το ταράξεις στο tuning.

Δυστυχώς, θα πρέπει να μάθω και systemd...

Κυριακή, Δεκεμβρίου 13, 2015

Truncating live logs

So... your Tomcat has created a huge catalina.out log file that is now larger than the remaining space on your disk. Logrotate kicks in, tries to make a copy of the file before truncating it, but the copy (as expected) takes up the rest of the disk space, logrotate fails and exits in humiliation and you end up with 100% disk usage.

If you can afford to restart Tomcat, things are going to work out for you.
Stop Tomcat, transfer catalina.out to a different partition/server and start Tomcat again.

If Tomcat is on your production server and you can't afford a restart because its peak-traffic-time-of-the-day, things are more complicated.

You can NOT just move catalina.out to a different mountpoint or server or just plain delete it. The file is actively open by the Tomcat process. 'rm catalina.out' will only delete the reference to the file, but the actual space on the disk will remain occupied by the file (and still actively written to). You'll end up needing to stop Tomcat so that it releases the space.

Make a copy of the file somewhere else, then truncate that thing.
'man truncate' is your friend, but this should be ok:
sudo truncate -s 0K catalina.out

It's not an instant process, so this will probably mean you'll lose a few seconds of logging.
If few minutes of downtime is more expensive than Tomcat logs (it usually is), this is the way to go.

Now, if I only I had set up central logging and/or log rotation properly...