14 Temmuz 2016 Perşembe

ELK Stack Kurulumu

  ELK Stack Elasticsearch, Logstash ve Kibana oluşmaktadır. Bunlar log analizinde en sık kullanılan üç farklı özgür yazılım ürünüdür. ELK stack, blazing-fast analizler büyüdükçe büyük verilerdeki analizi ve hızlı aramayı kolaylaştırır.

  Logstash toplama ayrıştırma ve ileride kullanılmak üzere logları depolamak için açık kaynak kodlu bir araçtır. Kibana arama ve Logstash endeksli olan logları görüntülemek için kullanılabilecek bir web arayüzü. Elasticsearch bu araçların  indeksli log depolaması için kullanılır.
  
  Kurulum yaparken filebeat ve nginx kurulumunu da yapıcaz. Filebeat verileri nakletmek için kullanılan bir platformdur. Log dosyalarında gerçek zamanlı analiz sağlar. Nginx aslen mail.ru isimli rus mail sunucusu sitesi için geliştirilen hafif, stabil, hızlı bir mail istemcisi olarak kodlanan daha sonraları geliştirilerek tüm sunucular için uygun hale getirilen bir web sunucusudur.

 GEREKLİLİKLER

 CPU, RAM ve ELK sunucu için depolama miktarı, toplamak istediğiniz log hacmine bağlıdır.

 JAVA KURULUMU 

 Depoya java 8 yüklüyoruz. Bunun nedeni Elasticsearh'un bunu tavsiye etmesi:

$ sudo add-apt-repository -y ppa:webupd8team/java

Depoyu güncelliyoruz:

$ sudo apt-get update

Yüklüyoruz(Yükleme yaparken lisans sözleşmesi için bir ekran çıkacaktır.):

$ sudo apt-get -y install oracle-java8-installer
  
 ELASTİCSEARCH KURULUMU

 Elasticsearch Elastik paket kaynak listesini ekleyerek bir paket yöneticisi ile kurulabilir:

$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Elasticsearch kaynak listesi oluşturma:
 

$ echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list 
Veritabanını güncellemek:

$ sudo apt-get update

 

Yüklemek:

$ sudo apt-get -y install elasticsearch

Elasticsearch dışardan erişimi kısıtlamak istiyoruz. Yapılandırma dosyasındaki network.host kısmını değiştiriyoruz. Böylece http apı üzerinden gelen veri okuyamaz:
 
 
$ sudo vi /etc/elasticsearch/elasticsearch.yml
 

   network.host: localhost 
  
Elasticsearch yeniden başlat:
 

$ sudo service elasticsearch restart
 

Bilgisayar açılırken çalışması için init in altında bilgisayar açılırken ve kapanırken çalışacak olan rc.x dosyalarına ekliyoruz:
 

$ sudo update-rc.d elasticsearch defaults 95 10

Çalışıp çalışmadıgını test etmek için aşağıdaki komutu kullanabilirsiniz. Çıktısı da bu çıktıya benzer olmalıdır:
 *Elasticsearch varsayılan port olarak 9200 kullanır. 
 
















KİBANA KURULUMU

  Elasticsearch paket kaynak listesini eklediğimiz için bir paket yöneticisi ile kurulum yapabiliyoruz:

$ echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list
 

Paket database güncellemek:
 

$ sudo apt-get update 
Yükleme:
 

$ sudo apt-get -y install kibana
 

Kibana Yapılandırması
 

$ sudo vi /opt/kibana/config/kibana.yml
  

  server.host: "localhost" 

Bilgisayar açılırken çalışması için:

$ sudo update-rc.d kibana defaults 96 9

Kibanayı başlat:

$ sudo service kibana start


NGINX KURULUMU

Eğer zaten kullanmak istediğiniz bir Nginx örneği varsa, bunun yerine kullanabilirsiniz.

Yüklemek :
 

$ sudo apt-get install nginx apache2-utils
 

Kullanıcı oluşturmak için(Kibaadmin yerine başka bir kullanıcı adı kullanmalısınız sizden yeni parola isteyecek bunu girmelisiniz.):
 

$ sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin
 

Nignx Yapılandırma 

Yapılandırma dosyasının içeriğini silip asağıdaki server blogunu ekleyiniz. serve_name sizin serverınızla eşleşmelidir:

$ sudo vi /etc/nginx/sites-available/default

    server {
        listen 80;

        server_name example.com;

        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd.users;

        location / {
            proxy_pass http://localhost:5601;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;       
        }
    }
Nginx arka uç istemciden sunucuya upgrade isteği göndermek için, upgrade ve connection başlıkları açıkça ayarlanmalıdır:
Varsayılan olarak, Nginx vekalet istekleri, "Host" ve "Bağlantı" iki başlık alanları tanımlıyor. "HOST" $ proxy_host değişkeni ayarlanır. 5601: Bu localhost da dinlediğini Kibana uygulamasına, sunucunuzun HTTP trafiği yönlendirmek için Nginx yapılandırır. Ayrıca, Nginx Daha önce yarattığı, htpasswd.users dosyasını kullanır ve temel kimlik doğrulaması gerektirir.


Yapılandırmayı değiştirdikten sonra tekrar başlatıyoruz:

$ sudo service nginx restart

LOGSTASH KURULUMU

Logstash paketi Elasticsearch aynı deposundan mevcuttur bu yüzden Logstash kaynak listesini oluşturmaya izin vardır:

$ echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list
 

Güncelleme:
 

$ sudo apt-get update
 

Yükleme:
 

$ sudo apt-get install logstash 

Logtash Yapılandırması

Logstash yapılandırma dosyaları JSON biçiminde ve /etc/logstash/conf.d dizininin altında bulunmaktadır. Girişler, filtreler ve çıkışlar olarak yapılandırma üç bölümden oluşmaktadır.
/etc nin altında dizini ve dosyaları oluşturun:
 

$ sudo vi /etc/logstash/conf.d/02-beats-input.conf
 
 
//Logstash'ın girdi olarak 5044.portu kullanması için yapılandırıyoruz.

    input {
      beats {
        port => 5044
        }
    }
 

$ sudo vi /etc/logstash/conf.d/10-syslog-filter.conf
   

 filter {
      if [type] == "syslog" {
        grok {
          match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
          add_field => [ "received_at", "%{@timestamp}" ]
          add_field => [ "received_from", "%{host}" ]
        }
        syslog_pri { }
        date {
          match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
        }
      }
    }


Kaydet ve çık. Bu filtre "syslog" tipi olarak etiketlenmiş logları arar.
 

$ sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        sniffing => true
        manage_template => false
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
      }
    }

Eğer Filebeat girişini kullanan diğer uygulamalar için filtreler eklemek istiyorsanız, dosyaları isimlerinden emin olun. 

Yapılandırmaları test edip tekrar başlatıyoruz ve bilgisayar açılırken çalışması için rc.x dosyalarına ekliyoruz:

$ sudo service logstash configtest
 

$ sudo service logstash restart

$ sudo update-rc.d logstash defaults 96 9


KİBANA DASHBOARDS YÜKLEME

ilk olarak, örnek dashboards arşivini home dizinine yüklüyoruz:


$ cd ~
$ curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip
 

Kurulu değilse unzip kuruyoruz:
 

$ sudo apt-get -y install unzip 
Arşivi açıyoruz:
 

$ unzip beats-dashboards-*.zip
 

Ve örnek dashboards yüklüyoruz:

$ cd beats-dashboards-*
$ ./load.sh

ELASTICSEARCH için FILEBEAT INDEX TEMPLATE YUKLEME
 

 Indek şablon elasticsearch yapılandırır. Filebeat dosyalarını akıllıca analiz edilmiş yollarlar.
 

Ev dizinine filebeat index templatelerini yüklüyoruz:

$ curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
 

Şablonun doğru yerleştirilip yerleştirilmediğini görmek için :

$ curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json


Bu komutun çıktısı olmalıdır:
{
  "acknowledged" : true
}


FILEBEAT PAKET YUKLEMESİ

$ echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list
 

$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
 

$ sudo apt-get update

$ sudo apt-get install filebeat

Filebeat Yapılandırması

Elk ile bağlanmak için filebeat yapılandırmalıyız. Yapılandırma dosyası yapısında girinti önemlidir.
 
$ sudo vim /etc/filebeat/filebeat.yml

filebeat:
  prospectors:
    -
      paths:
        - /var/log/auth.log
      input_type: log
      document_type: syslog
    -  

      paths:
        - /var/log/syslog
      input_type: log
      document_type: syslog


output:
  logstash:
    hosts: ["localhost:5044"]
shipper:
logging:

  files:
    rotateeverybytes: 10485760 # = 10MB
 

*Logstash'e istediğimiz log dosyalarının yollarını prospectors blogu arasına yazıyoruz. Log dosyaları için ayrı ayrı path blogu tanımlıyoruz ve  "-" işareti ile ayırıyoruz.

$ sudo service filebeat restart


$ sudo update-rc.d filebeat defaults 95 10

Filebeat yüklenip yüklenmediğini test etmek için:

$ curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Benzer bir çıktı almalısınız:

...
{
      "_index" : "filebeat-2016.07.11",
      "_type" : "syslog",
      "_id" : "AVXkMGSe3m72K1jJCk9Q",
      "_score" : 1.0,
      "_source" : {
        "message" : "Jul 11 11:17:02 kripton-Aspire-E1-531 ..
.

}
... 


Kibanaya bağlanabilirsiniz artık. 

  Eğer ELK  ile Filebeat farklı sunucularda ise ssl certifakası kullanmalısınız. Sertifika ELK server kimliği dogrulamak için Filebeat tarafından kulanılır. Daha sonra da Logstash (02-beats-input.conf dosyasında beat blogunun içine ) ve Filebeat (tls: -certificate_authorities:["PATH"]) yapılandırmasında uygun yerlere sertifika bilgilerin eklemelisiniz.

Hiç yorum yok:

Yorum Gönder