Trong bài tutorial này, chúng ta sẽ tiến hành chạy thử StormCrawler để crawl dữ liệu từ danh sách các trang web cho trước và hiện thị kết quả bằng Kibana (xem thêm hướng dẫn cài đặt trong bài tutorial trước).

Nội dung trong bài này chủ yếu thực hiện theo các bước như trong video hướng dẫn StormCrawler + ElasticSearch. Trước hết ta tiến hành download storm-crawler trên trang Github của DigitalPebble. Sau đó ta vào thư mục external/elasticsearch của file vừa download được để copy thư mục kibana và 4 files là es-conf.yaml, es-crawler.flux, ES_IndexInit.sh và es-injector.flux vào trong thư mục stormcrawler đã thiết lập trong bài Cài đặt StormCrawler, ElasticSearch và Kibana (Trong bài tutorial này, chúng ta sẽ chủ yếu làm việc với thư mục stormcrawler này).

Ngoài ra ta cũng cần danh sách các trang web để crawl, do đó ta sử dụng danh sách 1000 website của DigitalPebble trong stormcrawlerfight project (copy file 1000K2016.txt vào thư mục stormcrawler như trên rồi đổi tên thành seeds.txt(tên seeds.txt được quy định trong file es-injector.flux)

Do ta sử dụng kết hợp StormCrawler nên ta cần thêm dependency của storm-crawler-elasticseach như sau vào file pom.xml:

Tiếp theo ta tiến hành khởi tạo Index bằng cách sử dụng dòng lênh:

Tiếp theo ta sử dụng lệnh “mvn clean package” để tạo jar file như sau (file .jar sẽ được tạo ra trong thư mục target):

Tiếp theo ta khởi chạy ElasticSearch và Kibana bằng dòng lệnh sau (“&” được dùng để chạy chương trình ở dạng Backgroud, qua đó giúp ta có thể chạy được nhiều chương trình trên cùng một cửa sổ Terminal)

Thử truy cập status của ElasticSearch ta được kết quả sau (ở đây giá trị của hits là 0):

Tiếp theo ta sử dụng dòng lệnh sau để cấu hình StormCrawler thu thập dữ liệu từ các trang web trong file seeds.txt (xem thêm README.md trong thư mục stormcrawler)

Sau khi chạy xong dòng lệnh, ta truy cập lại vào status của ElasticSearch, ta thấy sự thay đổi so với ban đầu (hits ở đây đã tăng thành 1000, chính là số url trong file seeds.txt)

Tiếp theo ta tiến hành crawl các trang đã nạp ở trên bằng lệnh sau (ta thấy số lượng hits tăng dần theo thời gian do số lượng url được crawl tăng lên):

Tiếp theo ta sử dụng Kibana để trực quan hóa dữ liệu được crawl về bằng cách truy cập vào địa chỉ http://localhost:5601 . Ta vào mục Management rồi chọn Index Patterns để tạo hai index mới là metrics (với timestamp) và status (chọn “I don’t want to use Time Filter”)

Cũng trong mục Management, ta chọn Saved Objects, chọn dashboard trong mục Type rồi nhấn Import để Import file metrics.json và status.json trong thư mục stormcrawler/kibana (chọn index phù hợp trong mục New index)

Sau khi Import xong, ta được mục Crawl metrics và Crawl status như sau:

Nhấp chuột vào Crawl metrics rồi chọn View dashboard ở góc trên bên phải, ta được giao diện hiển thị dữ liệu của Kibana:

Thực hiện tương tự với Crawl status ta được kết quả:

Như vậy ta đã hoàn thành việc sử dụng StormCrawler để crawl các url cho trước và hiện thị dữ liệu thu được bằng ElasticSearch và Kibana (ngoài tính năng Dashboard, các bạn có thể tham khảo thêm các chức năng khác của Kibana như Visualize, Timelion,…)

Tháng Một 2, 2019
ITechSeeker