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

Debian 7.8 üzerine Icınga 2 Kurulumu

Icınga bildiğiniz üzere open source bir monitoring uygulaması , kurulumu için sıfır bir debian 7.8 hazırladım ve debian kurulumu esnasındaki seçeneklerde sadece ssh ve standart sistem araçlarını dahil ettim.

İlk olarak ssh tan erişelim ve icinga nın paket reposunu, debian ın paket konfigürasyonuna ekleyelim ve böylelikle sistem indireceği adresi biliyor olsun.Sonrasında repoları güncelliyor olacağız.

root@ayhanarda-icinga2:~# wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -
OK
root@ayhanarda-icinga2:~# echo 'deb http://debmon.org/debmon debmon-wheezy main' >/etc/apt/sources.list.d/debmon.list
root@ayhanarda-icinga2:~# apt-get update
... Done
root@ayhanarda-icinga2:~#

Şimdi Icinga 2 yi kurabiliriz.

root@ayhanarda-icinga2:~# apt-get install icinga2

Mysql Kurup DB IDO aktif edelim.Komut; mysql için tanımlamak istediğiniz şifre vs gibi bilgiler soracak , yönergeleri takip edin.

root@ayhanarda-icinga2:~# apt-get install mysql-server mysql-client icinga2-ido-mysql
root@ayhanarda-icinga2:~# icinga2 feature enable ido-mysql
Enabling feature ido-mysql. Make sure to restart Icinga 2 for these changes to take effect.
root@ayhanarda-icinga2:~# service icinga2 restart

 

Apache , php ve diğer gereksinimleri kuralım , icinga web 2 yi git üzerinden indireceğiz , bu yüzden git te kuracağız.Sonrasında rewrite modul ünü aktif edelim.

root@ayhanarda-icinga2:~# apt-get install apache2 git php5 php-pear php5-mysql php5-ldap php5-intl php5-gd php5-imagick php5-pgsql
root@ayhanarda-icinga2:~# a2enmod rewrite
root@ayhanarda-icinga2:~# service apache2 restart

Timezone u ayarlayalım.

Nano ve ya sevdiğiniz bir editör ile aşağıdaki dosyayı açınız ve ;date.timezone = ile başlayan satırı bulup date.timezone = “Europe/Istanbul” şeklinde değiştirip kaydediniz ve apache yi yeniden başlatınız.

root@ayhanarda-icinga2:~# nano /etc/php5/apache2/php.ini
;date.timezone =
date.timezone = "Europe/Istanbul"
root@ayhanarda-icinga2:~# service apache2 restart

 

Icınga web 2 yi git ten indirip taşıyalım.

root@ayhanarda-icinga2:~# git clone git://git.icinga.org/icingaweb2.git
root@ayhanarda-icinga2:~# mv icingaweb2 /usr/share/icingaweb2
root@ayhanarda-icinga2:~# cd /usr/share/icingaweb2

 

Icingacli ile web server konfigürasyonunu icingaweb2 için regenerate edelim ve erişim haklarını tanımlayalım.

root@ayhanarda-icinga2:/usr/share/icingaweb2# ./bin/icingacli setup config webserver apache
root@ayhanarda-icinga2:/usr/share/icingaweb2# addgroup --system icingaweb2
root@ayhanarda-icinga2:/usr/share/icingaweb2# usermod -a -G icingaweb2 www-data

 

Şimdi icinga nın config dizinini oluşturup kurulumda kullanacağımız token ı oluşturalım.

root@ayhanarda-icinga2:/usr/share/icingaweb2# ./bin/icingacli setup config directory
Successfully created configuration directory /etc/icingaweb2
root@ayhanarda-icinga2:/usr/share/icingaweb2# ./bin/icingacli setup token create
The newly generated setup token is: 3a70b2180db86ad0
root@ayhanarda-icinga2:/usr/share/icingaweb2# ./bin/icingacli setup token show
The current setup token is: 3a70b2180db86ad0 ---Bu numarayı kurulumu web arayüzünden tamamlarken kullanacağız.

 

Şimdi icinga için apache default sitesinin config ini düzenleyelim , aşağıdaki dosyayı nano ile açınız ve içini boşaltıp aşağıdakileri yazıp kaydediniz ve apacye yi yeniden başlatınız.

root@ayhanarda-icinga2:/usr/share/icingaweb2# nano /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
Alias /icingaweb2 "/usr/share/icingaweb2/public"
 
<Directory "/usr/share/icingaweb2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None
 
    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAll>
            Require all granted
        </RequireAll>
    </IfModule>
 
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order allow,deny
        Allow from all
    </IfModule>
 
    SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"
 
    EnableSendfile Off
 
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /icingaweb2/
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]
    </IfModule>
 
    <IfModule !mod_rewrite.c>
        DirectoryIndex error_norewrite.html
        ErrorDocument 404 /error_norewrite.html
    </IfModule>
</Directory>
</VirtualHost>

 

root@ayhanarda-icinga2:/usr/share/icingaweb2# service apache2 restart

Aslında şu anda ip adresimiz/icingaweb2 yazarak icinga2 web arayüzüne erişebilirsiniz fakat işimiz henüz bitmedi , veritabanlarını bir kontrol edelim. SSH tan mysql e aşağıdaki komut ile bağlanıyoruz ve sonrasında mysql kurarken belirlediğiniz şifreyi girmeniz istenecek.

root@ayhanarda-icinga2:/usr/share/icingaweb2# mysql -u root -p

Şimdi mevcut veritabanlarını kontrol edelim.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| icinga2idomysql    |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
 
mysql>

Icinga isminde bir veritabanı oluşturalım ve erişim haklarını tanımlayalım.

mysql> CREATE DATABASE icinga;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga';
Query OK, 0 rows affected (0.00 sec)
 
mysql>

Şimdi icinga mysql şemasını icinga database ine sorgu olarak gönderelim.

root@ayhanarda-icinga2:/usr/share/icingaweb2# mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Şimdi web arayüzü kurulumunuza ilerleyebilirsiniz, hepsi bu kadar.

http://ipadresi/icingaweb2/

icinga-installation-ayhanardaAyrıca detaylı kullanım bilgisi için Icinga Network Monitoring kitabını incelemenizi öneririm.

Saygılarımla

Ayhan ARDA