Tôi có một máy khách chuyển tiếp tệp nhật ký của nó tới máy chủ rsyslog trung tâm. Tôi có thể xem nhật ký trên máy chủ nhật ký hệ thống trung tâm tại đây:
root@server:/var/log# ls -al /var/log/client/
tổng cộng 1952
drwxr-xr-x 2 nhật ký hệ thống syslog 4096 ngày 19 tháng 6 07:06 .
drwxrwxr-x 14 root syslog 4096 Ngày 19 tháng 6 10:26 ..
-rw-r----- 1 nhật ký hệ thống adm 324895 ngày 19 tháng 6 16:02 auth.log
-rw-r----- 1 nhật ký hệ thống adm 31787 ngày 19 tháng 6 15:17 authpriv.log
-rw-r----- 1 nhật ký hệ thống adm 3859 ngày 19 tháng 6 15:17 cron.log
-rw-r----- 1 nhật ký hệ thống adm 96770 ngày 19 tháng 6 15:38 daemon.log
-rw-r----- 1 nhật ký hệ thống adm 1475044 ngày 19 tháng 6 16:03 kern.log
-rw-r----- 1 nhật ký hệ thống adm 11019 ngày 19 tháng 6 12:50 local0.log
-rw-r----- 1 nhật ký hệ thống adm 15883 Ngày 19 tháng 6 12:49 syslog.log
-rw-r----- 1 nhật ký hệ thống adm 1688 ngày 19 tháng 6 07:16 user.log
Tôi quan tâm nhất đến local0.log.
Tôi đã định cấu hình máy chủ rsyslog trung tâm để chuyển tiếp nhật ký tới logstash:
root@server:/etc/rsyslog.d# mèo /etc/rsyslog.d/70-output.conf
mẫu (tên = "json-mẫu"
loại = "danh sách") {
hằng số (giá trị = "{")
hằng số (giá trị = "\" @ dấu thời gian \": \"") thuộc tính (tên = "timereported" dateFormat = "rfc3339")
hằng số(giá trị="\",\"@version\":\"1")
hằng số (giá trị = "\", \ "tin nhắn \": \"") thuộc tính (tên = "tin nhắn" định dạng = "json")
hằng số (giá trị = "\", \ "sysloghost \": \"") thuộc tính (tên = "tên máy chủ")
hằng số (giá trị = "\", \ "mức độ nghiêm trọng \": \"") thuộc tính (tên = "syslogseverity-text")
hằng số (giá trị = "\", \ "cơ sở \": \"") thuộc tính (tên = "syslogfacility-text")
hằng số (giá trị = "\", \ "tên chương trình \": \"") thuộc tính (tên = "tên chương trình")
hằng số(giá trị="\",\"procid\":\"") thuộc tính(name="procid")
hằng số (giá trị = "\"}\n")
}
*.* action(type="omfwd" target="localhost" port="10514" protocol="udp" template="json-template")
Logstash được định cấu hình để chuyển tiếp nhật ký tới elaticsearch:
root@server:/etc/rsyslog.d# mèo /etc/logstash/conf.d/logstash.conf
đầu vào {
tcp {
máy chủ => "127.0.0.1"
cổng => 10514
giải mã => "json"
gõ => "rsyslog"
}
}
lọc { }
đầu ra {
nếu [loại] == "rsyslog" {
tìm kiếm đàn hồi {
máy chủ => [ "127.0.0.1:9200" ]
}
}
}
Tôi có thể thấy elaticsearch hiện có nhật ký:
root@server:/etc/rsyslog.d# curl -XGET 'http://localhost:9200/logstash-*/_search?q=*&pretty'
{
"lấy" : 4,
"timed_out" : sai,
...
"hit" : [
{
"_index" : "logstash-2021.06.19-000001",
"_type" : "_doc",
"_id" : "3YxQJHoBrZHyFIavQWQZ",
"_score" : 1,0,
"_nguồn" : {
"message" : " [20468.211706] [UFW BLOCK] IN=eth0 OUT= MAC=<snip> SRC=<snip> DST=<snip> LEN=40 TOS=0x00 PREC=0x00 TTL=245 ID=15690 PROTO=TCP SPT=43024 DPT=6780 WINDOW=1024 RES=0x00 SYN URGP=0 ",
...
Tuy nhiên, có vẻ như chỉ một số tệp nhật ký đang được chuyển tiếp tới logstash (hoặc logstash không chuyển tiếp chúng tới elaticsearch).
Nhìn vào tất cả các bản ghi trong elaticsearch (hoặc trong kibana) tôi có thể thấy /var/log/client/local0.log
đang bị bỏ qua hoàn toàn.
Có cách nào để buộc tệp nhật ký này được đưa vào không? Làm thế nào tôi có thể khắc phục sự cố này?
Cảm ơn!