Public Repository

Last pushed: 3 months ago
Short Description
sebp/elk üzerine inşa edilmiş Logging Projesi(ELK Stack)
Full Description

Logging Projesi(ELK Stack)

Gereksinimler

ÖNEMLİ: Windows işletim sistemi için Docker Windows 10 Professional veya Enterprise 64-bit gerektirir. Önceki sürümler için Docker Toolbox kurulumunu indiriniz ve kurunuz.

ÖNEMLİ: Elasticsearch çalışmak için en az 3GB RAM'e ihtiyaç duyar.

  • Windows 10'da Docker Ayarlarında Advanced altından Memory değeri en az 3GB yapılır.

  • Windows 7'de veya Linux'ta uygulamayı ayağa kaldırma aşamasında yetersiz bellek hatası alınması durumunda takip eden adımlar uygulanır.
    Hata Mesajı : bootstrap checks failed max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    -- Windows için komut ekranında

    docker-machine ssh default
    
    sudo sysctl -w vm.max_map_count=262144
    

    komutları çalıştırılır veya sanal makinada /var/lib/boot2docker/profile dosyasına

    # Update the vm.max_map_count setting
    sysctl -w vm.max_map_count=262144
    

    satırları eklenir.

    -- Linux için komut ekranında

    sysctl -w vm.max_map_count=262144
    

    komutu çalıştırılır veya /etc/sysctl.conf dosyasına

    # Update the vm.max_map_count setting
    vm.max_map_count=262144
    

    satırları eklenir.

Kurulum

docker

Proje imajını bilgisayarınıza indiriniz

docker pull tpedocker/logging

Aşağıdaki komutu vererek uygulamayı ayağa kaldırınız:

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -dit --name elk tpedocker/logging

Uygulama loglarını bir volume altında tutmak ve sonrasında ulaşmak için aşağıdaki komutu vererek uygulamayı ayağa kaldırınız::

docker run \
-p 5601:5601 -p 9200:9200 -p 5044:5044 \
-v elk-data:/var/lib/elasticsearch \
-dit \
--name elk tpedocker/logging

Kullanım

ELK Stack standart portları:

  • 5044: Logstash Beats Arayüzü
  • 9200: Elasticsearch JSON Arayüzü
  • 5601: Kibana Web Arayüzü

Kibana arayüzünü http://DOCKER_MACHINE_IP:5601 adresinden görüntüleyebilirsiniz.

Elasticsearch JSON arayüzünü http://DOCKER_MACHINE_IP:9200 adresinden görüntüleyebilirsiniz.

Veri Gönderimi

ELK Stack ile loglarınızı takip edebilir, sunucularınızdan veri toplama yoluyla sistemlerinizi izleyebilirsiniz.
Log dosyalarınızı göndermek için Filebeat, sisteminizi takip etmek için Metricbeat kullanabilirsiniz.

Genel Bilgiler

Elasticsearch tarafından indekslenmiş verilere http://DOCKER_MACHINE_IP:9200/_search?pretty
adresinden ulaşabilirsiniz.

ÖNEMLİ: Kibana'da bir indeks oluşturabilmek için öncelikle Logstash'e veri göndermeniz gerekmektedir.
Örneğin Filebeat ile veriyi gönderdikten sonra Kibana arayüzünde indeks adı kısmına logstash-* yerine filebeat-* yazarak güncelleyiniz.
İndeks oluşturulmaya hazır olduğunda alt kısımda Create butonu oluşacaktır. Create butonuna tıklayarak indeksi oluşturabilirsiniz.

ÖNEMLİ: YML(YAML) dosyalarında kod hizalama için 2 veya 4 birim boşluk kullanılır, bu sebeple tab kullanmayınız.

Filebeat ile logların gönderimi

Filebeat uygulamasını filebeat kurulum adresinden indiriniz ve adımları takip ederek kurunuz.
Windows için Filebeat kurulum dizininde ve Linux için /etc/filebeat dizini altında bulunan filebeat.yml dosyasını aşağıdaki gibi düzenleyiniz.

filebeat:
  prospectors:
    - input_type: log
      document_type: app_log # bu parametre beats-input.conf dosyası için gerekli.
      encoding: "utf-8"
      paths:
      - /LOG/FOLDER/PATH/*.log 

output:
  logstash:
    hosts: ["DOCKER_MACHINE_IP:5044"]
    bulk_max_size: 2048
  console:
    pretty: true

filebeat.yml dosyasını doğru bir şekilde oluşturduğunuzu kontrol ediniz.

$ filebeat -c /FILEBEAT/YML/FOLDER/filebeat.yml -configtest

Config OK

Sonrasında veri gönderme işlemini başlatınız.

  • Tek seferlik veri gönderimi için:

    $ filebeat -once -e -c /FILEBEAT/YML/FOLDER/filebeat.yml
    
  • Sürekli veri gönderimi için :

    $ filebeat -e -c /FILEBEAT/YML/FOLDER/filebeat.yml
    

Metricbeat ile sistem verilerinin gönderimi

Metricbeat uygulamasını metricbeat kurulum adresinden indiriniz ve adımları takip ederek kurunuz.
Windows için Metricbeat kurulum dizininde ve Linux için /etc/metricbeat dizini altında bulunan metricbeat.yml dosyasını aşağıdaki gibi düzenleyiniz.

metricbeat.modules:
- module: system
  metricsets:
    # CPU stats
    - cpu

    # System Load stats
    - load

    # Per CPU core stats
    #- core

    # Per filesystem stats
    - filesystem

    # File system summary stats
    - fsstat

    # Memory stats
    - memory

    # Network stats
    - network

    # Per process stats
    - process

  enabled: true
  period: 1m
  processes: ['.*']
  cpu_ticks: false

output:
  logstash:
    hosts: ["DOCKER_MACHINE_IP:5044"]
  console:
    pretty: true

metricbeat.yml dosyasını doğru bir şekilde oluşturduğunuzu kontrol ediniz.

$ metricbeat -c /METRICBEAT/YML/FOLDER/metricbeat.yml -configtest

Config OK

Sonrasında veri gönderme işlemini başlatınız.

$ metricbeat -e -c /METRICBEAT/YML/FOLDER/metricbeat.yml

Gösterge Panellerinin Eklenmesi

ELK Stack için hazırlanmış örnek gösterge panellerini indirerek Kibana arayüzüne yükleyebilirsiniz.

  • beats-dashboards.zip dosyasını indiriniz.

  • BEAT_TYPE = metricbeat veya filebeat

  • Konsoldan Windows için BEAT_TYPE kurulum klasörüne, Linux için /usr/share/BEAT_TYPE/scripts/ klasörüne gidiniz.

  • Aşağıdaki komutu çalıştırarak ilgili BEAT_TYPE için gösterge panellerini yükleyiniz.

    import_dashboards -file /BEATS-DASHBOARDS/ZIP/FILE/PATH -beat BEAT_TYPE -es http://DOCKER_MACHINE_IP:9200
    

ÖNEMLİ: Gösterge panelleri yüklendikten sonra Kibana arayüzünde bir gösterge paneline veya grafiğine tıklandığında aşağıdaki hata alınıyorsa belirtilen işlemleri yapınız.

Hata Mesajı : Visualize: Fielddata is disabled on text fields by default. Set fielddata=true on [FIELD_NAME] in order to load fielddata in memory by uninverting the inverted index.

  • Kibana arayüzünde sol tarafta yer alan menüden Dev Tools seçeneğini tıklayınız.
  • Aşağıdaki komutu Console kısmına yazarak hata aldığınız [FIELD_NAME] için çalıştırınız.
    PUT _mapping/metricsets?update_all_types
    {
      "properties": {
        "FIELD_NAME": {
          "type":     "text",
          "fielddata": true
        }
      }
    }
    
Docker Pull Command
Owner
tpedocker

Comments (0)