रूपलॉग ठीक से काम नहीं कर रहा है, यह कुछ भी लॉग नहीं करता है


11

मैं एक डेबियन सर्वर चला रहा हूं और कुछ दिनों पहले मेरे rsyslog ने बहुत अजीब व्यवहार करना शुरू कर दिया, डेमन चला रहा है लेकिन यह कुछ भी नहीं करता है। बहुत से लोग सिस्टम का उपयोग करते हैं लेकिन मैं केवल (कानूनी) रूट एक्सेस वाला हूं।

मैं डिफ़ॉल्ट rsyslogd कॉन्फ़िगरेशन का उपयोग कर रहा हूं (यदि आपको लगता है कि प्रासंगिक है तो मैं इसे संलग्न करूंगा, लेकिन यह वह है जो पैकेज के साथ आता है)।

सभी लॉग फ़ाइलों को घुमाए जाने के बाद, वे खाली रह गए हैं:

# ls -l /var/log/*.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/alternatives.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/auth.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/daemon.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/dpkg.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/kern.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/lpr.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/mail.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/user.log

किसी लॉग लेखन को बाध्य करने का कोई भी प्रभाव नहीं पड़ता है:

# logger hey
# ls -l /var/log/messages 
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/messages

Lsof से पता चलता है कि rsyslogd में कोई लॉग फाइल नहीं है:

# lsof -p 1855
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF       NODE NAME
rsyslogd 1855 root  cwd    DIR      202,0     4096          2 /
rsyslogd 1855 root  rtd    DIR      202,0     4096          2 /
rsyslogd 1855 root  txt    REG      202,0   342076      21649 /usr/sbin/rsyslogd
rsyslogd 1855 root  mem    REG      202,0    38556      32153 /lib/i386-linux-gnu/i686/cmov/libnss_nis-2.13.so
rsyslogd 1855 root  mem    REG      202,0    79728      32165 /lib/i386-linux-gnu/i686/cmov/libnsl-2.13.so
rsyslogd 1855 root  mem    REG      202,0    26456      32163 /lib/i386-linux-gnu/i686/cmov/libnss_compat-2.13.so
rsyslogd 1855 root  mem    REG      202,0   297500    1061058 /usr/lib/rsyslog/imuxsock.so
rsyslogd 1855 root  mem    REG      202,0    42628      32170 /lib/i386-linux-gnu/i686/cmov/libnss_files-2.13.so
rsyslogd 1855 root  mem    REG      202,0    22784    1061106 /usr/lib/rsyslog/imklog.so
rsyslogd 1855 root  mem    REG      202,0  1401000      32169 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
rsyslogd 1855 root  mem    REG      202,0    30684      32175 /lib/i386-linux-gnu/i686/cmov/librt-2.13.so
rsyslogd 1855 root  mem    REG      202,0     9844      32157 /lib/i386-linux-gnu/i686/cmov/libdl-2.13.so
rsyslogd 1855 root  mem    REG      202,0   117009      32154 /lib/i386-linux-gnu/i686/cmov/libpthread-2.13.so
rsyslogd 1855 root  mem    REG      202,0    79980      17746 /usr/lib/libz.so.1.2.3.4
rsyslogd 1855 root  mem    REG      202,0    18836    1061094 /usr/lib/rsyslog/lmnet.so
rsyslogd 1855 root  mem    REG      202,0   117960      31845 /lib/i386-linux-gnu/ld-2.13.so
rsyslogd 1855 root    0u  unix 0xebe8e800      0t0        640 /dev/log
rsyslogd 1855 root    3u  FIFO        0,5      0t0       2474 /dev/xconsole
rsyslogd 1855 root    4u  unix 0xebe8e400      0t0        645 /var/spool/postfix/dev/log
rsyslogd 1855 root    5r   REG        0,3        0 4026532176 /proc/kmsg

मैं बहुत निराश था कि यहां तक ​​कि rsyslog पैकेज को फिर से स्थापित करना, लेकिन यह अभी भी कुछ भी लॉग करने से इनकार करता है:

# apt-get remove --purge rsyslog
# apt-get install rsyslog

मुझे लगा कि किसी ने सिस्टम को हैक कर लिया है, इसलिए नेटस्टैट द्वारा दिखाए गए पोर्ट की तुलना करने के लिए एक दूरस्थ मेजबान में छिपाने की प्रक्रिया / पोर्ट और नैम्प को खोजने के प्रयास में अनहाइड, रनकुंटर, चकरोटिटक चलाएं। और मुझे पता है कि इसका कोई मतलब नहीं है, लेकिन सब ठीक है। सिस्टम में एक iptables फ़ायरवॉल है जो आवक / जावक कनेक्शन के साथ बहुत प्रतिबंधक है।

यह मुझे पागल कर रहा है, किसी भी विचार यहाँ क्या हो रहा है?

[संपादित करें - डिस्क स्थान की जानकारी]

# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 24G   22G  629M  98% /
/dev/root              24G   22G  629M  98% /
devtmpfs               10M  112K  9.9M   2% /dev
tmpfs                  76M   48K   76M   1% /run
tmpfs                 5.0M     0  5.0M   0% /run/lock
tmpfs                 151M   40K  151M   1% /tmp
tmpfs                 151M     0  151M   0% /run/shm

[संपादित करें - स्ट्रेस जानकारी]

स्ट्रेस मेरे लिए ठीक लग रहा है

[pid 28824] access("/var/log/auth.log", F_OK) = 0
[pid 28824] access("/var/log/syslog", F_OK) = 0
[pid 28824] access("/var/log/daemon.log", F_OK) = 0
[pid 28824] access("/var/log/kern.log", F_OK) = 0
[pid 28824] access("/var/log/lpr.log", F_OK) = 0
[pid 28824] access("/var/log/mail.log", F_OK) = 0
[pid 28824] access("/var/log/user.log", F_OK) = 0
[pid 28824] access("/var/log/mail.info", F_OK) = 0
[pid 28824] access("/var/log/mail.warn", F_OK) = 0
[pid 28824] access("/var/log/mail.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.crit", F_OK) = 0
[pid 28824] access("/var/log/news/news.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.notice", F_OK) = 0
[pid 28824] access("/var/log/debug", F_OK) = 0
[pid 28824] access("/var/log/messages", F_OK) = 0

पूरा स्ट्रेस लॉग यहां से डाउनलोड किया जा सकता है


2
क्या लॉग डिस्क भरी हुई है?
जेनी डी

क्षमा करें, मैं उस जानकारी को जोड़ना भूल गया, मैं प्रश्न को अपडेट करूंगा। लेकिन लॉग लिखने के लिए अभी भी पर्याप्त जगह है।
विक्टर हेनरिकेज़

2
कोशिश करें और स्ट्रेस -p <pid> या
स्ट्रेस के

अच्छी सलाह, दुर्भाग्य से मैं कुछ भी प्रासंगिक नहीं पा सका हूं। मैंने स्ट्रेस लॉग के साथ प्रश्न को अपडेट किया है, बस मामले में आप कुछ पा सकते हैं जो मुझे याद आ रही है। मैं वास्तव में निराश हूं।
विक्टर हेनरिकेज़

डिबग मोड में मैन्युअल रूप से चलाएं (-d यदि iirc), तो यह कांटा नहीं होगा, या स्ट्रोक्स के फॉक्स विकल्प का उपयोग नहीं करेगा। मेरा बुरा, क्षमा करें।
मंजीकी

जवाबों:


13

सबसे शायद यह एक फ़ाइल स्वामित्व समस्या है। rsyslog रूट के रूप में चलना शुरू कर देता है, लेकिन फिर विशेषाधिकार छोड़ देता है और उपयोगकर्ता syslog (कॉन्फ़िगरेशन निर्देश $ PrivDropToUU ) के रूप में चलता है ।

syslog फाइलें (dif.log, daemon.log, आदि) शुरू में syslog के स्वामित्व में हैं: प्रशंसा लेकिन यदि आप स्वामित्व को रूट में बदलते हैं (जैसा कि यह आपकी फ़ाइल सूची से लगता है) तो कोई बात नहीं अगर आप HUP (यानी, पुनः लोड) rslog या इसे पुनः आरंभ करें, कि विशेषाधिकारों की कमी के कारण उन फाइलों को खोलने से इनकार कर दिया जाएगा।

यदि स्वामित्व का परिवर्तन लॉग रोटेशन के बाद हुआ है, तो createअपने लॉगोट्रेट कॉन्फ़िगरेशन के विकल्प की जांच करें। या तो कॉन्फ़िगर इसे पसंद create 0644 syslog admमें /etc/logrotate.d/rsyslogया और भी बेहतर, यह विश्व स्तर पर परिभाषित /etc/logrotate.confमोड, मालिक और समूह के लिए, बस इस तरह छोड़ते हुए create(जो वैसे डिफ़ॉल्ट कॉन्फ़िगरेशन है), जिस स्थिति में फ़ाइल की समान मूल्यों इस्तेमाल किया जाएगा। man logrotateपूर्ण विवरण के लिए परामर्श करें ।

Rsyslog के कुछ संस्करणों में फ़ाइल स्वामित्व के बाहरी परिवर्तन के लिए वर्कअराउंड के रूप में एक निर्देश $ omfileForceChown शामिल है , लेकिन यह अनुशंसित नहीं है। अनुशंसित तरीका स्वामित्व और अनुमतियों को ठीक से कॉन्फ़िगर करना है। इस मुद्दे के बारे में और जानकारी उस लिंक के बाद मिल सकती है।


1
यह। अधिक चर्चा और विस्तार के लिए, लॉन्चपैड पर rsyslogd बग देखें: Bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
जस्टिनसी

आप रॉक मैन, मैंने इस समस्या को खोजने के लिए दो दिन खो दिए
डेफ्रिटास

1

यदि फ़ाइल अनुमतियाँ सभी अच्छी हैं और लॉगरोट सही तरीके से कॉन्फ़िगर किया गया है, तो आपका अगला कदम rsyslog सिस्टम कॉल पर एक नज़र रखना होगा।

# find the start command 
me@d2-slprod02:~$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-06-21 10:04:43 CEST; 2h 26min ago
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
 Main PID: 18753 (rsyslogd)
    Tasks: 4
   Memory: 1.4M
      CPU: 291ms
   CGroup: /system.slice/rsyslog.service
           └─18753 /usr/sbin/rsyslogd -n

 # let's have a look at syscalls.
 sudo strace /usr/sbin/rsyslogd -n
 ...
 write(2, "rsyslogd: error during parsing f"..., 206rsyslogd: error during parsing file /etc/rsyslog.d/50-default.conf, on or before line 8: warnings occured in file '/etc/rsyslog.d/50-default.conf' around line 8 [v8.16.0 try http://www.rsyslog.com/e/2207 ]
 ...

जैसे ही इस फाइल में मेरा टाइपो तय हुआ /etc/rsyslog.d/50-default.conf, फिर से syslog / var / log / syslog लिखना शुरू कर दिया!


0

मुझे यह समस्या थी क्योंकि मेरे एसएसडी पर पहनने को कम करने के लिए मेरा / var / लॉग एक रैमडिस्क पर रहता था और मैं इसे एक एचडीडी में स्थानांतरित करना चाहता था, इसलिए मेरे पास केवल वर्तमान बूट की तुलना में अधिक इतिहास था।

मजेदार बात यह थी, क्योंकि यह एक रैमडिस्क था, मेरे पास एकल-उपयोगकर्ता मोड से कॉपी करने के लिए कोई नहीं था, इसलिए मुझे नहीं पता था कि अनुमतियाँ और स्वामित्व क्या होने चाहिए थे! ओह।

लघु कहानी, आपके नए स्थान के साथ:

chmod 770 /var/log
chgrp syslog /var/log
initctl restart rsyslog

रुपयेलॉग अब / syslog उपयोगकर्ता, समूह 'syslog' के रूप में चलने के बाद से / var / log में लिख सकेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.