Giới thiệu
ElasticSearch là một engine để truy vấn dữ liệu với format là JSON. Nó phù hợp với các dự án hệ thống:
- Tìm kiếm text thông thường – Searching for pure text (textual search)
- Tìm kiếm text và dữ liệu có cấu trúc – Searching text and structured data (product search by name + properties)
- Tổng hợp dữ liệu – Data aggregation
- Tìm kiếm theo tọa độ – Geo Search
- Lưu trữ dữ liệu theo dạng JSON – JSON document storage
Trong bài này sẽ giới thiệu về Elastic Stack. Bao gồm 3 thành phần ElasticSearch, Kibana, Logstash
- ElasticSearch: Là engine index các thành phần và thực hiện request
- Kibana: Một software để có thể monitoring, analytics data đã được lưu tại ElasticSearch
- Logstash: Một software chuyển đổi logs, dữ liệu thành chuẩn của ElasticSearch.
ElasticSearch
- Giới thiệu
- Elasticsearch là một search engine.
- Elasticsearch được xây dựng để hoạt động như một server cloud theo cơ chế của RESTful.
- Kế thừa và phát triển từ Lucene Apache.
- Phát triển bằng ngôn ngữ java.
- Là phần mềm open-source được phát hành theo giất phép của Apache License.
- Cài đặt
- Có thể tham khảo rất nhiều nguồn khác nhau nhưng chuẩn nhất vấn là trên https://www.elastic.co
- Trước khi cài ElasticSearch cần cài java jdk 8, cài đặt java có sample như sau:
- Cài đặt elastic tham khảo: https://www.elastic.co/downloads/elasticsearch
- Các thành phần trong ElasticSearch
- Document: định nghĩa trong ElasticSearch các dữ liệu được lưu trữ là dạng JSON, Một Record lưu trữ được gọi là 1 Document. Example :
- Index: Là định nghĩa là một loại Document nó giống như dữ liệu chung có thể coi như là một dịch vụ, một đối tượng lớn trong lưu trữ. Ví dụ như là website
- Type: Mỗi index có thể có nhiều type. Type có thể hiểu như là một catalog. Đây là cách mà chúng ta đặt tên.
- Id: đây là ID riêng trong hệ thống. Kết hợp của các cái này ví dụ: blog/post/100 -> blog là index, post là type, 100 là id.
- Để hiểu rõ hơn việc Create, Update, Get của Elastic có thể tham khảo thêm https://www.elastic.co/guide/en/elasticsearch/guide/current/data-in-data-out.html
- Sample:
{
"name" : "master-node-1",
"cluster_name" : "dinhhi-my-application",
"cluster_uuid" : "gUE8Uaj2SEyeT3Cyv13tlg",
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
Kibana
Là một web interface có thể visualzire dữ liệu có trong ElasticSearch. Ngoài ra có thể thực hiện search text ngay trên Kibana- Install tham khao link: https://www.elastic.co/downloads/kibana
- Example
-
LogStash
Một engine giúp filter dữ liệu input thành dữ liệu output. Trong blog này giới thiệu về việc lưu output vào elasticsearch. Nhưng việc output có thể đẩy đi bất kỳ hệ thống lưu trữ nào. Có thể ví dụ như S3 của amazon. sample về logstash from elastic.co
- install
- https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
- sample1.conf
- File Run
-
input { tcp { port => 10000 } } filter { grok { match => {"message" => "Hello, %{WORD:name}"} } } output { elasticsearch { hosts => "http://192.168.33.100:9200" } } - Run
-
bin/logstash -f sample1.conf echo "hello world" | nc localhost 10000
- sample2
input { tcp { port => 10000 type => "apache" } } filter { if [type] == "apache" { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } remove_field => "message" } geoip { source => "clientip" fields => ["city_name", "country_name", "location", "region_name"] } fingerprint { method => "IPV4_NETWORK" source => "clientip" target => "clientip" key => 24 } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } } output { elasticsearch { hosts => "http://192.168.33.100:9200" } stdout { codec => rubydebug } }- File Run
bin/logstash -f sample2.conf cat /tmp/access.log | nc localhost 10000
- /tmp/access.log
71.141.244.242 - kurt [05/August/2017:01:48:10 -0700] "GET /admin HTTP/1.1" 301 566 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"
Summary
- Việc sử dụng hệ thống này phù hợp với các hệ thống on-premise. Khi mà phải tự xây dựng hệ thống lưu và phân tích logs.
- Nếu cho các hệ thống chỉ sử dụng thay cho dữ liệu sql bình thường chắc không cần.
- Hệ thống kết hợp trên có thể chạy trên hệ thống cluster vì elasticsearch, logstash hoàn toàn có thể chạy trên hệ thống như cluster.
Reference:
- https://www.elastic.co
- https://www.elastic.co/guide/en/logstash/current/first-event.html
- https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-7
- https://tecadmin.net/install-java-8-on-centos-rhel-and-fedora/
- https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html

Leave a comment