Tôi đã thiết lập các công cụ xem nhật ký Elasticsearch, Logstash, Kibana trên hệ thống của mình. Có 2 máy trong cấu hình của tôi bây giờ (Amazon EC2 trường hợp):Nhận địa chỉ IP của máy chuyển tiếp Logstash
- 54.251.120.171 - Logstash-server nơi ELK được cài đặt
- 54.249.59.224 - Logstash-giao nhận - gửi "/ var/log/messages "đăng nhập để logstash-server
On logstash-server, điều này configs của tôi (trong các tập tin khác nhau) như sau: -
input {
lumberjack {
port => 5000
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
On logstash-giao nhận, điều này những tập tin hình cấu hình của tôi như thế nào, nó sẽ chuyển tiếp thư mục/var/log/messages,/var/log/an toàn bản ghi để logstash-server
{
"network": {
"servers": [ "54.251.120.171:5000" ],
"timeout": 15,
"ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
},
"files": [
{
"paths": [
"/var/log/messages",
"/var/log/secure"
],
"fields": { "type": "syslog" }
}
]
}
Đây là những gì giao diện Kibana của tôi trông giống như sau khi nó đã lấy các bản ghi chỉ mục từ Elasticsearch.
Vì vậy, câu hỏi của tôi là, tôi cần một cách để lấy địa chỉ IP của logstash-forwarder ví dụ: 54.249.59.224 trong trường hợp có một sự kiện đăng nhập.
Lý do tại sao tôi hỏi đây là một tình huống thực tế, chúng tôi có thể có nhiều người chuyển tiếp logstash (nói 10), với tất cả 10 người trong số họ gửi nhật ký tới máy chủ logstash của chúng tôi. Vì vậy, tôi cần một cách nào đó để gắn thẻ tất cả các sự kiện nhật ký, để tôi có thể xác định logstash-server nào đã gửi sự kiện nhật ký nào.
Tôi sẽ cần phải sử dụng địa chỉ IP (có thể một số thông tin khác) để tìm kiếm các sự kiện nhật ký trong giao diện Kibana.
Ai đó có thể giúp tôi thực hiện việc này không? :)
Hoặc trong trường hợp ai đó có ý tưởng tốt hơn cách thực hiện điều này một cách hiệu quả theo cách khác, bạn được chào đón nhiều nhất!
Như bạn có thể thấy trong snap kibana tôi đã đính kèm, trường receive_from báo cáo tên máy chủ là 'eva-all', nhưng tôi mong nó báo cáo địa chỉ IP của máy chủ tức là '54 .249.59.224 'Bạn có thể chỉ cho tôi cách sửa đổi mã để làm điều này không. Rất tiếc, tôi vẫn không thể hiểu đầy đủ cú pháp hoặc khả năng của bộ lọc và bộ lọc. – chinmay
Tôi đã thêm một máy khác có IP là '46 .137.246.88 ', về cơ bản Kibana nhận nhật ký từ 2 máy (cả hai đều có tên máy chủ), vì vậy tôi không thể phân biệt được nhật ký nào từ đó máy. – chinmay
Như bạn đã thấy trong cấu hình đăng nhập-chuyển tiếp, bạn có thể gửi các trường từ người gửi hàng. Thêm một trường khác và cung cấp cho nó một giá trị cho phép bạn phân biệt nó với một máy khác. Bạn cũng có thể xem xét không cho máy của bạn cùng một tên máy chủ. –