আমি কীভাবে systemd + rsyslog হোস্টে `/ dev / log` পুনরুদ্ধার করব?


10

আরএইচইএল 7-তে, systemd-journaldএকবার যা করা হয়েছিল তার অনেকগুলি দায়বদ্ধতা নিয়ে যায় rsyslogd। এই দুটি ডিমনগুলির মধ্যে বাগ বা সংঘাতের কারণে, কখনও কখনও /dev/logনিখোঁজ হয়ে যায়। ফলস্বরূপ, syslog(3)কলটিতে নির্ভরযোগ্য প্রোগ্রামগুলি উদাহরণস্বরূপ, সহ, সঠিকভাবে কাজ করবে না logger। আমি কীভাবে /dev/logসকেটটি পুনরুদ্ধার করতে পারি ?

উত্তর:


13

আমার নিজের প্রশ্ন জিজ্ঞাসা করা এবং উত্তর দেওয়া কারণ গুগল এই বিষয়ে খুব একটা সহায়ক ছিল না।

সাধারণত, এর সাথে rsyslogd, imuxsockমডিউলটি /dev/logনিজের থেকে সকেট তৈরি করবে , এটি তৈরির আগে পূর্ববর্তী এন্ট্রিটিকে সংযুক্ত করে। কখন rsyslogdবন্ধ হয়ে যায় (সম্ভবত পুনরায় চালু করার কারণে যা ত্রুটিযুক্ত কনফিগারেশনের কারণে ব্যর্থ হয়), আরএসস্লগড সরিয়ে দেয় /dev/log

যাইহোক, সরবরাহ করা আরএসস্লগ RHEL7এর সাথে একত্রে ব্যবহৃত হবে বলে আশা করা হচ্ছে systemdএবং imuxsockমডিউলটি /run/systemd/journal/syslogসকেটটি খুলবে এবং সরিয়ে ফেলবে । এদিকে, /dev/logডিভাইসটি সিস্টেম পরিষেবা-ফাইল দ্বারা তৈরি করা হয়েছে systemd-journald.socketযা ট্রিগার করে journald

স্পষ্টতই, $imjournalমডিউল ব্যবহার করা হয় বা না , নিম্নলিখিতটি কাজ করে।

সংক্ষেপে, যদি /dev/logঅদৃশ্য হয়ে যায়:

  1. সিস্টেমড-জার্নাল্ড.সকেটটি পুনরায় চালু করুন:

    systemctl restart systemd-journald.socket
    
  2. তারপরে rsyslogd পুনরায় চালু করুন

    systemctl start rsyslogd
    

আপডেট: আমি বিশ্বাস করি restart rsyslogdযদি rsyslogdইতিমধ্যে চলমান থাকে তবে সকেটটি আবার মুছতে পারে ।


2
এই জন্য অনেক ধন্যবাদ! লগিং কোনও পরিষেবার জন্য কেন কাজ করছে না তা ট্র্যাকিংয়ের জন্য আমি বেশ কয়েক ঘন্টা হারিয়েছি। অবশেষে আমি এটি নিখোঁজ / ডিভ / লগ পর্যন্ত সন্ধান করেছি, যা আমাকে আপনার সমাধানের দিকে নিয়ে যায়।
চাদ হুনাইকুট

4

systemctl restart systemd-journald.socket && systemctl restart rsyslogউবুন্টু 16.04 এ সমাধানটি আমার পক্ষে কার্যকর হয়নি।

পরিবর্তে, আমাকে এখানে /dev/logএকটি সিমিলিংক হিসাবে পুনরায় তৈরি করতে হয়েছিল /run/systemd/journal/dev-log:

ln -s /run/systemd/journal/dev-log /dev/log

হ্যাঁ, ম্যানুয়ালি লিঙ্কিংয়ের পাশাপাশি কাজ করা উচিত। তবে এটি মনে রাখা কিছুটা অপ্রয়োজনীয়। প্রশ্ন: উবুন্টুতে systemd-journald.socketএকটি পরিষেবা হিসাবে কি উপস্থিত রয়েছে? প্রশ্ন 2: restart rsyslogdসমস্যা ছিল? সম্ভবত এটি করা উচিত start rsyslogd?
14 ই এথিউস

প্রশ্ন 1: হ্যাঁ, এটি বিদ্যমান। প্রশ্ন 2: restartআর কোন আদেশ নেই, আছে serviceএবং আছে /etc/init.d/rsyslog
11181

দ্বারা restart rsyslogdআমি ভেবেছিলাম এটা স্পষ্ট আমি বোঝানো ছিল systemctl restart rsyslogd। উবুন্টু এখনও আরএসএসলগের জন্য থ্রি স্ক্রিপ্ট ব্যবহার করে?
ওথিয়াস

@ অথিউস /etc/init.d/rsyslog stopঅনুসরণ /etc/init.d/rsyslog startকরেছে কোন সাহায্য করেনি। আমরাও হয়নি systemctl stop syslog.socket rsyslog.service && systemctl start syslog.socket rsyslog.serviceআমার সিস্টেমে আছে উভয় /lib/systemd/system/rsyslog.serviceএবং /etc/init.d/rsyslog। যাইহোক, আমি বরং এই সমস্যায় বেশি সময় ব্যয় করব না।
11181

0

আমার জন্য এটি আরএসস্লগে ব্যবহৃত ইমুকসক মডিউলটি সিস্টেমডের সাথে কীভাবে কাজ করছিল তা নিয়ে সমস্যা দেখা দিয়েছে।

ইন imuxsock ডকুমেন্টেশন তারা ভিতর দিয়ে হেটে কিভাবে মডিউল systemd হল জন্য কাজ অনুমিত হয়। পদক্ষেপ 1 যেখানে আমি সমস্যাগুলি দেখছিলাম:

পদক্ষেপ 1: সিস্টেম সকেটের নাম নির্বাচন করুন

  1. যদি ব্যবহারকারী স্পষ্টতই সিসসক.উস = "অফ" সেট করতে না বেছে থাকেন তবে ডিফল্ট শ্রোতার সকেট (ওরফে, "সিস্টেম লগ সকেট" বা কেবল "সিস্টেম সকেট") নামটি / dev / লগতে সেট করা থাকে। অন্যথায়, যদি ব্যবহারকারী স্পষ্টতই সিসসক.উস = "অফ" ব্যবহার করে থাকে, তবে আরএসস্লগ / দেব / লগ শুনবে না বা সিসসক.নাম পরামিতি দ্বারা নির্ধারিত কোনও সকেট এবং এই বিভাগের বাকী অংশ প্রযোজ্য হবে না।

  2. যদি ব্যবহারকারী sysSock.Name = "/ পাথ / থেকে / কাস্টম / সকেট" নির্দিষ্ট করে (এবং স্পষ্টতই SysSock.Use = "বন্ধ" সেট করে না), তবে ডিফল্ট শ্রোতার সকেটের নামটি / পাথ / টু / কাস্টম / সকেটের সাথে ওভাররাইট করা হয় ।

  3. অন্যথায়, যদি rsyslog সিস্টেমেড আন্ডার / রান / সিস্টেমড / জার্নাল / সিসলগের অধীনে চলমান থাকে (এবং ব্যবহারকারী স্পষ্টতই সিসসক সেট করেন নি। ব্যবহার = "বন্ধ") তবে ডিফল্ট শ্রোতার সকেটের নামটি / রান / সিস্টেমড / জার্নালের সাথে ওভাররাইট করা হয় / syslog- র।

সিস্টেমে ৩ য় ধাপে পড়তে হবে এবং "/ রান / সিস্টেমড / জার্নাল / সিসলগ" হিসাবে ডিফল্ট পাথ পরিবর্তন করা উচিত তবে পরিবর্তে এটি "/ ভার / লগ" অবশিষ্ট ছিল। এর অর্থ হ'ল imuxsock মডিউলটি / dev / log এ সকেট তৈরি করার চেষ্টা করবে (এবং কখনও কখনও সফল হবে) যেখানে সিস্টেমড-জার্নাল্ড-ডেভ-লগ.সকেট দ্বারা প্রতীকী লিঙ্ক তৈরি করা উচিত। যদি এটি আসল সকেট তৈরি করতে ব্যর্থ হয় তবে প্রতীকী লিঙ্কটি এখনও সরানো হবে।

এই ডকুমেন্টেশনটি আরএসস্লগ গিথুব-এ প্রকাশিত এই সমস্যার ফলাফল ছিল । আপনি যদি আলোচনাটি এড়িয়ে যেতে চান এবং সরাসরি পরিবর্তনগুলিতে ঝাঁপিয়ে পড়ুন যথাক্রমে PR # 1 এবং PR # 2 দেখুন

আমার সমাধানটি ছিল আমার /etc/rsyslog.conf এ সিস্টেমড পাথটি ব্যবহার করতে কেবল imuxsock মডিউলটি কনফিগার করা:

module(load="imuxsock"
    SysSock.Name="/run/systemd/journal/syslog")

এটি আমার সমস্যাটিকে স্থির করে নিয়েছে এবং এটি এখানে একটি ভাল সমাধানের মতো বলে মনে হচ্ছে কারণ এটি আপনাকে ম্যানুয়ালি তৈরি করার পরে কেন প্রতীকী লিঙ্কটি আবার অদৃশ্য হয়ে যাবে তা ব্যাখ্যা করবে।

আপনি যদি আপনার সিস্টেমের দিকে নজর দেন এবং "/ চালান / সিস্টেমড / জার্নাল / সিসলগ" "সিসলগ.সকেট" তে উপস্থিত না থাকে তা সকেট তৈরির জন্য দায়ী কি এটি সফলভাবে শুরু হচ্ছে কিনা তা দেখার জন্য।

systemctl status syslog.socket

এটি হতে পারে যে আপনার rsyslog.service এর সংস্করণটি syslog.service কে একটি এলিফ হিসাবে সংজ্ঞায়িত করে না যা syslog.sket সেই পরিষেবাটি সক্রিয় করার চেষ্টা করে needed এটিও সম্ভব যে একাধিক লগিং পরিষেবাগুলি সায়স্লগ.সর্ফাইস উপনিফের চেষ্টা করে যা সেক্ষেত্রে সক্ষম হওয়া শেষ পর্যন্ত জয়ী হয়।

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