ELK Otomatik Kurulumu

Otomatik Elasticsearch ve Kibana Kurulumu

  • Ip Bilgisi

ipaddress ile Log dosyasının içerisine bilgi yazılması için kullanılmıştır.

ipaddress="$(hostname -I)"
  • Function Kullanımı

Function ile packagename içerisinde belirtilen isimlere göre sıralı işlem yapılması hedeflenmiştir.Bu hedeflerin sırasıyla yüklenmesi gerekiyor veya içlerinden birisi yüklü ise #packagename "kibana" gibi dışarıda bırakılabilir.

function packagename {
        local listpack=${1}
		}


packagename "elasticsearch"
packagename "kibana"
packagename "logstash"
packagename "filebeat"
  • Elasticsearch Kurulumu

Bu alandaki Echolar Log dosyasına yapılan adımlar hakkında bilgiler yazılabilmesi için ayarlanmıştır.
Adımlar:
Zaman güncellenmesi.
apt-key eklenmesi.
Source list içerisine Kütüphane bilgisi eklenmesi.
Ubuntu Update edilmesi.
Ubuntu içerisinde Elasticsearch Paketi indirilmesi.
Elastic.yml içerisinde ulaşılabilecek lokasyonun localhost ayarlanması.
jvm.options altında defaultta xms4g yani memory ayarları disable olarak gelir Enable edilir.
Deamon-reload yapılır.
Elastic Başlatılır.
Elastic Enable Edilerek Başlangıca kayıt edilir.
curl ile Localhost:9200 elastic calışıp çalışmadığı kontrol edilir.

     ###############Elasticsearch area
        if [  "elasticsearch" == "$listpack" ] ; then
		
			 echo "$listpack"" Paketi ""$ipaddress"" adressli bilgisayara kurulum başlatıldı." >> /var/log/InstallInfo.log
             sudo timedatectl set-timezone Asia/Istanbul
             echo "Timezone Asia/Istanbul Olarak Ayarlandı." >> /var/log/InstallInfo.log
             curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
             echo "https://artifacts.elastic.co/GPG-KEY-elasticsearch urlsinden key içeriye eklendi." >> /var/log/InstallInfo.log
             echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
             echo "https://artifacts.elastic.co/packages/7.x/apt sourcle listi elasticsearche göre ayarlandı" >> /var/log/InstallInfo.log
             sudo apt update -y
             echo "update işlemi yapıldı." >> /var/log/InstallInfo.log
             sudo apt install "$listpack" -y
             echo "$ipaddress"" adressli bilgisayara elasticsearch kurulumu yapıldı." >> /var/log/InstallInfo.log
             echo "network.host: localhost" >> /etc/elasticsearch/elasticsearch.yml
             echo "/etc/elasticsearch/elasticsearch.yml dosyasına network.host eklenerek localhost ayarlandı."  >> /var/log/InstallInfo.log
             sed -i 's/## -Xms4g/-Xms2g/g' /etc/elasticsearch/jvm.options
             sed -i 's/## -Xmx4g/-Xmx2g/g' /etc/elasticsearch/jvm.options
             echo "/etc/elasticsearch/jvm.options java ayarları 2g olarak ayarlandı." >> /var/log/InstallInfo.log
                         ####elasticsearch.url: "http://0.0.0.0:9200"
             sudo systemctl daemon-reload
             sudo systemctl start elasticsearch
             sudo systemctl enable elasticsearch
             echo "9200 portuna get komutu yollanarak test edildi."  >> /var/log/InstallInfo.log
			 echo "##############################################" >> /var/log/InstallInfo.log
             curl -X GET "localhost:9200"  >> /var/log/InstallInfo.log
			 echo "##############################################" >> /var/log/InstallInfo.log
                         ##buraya get ile okey veya olumsuz döngüsü oluşturulabilir.
	    else
			 echo "1 girilen değer elasticsearch değil."
        fi
  • Kibana Kurulumu

Burada if döngüsü ile listpack’ın kibana olup olmadığı kontrol edilir.Gelen komut 2. satıra(kibana) eşitse sırayla işlemler yapılır.
Adımlar:
Kibana Paketi indirilir bu işlem için Source.list içerisine eklenen link referans alınır.(Elastic yüklenmeden kibana kurulmamalıdır.)
Kibana Enable Edilerek Başlangıca kayıt edilir.
Kibana Başlatılır.
Sed Komutu ile #server.host: "localhost" olan kısım başındaki # kaldırılıp enable duruma getirirlir ve localhost yerine "0.0.0.0" yazılır.

 if [  "kibana" == "$listpack" ] ; then
		
			 echo "$listpack"" Paketi ""$ipaddress"" adressli bilgisayara kurulum başlatıldı." >> /var/log/InstallInfo.log
			 sudo apt install "$listpack" -y
			 sudo systemctl enable kibana 
			 sudo systemctl start kibana
			 echo "$listpack" "Başlatıldı." >> /var/log/InstallInfo.log
			 ################### Hostu açmazsan dashboard gelmez.
			 sed -i 's/#server.host: "localhost"/server.host: "0.0.0.0"/g' /etc/kibana/kibana.yml	
			 echo "/etc/kibana/kibana.yml içerisinde server.host enable edilerek localhost yerine 0.0.0.0 olarak ayarlandı." >> /var/log/InstallInfo.log
        else
			 echo "2 girilen değer kibana değil."
        fi
  • Logstash Kurulumu

Burada if döngüsü ile listpack’ın Logstash olup olmadığı kontrol edilir.Gelen komut 2. satıra(Logstash) eşitse sırayla işlemler yapılır.
Adımlar:
Logstash paketi indirilir.
İşlem sonrası logstash içerisinde bir adet conf dosyası oluşturulur.Bu işlem port 5044 e input yönlendirmesi.
Logstash içerisine bir adet output dosyası oluşturulur. buda logların gönderileceği yerin localhost:9200 olacağı ayarlanır.(9200 Elasticsearch Port)
Sonraki adımda ise logstashın konumu yeni dosya yolu olarak ayarlanır.
Logstash Başlatılır.
Logstash Enable Edilerek Başlangıca kayıt edilir.

 if [  "logstash" == "$listpack" ] ; then
					
			 echo "$listpack"" Paketi ""$ipaddress"" adressli bilgisayara kurulum başlatıldı." >> /var/log/InstallInfo.log
			 sudo apt install "$listpack" -y
					
			 touch /etc/logstash/conf.d/02-beats-input.conf
			 echo 'input {
						    beats {
								port => 5044
							}
						   }' >  /etc/logstash/conf.d/02-beats-input.conf
			 touch /etc/logstash/conf.d/30-elasticsearch-output.conf

			 echo "/etc/logstash/conf.d/02-beats-input.conf dosyasına port 5044 yönlendirmesi ayaralandı." >> /var/log/InstallInfo.log


			 echo 'output {
						  if [@metadata][pipeline] {
							elasticsearch {
							hosts => ["localhost:9200"]
							manage_template => false
							index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
							pipeline => "%{[@metadata][pipeline]}"
						  }
						  } else {
								elasticsearch {
								hosts => ["localhost:9200"]
								manage_template => false
								index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
								}
						    }
						  }'	   > /etc/logstash/conf.d/30-elasticsearch-output.conf

			 echo "/etc/logstash/conf.d/30-elasticsearch-output.conf içerisinde gelen verilerin %{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd} formatında parse edilme ve 9200 portuna yönlendirmesi yapıldı." >> /var/log/InstallInfo.log
						  
			 sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
			 echo "logstash --path.settings /etc/logstash olarak ayarlandı." >> /var/log/InstallInfo.log
			 sudo systemctl start logstash
			 sudo systemctl enable logstash
				    
        else
                echo "3 girilen değer logstash değil."
        fi

  • Dosya Örneği

Alttaki kod bir .sh dosyası olarak kayıt edilirse sorun olmayacaktır.

ipaddress="$(hostname -I)"

function packagename {
        local listpack=${1}

        ###############Elasticsearch area
        if [  "elasticsearch" == "$listpack" ] ; then
		
			 echo "$listpack"" Paketi ""$ipaddress"" adressli bilgisayara kurulum başlatıldı." >> /var/log/InstallInfo.log
             sudo timedatectl set-timezone Asia/Istanbul
             echo "Timezone Asia/Istanbul Olarak Ayarlandı." >> /var/log/InstallInfo.log
             curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
             echo "https://artifacts.elastic.co/GPG-KEY-elasticsearch urlsinden key içeriye eklendi." >> /var/log/InstallInfo.log
             echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
             echo "https://artifacts.elastic.co/packages/7.x/apt sourcle listi elasticsearche göre ayarlandı" >> /var/log/InstallInfo.log
             sudo apt update -y
             echo "update işlemi yapıldı." >> /var/log/InstallInfo.log
             sudo apt install "$listpack" -y
             echo "$ipaddress"" adressli bilgisayara elasticsearch kurulumu yapıldı." >> /var/log/InstallInfo.log
             echo "network.host: localhost" >> /etc/elasticsearch/elasticsearch.yml
             echo "/etc/elasticsearch/elasticsearch.yml dosyasına network.host eklenerek localhost ayarlandı."  >> /var/log/InstallInfo.log
             sed -i 's/## -Xms4g/-Xms2g/g' /etc/elasticsearch/jvm.options
             sed -i 's/## -Xmx4g/-Xmx2g/g' /etc/elasticsearch/jvm.options
             echo "/etc/elasticsearch/jvm.options java ayarları 2g olarak ayarlandı." >> /var/log/InstallInfo.log
                         ####elasticsearch.url: "http://0.0.0.0:9200"
             sudo systemctl daemon-reload
             sudo systemctl start elasticsearch
             sudo systemctl enable elasticsearch
             echo "9200 portuna get komutu yollanarak test edildi."  >> /var/log/InstallInfo.log
			 echo "##############################################" >> /var/log/InstallInfo.log
             curl -X GET "localhost:9200"  >> /var/log/InstallInfo.log
			 echo "##############################################" >> /var/log/InstallInfo.log
                         ##buraya get ile okey veya olumsuz döngüsü oluşturulabilir.
	    else
			 echo "1 girilen değer elasticsearch değil."
        fi
        ###############Kibana area
        if [  "kibana" == "$listpack" ] ; then
		
			 echo "$listpack"" Paketi ""$ipaddress"" adressli bilgisayara kurulum başlatıldı." >> /var/log/InstallInfo.log
			 sudo apt install "$listpack" -y
			 sudo systemctl enable kibana 
			 sudo systemctl start kibana
			 echo "$listpack" "Başlatıldı." >> /var/log/InstallInfo.log
			 ################### Hostu açmazsan dashboard gelmez.
			 sed -i 's/#server.host: "localhost"/server.host: "0.0.0.0"/g' /etc/kibana/kibana.yml	
			 echo "/etc/kibana/kibana.yml içerisinde server.host enable edilerek localhost yerine 0.0.0.0 olarak ayarlandı." >> /var/log/InstallInfo.log
        else
			 echo "2 girilen değer kibana değil."
        fi
        ###############Logstash area
        if [  "logstash" == "$listpack" ] ; then
					
			 echo "$listpack"" Paketi ""$ipaddress"" adressli bilgisayara kurulum başlatıldı." >> /var/log/InstallInfo.log
			 sudo apt install "$listpack" -y
					
			 touch /etc/logstash/conf.d/02-beats-input.conf
			 echo 'input {
						    beats {
								port => 5044
							}
						   }' >  /etc/logstash/conf.d/02-beats-input.conf
			 touch /etc/logstash/conf.d/30-elasticsearch-output.conf

			 echo "/etc/logstash/conf.d/02-beats-input.conf dosyasına port 5044 yönlendirmesi ayaralandı." >> /var/log/InstallInfo.log


			 echo 'output {
						  if [@metadata][pipeline] {
							elasticsearch {
							hosts => ["localhost:9200"]
							manage_template => false
							index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
							pipeline => "%{[@metadata][pipeline]}"
						  }
						  } else {
								elasticsearch {
								hosts => ["localhost:9200"]
								manage_template => false
								index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
								}
						    }
						  }'	   > /etc/logstash/conf.d/30-elasticsearch-output.conf

			 echo "/etc/logstash/conf.d/30-elasticsearch-output.conf içerisinde gelen verilerin %{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd} formatında parse edilme ve 9200 portuna yönlendirmesi yapıldı." >> /var/log/InstallInfo.log
						  
			 sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
			 echo "logstash --path.settings /etc/logstash olarak ayarlandı." >> /var/log/InstallInfo.log
			 sudo systemctl start logstash
			 sudo systemctl enable logstash
				    
        else
                echo "3 girilen değer logstash değil."
        fi
        }


packagename "elasticsearch"
packagename "kibana"
packagename "logstash"