En önemli özelliği olarak elasticsearch framework’ü çok hızlı çalışır. Temel olarak bir relational database sisteminin tutabileceği tüm verileri tutabildiği gibi bu verileri bir veritabanı sisteminden çok ama çok daha hızlı bir şekilde sorgulamamıza izin vermektedir. Bu hızı sağlayabilmek için sayısal değerleri, coğrafi değerleri, tarih ve metinleri tutabilecek özel index yapıları kullanmaktadır. Elasticsearch gerçek zamanlıdır, ekleme işleminden kısa bir süre sonra veriler aranabilir hale gelir. Mapping yapılarak dokümanların arama motoruna nasıl aktarılacağı tanımlanabilir. Cluster yapısı çok basittir gereklilik halinde genişletilebilir. Java, Python, PHP, Java Script ve bir çok kodlama dili için destek vermektedir.
Elasticsearch, monitör edebilmek için Kibana ve log barındırmak için Logstash araçlarıyla birlikte kullanılabilir.
Kibana, elasticsearch için hazırlanmış, raporlar ve görsel çıktılar almamızı sağlar. Elasticsearch’e kaydedilen logların anlık olarak izlenmesini ve ihtiyaç duyulduğunda grafiksel istatistikler çıkartılmasını sağlayan bir web uygulamasıdır.
Logstash, logların toplanmasını sağlayan, işleyen ve elasticsearche aktaran bir üründür. Input, Filter ve output olarak 3 konfigürasyon dosyası vardır. Data input ile gelir ve okur, filtreler ve outputa gönderir.
Elasticsearch birçok ürün ile entegre bir şekilde çalışabilir. Bunlardan birisi ise ArcSight ürün ailesinde bulunan SmartConnector’dür. SmartConnectorler ile toplanan loglar elasticsearche iletilebilir ve Kibana üzerinde dashboardlar oluşturularak görüntülenebilir.
ArcSightSmartConnector, kaynaktan toplanan logların CEF formatında parse edilerek istenilen destinationlara iletilmesini sağlayan araçtır.
ArcSight SmartConnector aracılığıyla logların elasticsearchte depolandığı ve Kibana üzerinden dashboardların görüntülendiği bir demo gerçekleştirelim.
Linux sunucusu üzerinde gerçekleştirilmesi gereken konfigürasyonlar:
Elasticsearch kullanılabilmesi için sistem üzerinde Java yüklü olması gerekmektedir. Bu durumda dikkat edilmesi gereken nokta desteklenen Java versiyonunun kullanılıyor olmasıdır. Aşağıdaki komutu kullanarak Java 8 kurulumunu yapıp versiyon bilgisini kontrol edelim.
yum install epel* -y && yum install net-tools wget git nano htop java-1.8* -y
Sistem gereksinimi olarak Linux sunucu versiyonu minimum “CentOS / RHEL 7.4.1708 or later” olarak belirlenmiştir. Gereksinim halinde yum update -y komutu kullanılarak OS versiyonu güncellenebilir. Demonun gerçekleştirildiği sunucunun OS versiyonu CentOS 7.7 olarak belirlenmiştir. Çalışmanın gerçekleşeceği sunucunun version bilgisi kontrolünü görseldeki komutla görüntüleyebiliriz.
Demo test ortamında gerçekleştirildiği için firewall servislerini durdurup disable ederek işlemlere devam edilebilir.
systemctl disable firewalld && systemctl stop firewalld && reboot
Kurulumlar için gerekli repositoryleri eklemek için /etc/yum.repos.d/ pathi altında elasticsearch.repo, kibana.repo, logstash.repo dosyaları oluşturulur. Gerekli repo bilgilerini dosyalar içerisine girdikten sonra kaydedilerek çıkış yapılır.
[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
[kibana-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum 4
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
[logstash-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
Elastic search package spoofing yapılmaması için güvenlik adına ayrı bir KEY ile paketleri imzalanmış durumdadır. Bu yüzden ilk önce ElasticSearchpublic GPG keyi indirerek repositorye eklememiz gerekmektedir. Ekleme işlemini aşağıdaki komutla gerçekleştirebiliriz;
rpm –import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Gerekli ön hazırlıklar tamamlandıktan sonra elasticsearch, logstash ve kibana servislerinin kurulumlarını aşağıdaki komutla gerçekleştirebiliriz;
yum install elasticsearch logstash kibana -y
/etc/elasticsearch/ pathi altındaki elasticsearch.yml dosyası içerisinde yapılması gereken konfigürasyonlar tamamlanmalıdır. Bu konfigürasyonlar aşağıdaki gibidir;
– network host : ElasticSearch için erişilebilir IP Adresi
– http.port: 9200 (Default port)
– cluster.name, node.name gibi parametreler de bu konfigürasyon dosyası içerisinde tercihe bağlı olarak editlenebilir.
Konfigürasyon tamamlandıktan sonra elasticsearch servisi başlatılarak enable edilmesi gerekmektedir.
systemctl start elasticsearh && systemctl enable elasticsearch
Elasticsearch servislerinin çalıştığından emin olabilmek için bir request göndererek test edebiliriz. Bu test curl -X GET “10.61.39.142:9200” komutuyla gerçekleştirildiğinde aşağıdaki gibi çıktı alınmalıdır.
/etc/kibana/ pathi altındaki kibana.yml dosyası içerisinde yapılması gereken konfigürasyonlar tamamlanmalıdır. Bu konfigürasyonlar aşağıdaki gibidir;
-serverhost: Kibana için erişilebilir IP Adresi
-server.port:5601(Default)
-elasticsearch.hosts: Elastic search için konfigüre edilen IP ve Port bilgisi
Konfigürasyon tamamlandıktan sonra kibana servisi başlatılarak enable edilmesi gerekmektedir.
systemctl start kibana && systemctl enable kibana
Logstash Konfigürasyonları hem SmartConnector hem de Event Broker (Transformation Hub) için gerçekleştirilebilir. Demoda SmartConnector üzerinden ilgili destinationa yönlendirme yapılacağı için /etc/logstash/ pathi altındaki logstash.yml dosyasının SmartConnectore göre düzenlenmesi gerekmektedir.
Module konfigürasyonu tamamlandıktan sonra logstash servisi başlatılarak enable edilmesi gerekmektedir.
systemctl start logstash && systemctl enable logstash
SmartConnector üzerinden logların iletilebilmesi için destination bilgisinin eklenmesi gerekmektedir. Demo içerisinde ArcSight ürün ailesinden “Test Alert SmartConnector” kullanarak test eventlerin aktarılması sağlanmaktadır.
Log akışının ardından loglar kibana üzerinde arcsight-tarih bilgisi formatında gözükmeye başlar. Logları bu formatta görüntüledikten sonra, search yapılabilmesi ve dashboardların görüntülenebilmesi için index pattern oluşturulması gerekmektedir.
Kibana üzerinde Timelion sekmesi altında zaman dilimlerine göre log akışını görüntüleyebiliriz.
Kibana üzerinde Discover sekmesi kontrol edildiğinde logların gelmeye başladığını görüntüleyebiliriz. Burada ArcSight SmartConnector tarafından parse edilen fieldlara göre search yapılabilir.
Kibana üzerinde Visualize sekmesi altından birçok farklı formatta görseller hazırlanabilir. Dashboard sekmesi altından ise oluşturulan görseller ile birlikte dashboardlar oluşturup görüntülenebilir. ArcSight için hazırlanmış örnek dashboard görüntüleri aşağıdaki gibidir;
-