So, turns out that my old blog generator was complicated and it’s mostly dead now. Decided to do some tests this saturday with Hugo. Such nice and fast tool. Migrating from octopress wasn’t even THAT hard since both use markdown for posts. Also used mkdocs to create a new session on my site: Build logs. I do a lot of DIY stuff and I think it would be interesting to have those things described in documentation format.
There’s a famous saying about hammers and problems. I think it goes like if all you have is a hammer, everything looks like a nail. That’s a common thing to happen on the devops/sysadmin trade and goes completely against the UNIX Philosophy of small tools getting together to achieve big things. Sometimes we will essentially try to fit the problem to the tool, just because we have all this variety of do everything tools.
SSH is awesome, it’s perhaps into the top 10 most important tools for the sysadmin job and still surprises me sometimes with cool features. Doing some reading about cluster administration using SSH I stumbled into this: Host * ControlMaster auto ControlPath /tmp/ssh_mux_%h_%p_%r ControlPersist 4h What witchery is that, you ask? Has science gone too far? Well, no, that’s actually pretty old and I should be probably ashamed of only discovering it so recently.
So for some reason you have to use GnuPG (GPG for shorts). It may because you work somewhere with minimal privacy/security conscience, or just because you are on a project that decided to sign commits using a GPG/PGP key (I will use PGP/GPG key interchangeably here). The problem is, you have no idea of what you should be doing. Fear not, you can totally fake it until you make it with a few easy commands.
One of the things I really like to do is learning new languages. So after leaving it on the back burner for almost a year I decided to really concentrate on the Mark Summerfield’s Programming Go book that I had since before printing (I had like 4 different rough cuts that I never started reading for serious). The book is very good, and is doing a fantastic job on giving me the basics on the language, and I am starting the more advanced chapters and not feeling totally lost.
Seems that every post I create is about changes, that can get annoying but I think that discussing the reasons behind those changes is important, interesting, or something like that. I don’t really care. Why I stopped using Ubuntu tl;dr: Canonical crap. I am using Arch Linux. Debian is great. There’s nothing better than apt in the planet to manage packages. Debian Project’s commitment to free software is also great.
So, since last post some changes happened, most people that follow me on twitter/G+/Facebook or Linkedin are probably aware of them but well, I needed to post something :) From bash to zsh I changed my shell after years using bash. zsh makes for a somewhat better experience and has some options that really help. I tried to use fish some years ago but it let me down, so I was a little scared of changing shells again but now after almost two weeks using zsh I am comfortable to say that it was a good choice.
So this week after a version upgrade on GraphicsMagick we got some segfaults on our servers. Nothing terrible, twelve segfaults or close to that on a 24 hour period. The only information was a line on
Feb 22 13:28:27 serverXX kernel: [1953364.275653] gm: segfault at 0 ip 00007fd137bd41e0 sp 00007fff5770dcd0 error 6 in libGraphicsMagick.so.3.7.0[7fd1379b9000+29d000]
No core dumps since
ulimit -c is zeroed. What to do to at least have an idea of what is happening?
Getting back to work as a full time sysadmin was great, I got back to speed on scalability, updated my toolbox and learnt about other fantastic tools, like Graphite. Graphite is a graphing tool, extremely configurable and scalable. One thing, though, bothered me: the lack of good tools to send server metrics to it. I tried collectd graphite plugins and none did what I wanted the way I wanted.
So I decided to flex my node.js dev muscles and here is HoardD. This is a node.js app written in coffee-script that basically runs scripts and tools to get information about a server and sends it to carbon (Graphite’s storage backend). It’s easily expansible to include more metrics and very very fast and small (11MB or so, depending on scripts loaded, most of it is node).