Ravindra BagaleCourses & study guides English

Linux Logs सोप्या भाषेत: journalctl, /var/log, rsyslog आणि logrotate उदाहरणांसह

Logs म्हणजे server ची डायरी. पहाटे 3 ला काही बिघडलं तर काय आणि कधी झालं ते logs सांगतात. Linux logs दोन ठिकाणी ठेवतो: systemd journal (journalctl ने वाचा) आणि /var/log मधल्या text files (rsyslog लिहितो). logrotate त्या files ने disk भरू देत नाही. हा chapter प्रत्येक command आणि option एक-एक करून शिकवतो.

या chapter मध्ये तुम्ही काय शिकाल

  • /var/log मधल्या मुख्य files ओळखा
  • Journal unit, time, boot आणि priority ने filter
  • Logs live follow आणि JSON print
  • Journal persistent आणि लहान ठेवा
  • rsyslog rules लिहा आणि logs server ला पाठवा
  • logrotate ने logs rotate

1. रोजचं उदाहरण: दुकानाचं bill book

हे का लागतं?

कोथरूडचं किराणा दुकान प्रत्येक विक्री bill book मधे लिहितं. Book भरलं की मालक ते बांधतो, महिन्याचं label लावतो आणि shelf वर ठेवतो. वर्षानंतर सर्वात जुनी books टाकून देतो. Customer ने तक्रार केली की योग्य book उघडून योग्य तारीख शोधतो.

हे काय आहे?

Bill book = log file. प्रत्येक विक्री लिहिणं = program log lines लिहितो. भरलेलं book बांधणं = logrotate. सर्वात जुनं टाकणं = rotate 7. योग्य तारीख शोधणं = journalctl --since किंवा grep.

कसं करायचं (step by step)

एक log line कशी प्रवास करतेProgram stdout, syslog() किंवा /dev/log वर लिहितोsystemd-journald पकडतो आणि metadata सह ठेवतोrsyslog journal मधून वाचून /var/log मधे text files लिहितोहवं तर rsyslog central log server ला पाठवतोlogrotate रोज जुन्या files rename आणि compress करतोतुम्ही journalctl, less, tail किंवा grep ने वाचता
Ubuntu वर मुख्य file /var/log/syslog; RHEL/Amazon Linux वर /var/log/messages.

2. /var/log: मुख्य log files

हे का लागतं?

अनेक tools आणि जुनी apps साध्या text files लिहितात. कोणती file उघडायची ते माहीत हवं.

हे काय आहे?

/var/log मधे text logs. बहुतेकांना वाचायला sudo लागतो. त्यांवर tail -n, tail -f, less +F आणि grep.

Fileआत काय
/var/log/messages or syslogसामान्य system messages
/var/log/secure or auth.logLogins, sudo, SSH
/var/log/dmesg, kern.logKernel messages
/var/log/croncron job runs
/var/log/nginx/Web access आणि error logs
/var/log/dnf.log or apt/history.logPackage installs

कसं करायचं (step by step)

  1. Files बघा.
ls -lh /var/log | head -5

Output:

-rw-------. 1 root root  1.2M Oct 25 12:10 messages
-rw-------. 1 root root  210K Oct 25 12:09 secure
-rw-------. 1 root root   18K Oct 25 12:00 cron
drwxr-xr-x. 2 root root  4.0K Oct 25 00:00 nginx

याचा अर्थ: बहुतेक फक्त root.

  1. शेवटच्या 5 SSH login lines.
sudo tail -n 5 /var/log/secure

Output:

Oct 25 12:09:41 web1 sshd[5120]: Accepted publickey for ec2-user from 49.36.1.10 port 51022 ssh2

याचा अर्थ: कोणी, कुठून login.

  1. Failed logins.
sudo grep 'Failed password' /var/log/secure | tail -n 3

Output:

Oct 25 03:12:07 web1 sshd[901]: Failed password for root from 185.22.1.9 port 4410 ssh2

याचा अर्थ: Brute force प्रयत्न.

3. journalctl: संपूर्ण journal वाचा

हे का लागतं?

प्रत्येक systemd service चं output journal मधे. एक command सगळं वाचतो.

हे काय आहे?

नुसतं journalctl सगळ्या entries सर्वात जुन्यापासून pager मधे. -r = नवीन आधी. -n 20 = शेवटच्या 20. --no-pager = थेट print. -e = शेवटी जा. सगळं बघायला sudo किंवा systemd-journal (किंवा adm) group.

कसं करायचं (step by step)

  1. शेवटच्या 3 entries.
sudo journalctl -n 3 --no-pager

Output:

Oct 25 12:10:01 web1 CROND[5201]: (root) CMD (/usr/local/bin/backup.sh)
Oct 25 12:10:02 web1 systemd[1]: Started Session 41 of User ec2-user.
Oct 25 12:10:05 web1 sudo[5222]: ec2-user : COMMAND=/bin/journalctl -n 3

याचा अर्थ: Time, host, program[PID], message.

  1. नवीन आधी.
sudo journalctl -r -n 2 --no-pager

Output:

Oct 25 12:10:05 web1 sudo[5222]: ...
Oct 25 12:10:02 web1 systemd[1]: ...

याचा अर्थ: उलटा क्रम.

4. journalctl -u: एक service

हे का लागतं?

तुम्हाला एका बिघडलेल्या service ची काळजी, पूर्ण system ची नाही.

हे काय आहे?

-u NAME फक्त ती unit. अनेकांसाठी -u परत. -n, -f, --since सोबत. timers आणि इतर units ना पण.

कसं करायचं (step by step)

  1. API च्या शेवटच्या 20 lines.
journalctl -u shop-api -n 20 --no-pager

Output:

Oct 25 12:01:44 web1 node[4410]: Error: cannot connect to DB at 10.0.0.9:5432
Oct 25 12:01:44 web1 systemd[1]: shop-api.service: Main process exited, code=exited, status=1/FAILURE

याचा अर्थ: App error आणि systemd चं मत.

  1. दोन units एकत्र.
journalctl -u nginx -u php-fpm -n 10 --no-pager

Output:

(lines from both, mixed by time)

याचा अर्थ: Request chains साठी छान.

5. journalctl -f: live follow

हे का लागतं?

Fix test करताना नव्या log lines लगेच दिसायला हव्या.

हे काय आहे?

-f नव्या lines print करत राहतो, tail -f सारखं. थांबायला Ctrl+C. एकत्र: journalctl -fu NAME. tail -F FILE text files साठी तेच, rotation टिकतो.

कसं करायचं (step by step)

  1. Restart करताना API बघा.
journalctl -fu shop-api

Output:

Oct 25 12:20:11 web1 systemd[1]: Started Shop API.
Oct 25 12:20:12 web1 node[5301]: listening on :3000

याचा अर्थ: दुसऱ्या terminal मधे उघडा.

  1. nginx errors follow.
sudo tail -F /var/log/nginx/error.log

Output:

2026/10/25 12:21:03 [error] 1013#0: *77 connect() failed (111: Connection refused) while connecting to upstream

याचा अर्थ: -F rotation नंतर परत उघडतो.

6. --since आणि --until: time windows

हे का लागतं?

Alert सांगतो 'दुपारी 2:15 ला errors'. फक्त तो window हवा.

हे काय आहे?

--since आणि --until घेतात '2026-10-25 14:00', 'today', 'yesterday', '1 hour ago', '-30m'. UTC दिलं नाही तर local time.

कसं करायचं (step by step)

  1. Incident window.
journalctl -u shop-api --since '2026-10-25 14:10' --until '2026-10-25 14:20' --no-pager | wc -l

Output:

42

याचा अर्थ: 40,000 नाही, 42 lines.

  1. शेवटची 30 minutes.
journalctl --since '30 min ago' -p err --no-pager

Output:

Oct 25 12:01:44 web1 node[4410]: Error: cannot connect to DB

याचा अर्थ: पटकन health बघा.

7. -p: priority ने filter

हे का लागतं?

बहुतेक lines info. Incident मधे फक्त errors हवे.

हे काय आहे?

Levels: 0 emerg, 1 alert, 2 crit, 3 err, 4 warning, 5 notice, 6 info, 7 debug. -p err म्हणजे err आणि त्याहून गंभीर. -p warning..err range.

कसं करायचं (step by step)

  1. या boot चे errors.
journalctl -b -p err --no-pager | head -3

Output:

Oct 25 09:10:05 web1 kernel: xfs: Ending clean mount
Oct 25 12:01:44 web1 node[4410]: Error: cannot connect to DB

याचा अर्थ: Fix करायची छोटी list.

  1. फक्त warnings.
journalctl -p warning..warning --since today --no-pager | wc -l

Output:

17

याचा अर्थ: नेमका एक level.

8. -b आणि --list-boots: प्रत्येक boot चे logs

हे का लागतं?

Crash आणि reboot नंतर reboot आधीचे logs हवे.

हे काय आहे?

-b = हा boot. -b -1 = मागचा boot. --list-boots सगळे saved boots. जुने boots ठेवायला persistent journal हवं.

कसं करायचं (step by step)

  1. Boots list.
journalctl --list-boots --no-pager

Output:

-1 6a1f... Sat 2026-10-24 08:01:10 IST—Sun 2026-10-25 09:09:50 IST
 0 9c2e... Sun 2026-10-25 09:10:00 IST—Sun 2026-10-25 12:22:00 IST

याचा अर्थ: दोन boots saved.

  1. मागच्या boot चा शेवट.
journalctl -b -1 -n 5 --no-pager

Output:

Oct 25 09:09:48 web1 kernel: Out of memory: Killed process 4410 (node)

याचा अर्थ: Reboot आधी OOM ने app मारलं.

9. -k आणि dmesg: kernel messages

हे का लागतं?

Disk errors, out-of-memory kills आणि USB problems kernel सांगतो.

हे काय आहे?

journalctl -k या boot चे kernel messages. dmesg -T human times सह kernel ring buffer. dmesg -w follow. 'Out of memory', 'I/O error' शोधा.

कसं करायचं (step by step)

  1. OOM kills शोधा.
sudo dmesg -T | grep -i 'out of memory'

Output:

[Sun Oct 25 09:09:48 2026] Out of memory: Killed process 4410 (node) total-vm:2.1GB

याचा अर्थ: Kernel ने app मारलं.

  1. फक्त kernel errors.
journalctl -k -p err --no-pager

Output:

Oct 25 09:10:03 web1 kernel: nvme1n1: I/O error, dev nvme1n1, sector 2048

याचा अर्थ: Disk problem.

10. -o: output formats, json आणि grep

हे का लागतं?

कधी script किंवा log tool साठी नेमके fields हवे, किंवा फक्त message.

हे काय आहे?

-o short (default), -o short-iso (ISO times), -o cat (फक्त message), -o json किंवा json-pretty (सगळे fields). -g PATTERN (किंवा --grep) messages शोधतो. _PID=, _UID=, SYSLOG_IDENTIFIER= field ने filter.

कसं करायचं (step by step)

  1. एका line चं JSON.
journalctl -u shop-api -n 1 -o json-pretty --no-pager | head -5

Output:

{
	"_PID" : "4410",
	"PRIORITY" : "3",
	"MESSAGE" : "Error: cannot connect to DB at 10.0.0.9:5432",

याचा अर्थ: प्रत्येक field आहे.

  1. Message शोधा.
journalctl -u shop-api -g 'timeout' --since today --no-pager | wc -l

Output:

12

याचा अर्थ: आज 12 timeouts.

  1. फक्त messages.
journalctl -u shop-api -n 2 -o cat --no-pager

Output:

listening on :3000
GET /health 200

याचा अर्थ: Dates नाहीत, वाचायला सोपं.

11. Persistent journal, --disk-usage आणि --vacuum

हे का लागतं?

काही systems वर journal RAM मधे आणि reboot ला गायब. इतरांवर हळूहळू disk भरतो.

हे काय आहे?

/var/log/journal असेल तर logs reboot टिकतात (/etc/systemd/journald.conf मधे Storage=persistent). --disk-usage size. --vacuum-size=500M किंवा --vacuum-time=14d जुन्या files delete. SystemMaxUse=1G limit.

कसं करायचं (step by step)

  1. आत्ताची size.
journalctl --disk-usage

Output:

Archived and active journals take up 2.3G in the file system.

याचा अर्थ: लहान disk साठी खूप.

  1. 500 MB पर्यंत कमी.
sudo journalctl --vacuum-size=500M

Output:

Vacuuming done, freed 1.8G of archived journals from /var/log/journal/9c2e....

याचा अर्थ: जुने archives गेले.

  1. Persistent आणि capped.
sudo mkdir -p /var/log/journal && printf '[Journal]\nStorage=persistent\nSystemMaxUse=1G\n' | sudo tee /etc/systemd/journald.conf.d/size.conf && sudo systemctl restart systemd-journald

Output:

[Journal]
Storage=persistent
SystemMaxUse=1G

याचा अर्थ: Reboot टिकतो, 1 GB पेक्षा जास्त नाही.

12. logger: स्वतःच्या log lines लिहा

हे का लागतं?

तुमच्या shell scripts ने बाकी सगळ्यांच्या जागीच नोंद ठेवायला हवी.

हे काय आहे?

logger 'message' syslog/journal ला लिहितो. -t TAG program नाव. -p user.err priority. मग journalctl -t TAG ने शोधा.

कसं करायचं (step by step)

  1. Backup script मधून log.
logger -t backup -p user.err 'backup failed: disk full'

Output:

(no output)

याचा अर्थ: आता journal आणि /var/log/messages मधे.

  1. शोधा.
journalctl -t backup -n 1 --no-pager

Output:

Oct 25 12:30:00 web1 backup[5410]: backup failed: disk full

याचा अर्थ: Tag मुळे शोधणं सोपं.

13. rsyslog: rules आणि remote logging

हे का लागतं?

App logs वेगळ्या file मधे हवे, किंवा सगळ्या servers चे logs एका central box वर, server मेला तरी टिकतील.

हे काय आहे?

Config /etc/rsyslog.conf आणि /etc/rsyslog.d/*.conf. Rule म्हणजे 'facility.priority destination'. उदा. local0.* /var/log/myapp.log. @host:514 UDP, @@host:514 TCP. rsyslogd -N1 ने तपासा, मग rsyslog restart.

कसं करायचं (step by step)

  1. local0 वेगळ्या file मधे.
echo 'local0.*  /var/log/myapp.log' | sudo tee /etc/rsyslog.d/30-myapp.conf && sudo rsyslogd -N1 && sudo systemctl restart rsyslog

Output:

rsyslogd: End of config validation run. Bye.

याचा अर्थ: Config valid.

  1. Test करा.
logger -p local0.info 'order 1001 placed' && sudo tail -n1 /var/log/myapp.log

Output:

Oct 25 12:35:10 web1 ec2-user: order 1001 placed

याचा अर्थ: Rule चालतो.

  1. सगळं TCP ने log server ला.
echo '*.* @@10.0.0.50:514' | sudo tee /etc/rsyslog.d/90-forward.conf && sudo systemctl restart rsyslog

Output:

*.* @@10.0.0.50:514

याचा अर्थ: दोन @ म्हणजे TCP.

14. logrotate: logs ने disk भरू देऊ नका

हे का लागतं?

App log 50 GB होऊन पूर्ण server थांबवू शकतो. logrotate हवं तेवढंच ठेवतो.

हे काय आहे?

Main config /etc/logrotate.conf, app configs /etc/logrotate.d/ मधे. नेहमीचे options: daily/weekly, rotate 7, compress, delaycompress, missingok, notifempty, maxsize 100M, create 0640 user group, copytruncate (reopen न करणाऱ्या apps साठी), postrotate ... endscript. Timer किंवा cron ने रोज चालतो. -d = dry run, -f = आत्ता force.

Optionअर्थ
rotate 77 जुन्या files ठेवा
compressजुन्या files gzip
delaycompressदुसऱ्या जुन्या file पासून compress
missingokLog नसेल तर error नाही
notifemptyरिकामे logs skip
copytruncateCopy करून जागीच रिकामं

कसं करायचं (step by step)

  1. App साठी rule.
sudo tee /etc/logrotate.d/shop <<'X'
/var/log/shop/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 shop shop
    postrotate
        systemctl reload shop-api >/dev/null 2>&1 || true
    endscript
}
X

Output:

(file text)

याचा अर्थ: एक आठवड्याचे logs, compressed.

  1. Dry run.
sudo logrotate -d /etc/logrotate.d/shop

Output:

rotating pattern: /var/log/shop/*.log  after 1 days (7 rotations)
considering log /var/log/shop/api.log

याचा अर्थ: काही बदलत नाही; फक्त सांगतो.

  1. आत्ता force आणि तपासा.
sudo logrotate -f /etc/logrotate.d/shop && ls /var/log/shop

Output:

api.log  api.log.1

याचा अर्थ: पुढचा run api.log.2.gz बनवेल.

15. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Pooja, insurance, Puneरोज सकाळी auth logs मधे failed loginsgrep 'Failed password' /var/log/secure
Liam, streaming, DublinDeploys मधे service live followjournalctl -fu player-api
Fatima, telecom, Cairoसगळ्या servers चे logs central box ला*.* @@logs.internal:514
Chen, factory sensors, Shenzhenलहान devices वर journal size capjournalctl --vacuum-size=200M
Ana, retail, São Pauloमोठे app logs रोज rotatelogrotate -f /etc/logrotate.d/pos
Vikram, hospital, NagpurCrash reboot आधीचे logsjournalctl -b -1 -p err

16. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
No journal files were found.Persistent नाही आणि त्या boot चं काही नाही, किंवा permission नाहीsudo वापरा; पुढच्या boots साठी /var/log/journal.
sudo mkdir -p /var/log/journal
Hint: You are currently not seeing messages from other users and the system.User systemd-journal/adm मधे नाहीsudo किंवा group जोडा.
sudo usermod -aG systemd-journal $USER
Failed to parse timestamp: 2pmjournalctl ला format माहीत नाही'YYYY-MM-DD HH:MM' किंवा '1 hour ago'.
journalctl --since '2026-10-25 14:00'
Data from the specified boot (-1) is not availableJournal persistent नाहीPersistent storage चालू करा.
sudo mkdir -p /var/log/journal
tail: cannot open '/var/log/secure' for reading: Permission deniedफक्त root ची filesudo वापरा.
sudo tail /var/log/secure
No space left on device (from huge logs)Logs कधी rotate झाले नाहीतमोठ्या files शोधा, rotate आणि vacuum.
sudo du -sh /var/log/* | sort -h | tail
error: skipping "/var/log/shop/api.log" because parent directory has insecure permissionsFolder group/others ना writablesu line जोडा किंवा permissions fix.
su shop shop
rsyslogd: error during parsing file /etc/rsyslog.d/30-myapp.confRule मधे typoRestart आधी validate.
sudo rsyslogd -N1
Disk still full after deleting a logApp अजून deleted file उघडी ठेवूनApp restart किंवा delete ऐवजी truncate.
sudo lsof +L1
Logs stop after rotationApp जुन्या renamed file ला लिहितंpostrotate मधे reload किंवा copytruncate.
copytruncate

17. Troubleshooting step by step

हे का लागतं?

हवा log सापडत नसेल तर program कुठे लिहितो ते तपासा, मग filter करा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. systemd service आहे का? Unit logs.
journalctl -u shop-api -n 50 --no-pager
  1. ते लिहितं त्या files.
sudo lsof -p $(systemctl show -p MainPID --value shop-api) | grep log
  1. Time आणि priority ने कमी.
journalctl --since '1 hour ago' -p warning --no-pager
  1. Kernel बाजू.
journalctl -k -p err --no-pager
  1. Logs चा disk use.
journalctl --disk-usage; sudo du -sh /var/log
  1. Rotation config test.
sudo logrotate -d /etc/logrotate.conf

18. Lab 1: journalctl ने incident तपासा

हे का लागतं?

logger ने log lines बनवा, मग tag, priority आणि time ने शोधा, आणि JSON print.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. काही lines बनवा.
for i in 1 2 3; do logger -t lab -p user.info "order $i ok"; done; logger -t lab -p user.err 'payment gateway timeout'

Output:

(no output)
  1. Tag ने.
journalctl -t lab --no-pager -o cat

Output:

order 1 ok
order 2 ok
order 3 ok
payment gateway timeout
  1. फक्त errors.
journalctl -t lab -p err --no-pager -o cat

Output:

payment gateway timeout
  1. शेवटची 10 minutes.
journalctl -t lab --since '10 min ago' --no-pager | wc -l

Output:

4
  1. JSON fields.
journalctl -t lab -p err -o json-pretty --no-pager | grep -E 'PRIORITY|MESSAGE'

Output:

	"PRIORITY" : "3",
	"MESSAGE" : "payment gateway timeout",

19. Lab 2: rsyslog आणि logrotate ने app ची स्वतःची log file

हे का लागतं?

local1 ला /var/log/lab.log मधे पाठवा आणि रोज rotate, 3 copies.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. rsyslog rule.
echo 'local1.* /var/log/lab.log' | sudo tee /etc/rsyslog.d/40-lab.conf && sudo rsyslogd -N1 && sudo systemctl restart rsyslog

Output:

rsyslogd: End of config validation run. Bye.
  1. लिहा आणि वाचा.
logger -p local1.info 'lab line' && sudo tail -n1 /var/log/lab.log

Output:

Oct 25 12:40:00 web1 ec2-user: lab line
  1. Rotate rule.
printf '/var/log/lab.log {\n daily\n rotate 3\n compress\n missingok\n notifempty\n}\n' | sudo tee /etc/logrotate.d/lab

Output:

/var/log/lab.log {
  1. Force आणि बघा.
sudo logrotate -f /etc/logrotate.d/lab && ls /var/log/lab.log*

Output:

/var/log/lab.log.1.gz
  1. साफ.
sudo rm /etc/rsyslog.d/40-lab.conf /etc/logrotate.d/lab && sudo systemctl restart rsyslog

Output:

(no output)

Ravindra Bagale's Tip

In an incident, start with three filters: -u for the service, --since for the time, -p err for the level. Most problems show up in under 20 lines.

20. नेहमी विचारले जाणारे प्रश्न

प्र. journalctl की /var/log?

दोन्ही. journalctl मधे प्रत्येक systemd service; काही apps फक्त /var/log मधे files.

प्र. Reboot नंतर जुने logs का गायब?

Journal volatile. /var/log/journal बनवा.

प्र. Logs किती दिवस?

journald size limits ने; files logrotate rotate count ने.

प्र. Log file delete करणं safe?

: > file ने truncate किंवा rotate चांगलं. उघडी file delete केल्याने जागा मिळत नाही.

प्र. Facility म्हणजे?

auth, cron, daemon, local0-7 सारखी category, rsyslog rules वापरतात.

प्र. logrotate कधी चालतो?

logrotate.timer किंवा /etc/cron.daily ने रोज.

प्र. copytruncate की postrotate reload?

Reload स्वच्छ; copytruncate मधे काही lines जाऊ शकतात.

प्र. Logs UTC मधे?

journalctl --utc.

21. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. एका service चे logs?

journalctl -u NAME.

प्र. Logs live follow?

journalctl -f किंवा tail -f FILE.

प्र. SSH login logs कुठे?

/var/log/secure किंवा /var/log/auth.log.

प्र. logrotate काय करतो?

Schedule ने जुने logs rename, compress आणि delete.

Mid level level

प्र. मागच्या boot चे logs?

journalctl -b -1, persistent journal हवा.

प्र. शेवटच्या तासातले फक्त errors?

journalctl --since '1 hour ago' -p err.

प्र. Journal लहान कसा?

journalctl --vacuum-size किंवा --vacuum-time; SystemMaxUse.

प्र. rsyslog मधे @ vs @@?

UDP vs TCP forwarding.

Senior level

प्र. Disk full पण du मधे /var/log लहान. का?

Deleted files अजून उघड्या; lsof +L1 ने शोधा, holder restart.

प्र. 200 servers साठी central logging design.

TCP+TLS वर rsyslog/journald forward किंवा agent ने central store, retention, indexing आणि alerts सह.

प्र. Structured (JSON) logs का?

Machines fields नेमके filter करतात; journald fields ठेवतो; tools index करतात.

प्र. Rotation मधे logs न गमावता?

postrotate मधे app reload/HUP; busy logs साठी copytruncate टाळा.

घरी करून बघा

  1. प्रत्येक run ला logger -t home ने 'hello' लिहिणारी script बनवा. 5 वेळा चालवा आणि journalctl -t home ने lines मोजा.
  2. तुमच्या machine वर journalctl --disk-usage तपासा. 300M cap असलेली journald.conf.d file लिहा.

सराव Tasks

या scenario बद्दल

Vidarbha Cotton Mills हा नागपूर मधला वस्त्रोद्योग व्यवसाय आहे. Ganesh Wankhede त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं एका service चे logs

का: Logs काय चुकलं ते सांगतात.

काय करायचं: nginx चे journal logs.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Live logs

का: Logs काय चुकलं ते सांगतात.

काय करायचं: sshd logs live follow.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं शेवटच्या 50 lines

का: Logs काय चुकलं ते सांगतात.

काय करायचं: शेवटच्या 50 journal lines.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Journal size

का: Logs काय चुकलं ते सांगतात.

काय करायचं: Journal किती disk वापरतो.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Log line लिहा

का: Logs काय चुकलं ते सांगतात.

काय करायचं: backup tag सह "backup done" system log मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Classic log file

का: Logs काय चुकलं ते सांगतात.

काय करायचं: /var/log/messages live follow.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम हा boot

का: Logs काय चुकलं ते सांगतात.

काय करायचं: फक्त current boot चे logs.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम मागचा boot

का: Logs काय चुकलं ते सांगतात.

काय करायचं: मागच्या boot चे logs.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम फक्त errors

का: Logs काय चुकलं ते सांगतात.

काय करायचं: फक्त error आणि त्याहून वाईट.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम वेळेपासून

का: Logs काय चुकलं ते सांगतात.

काय करायचं: एक तासापूर्वीपासून logs.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Kernel messages

का: Logs काय चुकलं ते सांगतात.

काय करायचं: Journal मधून फक्त kernel messages.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम rsyslog restart

का: Logs काय चुकलं ते सांगतात.

काय करायचं: Config edit नंतर rsyslog restart.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Journal छोटा

का: Logs काय चुकलं ते सांगतात.

काय करायचं: Journal 500M पर्यंत कमी.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड JSON output

का: Logs काय चुकलं ते सांगतात.

काय करायचं: nginx logs प्रत्येक line JSON.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड logrotate test

का: Logs काय चुकलं ते सांगतात.

काय करायचं: nginx logrotate config dry-run.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Rotation force

का: Logs काय चुकलं ते सांगतात.

काय करायचं: nginx logs आत्ता rotate करायला force.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. /var/log मधे text logs; journalctl journal वाचतो.
  2. -u, -f, --since, -p आणि -b मुख्य filters.
  3. Kernel साठी -k आणि dmesg, fields साठी -o json.
  4. Persistent journal + vacuum history आणि disk safe.
  5. logger लिहितो, rsyslog route आणि forward करतो.
  6. logrotate rotate, compress आणि जुने delete करतो.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

journalctl filters. Error पटकन शोधा. -u unit, -f follow. -p err, --since, -b. आजचे एका service चे errors.
उजळणी card: journalctl filters · PNG download करा · Card page उघडा
logrotate safely. Logs ने disk भरू नये. daily, rotate 7, compress. विश्वास आधी dry-run. Config test.
उजळणी card: logrotate safely · PNG download करा · Card page उघडा
journalctl vs /var/log files. Binary indexed journal. / rsyslog ने plain text.
तुलना: journalctl vs /var/log files · PNG download करा · Card page उघडा
logrotate vs journalctl --vacuum. Text log files. / systemd journal.
तुलना: logrotate vs journalctl --vacuum · PNG download करा · Card page उघडा
journald vs rsyslog?. journald: binary, indexed. rsyslog: text files, remote. बहुतेक दोन्ही एकत्र.
मुलाखत card: journald vs rsyslog? · PNG download करा · Card page उघडा
Logs ने disk भरली?. मोठ्या files शोधा. Journal vacuum, rotation fix. Journal छोटा.
मुलाखत card: Logs ने disk भरली? · PNG download करा · Card page उघडा
copytruncate का?. App file उघडी ठेवतो. Copy करून जागीच रिकामी. किंवा app ला reopen signal.
मुलाखत card: copytruncate का? · PNG download करा · Card page उघडा
Reboot नंतर logs?. Default /run मधे असू शकतं. /var/log/journal बनवा. journald restart.
मुलाखत card: Reboot नंतर logs? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.