লগস্ট্যাশের সাহায্যে একাধিক ভিন্ন ভিন্ন ইনপুট কীভাবে পরিচালনা করবেন?


95

ধরা যাক আপনার কাছে প্রযুক্তিগত এবং ব্যবসায়িক লগের মতো 2 খুব আলাদা ধরণের লগ রয়েছে এবং আপনি চান:

  • কাঁচা প্রযুক্তিগত লগগুলি একটি gelfআউটপুট ব্যবহার করে একটি গ্রেলোগ 2 সার্ভারের দিকে যেতে হবে ,
  • উত্সর্গীকৃত elasticsearch_httpআউটপুট ব্যবহার করে জসন ব্যবসায় লগগুলি একটি স্থিতিস্থাপক ক্লাস্টারে সংরক্ষণ করা হবে ।

আমি জানি যে Syslog-NGউদাহরণস্বরূপ, কনফিগারেশন ফাইলটি বিভিন্ন স্বতন্ত্র ইনপুটগুলি সংজ্ঞায়িত করতে দেয় যা প্রেরণের আগে আলাদাভাবে প্রক্রিয়া করা যায়; কি Logstashকরতে অক্ষম বলে মনে হচ্ছে। এমনকি যদি একটি উদাহরণ দুটি নির্দিষ্ট কনফিগারেশন ফাইল দিয়ে শুরু করা যায় তবে সমস্ত লগ একই চ্যানেল নেয় এবং একই প্রক্রিয়া প্রয়োগ করা হয় ...

আমার কাছে বিভিন্ন ধরণের লগ থাকার মতো যতগুলি দৃষ্টান্ত চালানো উচিত?


4
আপনার বেন লিমের সঠিক উত্তরটি গ্রহণ করা উচিত!
বেন হুইলার

উত্তর:


191

আমার কাছে বিভিন্ন ধরণের লগ থাকার মতো যতগুলি দৃষ্টান্ত চালানো উচিত?

না! আপনি বিভিন্ন ধরণের লগগুলি পরিচালনা করতে কেবল একটি উদাহরণ চালাতে পারেন।

লগস্ট্যাশ কনফিগারেশন ফাইলে আপনি প্রতিটি ইনপুট বিভিন্ন ধরণের দিয়ে নির্দিষ্ট করতে পারেন । তারপর ফিল্টার আপনি ব্যবহার করতে পারেন যদি স্বতন্ত্র বিভিন্ন প্রক্রিয়াকরণ, এবং এছাড়াও আউটপুট এ আপনি "যদি" বিভিন্ন গন্তব্যে আউটপুট ব্যবহার করতে পারেন।

input {
    file {
            type => "technical"
            path => "/home/technical/log"
    }
    file {
            type => "business"
            path => "/home/business/log"
    }
} 
filter {
    if [type] == "technical" {
            # processing .......
    }
    if [type] == "business" {
            # processing .......
    }
}
output {
    if [type] == "technical" {
            # output to gelf
    }
    if [type] == "business" {
            # output to elasticsearch
    }
}

আশা করি এটি আপনাকে সহায়তা করতে পারে :)


4
আপনি ফিল্টার এবং আউটপুট সংজ্ঞাগুলিতে typeঅ্যাট্রিবিউট (একই type => "value"সিনট্যাক্স সহ) ব্যবহার করতে পারেন যা কনফিগার ফাইলের মধ্যে অতিরিক্ত ফরম্যাটিংটি কিছুটা কমিয়ে দেওয়া উচিত। উদাহরণ: gist.github.com/fairchild/3030472 প্রতি ডকুমেন্টেশন: এই ইনপুট দ্বারা পরিচালিত সমস্ত ইভেন্টে একটি 'টাইপ' ক্ষেত্র যুক্ত করুন। প্রকারগুলি ফিল্টার অ্যাক্টিভেশনের জন্য ব্যবহৃত হয়। প্রকারটি ইভেন্টের অংশ হিসাবে খোদাই করা থাকে, তাই আপনি ওয়েব ইন্টারফেসে এটি অনুসন্ধান করতেও টাইপটি ব্যবহার করতে পারেন।
টনি সিজারো

4
ঠিক আছে, দেখে মনে হচ্ছে বেন যা প্রদান করেছিল তা হ'ল এটি করার নতুন উপায়। যখন আমি type => "value"একটি আউটপুট ব্যবহার করি , আমি নিম্নলিখিত বার্তাগুলি প্রদর্শিত হয়েছিল: "আপনি স্টডআউটে একটি অবচিত কনফিগার সেটিং" টাইপ "সেট ব্যবহার করছেন re অবজ্ঞাত সেটিংস কাজ চালিয়ে যাবে, তবে ভবিষ্যতে লগস্ট্যাশ থেকে অপসারণের জন্য নির্ধারিত রয়েছে achieve আপনি অর্জন করতে পারেন নতুন কন্ডিশনালের সাথে একই আচরণ, যেমন: if [type] == "sometype" { stdout { ... } }"। আমি আমার আগের মন্তব্যটি প্রত্যাহার করি। :)
টনি সিজারো

নোট করুন যে typeইতিমধ্যে ইনপুট থেকে কোনও ধরণের ক্ষেত্র থাকলে অ্যাট্রিবিউটটি প্রয়োগ করা হবে না। এটি একটি বিশেষ বৈশিষ্ট্য যা ওভাররাইড করে না এবং এটি নথিভুক্ত হয়। আমি ইলাস্টিকটিতে একটি টিকিট খুললাম এবং তারা আমাকে ব্যবহার করার tagsবা add_fieldতার পরিবর্তেtype
BornToCode

@ বার্নটোকোড, আমি বেশ বুঝতে পারি না। আপনি কি বলছেন যে বেনের কোডটিতে কিছু ভুল আছে? অথবা লগ পাথগুলি একই ফাইল হলে এটি কাজ করবে না? এমন দৃশ্য যেখানে এটি কাজ করে না?
বেন হুইলার

4
@ বেনলিম ওপি আপনার উত্তর গ্রহণ করে নি তবে আমি এটি সবচেয়ে সহায়ক এবং আপনাকে ভোট দিয়েছি বলে মনে হয়েছে।
বিগবাডমাউস

16

আমি একাধিক ফাইল ইনপুট জন্য ট্যাগ ব্যবহার:

input {
    file {
        type => "java"
        path => "/usr/aaa/logs/stdout.log"
        codec => multiline {
            ...
        },
        tags => ["aaa"]
    }

    file {
        type => "java"
        path => "/usr/bbb/logs/stdout.log"
        codec => multiline {
                ...
        }
        tags => ["bbb"]
    }
}
output {
    stdout {
        codec => rubydebug
    }
    if "aaa" in [tags] {
        elasticsearch {
            hosts => ["192.168.100.211:9200"]
            index => "aaa"
            document_type => "aaa-%{+YYYY.MM.dd}"
        }
    }

    if "bbb" in [tags] {
        elasticsearch {
            hosts => ["192.168.100.211:9200"]
            index => "bbb"
            document_type => "bbb-%{+YYYY.MM.dd}"
        }
    }
}

এটি গৃহীত উত্তরের চেয়ে ভাল: এটি লগস্ট্যাশে একাধিক ফাইলবিট ইনপুটগুলিকে অনুমতি দেয়। এই ধরনের ক্ষেত্রে, "প্রকার" সম্পত্তিটি "লগ" এ সেট করা হয় এবং এটি পরিবর্তন করা যায় না।
রেজিস বি।

তবে শেষের ট্যাগ (বিবিবি) দিয়ে এই ওভাররাইটিং ট্যাগগুলি নয়? এবং তারপরে আবার, if statememt এ, ট্যাগগুলি যদি একটি অ্যারে বা একক স্ট্রিং থাকে, তবে উভয়ই যদি আইএফ এর কাজ করে। সুতরাং যৌক্তিকভাবে এটি ভুল, তবে লোগস্ট্যাশের ভিতরে যদি এর আলাদা লজিক থাকে
meso_2600

0

আমি মনে করি লগস্ট্যাশ ইনপুট বিভাগে 2 টিরও বেশি ফাইল পড়তে পারে না। নীচে চেষ্টা করুন

input {
    file {
            type => "technical"
            path => "/home/technical/log"
    }
    file {
            type => "business"
            path => "/home/business/log"
    }
 file {
            type => "business1"
            path => "/home/business/log1"
    }
} 

হ্যাঁ, একই 'ইস্যুতে' চালান
meso_2600
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.