জঞ্জালেক্টল [বিস্তৃত গাইড] ব্যবহার করে সিস্টেমডের অধীনে লগ বার্তা পরিচালনা করুন


সিস্টেমড হ'ল লিনাক্স সিস্টেমের জন্য একটি কাটিং-এজ সিস্টেম এবং সার্ভিস ম্যানেজার: সিস্টেম বুটে সমান্তরালে প্রক্রিয়া শুরু করার উদ্দেশ্যে একটি ডিমন ডিমন রিপ্লেসমেন্ট। এটি বর্তমানে ফেডোরা, দেবিয়ান, উবুন্টু, ওপেনসুএসই, আর্চ, আরএইচএল, সেন্টোস, ইত্যাদি সহ প্রচুর বর্তমান মূলধারার বিতরণে সমর্থিত is

এর আগে, আমরা ‘আর ডি’ এবং ‘সিস্টেমড’ এর পিছনের গল্পটি ব্যাখ্যা করেছি; যেখানে আমরা দুটি ডিমনটি কী তা নিয়ে আলোচনা করেছি, কেন প্রযুক্তিগতভাবে সিস্টেমডের মূল বৈশিষ্ট্যগুলির পাশাপাশি প্রযুক্তিগতভাবে ‘সিস্টেমড’ প্রতিস্থাপন করা দরকার।

অন্যান্য সাধারণ init সিস্টেমগুলির ক্ষেত্রে সিস্টেমড করার অন্যতম প্রধান সুবিধা হ'ল জার্নাল ব্যবহার করে সিস্টেমের কেন্দ্রীভূত পরিচালনার জন্য সমর্থন এবং লগিং প্রক্রিয়া। এই নিবন্ধে, আমরা লিনাক্স-এ জার্সিটেল কমান্ড ব্যবহার করে সিস্টেমডের অধীনে লগ বার্তা পরিচালনা এবং দেখতে শিখব।

গুরুত্বপূর্ণ: এই গাইডে আরও এগিয়ে যাওয়ার আগে, আপনি লিনাক্সে শেল স্ক্রিপ্ট ব্যবহার করে সিস্টেমে নতুন পরিষেবা ইউনিট তৈরি এবং পরিচালনা করতে পারবেন তা শিখতে চাইতে পারেন। যাইহোক, আপনি যদি উপরের সমস্ত কিছু ঠিক করেন তবে তার মাধ্যমে পড়া চালিয়ে যান।

সিস্টেমডের অধীনে লগ বার্তা সংগ্রহের জন্য জার্নাল্ড কনফিগার করা

জার্নাল্ড একটি ডেমন যা পুরো সিস্টেম থেকে জার্নাল এন্ট্রি সংগ্রহ করে এবং লেখেন; এগুলি মূলত বুট বার্তা, কার্নেল এবং সিসলগ বা বিভিন্ন অ্যাপ্লিকেশন থেকে প্রাপ্ত বার্তাগুলি এবং এটি সমস্ত বার্তা একটি কেন্দ্রীয় অবস্থান - জার্নাল ফাইলে সংরক্ষণ করে।

আপনি তার ডিফল্ট কনফিগারেশন ফাইলের মাধ্যমে জার্নাল্ডের আচরণ নিয়ন্ত্রণ করতে পারেন: /etc/systemd/j Journald.conf যা সংকলনের সময় উত্পন্ন হয়। এই ফাইলটিতে এমন বিকল্প রয়েছে যার মানগুলি আপনি আপনার স্থানীয় পরিবেশ প্রয়োজনীয়তার সাথে স্যুট করতে পরিবর্তন করতে পারেন।

নীচে ফাইলটি দেখতে কেমন তার একটি নমুনা দেওয়া হয়েছে, বিড়াল কমান্ড ব্যবহার করে দেখা হয়েছে।

$ cat /etc/systemd/journald.conf 
# See journald.conf(5) for details.

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg

নোট করুন যে বিভিন্ন প্যাকেজ ইনস্টল করে এবং /usr/lib/systemd/*.conf.d/ এ কনফিগারেশন এক্সট্রাক্ট ব্যবহার করে এবং রান টাইম কনফিগারেশনগুলি /run/systemd/jorterd.conf.d/*.conf এ পাওয়া যায় যা আপনি অগত্যা নাও পারেন ব্যবহার।

উবুন্টু সহ লিনাক্সের প্রচুর বিতরণ এবং লিনাক্স মিন্টের মতো এটির ডেরিভেটিভগুলি ডিফল্টরূপে ডিস্কে বুট বার্তাগুলির অবিরাম সঞ্চয় করতে সক্ষম করে না।

নীচে প্রদর্শিত হিসাবে "স্টোরেজ" বিকল্পটি "অবিচলিত" এ সেট করে এটি সক্ষম করা সম্ভব। এটি/var/লগ/জার্নাল ডিরেক্টরি তৈরি করবে এবং সমস্ত জার্নাল ফাইলগুলি এর অধীনে সংরক্ষণ করা হবে।

$ sudo vi /etc/systemd/journald.conf 
OR
$ sudo nano /etc/systemd/journald.conf 
[Journal]
Storage=persistent

অতিরিক্ত সেটিংসের জন্য, টাইপ করে “[জার্নাল]” বিভাগের অধীনে কনফিগার করা সমস্ত বিকল্পের অর্থ সন্ধান করুন।

$ man journald.conf

জার্নালড পরিষেবা ব্যবহার করে সিস্টেমডের অধীনে নির্ভরযোগ্য লগ ম্যানেজমেন্টের জন্য, টাইমজোন সহ সময় নির্ধারণের ব্যবস্থাটি সিস্টেমে সঠিক কিনা তা নিশ্চিত করুন।

আপনার সিস্টেমে বর্তমান তারিখ এবং সময় সেটিংস দেখতে, টাইপ করুন।

$ timedatectl 
OR
$ timedatectl status

Local time: Thu 2017-06-15 13:29:09 EAT
Universal time: Thu 2017-06-15 10:29:09 UTC
RTC time: Thu 2017-06-15 10:29:09
Time zone: Africa/Kampala (EAT, +0300)
Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

সঠিক সময় অঞ্চল এবং সম্ভবত সিস্টেমের সময় সেট করতে, নীচের কমান্ডগুলি ব্যবহার করুন।

$ sudo timedatectl set-timezone  Africa/Kampala
$ sudo timedatectl set-time “13:50:00”

জার্নালসিটিএল হল একটি ইউটিলিটি যা সিস্টেমড জার্নালের বিষয়বস্তু দেখতে ব্যবহৃত হয় (যা জার্নালড সার্ভিস দ্বারা লিখিত)

কোনও ফিল্টারিং ছাড়াই সমস্ত সংগ্রহ করা লগগুলি দেখানোর জন্য টাইপ করুন।

$ journalctl
-- Logs begin at Wed 2017-06-14 21:56:43 EAT, end at Thu 2017-06-15 12:28:19 EAT
Jun 14 21:56:43 tecmint systemd-journald[336]: Runtime journal (/run/log/journal
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuset
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpu
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuacct
Jun 14 21:56:43 tecmint kernel: Linux version 4.4.0-21-generic ([email )
Jun 14 21:56:43 tecmint kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-
Jun 14 21:56:43 tecmint kernel: KERNEL supported cpus:
Jun 14 21:56:43 tecmint kernel:   Intel GenuineIntel
Jun 14 21:56:43 tecmint kernel:   AMD AuthenticAMD
Jun 14 21:56:43 tecmint kernel:   Centaur CentaurHauls
Jun 14 21:56:43 tecmint kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x01: 'x87 flo
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x02: 'SSE reg
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x04: 'AVX reg
Jun 14 21:56:43 tecmint kernel: x86/fpu: Enabled xstate features 0x7, context si
Jun 14 21:56:43 tecmint kernel: x86/fpu: Using 'eager' FPU context switches.
Jun 14 21:56:43 tecmint kernel: e820: BIOS-provided physical RAM map:
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000000000-0x00000000000
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000090000-0x00000000000
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000100000-0x000000001ff
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020000000-0x00000000201
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020200000-0x00000000400

আপনি --list-বুট বিকল্পের সাহায্যে বুটের সাথে সম্পর্কিত বুট সংখ্যার (বর্তমান বুটের সাথে সম্পর্কিত), তাদের আইডি এবং প্রথম এবং শেষ বার্তার টাইমস্ট্যাম্পগুলি প্রদর্শন করতে পারেন।

$ journalctl --list-boots

-1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT—Thu 2017-06-15 1
 0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT—Thu 2017-06-15 1 

বর্তমান বুট থেকে জার্নাল এন্ট্রিগুলি দেখতে (নম্বর 0), -b স্যুইচটি (উপরের নমুনা আউটপুটটির সমান) ব্যবহার করুন।

$ journalctl -b

এবং পূর্ববর্তী বুট থেকে একটি জার্নালটি দেখতে, নীচের মতো -বি -b বিকল্পের সাথে সম্পর্কিত পয়েন্টার ব্যবহার করুন।

$ journalctl -b -1

বিকল্পভাবে, বুট আইডি এটি ব্যবহার করুন।

$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9

সমন্বিত ইউনিভার্সাল টাইম (ইউটিসি) ফর্ম্যাটে সময় ব্যবহার করতে, নীচের হিসাবে --utc বিকল্পগুলি যুক্ত করুন।

$ journalctl --utc

নির্দিষ্ট তারিখ এবং সময় থেকে সমস্ত এন্ট্রি দেখতে, উদাঃ 15 ই জুন, 2017 সকাল 8: 15 এ, এই আদেশটি টাইপ করুন।

$ journalctl --since "2017-06-15 08:15:00"
$ journalctl --since today
$ journalctl --since yesterday

সাম্প্রতিক লগ বার্তাগুলি দেখতে (ডিফল্টরূপে 10), নীচের চিত্রের মতো এন পতাকাটি ব্যবহার করুন।

$ journalctl -n
$ journalctl -n 20 

ডেমেস কমান্ড আউটপুটের অনুরূপ কেবল কার্নেল বার্তাগুলি দেখতে আপনি -k পতাকাটি ব্যবহার করতে পারেন।

$ journalctl -k 
$ journalctl -k -b 
$ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9

কোনও নির্দিষ্ট ইউনিটের জন্য সমস্ত জার্নাল এন্ট্রিগুলি দেখতে, নীচের হিসাবে -u স্যুইচ ব্যবহার করুন।

$ journalctl -u apache2.service

বর্তমান বুটে শূন্য করতে, এই কমান্ডটি টাইপ করুন।

$ journalctl -b -u apache2.service

পূর্ববর্তী বুট থেকে লগগুলি প্রদর্শন করতে, এটি ব্যবহার করুন।

$ journalctl -b -1 -u apache2.service

নীচে আরও কিছু দরকারী কমান্ড রয়েছে:

$ journalctl -u apache2.service  
$ journalctl -u apache2.service --since today
$ journalctl -u apache2.service -u nagios.service --since yesterday

একটি নির্দিষ্ট প্রক্রিয়া দ্বারা উত্পন্ন লগগুলি দেখতে, এটির মতো পিআইডি নির্দিষ্ট করুন।

$ journalctl _PID=19487
$ journalctl _PID=19487 --since today
$ journalctl _PID=19487 --since yesterday

নির্দিষ্ট ব্যবহারকারী বা গোষ্ঠী দ্বারা উত্পাদিত লগগুলি দেখতে, এটির ব্যবহারকারীর বা গোষ্ঠী আইডিটিকে এটি নির্দিষ্ট করুন।

$ journalctl _UID=1000
$ journalctl _UID=1000 --since today
$ journalctl _UID=1000 -b -1 --since today

কোনও ফাইল (সম্ভবত একটি এক্সিকিউটেবল) দ্বারা উত্পন্ন সমস্ত লগগুলি প্রদর্শনের জন্য, যেমন ডি-বাস এক্সিকিউটেবল বা ব্যাশ এক্সিকিউটেবল, কেবল টাইপ করুন।

$ journalctl /usr/bin/dbus-daemon
$ journalctl /usr/bin/bash

আপনি -p পতাকা ব্যবহার করে বার্তা অগ্রাধিকার বা অগ্রাধিকারের রেঞ্জের ভিত্তিতে আউটপুট ফিল্টার করতে পারেন। সম্ভাব্য মানগুলি: 0 - উত্স, 1 - সতর্কতা, 2 - সমালোচক, 3 - ত্রুটি, 4 - সতর্কতা, 5 - বিজ্ঞপ্তি, 6 - তথ্য, 7 - ডিবাগ):

$ journalctl -p err

একটি ব্যাপ্তি নির্দিষ্ট করতে, নীচের ফর্ম্যাটটিটি ব্যবহার করুন (সতর্কবার্তা থেকে বেরিয়ে আসুন)।

$ journalctl -p 1..4
OR
$ journalctl -p emerg..warning

-ফ বিকল্প (লেজ -f কার্যকারিতার সাথে সমান) লেখার সাথে সাথে আপনি লগগুলি ব্যবহারিকভাবে দেখতে পারেন।

$ journalctl -f

আপনি যদি জার্নাল এন্ট্রিগুলির আউটপুট বিন্যাস নিয়ন্ত্রণ করতে চান তবে -o পতাকা যুক্ত করুন এবং এই বিকল্পগুলি ব্যবহার করুন: বিড়াল, রফতানি, জসন, জসন-প্রিটি, জসন-সিএস, সংক্ষিপ্ত, শর্ট-আইসো, স্বল্প-একঘেয়ে, সংক্ষিপ্ত-নির্ভুল এবং ভার্বোস (ম্যান পৃষ্ঠায় বিকল্পগুলির অর্থ পরীক্ষা করুন:

বিড়াল বিকল্পটি কোনও মেটাডেটা (টাইমস্ট্যাম্প ইত্যাদি) ছাড়াই প্রতিটি জার্নাল এন্ট্রির আসল বার্তাটি দেখায়।

$ journalctl -b -u apache2.service -o cat

অভ্যন্তরীণ সামঞ্জস্যের জন্য জার্নাল ফাইলটি পরীক্ষা করতে, - যাচাই করুন বিকল্পটি ব্যবহার করুন। যদি সবকিছু ঠিক থাকে তবে আউটপুটটি একটি পাস নির্দেশ করবে।

$ journalctl --verify

PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system.journal                               
491f68: Unused data (entry_offset==0)                                                                
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 9866c3d4d.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 5d8945a9e.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 1becab02f.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 01cfcedff.journal

আপনি - ডিস্ক-ব্যবহার বিকল্পের সাহায্যে সমস্ত জার্নাল ফাইলের বর্তমান ডিস্ক ব্যবহার প্রদর্শন করতে পারেন। এটি সমস্ত সংরক্ষণাগারযুক্ত এবং সক্রিয় জার্নাল ফাইলগুলির ডিস্ক ব্যবহারের যোগফল দেখায়:

$ journalctl --disk-usage

পুরানো (সংরক্ষণাগারভুক্ত) জার্নাল ফাইলগুলি মুছতে নীচের কমান্ডগুলি চালনা করুন:

$ sudo journalctl --vacuum-size=50M  #delete files until the disk space they use falls below the specified size
$ sudo journalctl --vacuum-time=1years	#delete files so that all journal files contain no data older than the specified timespan
$ sudo journalctl --vacuum-files=4     #delete files so that no more than the specified number of separate journal files remain in storage location

সর্বশেষে তবে সর্বনিম্ন নয়, আপনি জার্নালকে --rotate বিকল্পের সাহায্যে জার্নাল ফাইলগুলি ঘোরানোর নির্দেশ দিতে পারেন। নোট করুন যে আবর্তন ক্রিয়াকলাপ শেষ না হওয়া পর্যন্ত এই নির্দেশনা ফিরে আসে না:

$ sudo journalctl --rotate

গভীরতার ব্যবহার নির্দেশিকা এবং বিকল্পগুলির জন্য, জার্নাক্টল ম্যান পৃষ্ঠাটি নীচে দেখুন।

$ man journalctl

কিছু দরকারী নিবন্ধ পরীক্ষা করে দেখুন।

  1. সিস্টেম স্টার্টআপ প্রক্রিয়া এবং পরিষেবাদি পরিচালনা করা (সিসভিনিট, সিস্টেমড এবং আপস্টার্ট)
  2. পেটিতি - লিনাক্স সিসএডমিনগুলির জন্য একটি ওপেন সোর্স লগ বিশ্লেষণ সরঞ্জাম
  3. লিনাক্সে লোগ্রোটেট ব্যবহার করে লগ রোটেশন কীভাবে সেটআপ এবং পরিচালনা করবেন
  4. ল্যাভ - একটি লিনাক্স টার্মিনাল থেকে অ্যাপাচি লগগুলি দেখুন এবং বিশ্লেষণ করুন

আপাতত এই পর্যন্ত. এই প্রশ্নে কোনও প্রশ্ন জিজ্ঞাসা করতে বা আপনাকে ভাবনা যুক্ত করতে নীচ থেকে প্রতিক্রিয়া ব্যবহার করুন।