Okan Adıgüzel tarafından yazılmıştır.
Elasticsearch, verileri tam zamanlı olarak aramaya ve analiz etme amacıyla Java dilinde geliştirilmiştir. Kullanılabilirlik ve farklı özellikleri bakımında BigData tüzel kişileri tarafından sıkça kullanılmakta ve tercih edilmektedir. Bu makalede Elasticsearch’ü kurmayı, kişiye (size) özgü ayarlarını, güvenli kurulum yapmayı ve Elasticsearch’teki çalışma ortamını anlatacağım.
Bu gereksinimler, Elasticsearch’te sizin depolayacağınız veriler için minimal düzeyde olacak fakat yeterli olacağından şüpheniz olmasın, rahat bir şekilde çalışma yapabileceksiniz. (Yüksek veriler için gereksinimlerin yükseltilmesi tavsiye edilir.)
Elasticsearch’ün gerekli paketleri Ubuntu’nun standart paketinde yüklü olarak gelmez bununlu beraber Elasticsearch’ün kaynak paket listesi yüklendikten sonra APT’de yüklenmelidir.
Package spoofing’den sisteminizi korumanız için tüm Elastic paketleri Elasticsearch lisansıyla şifrelenir. Güvenilir olmayan paketler ise package manager (paket menajeri) tarafından şifrelenir. Bu adımda Elastic’i yüklemek için Elasticsearch’ün açık GPG anahtarını import edip Elastic kaynak paketini ekleyeceğiz.
Başlangıçta, verileri URL yoluyla transfer eden komut satırı aracı cURL’i APT’nin içindeki Elasticsearch açık GPG anahtarını import etmek için kullanıyoruz. -fsSL argümanını diğer programları durdurmak, muhtemel hataları önlemek (sunucu hataları haricinde) ve eğer yeniden yönlendirme yapıldıysa yeni istekleri temiz bir dosyaya çekmek için cURL’ı kullanacağız. cURL’in çıktısını public GPG anahtarına ekleyen apt-key programına ekliyoruz.
Sonra, Elastic kaynak listesini yeni kaynaklara bakan APT için
Sonra, paket listesini güncelliyoruz ve APT yeni Elastic kaynaklarını okumaya başlamış olacak.
Akabinde de Elastic’i aşağıdaki komutla yüklemeye başlıyoruz.
Artık Elastic’i sunucumuza kurduk ve konfigüre edilmeye hazır!
Elastic’i konfigüre etmek için en fazla konfigürasyon seçeneklerinin depolandığı
Elastic’i yapılandırmadan önce tercih ettiğiniz bir text editörünü kullanabilirsiniz. Biz
NOT: Elasticsearch’ün konfigürasyon dosyası YAML formatında olduğu için ‘indentation’ formatında girdi yapmamız gerekiyor bu yüzden dosyaya ekstra bir boşluk eklemediğinizden emin olun.
Elasticsearch herhangi bir yerdeki trafiği
Artık
Bu yaptıklarımız Elasticsearch’ü kullanmak için yaptığımız minimal ayarlamalardı. Artık Elasticsearch’ü adam akıllı kullanmaya başlayabiliriz.
Elasticsearch’ü
Sonra, Elasticsearch’ün sürekli olarak sunucunuzda çalışabilmesi için aşağıdaki komutu çalıştırın:
Elasticsearch’ü etkinleştirdiğimize göre artık Elastic’in güvenlik muhabbetini ele alabiliriz.
Standart olarak HTTP API’ye erişimi olan herkes Elastic’i kontrol edebilir ama bu sorun güvenlik açısından sorun teşkil etmeyecektir zira Elastic sadece loopback arayüzünü (
HTTP API’ye uzaktan bağlanma izni vermek için ağ exposure’unu, Ubuntu’nun standart güvenlik duvarı UFW ile limitlendirebilirsiniz. Eğer aşağıdaki makaledeki adımları yaptıysanız hali hazırda bu güvenlik duvarı zaten daima kullanabilir halde olacaktır.
Şimdi ise standart Elasticsearch HTTP API portuna erişim izni için güvenlik duvarını uzaktan güvenilir bağlantı için konfigüre edeceğiz, genellikle single-server kurulumunda kullandığımız sunucu olacak, örnek vermek gerekirse
Bir kere bu işlem tamamlandığı zaman UFW’yu aşağıdaki komutla aktif edebilirsiniz:
Eğer adımları doğru bir şekilde uyguladıysanız aşağıdaki gibi bir çıktı alacaksınız:
UFW artık aktif ve Elasticsearch’ü 9200 portundan korumaya programlandı.
Eğer farklı güvenlik eklentileri eklemek istiyorsanız Elastic’in Shield plugin sayfasına bakabilirsiniz.
Şimdiye kadar Elastic’in 9200 portundan çalışıyor olması gerekiyor, bunu cURL ve GET istekleriyle test edelim.
Eğer doğru gidiyorsak aşağıdaki çıktıyı almamız lazım:
Eğer yukarıdaki gibi bir çıktı aldıysanız Elastic doğru bir şekilde çalışıyor demektir. Eğer alamadıysanız kurulumu doğru yaptığınızdan emin olun ya da Elasticsearch’ü başlatırken başta dediğimiz gibi bir süre bekleyin.
Elastic’in daha düzgün çalıştığını görmek istiyorsanız aşağıdaki komutu çalıştırın:
“curl -XGET ‘http://localhost:9200/_nodes?pretty”
Yukarıdaki komuttan alacağınız çıktıda bir çok seçeneği görebilirsiniz. Bkz: Node, cluster, uygulama paketleri, modüller ve dahası.
Elastic2i kullanmaya başlarken ilk önce biraz veri ekleyelim. Elastic, sıradan CRUD komutları kullanan RESTful API’ı kullanır: create, read, update ve delete. Bunları kullanabilmek için cURL’i komutunu tekrar kullanmamız gerekecek.
İlk eklemeyi şöyle yapabiliriz:
Şöyle bir çıktı alacaksınız:
With cURL, we have sent an HTTP POST request to the Elasticsearch server. The URI of the request was
cURL ile Elastic sunucusuna HTTP POST isteği yollamış olduk. İsteklerin URL’lerini
Bu ilk girdiyi HTTP GET isteğiyle geri alabilirsiniz.
“curl -X GET -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1’ -d ‘{ “message”: “Hello World!” }'”
Şöyle bir çıktı alacağız:
Çıktıyı düzenlemek içinse HTTP PUT isteğini kullanabilirsiniz:
Elastic böyle bir düzenlenmenin doğruluğunu ise aşağıdaki çıktıda bize göstermiş olacak:
Yukarıdaki örneklerle mesaj kısmını düzenleyip “Hello People!” şeklinde ilk girdimizi yazdık. Böylelikle versiyon numarası otomatik olarak 2’ye yükseltilmiş oldu.
Ayrıca yukarıdaki ekstra argüman olan
“curl -X GET -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1?pretty'”
Artık çıktımız ‘human’ formatında parse edilmeye artık hazır.
Elastic’e queried ‘sorgulanmış’ verileri ekledik. Diğer kısımları öğrenmek için API dökümasyonuna (
) bakabilirsiniz.
Elastic’i yükledik, konfigüre ettik ve kullanıma hazır hale getirdik. Elastic’in asıl piyasaya sürülme amacında Elasticsearch ile beraber kullanılsın diye 3 tane de araç geliştirilmişti — Logstash, Kabana, and Beats — . Eğer bu araçlarla beraber kullanırsanız bunlar size arama, analiz ve herhangi bir kaynaktaki kayıtları (logları) tutmanıza izin veriyor ve merkezi giriş sistemi formatında pratik yapmanıza imkan sağlıyor.
Kaynak:
Ubuntu 18.04’e ElasticSearch Kurulumu Ve Ayarlamaların Yapılması
Elasticsearch, verileri tam zamanlı olarak aramaya ve analiz etme amacıyla Java dilinde geliştirilmiştir. Kullanılabilirlik ve farklı özellikleri bakımında BigData tüzel kişileri tarafından sıkça kullanılmakta ve tercih edilmektedir. Bu makalede Elasticsearch’ü kurmayı, kişiye (size) özgü ayarlarını, güvenli kurulum yapmayı ve Elasticsearch’teki çalışma ortamını anlatacağım.
Gerekli Materyaller
- Minimum 4GB Ram, 2CPU’lu ve root erişimine sahip olmayan (standart kullanıcı izinleri olan) Ubuntu 18.04 sunucusu.
- OpenJDK 11
Bu gereksinimler, Elasticsearch’te sizin depolayacağınız veriler için minimal düzeyde olacak fakat yeterli olacağından şüpheniz olmasın, rahat bir şekilde çalışma yapabileceksiniz. (Yüksek veriler için gereksinimlerin yükseltilmesi tavsiye edilir.)
Aşama 1 – Elasticsearch’ün Yüklenmesi
Elasticsearch’ün gerekli paketleri Ubuntu’nun standart paketinde yüklü olarak gelmez bununlu beraber Elasticsearch’ün kaynak paket listesi yüklendikten sonra APT’de yüklenmelidir.
Package spoofing’den sisteminizi korumanız için tüm Elastic paketleri Elasticsearch lisansıyla şifrelenir. Güvenilir olmayan paketler ise package manager (paket menajeri) tarafından şifrelenir. Bu adımda Elastic’i yüklemek için Elasticsearch’ün açık GPG anahtarını import edip Elastic kaynak paketini ekleyeceğiz.
Başlangıçta, verileri URL yoluyla transfer eden komut satırı aracı cURL’i APT’nin içindeki Elasticsearch açık GPG anahtarını import etmek için kullanıyoruz. -fsSL argümanını diğer programları durdurmak, muhtemel hataları önlemek (sunucu hataları haricinde) ve eğer yeniden yönlendirme yapıldıysa yeni istekleri temiz bir dosyaya çekmek için cURL’ı kullanacağız. cURL’in çıktısını public GPG anahtarına ekleyen apt-key programına ekliyoruz.
“curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -“
Sonra, Elastic kaynak listesini yeni kaynaklara bakan APT için
sources.list.d
‘e ekliyoruz.“echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list”
Sonra, paket listesini güncelliyoruz ve APT yeni Elastic kaynaklarını okumaya başlamış olacak.
“sudo apt update”
Akabinde de Elastic’i aşağıdaki komutla yüklemeye başlıyoruz.
“sudo apt install elasticsearch”
Artık Elastic’i sunucumuza kurduk ve konfigüre edilmeye hazır!
Aşama 2 – Elasticsearch’ün Konfigürasyonu
Elastic’i konfigüre etmek için en fazla konfigürasyon seçeneklerinin depolandığı
elasticsearch.yml
dosyasında düzenlemeler yapacağız. Bu dosyaya /etc/elasticsearch
konumundan erişebiliyoruz.Elastic’i yapılandırmadan önce tercih ettiğiniz bir text editörünü kullanabilirsiniz. Biz
nano
‘yu kullanacağız.“sudo nano /etc/elasticsearch/elasticsearch.yml”
NOT: Elasticsearch’ün konfigürasyon dosyası YAML formatında olduğu için ‘indentation’ formatında girdi yapmamız gerekiyor bu yüzden dosyaya ekstra bir boşluk eklemediğinizden emin olun.
Elasticsearch listens for traffic from everywhere on port9200
. You will want to restrict outside access to your Elasticsearch instance to prevent outsiders from reading your data or shutting down your Elasticsearch cluster through its REST API. To restrict access and therefore increase security, find the line that specifiesnetwork.host
, uncomment it, and replace its value withlocalhost
so it looks like this:
elasticsearch.yml
dosyası, cluster, node, paths, bellek, ağ, discorvery ve gateway alanlarında konfigürasyon yapma olanağı sağlamaktadır. Bahsettiğim çoğu opsiyon önceden konfigüre edilse de ihtiyacınıza göre tekrardan yapılandırabilirsiniz. single-server konfigürasyonun doğru yapılandırılabilmesi için sadece network sunucusunu ayarlayacağız.Elasticsearch herhangi bir yerdeki trafiği
9200
portu üzerinden dinler. Elastic’e dışarıdan gelen bağlantıları (dış mihrakların verileri okuması veya Elastic sunucusunu kapatması) REST API yoluyla engelleyebilirsiniz. Dışarıdan gelen erişimleri engellemek ve güvenliği arttırmak için network.host
satırını bulun ve değeri localhost
olarak değiştirin ve bingo! Aşağıdaki gibi bir ekran bizi karşılayacak:
[/CENTER]Kod:[CENTER]/etc/elasticsearch/elasticsearch.yml . . . # ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): # network.host: localhost . . .
Artık
localhost
olarak belirleme yaptık bundan sonra Elastic arayüzü ve kısıtlanan tüm IP adreslerini dinlemeye alacak. Eğer özel bir arayüzü dinlemek istiyorsanız localhost
.’a bu IP adresini ekleyebilirsiniz. Şimdi elasticsearch.yml
kısmını kaydedip çıkalım. Nano’yu ilk defa kullanıyorsanız ilk olarak CTRL+X
, akabinde Y ve ENTER ile bu işlemi yapabilirsiniz.Bu yaptıklarımız Elasticsearch’ü kullanmak için yaptığımız minimal ayarlamalardı. Artık Elasticsearch’ü adam akıllı kullanmaya başlayabiliriz.
Elasticsearch’ü
systemctl
ile başlatıyoruz. Başlaması için biraz beklemeniz gerekecek, öbür türlü beklemediğiniz taktirde bağlantıyla alakalı birtakım hatalar alabilirsiniz.“sudo systemctl start elasticsearch”
Sonra, Elasticsearch’ün sürekli olarak sunucunuzda çalışabilmesi için aşağıdaki komutu çalıştırın:
“sudo systemctl enable elasticsearch”
Elasticsearch’ü etkinleştirdiğimize göre artık Elastic’in güvenlik muhabbetini ele alabiliriz.
Aşama 3 – Elasticsearch’ün Güvenliği
Standart olarak HTTP API’ye erişimi olan herkes Elastic’i kontrol edebilir ama bu sorun güvenlik açısından sorun teşkil etmeyecektir zira Elastic sadece loopback arayüzünü (
127.0.0.1
) dinlediği için oraya sadece local’de erişime sahip olan erişebilir. Böylelikle herhangi açık adresten erişim mümkün olmayacak ve böylelikle sunucu kullanıcıları güvenilir olacak ve güvenlik kısmı sekteye uğraşmamış olacaktır.HTTP API’ye uzaktan bağlanma izni vermek için ağ exposure’unu, Ubuntu’nun standart güvenlik duvarı UFW ile limitlendirebilirsiniz. Eğer aşağıdaki makaledeki adımları yaptıysanız hali hazırda bu güvenlik duvarı zaten daima kullanabilir halde olacaktır.
Şimdi ise standart Elasticsearch HTTP API portuna erişim izni için güvenlik duvarını uzaktan güvenilir bağlantı için konfigüre edeceğiz, genellikle single-server kurulumunda kullandığımız sunucu olacak, örnek vermek gerekirse
198.51.100.0
. Erişime izin vermek için aşağıdaki komutları takip ediniz:“sudo ufw allow from 198.51.100.0 to any port 9200”
Bir kere bu işlem tamamlandığı zaman UFW’yu aşağıdaki komutla aktif edebilirsiniz:
“sudo ufw status”
Eğer adımları doğru bir şekilde uyguladıysanız aşağıdaki gibi bir çıktı alacaksınız:
Kod:Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)
UFW artık aktif ve Elasticsearch’ü 9200 portundan korumaya programlandı.
Eğer farklı güvenlik eklentileri eklemek istiyorsanız Elastic’in Shield plugin sayfasına bakabilirsiniz.
Aşama 4 – Elasticsearch’ü Test Etme Zamanı
Şimdiye kadar Elastic’in 9200 portundan çalışıyor olması gerekiyor, bunu cURL ve GET istekleriyle test edelim.
“curl -X GET ‘http://localhost:9200”
Eğer doğru gidiyorsak aşağıdaki çıktıyı almamız lazım:
Kod:{ "node.name" : "My First Node", "cluster.name" : "mycluster1", "version" : { "number" : "2.3.1", "build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39", "build_timestamp" : "2020-04-04T12:25:05Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" }
Eğer yukarıdaki gibi bir çıktı aldıysanız Elastic doğru bir şekilde çalışıyor demektir. Eğer alamadıysanız kurulumu doğru yaptığınızdan emin olun ya da Elasticsearch’ü başlatırken başta dediğimiz gibi bir süre bekleyin.
Elastic’in daha düzgün çalıştığını görmek istiyorsanız aşağıdaki komutu çalıştırın:
“curl -XGET ‘http://localhost:9200/_nodes?pretty”
Yukarıdaki komuttan alacağınız çıktıda bir çok seçeneği görebilirsiniz. Bkz: Node, cluster, uygulama paketleri, modüller ve dahası.
Aşama 5 – Elasticsearch’ün Kullanılması
Elastic2i kullanmaya başlarken ilk önce biraz veri ekleyelim. Elastic, sıradan CRUD komutları kullanan RESTful API’ı kullanır: create, read, update ve delete. Bunları kullanabilmek için cURL’i komutunu tekrar kullanmamız gerekecek.
İlk eklemeyi şöyle yapabiliriz:
curl -XPOST -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1’ -d ‘{ “message”: “Hello World!” }’
Şöyle bir çıktı alacaksınız:
Kod:
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
With cURL, we have sent an HTTP POST request to the Elasticsearch server. The URI of the request was
/tutorial/helloworld/1
with several parameters:cURL ile Elastic sunucusuna HTTP POST isteği yollamış olduk. İsteklerin URL’lerini
/tutorial/helloworld/1
dizininde farklı parametrelerle görüyoruz:tutorial
, Elastic’in içindeki verilerin index’i.helloworld
, başlık.1
ise index ve başlığın üzerindeki ID numarasıdır.
Bu ilk girdiyi HTTP GET isteğiyle geri alabilirsiniz.
“curl -X GET -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1’ -d ‘{ “message”: “Hello World!” }'”
Şöyle bir çıktı alacağız:
Kod:
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}
Çıktıyı düzenlemek içinse HTTP PUT isteğini kullanabilirsiniz:
curl -X PUT -H “Content-Type: application/json” ‘localhost:9200/tutorial/helloworld/1?pretty’ -d ‘
{
“message”: “Hello, People!”
}’
Elastic böyle bir düzenlenmenin doğruluğunu ise aşağıdaki çıktıda bize göstermiş olacak:
Kod:{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "created" : false }
Yukarıdaki örneklerle mesaj kısmını düzenleyip “Hello People!” şeklinde ilk girdimizi yazdık. Böylelikle versiyon numarası otomatik olarak 2’ye yükseltilmiş oldu.
Ayrıca yukarıdaki ekstra argüman olan
pretty
istediğini de göz ardı etmemek gerekir. Bu istek human-readable formatındadır yani birçok veriyi eklememize imkan sağlar. Ayrıca verileri düzeltirken sonuca görsellik kazandırmak isteyip daha da okurnuk kılmak isterseniz aşağıdaki komutu girmeniz yeterli olacaktır:“curl -X GET -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1?pretty'”
Artık çıktımız ‘human’ formatında parse edilmeye artık hazır.
Kod:{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "found" : true, "_source" : { "message" : "Hello, People!" } }
Elastic’e queried ‘sorgulanmış’ verileri ekledik. Diğer kısımları öğrenmek için API dökümasyonuna (
Document APIs | Elasticsearch Guide [8.16] | Elastic
www.elastic.co
SONUÇ
Elastic’i yükledik, konfigüre ettik ve kullanıma hazır hale getirdik. Elastic’in asıl piyasaya sürülme amacında Elasticsearch ile beraber kullanılsın diye 3 tane de araç geliştirilmişti — Logstash, Kabana, and Beats — . Eğer bu araçlarla beraber kullanırsanız bunlar size arama, analiz ve herhangi bir kaynaktaki kayıtları (logları) tutmanıza izin veriyor ve merkezi giriş sistemi formatında pratik yapmanıza imkan sağlıyor.
Kaynak:
How To Install and Configure Elasticsearch on Ubuntu 18.04 | DigitalOcean
Elasticsearch is a platform for distributed search and analysis of data in real time. This article will guide you through installing Elasticsearch, confi…
www.digitalocean.com
Moderatör tarafında düzenlendi: