Splunk ile RaspBerry Pi’ı İzlemek

31.05.2021

Fahrettin Çanlı

blog yazımızda Splunk kurulumunu yapmıştık bu yazımızda ise birkaç basit adımda raspberry pi mini bilgisayarı Splunk ile nasıl izleyebileceğimizi göreceğiz. 

raspberry

Bildiğiniz gibi Splunk ile sunuculardan IOT sensörlerine, uygulamalardan network ekipmanlarına kadar pek çok donanım ve yazılımı izleyebiliyoruz. Önceki blog yazımızda Splunk kurulumunu yapmıştık bu yazımızda ise birkaç basit adımda raspberry pi mini bilgisayarı Splunk ile nasıl izleyebileceğimizi göreceğiz. 

Splunk server tarafındaki ayarlar:

Öncelikle Splunk sunucumuz üzerindeki receiver ayarını yapıyoruz. Bizim ortamımızda tek bir sunucu var ve “indexer”, “search head” gibi bütün roller aynı sunucu üzerinde. Bu ayar daha büyük yapılarda indexer’lar üzerinde yapılıyor. 


 

                                                                                 

 

 

 

 

Settings -> Forwarding and receiving’e tıklıyoruz. Receive data altındaki “+ Add new” butonuna basıyoruz.

Port kutucuğuna “9997” yazarak kaydediyoruz.

Sunucu tarafındaki yapacağımız ayarlar bu kadar. 
Raspberry pi tarafındaki ayarlarla devam edelim. 

Splunk Forwarder’ın RaspBerry pi üzerine kurulması:

Raspberry modeline uygun forwarder’ı splunk.com’dan indirebilirsiniz ( https://www.splunk.com/en_us/download/universal-forwarder.html ). İşlemci modelini aşağıdaki komutu kullanarak öğrenebilirsiniz.

$cat /proc/cpuinfo | grep model | head -1

Bendeki model ARMv7, uygun olan forwarder’ı indirip raspberry pi üzerine kopyalayalım. Aradığınız versiyon “Older Releases” kısmında olabilir, bu yazı yazıldığı tarihte güncel versiyon ARMv8 için yayınlanmıştı ben aradığım uyumlu versiyonu “Older Releases” altında buldum. Kurulum adımları oldukça basit ben şu dokümandan faydalandım.

Kurulum adımları oldukça basit ben şu dokümandan faydalandım: 

https://docs.splunk.com/Documentation/Forwarder/8.1.3/Forwarder/Installanixuniversalforwarder#Install_the_universal_forwarder_on_Linux

Aktarılacak bilgilerin belirlenmesi ve Splunk Forwarder’ın ayarlanması

İlk önce raspberry pi cihazımından bilgileri alabilmek için kullanacağımız scripti 
/opt/splunkforwarder/bin/scripts/ dizini altına kaydediyoruz. Bu scripti daha önce Brian Gilmore’un bloğunda yayınladığı versiyonunu biraz geliştirerek elde ettim.

#! /bin/bash
for i in {1..12}
do
TIME=$(date +"%D %T.%3N %Z")
CPU_TEMP=`vcgencmd measure_temp | cut -d \' -f 1`
VOLTS=`vcgencmd measure_volts | cut -d V -f 1`
FREE_MEM_KB=$(cat /proc/meminfo | grep MemFree | cut -d " " -f 11)
SWAP_USED=$(cat /proc/meminfo | grep SwapCached | cut -d " " -f 13)
echo "time=$TIME|$VOLTS|$CPU_TEMP|free_mem_kb=$FREE_MEM_KB|swap_used_kb=$SWAP_USED"
sleep 5
done

Yukarıdaki script çalıştığında her 5 saniyede bir ekrana zaman, voltaj bilgisi, sıcaklık değeri gibi değişkenleri yazacak. Biz de splunk formarder’a dakikada bir bu scripti çalıştırmasını ve sonuçlarını Splunk server’a göndermesini sağlayan ayarları yapacağız.

Scriptin örnek çıktısını aşağıda görebilirsiniz:


Gördüğünüz gibi bu script sonuçları direk olarak ekrana basıyor yani bu çıktıları herhangi bir dosyaya kaydetmiyoruz. Splunk Forwarder, bizim için ekran çıktılarını takip edip otomatik olarak bu çıktıları splunk server’a gönderecek. 

İstersek çıktıları bir dosyaya yönlendirip forwarder’ın o dosyayı monitör etmesini de sağlayabilirsiniz, tabi bunu yaptığınızda dosyayı rotate etmeyi unutmayın yoksa belli bir süre sonra sunucunun diski dolabilir. 

inputs.conf ve outputs.conf dosyalarını düzenleyerek konfigürasyonumuzu tamamlayalım. 

İnputs.conf dosyası, hangi bilgileri toplayacağımızı belirtiyor, outputs.conf ise topladığımız bilgileri hangi indexer’a göndereceğimizi belirtiyor.

/opt/splunkforwarder/etc/system/local/dizini altında inputs.conf dosyasını oluşturup içine aşağıdaki satırları yapıştırıyoruz
 

[default]
host = raspberrypi

[script:///opt/splunkforwarder/bin/scripts/collect-metrics.sh]
index = default
interval = 60
source = rasp_collect_script
sourcetype = pi_system_details

 

Host: bu sunucudan gelen verilerin splunk serverda hangi isimde görüneceği. Kaynak ismi veya hostname gibi düşünebilirsiniz.
Script: hangi dosyanın çalıştırılacağı
İndex : çıktıların hangi index içinde saklanacağı
İnterval : saniye cinsinden scriptin ne sıklıkla çalıştırılacağı scriptin içinde her beş saniyede bir çalışması için ayar yapmıştık ve script toplam 12 kez çalışıyordu buraya 60 saniye diyerek scriptin hiç durmadan her 5 saniyede bir veri toplamasını sağlamış olduk her saniye çalışmasını isterseniz for ve sleep satırlarını aşağıdaki gibi değiştirebilirsiniz.

#! /bin/bash
for i in {1..59}
do
…………
…………
…………
sleep 1
done

Aynı şekilde / opt/splunkforwarder/etc/system/local/dizini altında outputs.conf dosyasını oluşturuyoruz, dilerseniz bu dosyaları /opt/splunkforwarder/etc/system/default/dizininden kopyalayabilirsiniz. 

Outputs dosyasının içeriği de aşağıdaki gibi olmalı:

[tcpout]
defaultGroup=my_indexers
[tcpout:my_indexers]
server=xxx.xxx.xxx.xxx:9997

 

Burada xxx yazan kısma splunk sunucusunun ip adresi gelecek.
Bu ayarları yaptıktan sonra splunk forwarder servisini restart edip sonuçları splunk server üzerinden inceleyebiliriz.

Gördüğünüz gibi splunk gönderdiğim alanları otomatik olarak ayıkladı artık istediğimiz dashboarları oluşturabilir, belirli değerler için alarmlar tanımlayabiliriz. Bundan sonrası bizim ihtiyaçlarımıza ve hayal gücümüze kalıyor. Örneğimizde raspberry için kurulum yaptık ancak benzer şekilde herhangi bir Linux sunucuyu da takip edebiliriz.
Not: Burada anlatılan yöntemler en doğru veya olması gereken yöntemler değildir, neler yapılabileceği hakkında fikir verebilmesi için hızlı olan metotları tercih ederek kurulumları tamamladım. 

Kaynakça:

https://www.splunk.com/en_us/blog/industries/how-to-splunk-data-from-a-raspberry-pi-three-easy-steps.html 
https://docs.splunk.com/