Ubuntu Sunucuyu TICK Stack ile Monitor Etme

elifcan cakmak
May 8 · 5 min read
Image for post
Image for post

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

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.

Image for post
Image for post

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

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
Image for post
Image for post

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

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:

Image for post
Image for post

Chronograf

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:

Image for post
Image for post

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.

Image for post
Image for post

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:

Image for post
Image for post

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:

Image for post
Image for post

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.

Image for post
Image for post

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
Image for post
Image for post

Buradaki ayarlar bittikten sonra Save Rule and Configure this Alert Handler’a tıklıyoruz ve Slack ayarlarını yapıyoruz.

Image for post
Image for post

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

Ö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.

Image for post
Image for post

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"
Image for post
Image for post

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.

Kod Gemisi

Kod Gemisi

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store