Getting Postgres Version with Golang
I’ve been looking at some monitoring solutions for my network at home. I’ve used nagios in the past but it has quite a few drawbacks. Most noticably, the whole fact that it doesn’t scale to millions of nodes or use a popular javascript framework for its front end pretty much makes it a no-go for my needs. Thanks to my background in technology, I know that the next best option is to just write something myself. As I stated earlier, nagios is a no-go and I need something that is… so I chose go-lang. The fact that go is in the name tells me it will work. Let’s get started!
Plumbing:
brew install go
mkdir ~/go
export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
go get github.com/lib/pq
mkdir gogios && cd gogios
touch gogios.go
Now we code:
package main
import (
_ "github.com/lib/pq"
"database/sql"
"fmt"
"log"
)
func main() {
db, err := sql.Open("postgres", "user=rob dbname=postgres sslmode=disable")
if err != nil {
log.Fatal(err)
}
var version string
err = db.QueryRow("select version()").Scan(&version)
if err != nil {
log.Fatal(err)
}
fmt.Println(version)
}
Run it:
go run gogios.go
Output:
PostgreSQL 9.4.4 on x86_64-apple-darwin14.3.0, compiled by Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn), 64-bit
Now, while we haven’t replaced 100% of nagios, we’re off to a great start and probably only have a few hundred hours of coding left. Good thing it is the weekend!