Telegraf, InfluxDB, Chronograf ve Kapacitor’un baş harflerinden oluşan TICK stack, sunucu monitor etmek için kullanılan bir uygulamalar bütünüdür. Sunucu monitor etmek, farklı durumları tespit etmek ve ortaya çıkan sorunlardan kısa sürede haberdar olup çözebilmek ilk adımıdır. TICK stack de, şu anda dünyada en yaygın kullanılan kabul görmüş takip sistemlerinden birisidir.
TICK stack’ı kısaca açmak gerekirse;
Telegraf — Telegraf, ölçümleri toplayıp InfluxDB’ye iletmekle sorumlu uygulamadır. Telegraf’ın en güçlü taraflarından bir tanesi, dünyada popüler yüzden fazla servisin ölçümlerini toplamamıza yardımcı olan plugın sistemi olmasıdır diyebiliriz.
InfluxDB — InfluxDB, yüksek performanslı, açık kaynak zaman serilerini saklayabildiğimiz bir veritabanıdır.
Chronograf — Chronograf, bu uygulama bütününü kontrol etmemizi sağlayan arayüzdür. Bu uygulama üzerinden sunucuları ekleyebilir, ölçüm kriterlerini ve alarmları oluşturabiliriz.
Kapacitor — Kapacitor bir veri işleme ve bildirim uygulamasıdır. Bu uygulama ile olayları, alarmlara dönüştürebilir ve mail, Slack, Telegram gibi farklı yerlere bildirimler gönderebilirsiniz.
Daha detaylı bilgiye linkten ulaşabilirsiniz.
Kurulum ile ilgili resmi dokumana da linkten ulaşabilirsiniz.
InfluxDB
Öncelikle TICK stack deposunu sunucumuza eklememiz gerekiyor:
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Ardından update çalıştırıyoruz ve influxdb’nin kurulumunu yapıyoruz:
sudo apt update && sudo apt install influxdb
Servisi ayağa kaldırıyoruz:
sudo systemctl start influxdb
influx komutu ile client’a bağlanıyoruz. Burada admin kullanıcısını oluşturacağız. Daha sonra bu kullanıcıyı influxdb’ye bağlanmak için kullanacağız.
CREATE USER "admin" WITH PASSWORD 'admin123' WITH ALL PRIVILEGES
show users komutu ile oluşturduğunuz kullanıcıyı kontrol edebilirsiniz.
Ardından
exit komutu ile konsoldan çıkıyoruz. Sonra influxdb’nin konfigurasyon dosyasını herhangi bir düzenleme uygulaması ile açıyoruz. Burada [http] bölümünü buluyoruz.
/etc/influxdb/influxdb.conf
# auth-enabled = false
Bu kısmı uncomment yapıp true’ya çeviriyoruz.
auth-enabled = true
Burada yaptığımız işlem influxdb’ye yetkisiz kullanıcıların bağlanmasına engel olmamızı sağlıyor. Bu yetkilendirme standart olarak deaktif şekilde geliyor. Bunu aktif ettiğimiz zaman, eğer herhangi bir kullanıcımız yoksa InfluxDB sadece admin kullanıcısı oluşturmak için çalıştıracağınız sorguyu kabul eder.
Dosyayı kaydettikten sonra servisi yeniden başlatıyoruz.
sudo systemctl restart influxdb
Telegraf
Kurulumu yapıyoruz:
sudo apt install telegraf
Telegraf konfigürasyon dosyasına influxdb kullanıcı bilgisini yazıyoruz:
/etc/telegraf/telegraf.conf
[[outputs.influxdb]]
username = "admin"
password = "admin123"
Servisi yeniden başlatıyoruz:
sudo systemctl restart telegraf
Daha sonra Telegraf veritabanını influxdb üzerinden kontrol ediyoruz:
influx -username 'admin' -password 'admin123'
> show databases #veritabani listesinde telegraf'ı görüyoruz
> use telegraf #telegraf veritabanını seciyoruz
> show measurements #telegraf'ın topladığı ölçümleri görüyoruz
Telegraf ile ölçümlerini toplayabileceğiniz pek çok servis ve database bulunuyor. Docker, Apache, PostgreSQL, Elasticsearch bunlardan bazıları.
telegraf -usage apache bu örnekteki gibi diğer servislerin kullanımlarını görebilirsiniz.
Kapacitor
Kurulumu yapıyoruz:
sudo apt install kapacitor
Kapacitor konfigürasyon dosyasına influxdb kullanıcı bilgisini yazıyoruz:
/etc/kapacitor/kapacitor.conf
[[influxdb]]
username = "admin"
password = "admin123"
Dosyayı kaydedip servisi yeniden başlatıyoruz:
sudo systemctl restart kapacitor
Kapacitor’un ayakta olduğunu aşağıdaki gibi kontrol ediyoruz:
kapacitor list tasks
Bize aşağıdaki gibi boş bir liste sunması gerekiyor:
Chronograf
Kurulumu yapıyoruz:
sudo apt install chronograf
Chronograf’ı kurduktan sonra, diğer uygulamalarla bağlantımızı Chronograf’ın web arayüzü üzerinden gerçekleştiriyoruz. Uygulama 8888 portundan çalışıyor. Bunun için internet tarayıcınızdan
http://sunucu_IP:8888adresine gitmeniz gerekiyor. Burada sizi bir Welcome sayfası karşılıyor. Gelen sayfada influxdb için belirlediğiniz kullanıcı adı ve parolayı girmeniz gerekiyor:
Add Connection dedikten sonra çıkan sayfada isterseniz skip butonu ile geçerek default paneli kullanabilir isterseniz başka bir panel seçebilirsiniz. Tekrar ilerledikten sonra çıkan ekranda Kapacitor bağlantısı için next butonuna tıkladığınızda bağlantı tamamlanmış oluyor.
View All Connections butonuna tıklayarak oluşturduğunuz bağlantıyı görebilirsiniz. Soldaki menüden Dashboards’a tıklayarak oluşturduğunuz panellerden birini seçebilirsiniz. Aşağıdaki varsayılan sistem paneli:
Bildirimler oluşturmak için soldaki menuden Alerting > Manage Tasks’a tıklamanız gerekiyor. Çıkan ekranda Build Alert Rule butonuna tıkladıktan sonra burada bildirimlerinizi oluşturabilirsiniz. Aşağıdaki örnekte memory kullanımı ile ilgili oluşturduğum bildirimi görebilirsiniz.
İlk adımda alarm tipini ve kullanacağımız alanı seçiyoruz. Burada kullanılan yüzdeyi seçtim:
Ardından aşağıda Conditions kısmında ne zaman bildirim almak istiyorsanız onu belirliyorsunuz. Örneğin aşağıda ram kullanımı yüksek bir sunucu olduğu için ben %90'dan fazla olduğunda bildirim almayı seçtim.
Devamında bu bildirimi hangi kanal üzerinden almak istediğinizi belirliyorsunuz. Örneğin ben burada Slack seçtim fakat Slack henüz ayarlı olmadığı için bu şekilde görünüyor. Buradaki ayarlamaları bitirdikten sonra Save Rule and Configure this Alert Handler’a tıklayarak Slack ayarını yapacağımız ekrana gideceğiz.
Alt kısımda gördüğünüz mesaj ise gelen bildirimi nasıl görmek istediğinizi ayarlayabildiğiniz kısım. Örneğin aşağıdaki örnekteki ayar şu şekilde gözüküyor. Bunu istediğiniz gibi ayarlayabilirsiniz. Bu konuda daha detaylı bilgi için linke tıklayabilirsiniz.
(sunucu-adı) ram usage is CRITICAL Value: %85.00785334929922
(sunucu-adı) ram usage is OK Value: %84.99465992313701
Buradaki ayarlar bittikten sonra Save Rule and Configure this Alert Handler’a tıklıyoruz ve Slack ayarlarını yapıyoruz.
Save changes dedikten sonra bildirimler Slack’e düşmeye başlıyor. İsterseniz Send Test Alert butonuna tıklayarak bu ayarı test edebilirsiniz.
Chronograf’a Güvenli Giriş için Github Entegrasyonu
Chronograf dışarıya açık olmasın ve kullanıcı bilgileriyle giriş yapalım istiyorsanız bunun için pek çok farklı yöntem var. Bu yöntemlerle ilgili detaylı bilgiye linkten ulaşabilirsiniz. Biz Chronograf’a erişmek için Github auth tercih ettik.
Öncelikle uygulama için bir token secret üretmemiz gerekiyor. Bunu openssl kullanarak aşağıdaki komutla yapabiliriz:
openssl rand -base64 256 | tr -d '\n'
Daha sonra linkten Github üzerinde yeni bir OAuth uygulaması oluşturuyoruz. Burada Homepage URL’e Chronograf url’ini veriyoruz. Authorization Callback URL’e de “Chronograf url’i+/oauth/github/callback” yazıyoruz.
Bu adımı da tamamlayınca Github bize bir Client ID bir de Client Secret veriyor. Bununla birlikte optional olarak buraya bir Github organizasyonu da tanımlayabilirsiniz. Chronograf’ın service dosyasına bu bilgileri değişken olarak tanımlamamız gerekiyor:
Environment="TOKEN_SECRET=tokenSecret"
Environment="GH_CLIENT_ID=githubClientId"
Environment="GH_CLIENT_SECRET=githubClientSecret"
Environment="GH_ORGS=githubOrganization"
Dosyayı kaydettikten sonra aşağıdaki komutu çalıştırıp service dosyasının yeni halinin aktif hale gelmesini sağlıyoruz:
sudo systemctl daemon-reload
Ardından chronograf’ı yeniden başlatıyoruz:
sudo systemctl restart chronograf
Bir sonraki sefer chronograf’a giriş yaptığımızda github giriş bilgileri sayfasına yönlendiriyor ve bu bilgilerimizle giriş yapabiliyoruz.