logstash forwarder log gönderme

Cpaneldeki Sitelerin Access Loglarını Logstash-Forwarder ile ElkStack ta Logstash Server a Gönderme

Daha önceki yazılarımızda bir elkstack server kurmuştuk ancak henüz farklı bir serverdan log göndermemiştik , şimdi örnek olarak elimizde bir cpanel sunucu olduğunu ve içinde yüzlerce site olduğunu varsayalım , cpaneldeki sitelerin erişim logları bilindiği üzere /usr/local/apache/domlogs/ altında yer almaktadır , her bir site için bu yolda birer klasör ve içinde sitelerin logları yer almaktadır.

Şimdi elkstack serverın adı elkstack.ayhanarda.com olsun , ip adresi 192.168.1.1 olduğunu varsayalım , cpanel sunucu adı ise cpanel.ayhanarda.com , ip adresi de 192.168.1.2 olsun.

Eğer bu isimler için bir dns serverda kaydımız yok ise cpanel sunucuda aşağıdaki dosyaya elkstack serverın ip ve hostname ini girelim ki aramak ile vakit kaybetmesin. /etc/hosts dosyasını açıp aşağıdaki kaydı girelim , tabi hostname ve ip adresi Sizin yapınıza göre olmalı.

root@cpanel.ayhanarda.com [~]# nano /etc/hosts
192.168.1.1           elkstack.ayhanarda.com

Şimdi centos repo suna logstash forwarder için kayıt ekleyelim.

rpm –import http://packages.elasticsearch.org/GPG-KEY-elasticsearch

cat >> /etc/yum.repos.d/logstash-forwarder.repo << REPO
[logstash-forwarder]
name=logstash-forwarder repository
baseurl=http://packages.elasticsearch.org/logstashforwarder/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
REPO

Artık logstash-forwarder kurmaya hazırız.

yum -y install logstash-forwarder

Elkstack serverda oluşturduğumuz sertifikayı aşağıdaki dosyanın içine girip kaydedelim , bu dosya yok ise oluşturalım.

nano /etc/pki/tls/certs/logstash-forwarder.crt

—–BEGIN CERTIFICATE—–
MIIDDTCCAfWgAwIBAgIJANcKD2AfHuraMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNV
BAMMEmVsa3N0YWNrLm5hdHJvLmNvbTAeFw0xNTEwMjcxMTI4NTFaFw0yNTEwMjQx



—–END CERTIFICATE—–

Şimdi logstash-forwarder ın conf dosyasını oluşturalım.

nano /etc/logstash-forwarder.conf

{
  “network”: {
“servers”: [ “elkstack.ayhanarda.com:5001” ],
“timeout”: 15,
“ssl ca”: “/etc/pki/tls/certs/logstash-forwarder.crt
  },

“files”: [
{
      “paths”: [
        “/usr/local/apache/domlogs/*/*
       ],
      “fields”: { “type”: “apache-access” }
    }
]
}

Yukarıdaki dosyada dikkat ederseniz 4 farklı ve önemli bölümü işaretledim , birincisi logları nereye ve hangi porta ileteceğimiz , ikincisi bir önceki adımda hazırladığımız ssl dosyasının yolu , üçüncüsü cpanel sunucudaki hangi logları göndereceğimiz , dördüncüsü ise bu logların çeşidi.

Şimdi logstash forwarder ı başlatalım ve aynı zamanda sunucunun bir sonraki açılışında otomatik olarak çalışmasını sağlayalım.

service logstash-forwarder restart && chkconfig logstash-forwarder on

Conf dosyamızda 5001 nolu porta göndereceğimizi belirtmiştik , o halde cpanel server üzerinde bir firewall kullanıyor isek dışarıya doğru bu portu aktif etmeliyiz , ben cpanel sunucularda csf kullanmaya özen gösteriyorum , aşağıdaki dosyasyı açıp tcp_out ve udp_out bölümlerine 5001 nolu portu ekliyorum. Buradaki 5001 portu elkstack serverınız ile ilgili bir durum , yani orada kullanmayı seçtiğiniz porttur , Sizin elkstack ya da logstash server da bu farklı olabilir.

root@cpanel.ayhanarda.com [/usr/local/apache/logs]# cat /etc/csf/csf.conf | grep TCP_OUT
TCP_OUT = “20,21,25,37,43,53,80,110,113,443,587,993,995,2086,2087,2089,2703,3306,4443,5001,6343,30000:35000,65000:65535″
root@cpanel.ayhanarda.com [/usr/local/apache/logs]# cat /etc/csf/csf.conf | grep UDP_OUT
UDP_OUT = “53,113,123,873,5001,6277,6343″

sonrasında csf -r komutu ile csf yi restart edelim. Eğer csf kullanmıyor iseniz iptables üzerinden direkt olarak ta açabilirsiniz.

Şimdi eğer elkstack bu portu dinliyor , cpanel de log gönderiyor ise bunu aşağıdaki dosyayı izleyerek görebilirsiniz

tail -f /var/log/logstash-forwarder/logstash-forwarder.err

2015/11/03 06:57:38.745365 Setting trusted CA from file: /etc/pki/tls/certs/logstash-forwarder.crt
2015/11/03 06:57:38.745939 Connecting to [192.168.1.1]:5001 (elkstack.ayhanarda.com)
2015/11/03 06:57:38.838187 Connected to 192.168.1.1

Hepsi bu kadar , iyi çalışmalar..

Ayhan ARDA

Docker ile ELKStack Kurulumu

Elkstack ; ElasticSearch, Logstash ve Kibana isimli 3 açık kaynak yazılımın birleşimine verilen isimdir.

Neden Docker ile kurulum derseniz adı geçen tüm bileşenleri tek tek kurmak yerine tek seferde kurmak daha cazip gözüküyor , elimizde yeni kurulmuş bir ubuntu 14 olduğunu ve ssh tan eriştiğimizi varsayalım , muhtemelen curl kurulu gelmeyecek , öncelikle kuralım.

root@ayhanarda:/# apt-get install curl

root@ayhanarda:/# curl -sSL https://get.docker.com/ubuntu/ | sudo sh

Şimdi pip ile Docker Compose kuralım.

root@ayhanarda:/# apt-get install python-pip

root@ayhanarda:/# pip install -U docker-compose

Şimdi docker-compose dosyamıza çalışma izni verelim.

root@ayhanarda:/# chmod +x /usr/local/bin/docker-compose

Şimdi kurulumun buraya kadar doğru olup olmadığını doğrulayalım.

root@ayhanarda:/# docker-compose –version
docker-compose version: 1.4.0

Eğer her şey doğru ise devam edebiliriz.

Docker-elk nın git repository sini çekelim.

root@ubuntu:/# git clone https://github.com/deviantony/docker-elk.git

Şimdi docker-elk dizinine gidip konteyner ı çekip ayağa kaldıralım.

root@ayhanarda:/# cd /docker-elk/
root@ayhanarda:/docker-elk# docker-compose up

Herşey bu kadar , şimdi biraz  beklemeliyiz. Muhtemelen 5 dk sonra aşağıdaki gibi satırlar gördüğünüzde işlem tamamlanmış demektir.

logstash_1 | INFO: [logstash-7f6fc37469c8-1-11622] started
kibana_1 | Starting Kibana
elasticsearch_1 | [2015-08-27 12:06:50,176][DEBUG][action.admin.cluster.health] [Proteus] observer: timeout notification from cluster service. timeout setting [5s], time since start [5s]
kibana_1 | {“name”:”Kibana”,”hostname”:”266bfe27abff”,”pid”:7,”level”:30,”msg”:”No existing kibana index found”,”time”:”2015-08-27T12:06:50.183Z”,”v”:0}
kibana_1 | {“name”:”Kibana”,”hostname”:”266bfe27abff”,”pid”:7,”level”:30,”msg”:”Listening on 0.0.0.0:5601″,”time”:”2015-08-27T12:06:50.364Z”,”v”:0}

Şimdi browserdan ipadresi:5601 adresine erişirsek bizi aşağıdaki Kibana arayüzü karşılayacak. Benim ip adresim 192.168.126.155 şeklinde idi.

http://192.168.126.155:5601/

elkstack1

 

Eğer cluster ı monitor etmek isterseniz aşağıdaki url ye gidebilirsiniz.

http://ipadresi:9200/_plugin/marvel/

marvelŞimdi tek yapılması gereken bu ip adresinin 5000 nolu portuna logstash forwarder ile log göndermek , güzelce işlenip grafiksel olarak Size sunuculacaktır.

Mesela ben bir sitenin access loglarını test için bir dosyaya kaydedip netcat ile sunucuya aşağıdaki komut ile bastım , kibana daki görüntüsü aşağıdaki gibi yansıdı , filtreler ile tam istediğiniz logları alabilir ve grafikler de oluşturabilirsiniz.

root@ayhanarda:/# nc localhost 5000 < /home/arda/look2linux.log

Şimdi tekrar kibana ekranına bakabilirsiniz, loglar gelmiş durumda.

elkstack2

Faydalı olması dileğimle.

Ayhan ARDA