Graphite'da Release Takibi

Monitoring için çok fazla tool mevcut. Graphite bu toolara iyi bir alternatif. Buradan farklı protokoller ile nasıl veri aktarılır bilgisine erişebilirsiniz.

Makinaları monitör etmenin yanında bazı olayları da gözlemlemek gerekiyor. Ben bunun için en basit şekli ile plaintext protocol'den bahsetmek istiyorum.

Sürüm gönderme sürecinizin sonunda tek satır ile bu bilgiyi Graphite'a yani aslında Carbon'a gönderebilirsiniz. Graphite'in storage backend dediğimiz deamon'larına Carbon deniyor.

*nix sistemlerde nc yani netcat kullanarak Carbon'a socket bağlantısı kurup veri yollayabiliyoruz. Bağlantı kurulduktan sonra dikkat edilmesi gereken tek şey verinin şu formatta olması: <metric path> <metric value> <metric timestamp>

Bağlantı kurmaktan kastım ise; Carbon'un plaintext backend'i için default port değeri 2003. host ve port bilgisini nc komutuna parametre olarak geçmek.

Şu komut bunların hepsini yapıyor.

SERVER=your-graphite-host.com
PORT=2003
echo "path.to.event 1 `date +%s`" | nc -q0 ${SERVER} ${PORT}

-q0 parametresi OpenBSD için bağlantıdan sonra socket bağlantısının kapatılmasını söylüyor. Bu parametre GNU için -c

Bu bilgiyi gönderdikten sonra kullanmak için grafiklere söyle birşey eklenebilir.

[
  {
    "target": [
          "lineWidth(drawAsInfinite(release.prod.*.success),2))"
    ],
    "title": "All Successful Prod Releases"
    }
]

drawAsInfinite release bilgilerini başka metricler ile aynı grafik üzerinde kullanmak için faydalı, çünkü dikine bir çizgi olarak gözücekler. Aşağıdaki örnek biraz daha fikir verebilir.

[
  {
    "target": [
      "my-server-name.load.load.shortterm",
      "drawAsInfinite(release.prod.web.success)"
    ],
    "lineWidth": "2",
    "hideLegend": "true"
  }
]

alt