ELK Kurulumu

Hadi gelin beraber elastic, logstash ve kibana kuralım. Ama ilk önce elk nedir bundan bahsedelim?

ELK Nedir?

ELK, elastic logstash ve kibana uygulamalarından oluşan loglamayı kolaylaştıran araçlar bütünü diyebiliriz.

Elastic Search: nosql veritabanıdır. Full text arama, analiz gibi özelliklere sahiptir.

Logstash: Sunucudaki logları Filebeat aracı ile toplayıp, filtreledikten sonra Elastic Search’e gönderen araç. Bir bakıma loglar ile elastic arasındaki köprüdür.

Kibana: Elastic’teki logları anlık olarak izlemenizi ve istatistik grafiklere dökmenizi sağlayan web uygulamasıdır. Aynı zamanda eski tarihli logları hızlıca bulmanıza yardımcı olur.

Şimdi senaryomuzu oluşturalım. İki adet elasticsearch sunucumuz olacak, elasticler cluster yapısı ile çalışacak.

Bir sunucumuzda da logstash ve kibana çalışacak.

 

Hadi Başlayım.

Sunucularımıza elastic kurarak başlayalım. 

İlk önce sunucumuza  java open-jdk kurarak başlayalım.

yum install java-1.8.0-openjdk.x86_64

Kurulumda bir hata vermediyse kurulmuştur ama yine de bir kontrol edelim.

java -version

Şöyle bir çıktı vermiş ise kurulmuştur.

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Elastic reposunu ekleyelim..

vi /etc/yum.repos.d/elasticsearch.repo

dosyamızı açtık ve içerisine alttaki repo adresini ekleyip kaydediyoruz.

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Şimdi elastic kurulumunu yapalım.

yum -y install elasticsearch

Kurulum hatasız bir şekilde kurulduysa sunucumuzu tekrardan başlattığımızda servisimizin tekrardan açılması için alttaki komutları giriyoruz.

systemctl start elasticsearch 
systemctl enable elasticsearch 

Artık sunucularımızdan birine elastic kuruldu.

Çalışıp çalışmadığını kontrol edelim.

curl http://localhost:9200

Bu komutun çıktısı şu şekilde olmalıdır.

{
  "name" : "bV0GuFK",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "JprAV7AzTtSNL0De6BWwEQ",
  "version" : {
    "number" : "6.2.1",
    "build_hash" : "7299dc3",
    "build_date" : "2018-02-07T19:34:26.990113Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Sonrasında alttaki komut ile elastic cluster kuralım.
İlk önce dosyayı açalım

vi /etc/elasticsearch/elasticsearch.yml

Şimdi dosyanın en altına aşağıdakileri kopyalayıp kaydedelim.

cluster.name: elastic-cluster
node.name: elastic1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["elastic_ip_adresi", "elastic2_ip_adresi"]
discovery.zen.minimum_master_nodes: 2

Şimdi elastic servisini baştan başlatalım.

systemctl restart elasticsearch 

İkinci elastic makinesine de aynı kurulumu uygulayalım.

Şimdi cluster yapısı oluşup oluşmadığını kontrol edelim.

curl http://localhost:9200/_cluster/health?pretty  
{
  "cluster_name" : "elastic-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
 

Böyle bir çıktı almış iseniz artık cluster kurmuş olduk. Sırada logstash kurulumu var.

Şimdi kibana ve logstash için ayırdığımız 3. sunucuya geçelim.

İlk önce sunucumuza  java open-jdk kurarak başlayalım.

yum install java-1.8.0-openjdk.x86_64

Kurulumda bir hata vermediyse kurulmuştur ama yine de bir kontrol edelim.

java -version

Şöyle bir çıktı vermiş ise kurulmuştur.

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Elastic reposunu ekleyelim..

vi /etc/yum.repos.d/elasticsearch.repo

dosyamızı açtık ve içerisine alttaki repo adresini ekleyip kaydediyoruz.

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Şimdi logstash kuralım.

yum -y install logstash

Logstash kuruldu. Bir config dosyası hazırlayım.

vi /etc/logstash/conf.d/log.conf 

Dosyanın içine alttaki configi ekliyoruz. Senaryomuzda logları filebeat ile toplayacağımızdan dolayı filebeat ile uyumlu bir logstash config hazırladım.

input {
  beats {
	port => 5044
        ssl => false
  }
}
output {
  elasticsearch {
        hosts => ["elastic_ip_adresi:9200", "elastic2_ip_adresi:9200"]
        sniffing => true
        manage_template => false
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
  }
}

filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}

mutate { remove_field => [ '[beat][hostname]', '[beat][name]', 'count', 'fiel$

date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] }
}
}

Şimdi logstashi başlatalım

systemctl start logstash 

Sunucumuzu baştan başlattığımızda açılması için alttaki komutu uyguluyoruz.

systemctl enable logstash 

Logstash uygulamasını kurduk ve başlattık. Sırada kibana uygulamasını kurup senaryomuzu bitirelim.

Kibana uygulamasını kuralım.

yum -y install kibana

Kurulum tamamlandı şimdi config dosyasını düzenleyelim.

 vi /etc/kibana/kibana.yml

Dosyanın en altına aşağıdaki configi ekleyelim.

 
server.host: "0.0.0.0"
server.name: "kibana"
elasticsearch.url: ["elastic_ip_adresi:9200", "elastic2_ip_adresi:9200"]

Artık kurulumumuz bitti. Filebeat ile sunuculardaki logları otomatik bir şekilde toplayabiliriz, istediğimizde kibana arayüzünden loglara erişebiliriz.

Kendi senaryonuza göre istediğiniz gibi özelleştirebilirsiniz. Shard yapısını kullanmanızı öneririm.

Twitter’dan beni takip edebilirsiniz. https://twitter.com/yldzhknn

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir