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


91

অ্যাপাচি ফাইলগুলি পার্স করার জন্য আমি লগস্ট্যাশ ইনস্টল করেছি। সেটিংসটি সঠিকভাবে পেতে আমার বেশিক্ষণ সময় নিয়েছিল এবং আমি সবসময় সত্যিকারের লগগুলিতে চেষ্টা করেছিলাম। আমি লক্ষ্য করেছি (ডকুমেন্টেশন যেমন বলে) যে লগস্ট্যাশ এটি একটি ফাইলে ছিল যেখানে "মনে পড়ে"। এখন আমার সেটিংগুলি ঠিক আছে এবং আমি লগস্ট্যাশটি "ভুলে যেতে" চাই। এটি আমার চেয়ে কঠিন বলে মনে হচ্ছে। আমি ইতিমধ্যে নিম্নলিখিতগুলি করেছেন:

  • ব্যবহৃত: start_position => "beginning"

  • ইলাস্টিসার্ক থেকে সম্পূর্ণ "ডেটা" ফোল্ডারটি মুছে ফেলে (এবং এটি প্রথমে থামিয়ে দিয়েছিল)

  • লগস্ট্যাশ দিয়ে কোন ফাইলগুলি কোথায় খোলা হয়েছে lsof -p PIDএবং প্রতিশ্রুতিবদ্ধ সমস্ত কিছুই মুছে ফেলা হয়েছে (আমার ক্ষেত্রে /tmp/jffi*.tmp)

লগস্ট্যাশ লগগুলি যেখানে রয়েছে সেই ফোল্ডারে কেবল "তাজা" ফাইলগুলি ভুলে যায় এবং পার্স করে না

কোন ধারনা?


সর্বশেষ লগস্ট্যাশ সংস্করণটি আমি এটিতে পেয়েছি:/opt/logstash/data/plugins/inputs/file
টিম স্মিথ

উত্তর:


135

ডিফল্টরূপে লগস্ট্যাশ লিখেছেন যে অবস্থানটি সর্বশেষে একটি লগফাইলে ছিল যা সাধারণত থাকে $HOME/.sincedb। Logstash বিশ্বাসী এটা নির্দিষ্ট করে লগ ফাইল পার্স কখনো মধ্যে বোকা বানানো যাবে /dev/nullযেমন sincedb_path

এখানে ডকুমেন্টেশন অংশ ইনপুট ফাইল

যেহেতু ডাটাবেস লিখবেন (নিরীক্ষিত লগ ফাইলগুলির বর্তমান অবস্থানের উপর নজর রাখেন)। এনভায়রনমেন্ট ভেরিয়েবল "_P SINCEDB_PATH" বা "OME হোম /। সিন্ডডবি" এর মানের ডিফল্ট।

কনফিগার উদাহরণ

input {
    file {
        path => "/tmp/logfile_to_analyse"
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}

29
উইন্ডোতে আপনি sincedb_path => "NUL"একই প্রভাব পেতে ব্যবহার করতে পারেন । এখানে বিশদ বিবরণ
ক্রিস

11
ফাইলগুলি যদি পুরানো হয় (তবে আরও 24 ঘন্টা) অপশন যুক্ত করা খুব দরকারী তবে ingnore_older => 0লগস্ট্যাশ তাদের তারিখের কোনও বিবেচনা করে না। ডিফল্টরূপে ফাইলগুলি যদি পুরানো হয় তবে 24 ঘন্টা অগ্রাহ্য করা হবে।
এমটিএফকে

4
@ এমটিএফকে: বাহ অসাধারণ সন্ধান! ignore_older => 0লগস্ট্যাশে কাজগুলি নির্দেশ করার জন্য ধন্যবাদ ! আমি প্রশ্নকর্তা হিসাবে একই সমস্যা দ্বারা জ্যাম হয়েছে। একটি অ-স্পষ্টত সন্ধান বলে মনে হচ্ছে! ("অ্যাগলনডোল্ডার" এবং "লগস্ট্যাশ" গুগলিং কেবল ফাইলবিটে পৃষ্ঠাগুলি নিয়ে আসে, লগস্ট্যাশে এটি কীভাবে মোকাবেলা করা যায় তার কোনও চিহ্ন আমি খুঁজে পাইনি)
মাইক লুটজ

কীভাবে তৎক্ষণাৎ এই অ্যাড করার সময় filebeat ব্যবহার
Sunilkumar Ramamurthy

@ সুনিলকুমাররামামূর্তি আমি বিশ্বাস করি আপনি যদি ignore_olderআপনার ফাইলবিট কনফিগারেশনের বিকল্পটি ছেড়ে দেন তবে ফিলবিট পুরো ফাইলটি আবার পড়তে বাধ্য হবে elastic.co/guide/en/beats/filebeat/current/…
flazzarini

19

"টেলিং" এর প্লাগইন ফাইল স্টোরের ইতিহাস "ডিফলি" ফাইলের পরে, ডিফল্ট:: হোম /। সিন্ডডবি * এর অধীনে, http://logstash.net/docs/1.3.3/inputs/file#sincedb_path দেখুন

যেহেতু ডিবি ফাইলে লাইনের চেহারা রয়েছে:

[inode] [major device number] [minor device number] [byte offset]

সুতরাং, আপনি যদি একটি সম্পূর্ণ ফাইল আবার বিশ্লেষণ করতে চান, আপনার প্রয়োজন:

  • সিনডেডব ফাইলগুলি মুছুন
  • অথবা কেবল এএসডিবি ফাইলে সংশ্লিষ্ট লাইনটি মুছুন, আপনার ফাইলের আগে ইনোড নম্বরটি পরীক্ষা করুন ( ls -i yourFile | awk '{print $1}')
  • এবং লগস্ট্যাশ পুনরায় আরম্ভ করুন

কীটি দিয়ে start_position => "beginning"লগস্ট্যাশ সমস্ত ফাইল বিশ্লেষণ করবে।

একটি asdb ফাইলের উদাহরণ:


4
সম্পর্কিত start_position => "beginning", ডকুমেন্টেশন বলে:> এই বিকল্পটি কেবল "প্রথম যোগাযোগ" পরিস্থিতিতে পরিবর্তন করে যেখানে কোনও ফাইল নতুন এবং আগে দেখা যায় না। যদি আগেই কোনও ফাইল দেখা যায় তবে এই বিকল্পটির কোনও প্রভাব নেই।
ব্র্যাড

10

লগস্ট্যাশ রেকর্ডটি রাখবে $HOME/.sincedb_*। আপনি সমস্ত মুছুন .sincedbএবং লগস্ট্যাশ পুনরায় চালু করতে পারেন , লগস্ট্যাশ ফাইলটি পুনঃস্থাপন করবে।


9

সমস্ত উত্তরগুলির সংমিশ্রণ, অনুমান করা ফাইলগুলি পার্স করার সর্বোত্তম উপায়। আমি আমার পরীক্ষার জন্যও তাই করেছি।

input {
  file {
    path => "/tmp/access_log"
    start_position => beginning
    sincedb_path => "/dev/null"
    ignore_older => 0
  }
}

দ্রুত পরীক্ষার পরিবর্তে ignore_older, আপনি touch /tmp/access_logফাইলটির টাইমস্ট্যাম্পও পরিবর্তন করতে পারেন ।


কনফিগারেশন যুক্ত করা ignore_older => 0বিপরীত কাজ করবে তা জেনে রাখুন।
পাঁচচিকর

5

আপনি যদি লগস্ট্যাশ-ফরোয়ার্ডার ব্যবহার করছেন তবে .logstash-forwarderপরিবর্তে ফাইলের জন্য আপনার বাড়িটি পরীক্ষা করুন :

{
  "/var/log/messages": {
    "source": "/var/log/messages",
    "offset": 43715,
    "inode": 12967,
    "device": 51776
  }
}

4
যদি প্যাকেজ হিসাবে ইনস্টল করা হয় তবে চেক করুন /var/lib/logstash-forwarder/
ওয়েসলি বাগ

3

মুছে ফেলার $HOME/.sincedb_*পরেও এটি আমার জন্য ডেটা খাচ্ছে না।

একগুচ্ছ জিনিস চেষ্টা করার পরে আমি মূল .confফাইলটি বাদ দিয়ে /etc/logstash/conf.dলগস্ট্যাশটি পুনরায় আরম্ভ করে দিয়েছিলাম এবং সবকিছুই কাজ করেছে। আমি কেবল ধরে নিতে পারি .confযে লগস্ট্যাশটি চুপচাপ ঝুলিয়ে রেখেছিল এমন একটির মধ্যে কিছু ছিল।


আমার স্মরণে, আমি পরে কিছু ডিবাগিং পতাকা চালু করেছি এবং এটি আমাকে জানিয়েছিল যে চুপচাপ ঝুলানোর চেয়ে রাগ কেন angry আমি মনে করি এটি ডেটাতে একটি সংস্করণ নম্বর খুঁজছিল তবে কখনও কখনও ডেটাতে কোনও নম্বর থাকে না। নম্বরটি না থাকলে কী নম্বরটি ক্রাশ হবে তা সন্ধানের জন্য চেক, তাই আমাকে প্রথমে এটি একটি নম্বর ছিল তা পরীক্ষা করতে হয়েছিল তারপরে এটি কোন নম্বরটি ছিল তা জিজ্ঞাসা করুন।
শেঠ

1

প্রকৃতপক্ষে প্রতিটি সময় পুনর্বার করা খুব ব্যয়বহুল যদি ফাইলটিতে বড় ডেটা থাকে। সুতরাং এটি করার আগে আপনার সতর্ক হওয়া দরকার। যদি আমরা এটিকে আবার পুনরায় প্রদর্শন করতে বাধ্য করতে চাই তবে ইনপুট ব্লকের ভিতরে প্যারামিটারটি সেট করুন

sincedb_path => "/dev/null" 

এই বিকল্পটি .sincedb ফাইলটি সঞ্চয় করবে না এবং লগস্ট্যাশ প্রতিটি সময় পুনরুদ্ধার করবে। তবে আপনি যদি মাঝে মাঝে মাঝে মাঝে মাঝে পুনঃসংশোধন করতে চান তবে আপনি যা করতে পারেন তা হ'ল ম্যানুয়ালি ফাইলটি পার্স করার সময় তৈরি করা .SinceDb পথটি মুছে ফেলুন। সাধারণত আপনি যদি ডিরেক্টরি ব্যবহার না করে রুট ব্যবহারকারী না হন তবে এটি হোম ডিরেক্টরিতে একটি গোপন ফাইল হিসাবে উপস্থিত থাকে। সহজেই এই ফাইলটি ট্রেস করার জন্য youdb_path কে অন্য কোনও স্থানেও সেট করতে পারেন।

sincedb_path => "/home/shubham/sinceDB/productsSince.db"

1

আপনি যদি লগস্ট্যাশ অপশনগুলির সাথে ঝামেলা এড়াতে চান তবে আমি দেখতে পেয়েছি যে বিদ্যমান লগ ফাইলটির নাম পরিবর্তন করা বা সরিয়ে ফেলা এবং পুরানো ফাইলের সামগ্রীগুলি থেকে একটি নতুন ফাইল তৈরি করা লগস্ট্যাশটিকে পুনরায় সূচিতে পরিণত করবে।


0

আমি এটি আমার বাড়িতে পেয়েছি তবে এটি মুছে ফেলার পরে লগস্ট্যাশ বিদ্যমান লগ ফাইলগুলি পুনরায় বাছাই করতে অস্বীকার করেছিল। আমি যেভাবে কাজ করেছিলাম তা যুক্ত করা ছিল

sincedb_path => "/opt/elk/sincedb/"  

আমার ফাইল প্লাগইন এ। আমি প্রতিটি সময় পুনরায় সেট করতে ভাবছি, কেবলমাত্রdd_path এর পথ পরিবর্তন করুন


0

আপনি যদি tar.gz ইনস্টল ফাইলবিট ব্যবহার করেন তবে আপনি এই ফাইলটি মুছতে $FilebeatPath/data/registry/filebeat/data.jsonএবং ফাইলবিটটি পুনরায় চালাতে পারেন



-1

লগস্ট্যাশ সংস্করণে 5 টি নতুন ডিরেক্টরি রয়েছে

<path.data>/plugins/inputs/file

path.data সংজ্ঞা লগস্ট্যাশ.আইএমএল

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