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