Mô hình thử nghiệm đối với hệ thống BVCare trong hình 3.2 bao gồm 3 luồng dữ liệu: (I) : Luồng trích xuất, tích hợp, giám sát, cảnh báo lỗi dữ liệu log trên máy chủ Apache Http.
(II) : Luồng trích xuất, tích hợp, giám sát, cảnh báo lỗi dữ liệu log trên các máy chủ ứng dụng.
(III) : Luồng trích xuất, tích hợp, giám sát, cảnh báo lỗi dữ liệu log trên các máy chủ cơ sở dữ liệu.
Dữ liệu log được Logstash trích xuất và tổng hợp theo công nghệ ETL, dữ liệu từ Logstash được đưa vào 2 đầu ra là ElasticSearch để đánh chỉ mục và Email Server để gửi email cảnh báo tự động nếu lỗi được phát hiện trong dữ liệu log. Sau đó dữ liệu
sau khi được đánh chỉ mục trong ElasticSearch được sử dụng bởi Kibana để người dùng, các nhà phân tích dữ liệu xây dựng các biểu đồ, trừu tượng hóa dữ liệu để phân tích chúng.
Với mỗi thành phần trong hệ thống (Http, ứng dụng, cơ sở dữ liệu) sẽ có dữ liệu log với các cấu trúc khác nhau, tuy nhiên để cấu hình Logstash trích xuất và tích hợp dữ liệu log vào ElasticSearch và gửi email cảnh báo tự động khi phát hiện mã lỗi ta phải thực hiện cấu hình cho 3 thành phần: Input, Filter và Output tương ứng với 3 tiến trình trong công nghệ ETL là Extract, Transform và Load. Chúng tôi xây dựng sơ đồ khối chung để xử l cho nhiều loại dữ liệu log như sau:
Kiểm tra có dữ liệu thay đổi hay không?
Đọc tệp dữ liệu lưu ký
Không thay đổi Có thay đổi
File input Plugin:
input { file { path => "/u01/app/oracle/diag/ rdbms/bvcaredb/bvcaredb1/trace/ alert_ bvcaredb1.log" } }
Lọc, chuẩn hóa dữ liệu lưu ký
(1)
Đưa dữ liệu vào ElasticSearch đánh chỉ mục
Kiểm tra mã lỗi
Gửi email cảnh báo
Có mã lỗi
Không có lỗi
Filter Plugin:
filter {
# Kết hợp nhiều dòng lưu ký của cùng 1 mốc thời gian thành 1 sự kiện multiline {
pattern => "%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}" negate => true
what => "previous" }
…….
ElasticSearch output Plugin:
# đưa dữ liệu vào đánh chỉ mục trong ElasticSearch elasticsearch { hosts => ["elk:9200"] index => "oracle-%{+YYYY.MM.dd}" } …….
Email output Plugin:
if "ORA-" in [message] { email { port => 587 address => "smtp.gmail.com" username => "linh****@gmail.com" password => "*****" authentication => "plain" use_tls => true from => " linh****@gmail.com" subject => "Cảnh Báo: Có lỗi được tìm thấy trong dữ liệu lưu ký cơ sở dữ liệu hệ thống BVCare" to => "tranvan.linh@baoviet.com.vn" via => "smtp" body => "%{message}" debug => true }