Cài đặt Elasticsearch, Logstash, Kibana

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu các nền tảng phân tích dữ liệu trong môi trường ảo cho hệ sinh thái internet of things (Trang 72)

Tác giả sử dụng lệnh Compose để cài đặt chúng và chạy nền tảng này. Compose trong Docker là một công cụ để xác định và chạy nhiều container chứa ứng dụng Docker. Với Compose, người dùng sử dụng một tập tin Compose để cấu hình dịch vụ của ứng dụng. Sau đó, sử dụng một lệnh duy nhất, người dùng có thể tạo ra và bắt đầu tất cả các dịch vụ từ các tập tin cấu hình. Nói chung, Compose về cơ bản là một quá trình gồm ba bước:

(1). Xác định môi trường của ứng dụng với một dockerfile để nó có thể được sao chép bất cứ nơi nào.

(2). Xác định các dịch vụ mà tạo nên các ứng dụng trong docker- compose.yml vì vậy chúng có thể chạy cùng nhau trong một môi trường bị cô lập.

(3). Chạy Docker-compose up và công cụ Compose sẽ bắt đầu và chạy toàn bộ ứng dụng.

Các bước nói trên phải được tuân thủ để tạo ra nền tảng ELK sử dụng lệnh Compose. Nó là điều cần thiết để tạo ra một thư mục (/ home / Docker/) chứa ba thư mục: Logstash, Elasticsearch và Kibana ngoài

docker-compose.yml (Hình 3.3). Trong Dockerfiles tác giả sử dụng những hình ảnh chính thức Docker cho mỗi Logstash, Elasticsearch và Kibana được xây dựng. Trong docker-compose.yml dịch vụ bắt đầu với container Elasticsearch được xây dựng bởi đọc Dockerfile của nó và hai cổng mở: 9200 và 9300 với gắn kết các tập tin cấu hình có thể được sửa đổi bởi người dùng (Elasticsearch.yml) để được thực thi. Cuối cùng chúng ta thêm vào container này một mạng lưới (ELK) mà sẽ kết nối tất cả các container lại với nhau.

Sau Elasticsearch, container Logstash sẽ được xây dựng với cùng một cách thức bằng cách đọc dockerfile bên trong thư mục Logstash và gắn kết các tập tin cấu hình ( Logstash.yml). Nguồn có thể gửi dữ liệu đến Logstash là gọi là pipeline và trong trường hợp của tác giả (Hình 3.3). Logstash.conf nên được gắn kết để giải quyết những nguồn. Hơn nữa, tác giả sử dụng một lệnh “grok” để lọc cho Logstash để phân tích các tập tin Openvswitch log. Cuối cùng, container Logstash là thêm vào cùng một mạng (ELK). Container cuối cùng được xây dựng là Kibana sau khi đọc (Kibana.yml) tập tin cấu hình. Port 5601 được lắp để cho phép người dùng kết nối với Kibana sử dụng cổng đó. Cũng chứa Kibana là thêm vào cùng một mạng (ELK)

Sau đó sau khi một số thí nghiệm, tác giả đã phát hiện ra rằng thư mục log Openvswitch chứa các bản ghi tập tin không thể được gắn kết Logstash container. Sau khi phân tích vấn đề, tác giả phát hiện ra rằng đăng nhập thư mục (/ var / log / openvswitch) được gắn nhưng không được đọc bởi Logstash vì Logstash không được phép đọc.

Để giải quyết vấn đề này, thực thi tập tin “ start.sh ” đã được tạo ra trong (/ home / Docker) để thay đổi sự cho phép của file log openvswitch để được đọc bởi bất cứ ai trước khi lệnh Compose bắt đầu (hình 3.2), sau đó Logstash đọc và phân tích các tập tin log openvswitch.

Hình 3.2: Nội dung file start.sh

sudo chmod a + r /var/log/openvswitch/ovs-vswitchd.log sudo Docker-compose up

Hình 3.3: Kiến trúc thƣ mục của mô hình 3.3. Chạy mô hình

Sau khi cài đặt Docker và các chương trình hỗ trợ, tác giả bắt đầu chạy mô hình bằng cách mở các thiết bị đầu cuối và chọn thư mục Docker

/home/Docker Logstash config pipeline Logstash.conf Logstash.yml config Elasticsearch Elasticsearch.yml Dockerfile Dockerfile Kibana config Dockerfile Docker-compose.yml Start.sh Kibana.yml

Sau đó tác giả chạy file thực thi start.sh

Khi file start.sh chạy, container Elasticsearch sẽ được khởi tạo trước tiên, sau đó container Logstash và Kibana chạy sau cùng. Để hiển thị container chạy, tác giả mở một cửa sổ terminal mới và dùng lệnh:

Tác giả sẽ có 3 container đang chạy:

docker_elasticsearch1, docker_logstash1, docker_kibana1 tương ứng với các port.(Hình 3.4)

Hình 3.4: Các container đang hoạt động

Thông tin về Elasticsearch như phiên bản và ngày thành lập được hiển thị bằng cách truy cập Elasticsearch thông qua trang trình duyệt web và truy cập cổng TCP 9200: http://localhost:9200, ta sẽ có:

$ cd docker

$ ./start.sh

Hình 3.5: Thông tin elasticsearch 3.4. Kết quả

Kibana có trách nhiệm để hiển thị các dữ liệu phân tích. Người dùng có thể kết nối với Kibana thông qua giao thức HTTP. Đối với nền tảng của mô hình tác giả gắn cổng mặc định 5601 cho Kibana. Để mở Kibana người dùng phải đăng nhập vô http://localhost:5601 và nếu mọi thứ đã được thiết lập một cách chính xác, tác giả sẽ nhìn thấy được như trong hình 18. Tác giả xác nhận các thiết lập mặc định “Logstash-*” Index và nhấn tạo nút để tạo ra các mô hình chỉ số.

Hình 3.6 được hiển thị Kibana sau khi truy cập đầu tiên.

Trong phần trên (số 1) có một tìm kiếm bar bên dưới nó ở đó là thời gian của dữ liệu nhận được với trình bày đồ họa, trong hình 3.7 nó được hiển thị các tin nhắn đã nhận trong năm phút cuối cùng. khung thời gian có thể được thay đổi khi người dùng mong muốn.

Trong phần dưới của trang (số 2) có các tin nhắn đã được nhận bởi Logstash và lập chỉ mục bởi Elasticsearch. Phân loại của mỗi tin nhắn nhận được dựa trên bộ lọc Logstash.

Cột màu xám bên trái (số 3) có tất cả các phân loại hoặc các thẻ có được thu thập từ các dữ liệu nhận được dựa trên bộ lọc Logstash. Như chúng ta đã lựa chọn nguồn lực hai loại dữ liệu nội bộ và bên ngoài mà nhận được dữ liệu từ IoT thiết bị mạng, tác giả đã đánh dấu các dữ liệu nhận được với nguồn của nó để sử dụng tính năng phân tích của Kibana để phân biệt giữa chúng.

Các dữ liệu IoT nhận thông qua giao thức TCP với cổng 5000 nó đã được gắn thẻ với “external”, dữ liệu nội bộ của các bản ghi của Openvswitch đã được gắn thẻ với “Openvswitch”. Nó được thể hiện cũng có một số thất bại cho bộ lọc grok khi phân tích nhật ký Openvswitch.

Hình 3.8: Lĩnh vực tags và lĩnh vực host

Hình 3.8 cho thấy lĩnh vực thẻ với thống kê của các loại nguồn và lĩnh vực máy chủ với thống kê của các dữ liệu nhận được từ các máy chủ máy ảo (Openvswitch) và host (TCP) với tổng số hồ sơ dữ liệu. Bằng cách lựa chọn chỉ có một lĩnh vực ví dụ lĩnh vực tags, Kibana sẽ chỉ hiển thị đã nhận dữ liệu với lĩnh vực tags dựa trên khung thời gian đã được xác định. Người dùng có thể thêm hoặc loại bỏ một hoặc nhiều lĩnh vực hơn từ các dữ liệu lập chỉ mục để hiển thị các tin nhắn. Ví dụ, tác giả đã lựa chọn lĩnh vực tags và host, sau đó Kibana sẽ hiển thị thông báo liên quan dựa trên khung thời gian đã được chọn. (Hình 3.8). Những kết quả được chỉ cho thấy các lĩnh vực được lựa chọn và ẩn các lĩnh vực khác. Nhấn nhỏ mũi tên ở bên trái của mỗi tin nhắn sẽ thôi ẩn các lĩnh vực còn lại cho thông điệp đặc biệt này (Hình 3.8). Người dùng cũng có thể tìm kiếm một từ trong tất cả các tin nhắn nhận được bằng cách sử dụng thanh tìm kiếm ở phía trên của Kibana có hoặc không có lựa chọn bất kỳ lĩnh vực.

Kết luận chƣơng

Chương 3 giới thiệu về mô hình thực nghiệm sử dụng công cụ ELK dựa trên chương trình ảo hóa Docker. Kết quả sau khi chạy lệnh Docker compose, mô hình đã hoạt động được và cho ra kết quả tốt.

KẾT LUẬN

Luận văn tập trung nghiên cứu về các nền tảng phân tích dữ liệu Docker, Logstash, Elasticsearch, Kibana. Xây dựng các mô hình thực nghiệm sử dụng Docker nhằm phân tích, so sánh, đánh giá các thông số dữ liệu kết nối mạng. Mô hình sử dụng hai thiết bị mạng IoT làm nguồn dữ liệu: Openvswitch dưới dạng nguồn nội bộ (được cài đặt trên cùng một máy ảo) và kết nối TCP như nguồn bên ngoài.

- Kết quả đạt được của luận văn:

+ Nghiên cứu về các nền tảng phân tích dữ liệu Docker, Logstash, Elasticsearch, Kibana.

+ Xây dựng được mô hình thực nghiệm sử dụng ELK stack dựa trên Docker.

+ Tốc độ phân tích dữ liệu nhanh, hiển thị kết quả tốt trên giao diện Kibana.

+ Hệ thống máy ảo hoạt động ổn định, không bị ảnh hưởng lớn từ việc chạy mô hình trên máy ảo.

- Hạn chế của luận văn:

+ Các nguồn dữ liệu còn giả định + Chưa làm được an ninh bảo mật

+ Còn hạn chế trong việc thêm nguồn dữ liệu

+ Mô hình còn đơn giản chưa phát triển được nhiều. - Hướng phát triển, mở rộng:

+ Nghiên cứu sâu hơn về các nền tảng để áp dụng được cho các mục đích khác nhau: nghiên cứu, phát triển mô hình, …

TÀI LIỆU THAM KHẢO

A. Tiếng Việt

[1] Trần Văn Cường (2015), Luận văn thạc sỹ, Giải pháp nền tảng cho hệ thống tích hợp dữ liệu lớn và không đồng nhất, Trường Đại học công nghệ (Đại học Quốc gia Hà Nội).

[2] Trần Văn Đoàn (2013), Luận văn thạc sỹ, Công nghệ ảo hoá và ứng dụng, Học viện công nghệ bưu chính viễn thông.

[3] Trần Văn Linh (2019), Luận văn thạc sỹ, Nghiên cứu giải pháp tự động phát hiện sự cố hệ thống dựa trên công nghệ ELK (Elasticsearch, Logstash và Kibana), Trường Đại học công nghệ (Đại học Quốc gia Hà Nội).

[4] Nguyễn Thị Hà Ly (2018), Luận văn thạc sỹ, Nghiên cứu giải pháp giám sát tập trung và ứng dụng quản lý hệ thống mạng trường Đại học Hà Nội, Học viện công nghệ bưu chính viễn thông.

[5] Trần Hải Phương (2015), Luận văn thạc sỹ, Nghiên cứu công nghệ ảo hóa và ứng dụng xây dựng hệ thống thông tin doanh nghiệp, Viện Đại học mở Hà Nội. [6] Trịnh Minh Phương (2016), Luận văn thạc sỹ, Nghiên cứu ứng dụng IoT cho

giám sát môi trường, Trường Đại học công nghệ (Đại học Quốc gia Hà Nội).

B. Tiếng Anh.

[7] Aelita Skaržauskienė, Marius Kalinauskas. “The future potential of Internet of Things”, ISSN 2029-7564 (online) SOCIALINĖS

TECHNOLOGIJOS SOCIAL TECHNOLOGIES 2012, 2(1), p. 102–113. [8] Adrian Mouat, Using Docker, Published by O’Reilly Media, Inc., 1005

Gravenstein Highway North, Sebastopol, CA 95472.

[9] Information Society Technologies Advisory Group (2008). Working Group on Web-based Services Industry Version 12, 28th February 2008. [10] ISTAG, Working Group, 2008. Future Internet Infrastructure, Version 8,

23 January 2008.

[11] Kais Mekki, Eddy Bajic, Frederic Chaxel, Fernand Meyer. A comparative study of LPWAN technologies for large-scale

IoT deployment, ICT Express, Volume 5, Issue 1, 2019, Pages 1-7.

[12] Luigi Atzori, Antonio Iera, Giacomo Morabito (2010). The Internet of Things: A survey. Computer networks.

[13] Marcin Bajer. “Building an IoT Data Hub with Elasticsearch, Logstash and Kibana”, 2017 5th International Conference on Future Internet of Things and Cloud Workshops.

[14] Mikhail Simonov, Riccardo Zich, Flavia Mazzitelli (2008). RFID, energy, and internet of things.

[15] Mark Weiser (1993). Some computer science issues in ubiquitous computing. CACM, vol 36, issue 7.

[16] Santucci Gérald (2010). The Internet of Things: Between the Revolution

of the Internet and the Metamorphosis of Objects. Forum American Bar

Association.

[17] Seo, K.-T., Hwang, H.-S., Moon, I.-Y., Kwon, O.-Y., & Kim, B.-J. (2014). Performance Comparison Analysis of Linux Container and Virtual Machine for Building Cloud.

[18] Schroth, C., Janner, T. (2007). Web 2.0 and SOA: Converging Concepts Enabling the Internet of Services. IT Professional 3, 36–41.

[19] Stephan Haller, Stamatis Karnouskos, Christoph Schroth, (2009). The Internet of Things in an Enterprise Context. Volume: 5468, Issue: 1, Publisher: Springer. pp. 14-28.

[20] Xing Zhihao, Zhong Yongfeng (2010). Internet of Things and its future.

C. Internet

Phụ lục A:

Mã nguồn tập tin docker-compose.yml và tập tin cấu hình logstash.conf: Bảng A.1: docker-compose.yml version: '2' services: elasticsearch: build: elasticsearch/ volumes: - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: - "9200:9200" - "9300:9300" environment: ES_JAVA_OPTS: "-Xmx256m -Xms256m" networks: - elk logstash: build: logstash/ volumes: - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml - ./logstash/pipeline:/usr/share/logstash/pipeline - /var/log/openvswitch:/usr/share/logstash/docs ports: - "5000:5000" environment: LS_JAVA_OPTS: "-Xmx256m -Xms256m" networks: - elk depends_on: - elasticsearch kibana: build: kibana/ volumes: - ./kibana/config/:/usr/share/kibana/config ports: - "5601:5601" networks: - elk depends_on: - elasticsearch networks: elk: driver: bridge

Bảng A.2: logstash.conf

Bảng A.3: Nguồn file ảnh trên Docker

Dockerfile Content Logstash # https://github.com/elastic/logstash-docker FROM docker.elastic.co/logstash/logstash:5.6.16 Elasticsearch # https://github.com/elastic/elasticsearch-docker FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.16 Kibana # https://github.com/elastic/kibana-docker FROM docker.elastic.co/kibana/kibana:5.6.16 input { tcp { port => 5000 tags => "external" type => "external" } file { path => "/usr/share/logstash/docs/ovs-vswitchd.log" tags => "openvswitch" type => "openvswitch" start_position => "beginning" } } filter { if [type] == "openvswitch" { grok {

match => {"message" => "%{YEAR:year}-%{MONTHNUM:month}-

%{MONTHDAY:day}T%{HOUR:hour}:%{MINUTE:minute}:%{SECOND:second}Z\|% {WORD:number}\|%{WORD:kind}\|%{WORD:Relation}\|%{GREEDYDATA:Message}"}

} } }

## Add your filters / logstash plugins configuration here output {

elasticsearch {

hosts => "elasticsearch:9200" }

Bảng A.4: logstash.yml

Bảng A.5: kibana.yml

## Default Logstash configuration from Logstash-Docker. http.host: "0.0.0.0" path.config: /usr/share/logstash/pipeline ## Disable X-Pack ## see https://www.elastic.co/guide/en/x-pack/current/xpacksettings.html ## https://www.elastic.co/guide/en/x-pack/current/installingxpack.html #xpack-enabling xpack.monitoring.enabled: false

## Default Kibana configuration from kibana-Docker. server.name: kibana server.host: "0" elasticsearch.url: http://elasticsearch:9200 ## Disable X-Pack ## see https://www.elastic.co/guide/en/x-pack/current/xpacksettings.html ## https://www.elastic.co/guide/en/x-pack/current/installingxpack.html #xpack-enabling xpack.security.enabled: false xpack.monitoring.enabled: false xpack.ml.enabled: false xpack.graph.enabled: false xpack.reporting.enabled: false

Phụ lục B:

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu các nền tảng phân tích dữ liệu trong môi trường ảo cho hệ sinh thái internet of things (Trang 72)

Tải bản đầy đủ (PDF)

(88 trang)