2014-12-17 6 views
5

मैं logstash + elasticsearch का उपयोग syslog एकत्र करने के लिए और लॉग उम्र बढ़नेमैं elasticsearch-template.json

मैं logstash में elasticsearch-template.json नाम की एक फ़ाइल को खोजने के लिए टीटीएल सेट करना चाहते हैं के माध्यम से डिफ़ॉल्ट elasticsearch मानचित्रण logstash सेट कर सकते हैं,

{ 
    "template" : "logstash-*", 
    "settings" : { 
    "index.refresh_interval" : "5s" 
    }, 
    "mappings" : { 
    "_default_" : { 
     "_all" : {"enabled" : true}, 
     "dynamic_templates" : [ { 
     "string_fields" : { 
      "match" : "*", 
      "match_mapping_type" : "string", 
      "mapping" : { 
      "type" : "string", "index" : "analyzed", "omit_norms" : true, 
       "fields" : { 
       "raw" : {"type": "string", "index" : "not_analyzed", "ignore_above" : 256} 
       } 
      } 
     } 
     } ], 
     "_ttl": { 
     "enabled": true, 
     "default": "1d" 
     }, 
     "properties" : { 
     "@version": { "type": "string", "index": "not_analyzed" }, 
     "geoip" : { 
      "type" : "object", 
      "dynamic": true, 
      "path": "full", 
      "properties" : { 
       "location" : { "type" : "geo_point" } 
      } 
     } 
     } 
    } 
    } 
} 

तो logstash पुनरारंभ करें, हटाएँ: पथ logstash/logstash-1.4.2/lib/logstash/आउटपुट/elasticsearch/elasticsearch-template.json

मैं इस तरह फ़ाइल में टीटीएल जानकारी जोड़ने है सभी लोचदार खोज सूचकांक। मैं लोचदार खोज में नई अनुक्रमणिका के मैपिंग की जांच करता हूं, लेकिन यह इस तरह से काम नहीं करता है।

मैं इंडेक्स टेम्पलेट को कैसे कॉन्फ़िगर कर सकता हूं?

+0

नए आगंतुकों के लिए नहीं है, वहाँ सुविधाओं के बहुत सारे के साथ नाम "Kopf" एक प्लगइन है। उनमें से एक टेम्पलेट को आसानी से संपादित करना और इसे एक संपादक में सहेजना है। आपके क्लस्टर इत्यादि के आधार पर शर्ड्स/प्रतिकृति की संख्या बदलने जैसी चीजें – Maziyar

उत्तर

2

ऐसा लगता है कि JSON फ़ाइल सही फ़ोल्डर में नहीं है। http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html फ़ोल्डर के बारे में::

कॉन्फ़िग

सूचकांक टेम्पलेट्स भी config स्थान (path.conf) टेम्पलेट्स निर्देशिका (नोट के नीचे के भीतर रखा जा सकता है, बनाने के यहाँ टेम्पलेट का उपयोग करने के लिए कैसे पर दस्तावेज़ीकरण है उन्हें सभी मास्टर योग्य नोड्स पर रखना सुनिश्चित करें)। उदाहरण के लिए, template_1.json नामक एक फ़ाइल को कॉन्फ़िगर/टेम्पलेट्स के तहत रखा जा सकता है और यदि यह किसी इंडेक्स से मेल खाता है तो इसे जोड़ा जाएगा। यहां उल्लिखित फ़ाइल का नमूना दिया गया है:

+0

आपके उत्तर के लिए धन्यवाद। मुझे कॉन्फ़िगरेशन (path.conf) "/elasticsearch-1.4.0/config/elasticsearch.yml" में मिलती है, लेकिन इस तरह इंडेक्स टेम्पलेट का उपयोग कैसे करें? मुझे खेद है कि मुझे आपकी नमूना फ़ाइल नहीं दिखाई दे रही है। – user4369887

+0

बस अपने कॉन्फ़िगर फ़ोल्डर के अंदर टेम्पलेट फ़ोल्डर बनाएं और JSON फ़ाइल को कॉपी करें। फिर बस ईएस को पुनरारंभ करें और आपके पास मानचित्रण होना चाहिए। –

8

आपको अपनी लॉगस्टैश कॉन्फ़िगरेशन बदलने की आवश्यकता है।

यदि आपने डिफ़ॉल्ट सेटिंग्स का पालन किया है, तो लॉगस्टैश ने पहले से ही logstash नामक लोचदार खोज के अंदर एक टेम्पलेट बनाया है, लॉगस्टैश elasticsearch में संग्रहीत उस टेम्पलेट का उपयोग जारी रखेगा जबतक कि आप इसे स्पष्ट रूप से नहीं बताते।

कि टेम्पलेट फ़ाइल आप पाया संशोधित लेकिन यह है कि के अलावा, अपने logstash विन्यास में, निम्न सेट करें:

output { 
    elasticsearch { 
    ... 
    template_overwrite => true 
    ... 
    } 
} 
+1

मैं लॉगस्टैश टेम्पलेट फ़ाइल का उपयोग कैसे कर सकता हूं? यह कहा स्थित है? – learner

+1

यह आपकी लॉगस्टैश निर्देशिका में होना चाहिए, अगर आप इसे ढूंढने में विफल रहते हैं तो आप हमेशा अपना खुद का निर्माण कर सकते हैं और लॉगस्टैश की कॉन्फ़िगरेशन फ़ाइल में अनुकूलित टेम्पलेट फ़ाइल का उपयोग करने के लिए लॉगस्टैश पूछ सकते हैं। 'टेम्पलेट =>"/पथ/से/elasticsearch_template जोड़ें।json "\ n template_name =>" the_name_you_want "' आपके लॉगस्टैश कॉन्फ़िगरेशन में। मेरे पास यहां उदाहरण हैं: https://github.com/xialingxiao/andokaelk/blob/master/roles/logstash/templates/logstash_connector.conf लॉगस्टैश कॉन्फ़िगरेशन के लिए और elasticsearch_template के लिए https://github.com/xialingxiao/andokaelk/blob/master/roles/logstash/templates/elasticsearch_template.json। – lingxiao

+0

ध्यान दें कि 'elasticsearch_template.json' में 'टेम्पलेट' फ़ील्ड' elasticsearch' इंडेक्स 'नाम लॉगस्टैश' logstash.conf' में कॉन्फ़िगर करने के लिए लिख रहा है। – lingxiao

0

मैं elasticsearch उत्पादन ब्लॉक में नए template.json फ़ाइल बनाया है और उसमें परिभाषित पथ गए logstash.yml कॉन्फ़िग फ़ाइल की:

input { 

file { 
path => "/your-path-to-directory/*.log" 
type => "name-of-type" 
} 
} 
: लचीला के लिए

stdout { codec => json_lines } 

elasticsearch { 

"hosts" => ["ip:port"] 
"index" => "name-of-index-%{+dd.MM.YYYY}" 
template => "/{path-to-logstash-folder}/templates/your-template.json" 
template_overwrite => true 
manage_template => false 
} 

DOCUMENT_TYPE मैं logstash.yml कॉन्फ़िग फ़ाइल के इनपुट ब्लॉक में परिभाषित

मेरी template.json फ़ाइल

{ 
"name-of-index": { 
"order": 0, 
"version": 50001, 
"template": "name-of-index-*", 
"settings": { 
    "index": { 
    "refresh_interval": "5s" 
    } 
}, 
"mappings": { 
    "_default_": { 
    "dynamic_templates": [ 
     { 
     "message_field": { 
      "path_match": "message", 
      "mapping": { 
      "norms": false, 
      "type": "text" 
      }, 
      "match_mapping_type": "string" 
     } 
     }, 
     { 
     "string_fields": { 
      "mapping": { 
      "norms": false, 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword" 
       } 
      } 
      }, 
      "match_mapping_type": "string", 
      "match": "*" 
     } 
     } 
    ], 
    "_all": { 
     "norms": false, 
     "enabled": true 
    }, 
    "properties": { 
     "@timestamp": { 
     "include_in_all": false, 
     "type": "date" 
     }, 
     "geoip": { 
     "dynamic": true, 
     "properties": { 
      "ip": { 
      "type": "ip" 
      }, 
      "latitude": { 
      "type": "half_float" 
      }, 
      "location": { 
      "type": "geo_point" 
      }, 
      "longitude": { 
      "type": "half_float" 
      } 
     } 
     }, 
     "@version": { 
     "include_in_all": false, 
     "type": "keyword" 
     } 
    } 
    } 
}, 
"aliases": {} 
} 
}