7

मैंने अपने सिस्टम पर लोचदार खोज, लॉगस्टैश, किबाना लॉग देखने के टूल सेट किए हैं। अब मेरी विन्यास में 2 मशीनों (अमेज़न EC2 उदाहरण) कर रहे हैं:लॉगस्टैश-फ़ॉरवर्डर मशीन का आईपी पता प्राप्त करना

  • 54.251.120.171 - Logstash-सर्वर जहां ELK
  • 54.249.59.224 स्थापित किया गया है - Logstash-फारवर्डर - भेजता है "/ var/लॉग/संदेशों

    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 } 
    } 
    

    logstash-फारवर्डर पर, यह क्या मेरी कॉन्फ़िग फ़ाइल दिखता है -: "Logstash-सर्वर को यह क्या मेरी कॉन्फ़िगरेशन (विभिन्न फाइलों में) की तरह लग रहे लोग इन

logstash-सर्वर पर, की तरह, यह अग्रेषित करता है/var/log/संदेश,/var/log/सुरक्षित लॉग logstash-सर्वर

{ 
    "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" } 
     } 
    ] 
} 

यह मेरा Kibana इंटरफेस जैसे कि यह Elasticsearch से अनुक्रमित लॉग लाया था के बाद लग रहा है क्या है करने के लिए। enter image description here

तो मेरे सवाल है, मैं वहाँ एक लॉग घटना होने की स्थिति में logstash-फारवर्डर अर्थात 54.249.59.224 के आईपी पते को पुनः प्राप्त करने के लिए एक तरीका होना चाहिए।

कारण मैं यह पूछ रहा हूं कि एक असली परिदृश्य में है, हमारे पास कई लॉगस्टैश-फॉरवर्डर्स (10 कहें) हो सकते हैं, जिनमें से सभी 10 हमारे लॉगस्टैश-सर्वर पर लॉग भेज रहे हैं। तो मुझे सभी लॉग इवेंट्स टैग करने के लिए किसी तरह की ज़रूरत है, ताकि मैं पहचान सकूं कि कौन से लॉगस्टैश-सर्वर ने लॉग लॉग भेजा है।

किबाना इंटरफ़ेस में लॉग इवेंट खोजने के लिए मुझे आईपी पता (शायद कुछ अन्य जानकारी भी) का उपयोग करने की आवश्यकता होगी।

क्या कोई मुझे ऐसा करने में मदद कर सकता है? :)

या किसी को यह बेहतर विचार है कि इसे प्रभावी तरीके से कैसे करें, आपका स्वागत है!

उत्तर

3

ऐसा करने के लिए आपको Lumberjack इनपुट फ़िल्टर और सर्वर को संशोधित करने की आवश्यकता होगी। निम्नलिखित डिफ देखें:

https://github.com/stanhu/logstash-input-lumberjack/commit/0861c9d95caa46370f17a82353710bc78ea2c82e

https://github.com/stanhu/logstash-forwarder/commit/b711d273a24ab3fe1b4a7b6005d2f26983cac859

तक इन परिवर्तनों logstash-फारवर्डर और logstash-इनपुट-लकड़हारा में विलय कर दिया हो, सबसे आसान तरीका है अब इस अधिकार का उपयोग करने के लिए सीधे अपने स्थापित फ़ाइलों को संशोधित करने के लिए है । आप वर्तमान डेबियन संकुल का उपयोग कर रहे हैं, वे यहां हैं:

/opt/logstash/lib/logstash/inputs/lumberjack.rb 
/opt/logstash/vendor/bundle/jruby/1.9/gems/jls-lumberjack-0.0.20/lib/lumberjack/server.rb 
इनपुट फ़िल्टर विन्यास फाइल करने के लिए

(जैसे /etc/logstash/conf.d/01-lumberjack-input.conf), जोड़ें:

client_address_field => "client_address" 

आपका logstash config कुछ इस तरह दिखना चाहिए:

मशीन पर
input { 
    lumberjack { 
    host => "localhost" 
    port => 5000 
    type => "logs" 
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" 
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" 
    client_address_field => "client_address" 
    } 
} 

पुनः प्रारंभ logstash, और जाँच client_address क्षेत्र अब प्रत्येक संदेश में जोड़ा जा रहा है या नहीं।

0

यह 'मेजबान' फ़ील्ड है (जिसे आप 'प्राप्त_from' पर भी कॉपी कर रहे हैं) है।

+0

जैसा कि आप किबाना स्नैप में संलग्न कर सकते हैं, मैंने प्राप्त किया है, प्राप्त_from फ़ील्ड होस्ट नाम को 'eva-all' होने की रिपोर्ट कर रहा है, लेकिन मुझे उम्मीद है कि यह होस्ट के आईपी पते यानी '54 .249.59.224 'क्या आप मुझे यह इंगित करने के लिए कोड को संशोधित करने के लिए इंगित कर सकते हैं। क्षमा करें मैं अभी भी पूरी तरह से वाक्यविन्यास या grok और फिल्टर की क्षमताओं को समझने में सक्षम नहीं हूँ। – chinmay

+0

मैंने एक और मशीन जोड़ा जिसका आईपी '46.137.246.88 'है, इसलिए मूल रूप से किबाना को 2 मशीनों से लॉग मिल रहा है (दोनों होस्ट-नाम ईवा-सब हैं), इसलिए मैं किस लॉग के रूप में अंतर करने में सक्षम नहीं हूं मशीन से – chinmay

+2

जैसा कि आपने अपनी लॉगस्टैश-फ़ॉरवर्डर कॉन्फ़िगरेशन में दिखाया है, आप शिपर से फ़ील्ड भेज सकते हैं। एक और फ़ील्ड जोड़ें और इसे एक मान दें जो आपको इसे अन्य मशीन से अलग करने देगा। आप अपनी मशीनों को एक ही होस्टनाम नहीं देने पर विचार कर सकते हैं। –

संबंधित मुद्दे