Tìm hiểu hệ thống quản lý log trong trái tim ELK Stack, thực hiện setup Elasticsearch Logstash Kibana trên CentOS, thiết lập Filebeat để thu thập file log


Bạn đang xem: Elk là gì

Giới thiệu Elastic Stack

Elastic Stack (ELK Stack) - là 1 trong nhóm ứng dụng nguồn mở, dựa vào Elastic nó được cho phép tìm kiếm, phân tích, biểu thị trực quan các log tích lũy được từ những nguồn, những log này là ngẫu nhiên định dạng nào, ELK là trung chổ chính giữa phân tích log. Trung trung khu log này có lợi khi trợ giúp khẳng định các vụ việc phát sinh trên những server, các ứng dụng mà chúng ta không cần truy vấn trực tiếp vào log của từng server, từng ứng dụng. Thường để xây dựng nên trung trung tâm này dùng đến ELK với những thành phần thiết yếu gồm:


*

Xem thêm: Tên Con Trai Đẹp Nhất Năm 2022, Đặt Tên Con Trai 2022

Elasticsearch - máy chủ lưu trữ với tìm kiếm dữ liệu Logstash - thành phần giải pháp xử lý dữ liệu, tiếp đến nó gửi tài liệu nhận được mang đến Elasticsearch để tàng trữ Kibana - ứng dụng nền web nhằm tìm kiếm và xem trực quan các logs Beats - giữ hộ dữ liệu thu thập từ log của máy đến Logstash

Cài đặt Elastic Stack (ELK) trên CentOS

Server thiết đặt ở đây tiến hành trên CentOS 7, trước hết cần bảo vệ cài đặt Java (openjdk)

yum update -yyum install java-1.8.0-openjdk-devel -y# kiểm tra bởi lệnhjava -version

*

Bước 1) cài đặt Elasticsearch CentOS

tiến hành lệnh:

# thêm repoecho "name=Elasticsearch repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md" > /etc/yum.repos.d/elasticsearch.repo# sở hữu đặtyum install elasticsearch -y# kích hoạt dịch vụsystemctl enable elasticsearch.servicesystemctl start elasticsearch.service# Mở firewall cổng 9200 mang đến Es nếu như cầnfirewall-cmd --permanent --add-port=9200/tcpfirewall-cmd --permanent --add-port=9300/tcpfirewall-cmd --reload# chất vấn EScurl -XGET localhost:9200

*

Bước 2) setup Kibana CentOS

Kibana là vận dụng nền web, nó lắng nghe những truy vấn http gửi mang lại cổng mặc định 5601, phần này sẽ thông số kỹ thuật truy cập trực tiếp đến cổng 5601 (cấu hình server.host nghỉ ngơi dưới), nếu tiến hành thực tế có thể bạn cần một proxy (ví dụ Nginx) để bảo vệ bảo mật, kiểm soát được user bao gồm quền truy cập Kibana

yum install kibana -ysystemctl enable kibana# cấu hình truy cập được từ phần lớn IPecho "server.host: 0.0.0.0" >> /etc/kibana/kibana.ymlsystemctl start kibanafirewall-cmd --permanent --add-port=5601/tcpfirewall-cmd --permanent --add-port=5601/tcpfirewall-cmd --reload chất vấn Kibana bằng phương pháp truy cập đến địa chỉ IP server với cổng là 5601, ví dụ thiết bị server đang có showroom 192.168.1.104 thì truy cập đến http://192.168.1.104

*

Bước 3) thiết lập Logstash CentOS

Logstash là khu vực nhận tài liệu đầu vào, nó xử lý kế tiếp chuyển giữ tại Elasticseach. Luồng thao tác của nó đề xuất được cấu hình gồm cấu hình đầu vào đầu vào và đầu ra output output. Trước tiên thiết đặt bằng lệnh:

yum install logstash -y cấu hình input: file thông số kỹ thuật tại /etc/logstash/conf.d/02-beats-input.conf, phần này sẽ thông số kỹ thuật để nó nhân nguồn vào do Beats gửi cho cổng beats, thực hiện lệnh sau để chế tạo ra file 02-beats-input.conf

echo "input beats host => "0.0.0.0" port => 5044 " > /etc/logstash/conf.d/02-beats-input.conf cấu hình đầu ra, file cấu hình tại /etc/logstash/conf.d/30-elasticsearch-output.conf, phần này sẽ thông số kỹ thuật sau khi Logstash nhận dữ liệu đầu vào tự Beats, nó xử lý rồi gửi mang lại Elasticsearch (localhost:9200). Triển khai lệnh để tạo nên file 30-elasticsearch-output.conf

echo "output elasticsearch hosts => <"localhost:9200"> manage_template => false index => "%<
metadata>-%+YYYY.MM.dd" " > /etc/logstash/conf.d/30-elasticsearch-output.confNgoài ra nếu còn muốn lọc các log, định dạng lại các dòng log sinh sống dạng dễ dàng đọc, dễ hiểu hơn thì thông số kỹ thuật filter tại file/etc/logstash/conf.d/10-syslog-filter.conf, lấy ví dụ như sau là cấu hình định dạng lại kết cấu system log, lấy theo hướng dẫn tại document của Logstash

echo "filter if == "system" if == "auth" grok match => "message" => <"%SYSLOGTIMESTAMP: %SYSLOGHOST: sshd(?:<%POSINT:>)?: %DATA: %DATA: for (invalid user )?%DATA: from %IPORHOST: port %NUMBER: ssh2(: %GREEDYDATA:)?", "%SYSLOGTIMESTAMP: %SYSLOGHOST: sshd(?:<%POSINT:>)?: %DATA: user %DATA: from %IPORHOST:", "%SYSLOGTIMESTAMP: %SYSLOGHOST: sshd(?:<%POSINT:>)?: Did not receive identification string from %IPORHOST:", "%SYSLOGTIMESTAMP: %SYSLOGHOST: sudo(?:<%POSINT:>)?: s*%DATA: :( %DATA: ;)? TTY=%DATA: ; PWD=%DATA: ; USER=%DATA: ; COMMAND=%GREEDYDATA:", "%SYSLOGTIMESTAMP: %SYSLOGHOST: groupadd(?:<%POSINT:>)?: new group: name=%DATA:system.auth.groupadd.name, GID=%NUMBER:system.auth.groupadd.gid", "%SYSLOGTIMESTAMP: %SYSLOGHOST: useradd(?:<%POSINT:>)?: new user: name=%DATA:, UID=%NUMBER:, GID=%NUMBER:, home=%DATA:, shell=%DATA:$", "%SYSLOGTIMESTAMP: %SYSLOGHOST: %DATA:(?:<%POSINT:>)?: %GREEDYMULTILINE:"> pattern_definitions => )*" remove_field => "message" date match => < "", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" > geoip source => "" target => "" else if == "syslog" grok match => "message" => <"%SYSLOGTIMESTAMP: %SYSLOGHOST: %DATA:(?:<%POSINT:>)?: %GREEDYMULTILINE:"> pattern_definitions => "GREEDYMULTILINE" => "(. Remove_field => "message" date match => < "", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" > " > /etc/logstash/conf.d/10-syslog-filter.conf thực hiện lệnh sau để xác định xem cấu hình có lỗi gì không

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t Có thông tin Config Validation Result: OK. Là được

*

Có thể phải mở cổng 5044 làm việc trên nhằm nó nhận dữ liệu từ hệ thống khác

firewall-cmd --permanent --add-port=5044/tcpfirewall-cmd --permanent --add-port=5044/tcpfirewall-cmd --reload Kích hoạt dịch vụ

systemctl enable logstashsystemctl start logstash Đến đây đã tất cả một ELK hệ thống thống trị logs trung tâm. Việc tiếp sau là cài đặt để các logs từ những Server khác nhau gửi cho trung trung tâm này.

Bước 4) thiết đặt Beats/Filebeat CentOS

Beats là một trong nền tảng để gửi dữ liệu vào Logstash, nó có nhiều thành phần nhưu:

Packetbeat : mang / gửi các gói tin mạng Filebeat : mang / gửi những file log của vps Metricbeat : đem / gửi những log thương mại & dịch vụ (Apache log, mysql log ...) ...

Trong phần này sẽ thử dùng Filebeat, tích lũy các tệp tin log bên trên Server thiết đặt nó, cấu hình để nó gửi đến Logstash

Cài đặt

yum install filebeat -y File thông số kỹ thuật tại /etc/filebeat/filebeat.yml, mở ra chỉnh sửa các nội dung sau:

Tìm cho mục Elasticsearch output bình luận lại nhằm không gởi log thẳng mang lại Elasticsearch

#output.elasticsearch: # Array of hosts lớn connect to. # hosts: <"localhost:9200"> tìm tới Logstash output, quăng quật các phản hồi để yêu ước filebeat gửi mang đến Logstash (địa chỉ sử dụng là localhost:)

output.logstash: # The Logstash hosts hosts: <"localhost:5044"> bên cạnh đó tại mục filebeat.inputs: bao gồm phần

paths: - /var/log/*.log #- c:programdataelasticsearchlogs* có nghĩa là nó đang thu thập logs từ các file sinh hoạt /var/log/*.log, nếu muốn cấu hình thu thập thêm log từ các đường dẫn khác cho những ứng dụng không giống không viết log ra /va/log thì tự thêm vào, ví dụ trường hợp Apache của công ty cài để lên máy thông số kỹ thuật để nó viết log ra /etc/httpd/logs/access_log, nhằm filebeat tích lũy thì tiếp tế - /etc/httpd/logs/access_log

paths: - /var/log/*.log - /etc/httpd/logs/access_log filebeat có khá nhiều module tương ứng với nhiều loại log nó thu thập, để thấy trạng thái các module này tiến hành lệnh

filebeat modules list tiếp đến nếu ao ước kích hoạt module nào thì triển khai theo cú pháp, lấy một ví dụ kích hoạt system, apache, mysql ...

filebeat modules enable systemfilebeat modules enable apachefilebeat modules enable mysql Kích hoạt thương mại dịch vụ filebeat

systemctl enable filebeatsystemctl start filebeat

Xem log trong Kibana

Đến đây bạn đã có một ELK (một trung tâm thống trị log), nó đã nhận log xuất phát từ một server nhờ cất hộ đến bằng Filebeat (nếu ước ao server khác gửi mang đến nữa thì cài Filebeat trên hệ thống nguồn và cấu hình như trên)

Truy cập vào Kibana theo địa chỉ IP của ELK, ví dụ http://192.168.1.104:5601, nhấp vào phần Discover, chọn mục Index Management của Elasticsearch, các bạn sẽ thấy những index gồm tiền tố là filebeat-*, đó là các index lưu dữ liệu log do Filebeat gửi cho Logstash cùng Logstash để gửi lưu tại Elasticsearch. (Nếu có không ít server gửi mang lại thì có khá nhiều index dạng này)

*

Để tầm nã vấn bằng Kibana ta sẽ khởi tạo các Index patterns, chính là truy vấn thông tin các index bao gồm tiền tố là filebeat-, bấm vào Index patterns của Kibana, nhấp chuột Create index pattern