ฉันจะ จำกัด ขนาด syslog ของฉันได้อย่างไร


13

ฉันมีคอมพิวเตอร์แม่ที่ใช้ Ubuntu 12.04 LTS มันใช้งานได้ดี แต่ syslog ที่เกิดขึ้นกะทันหันก็หมดไป และเมื่อเติมเต็มฉันหมายความว่าฉันเพิ่งลบ a /var/log/syslogที่มีขนาด 400GB ใช่ - กิกะไบต์

ในขณะที่ฉันแน่ใจว่ามีข้อมูลที่เป็นประโยชน์อยู่ในนั้นฉันไม่แน่ใจว่า 400GB เป็นข้อมูลชนิดใดที่จะลอดผ่าน และสิ่งที่น่าทึ่งมากเกี่ยวกับมันก็คือมันเกิดขึ้นภายในระยะเวลา 8 ชั่วโมง - ฉันวิ่งdfไปตอนเที่ยงและระหว่างนั้นและตอนนี้ไดรฟ์ของเธอก็เต็ม 30% (จากระดับต่ำกว่า 70% ถึง 100%)

สิ่งใดที่ทำให้เกิดสิ่งนี้และฉันจะแก้ไขได้อย่างไร "

แก้ไข ดูเหมือน usb เป็นผู้กระทำผิด:

Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use

2
ฉันจะบอกว่าแทนที่จะ จำกัด ขนาดคุณควรพยายามคิดให้ออกว่ามันเติมอะไร ควรมีข้อความซ้ำจำนวนมากลองใช้tail -n20 /var/log/syslogเพื่อดูที่บรรทัด 20 บรรทัดสุดท้าย
mikewhething

ฉันลองแล้วก่อนที่จะซ่อนไฟล์ - ดูเหมือนว่าจะไม่มีอะไรเกิดขึ้นซ้ำอีก แต่ฉันจะตรวจสอบอีกครั้ง
Wayne Werner

ดังนั้นนี่ดูเหมือนว่าปัญหาคือ "demond_nscan" ซึ่งฉันไม่พบอะไรเลยใน google nscanเป็นแอพพลิเคชั่นสแกนพอร์ตดังนั้นนี่อาจเป็นการดัดแปลงของใครบางคน (แต่ฉันแค่สร้างทฤษฎี) หากนี่ไม่ใช่แอปพลิเคชันที่คุณพยายามเรียกใช้อย่างชัดแจ้งฉันขอแนะนำให้พยายามค้นหาไฟล์ที่เรียกใช้งานได้ (เช่นfind / -iname demond_nscan) และเปลี่ยนชื่อ / เปลี่ยนสิทธิ์ใช้งานจึงไม่สามารถใช้งานได้ (ด้วยวิธีนี้ถ้าเป็นสิ่งสำคัญจริง ๆ คุณไม่ได้หายไปและถ้ามีการเปิดตัวโดยอย่างอื่นคุณอาจสังเกตเห็นอีกด้วยตรวจสอบcrontab -lหรือไม่
Steve Kroon

1
ดูเหมือนว่า demond_nscan จะเกี่ยวข้องกับไดรเวอร์สแกน lexmark
Wayne Werner

คำตอบ:


12

คุณควรตรวจสอบสิ่งที่ทำให้เกิดข้อความจำนวนมากเช่นถ้าคุณแก้ไขปัญหานี้แล้วคุณแก้ไขไฟล์บันทึกขนาดใหญ่

อย่างไรก็ตามจนกระทั่งถึงตอนนั้นคุณสามารถวางฐานการหมุนที่ด้านล่าง

  • เวลา (เช่นหมุนทุกวัน)
  • ขนาด (เช่นหมุนเมื่อไฟล์ถึง 10mb)

นี่จะเป็นการตั้งค่าในระบบตามค่าเริ่มต้นแล้ว: /etc/logrotate.d/rsyslog

 /var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
            reload rsyslog >/dev/null 2>&1 || true
    endscript
 }

จากนี้คุณจะเห็นว่ามันจะหมุนไฟล์เขา / var / log / syslog ทุกวันและเก็บ7 สำเนาของไฟล์หมุน

คุณสามารถเปลี่ยนสิ่งนี้ให้หมุนได้ในขนาดที่ จำกัด พูด 1mb หรือลดจำนวนสำเนาที่เก็บ

คำเตือน: สิ่งนี้จะไม่แก้ไขสาเหตุที่แท้จริงของปัญหาของคุณอย่างไรก็ตามมันจะซื้อเวลาให้กับคุณเนื่องจากมันจะหยุดระบบไฟล์ไม่ให้เติมข้อมูล

  • ที่มา: /etc/logrotate.d/rsyslog
  • ที่มา: man logrotate

2
สิ่งนี้จะไม่ จำกัด ขนาดของ syslog จริง!
abu_bua

6

จำกัด ขนาดของ logrotate

เปิด/etc/logrotate.d/syslogไฟล์ปรับแต่ง

sudo nano /etc/logrotate.d/syslog

ไฟล์ดูเหมือน sth ชอบ

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
....
...

เพิ่มเช่นsize 100k ในวงเล็บ หลังจากนั้นควรมีลักษณะดังนี้:

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

โปรดทราบว่านี่เป็นการ จำกัด ขนาดไฟล์ของไฟล์การหมุนไม่ใช่ไฟล์ syslog จริง บันทึกไฟล์ ในครั้งต่อไปที่งาน chron logrotate เริ่มต้นมันจะ จำกัด ขนาดของบันทึกการหมุน

จำกัด ขนาดของ syslog ปัจจุบัน

ในการ จำกัด ขนาด/var/log/syslogคุณต้องแก้ไข/etc/rsyslog.d/50-default.confและตั้งค่าขนาดบันทึกถาวร

เพิ่มหรือแก้ไขการตั้งค่านี้โดยเปลี่ยนบรรทัดต่อไปนี้ใน/etc/rsyslog.d/50-default.conf:

.*;auth,authpriv.none       -/var/log/syslog

นี่คือข้อความที่ตัดตอนมาจากคู่มือ rsyslog :

ช่องสัญญาณออกถูกกำหนดผ่านคำสั่ง $ outchannel ไวยากรณ์ของมันมีดังนี้: $ outchannel name, ชื่อไฟล์, ขนาดสูงสุด, ชื่อ action-on-max-size คือชื่อของช่องสัญญาณ (ไม่ใช่ไฟล์), ชื่อไฟล์เป็นชื่อไฟล์ที่จะเขียนถึง ขนาดสูงสุดขนาดสูงสุดที่อนุญาตและคำสั่ง action-on-max-size ที่จะถูกใช้เมื่อถึงขนาดสูงสุด คำสั่งนี้มีพารามิเตอร์หนึ่งตัวเสมอ เลขฐานสองเป็นส่วนหนึ่งของขนาดแอ็คชั่นสูงสุดก่อนช่องว่างแรกพารามิเตอร์ของมันคือทุกอย่างที่อยู่หลังช่องว่างนั้น โปรดทราบว่าขนาดสูงสุดจะถูกสอบถามก่อนที่จะเขียนข้อความบันทึกลงในไฟล์ ดังนั้นให้แน่ใจว่าตั้งค่าขีด จำกัด นี้ไว้ต่ำพอสมควรเพื่อให้ข้อความใด ๆ สำหรับรุ่นปัจจุบันการตั้งค่าให้ต่ำกว่าที่คุณคาดไว้ 1k จะเป็นประโยชน์ ขนาดสูงสุดต้องระบุเป็นไบต์เสมอ - ไม่มีสัญลักษณ์พิเศษ (เช่น 1k, 1m, …) ณ จุดนี้การพัฒนา โปรดทราบว่า $ outchannel เพียงกำหนดช่องด้วย "ชื่อ" มันไม่เปิดใช้งาน ในการทำเช่นนั้นคุณจะต้องใช้ตัวเลือกบรรทัด (ดูด้านล่าง) บรรทัดตัวเลือกนั้นรวมชื่อช่องพร้อมเครื่องหมาย $ ไว้ข้างหน้า ตัวอย่างอาจเป็น:. : omfile: $ mychannel ในรูปแบบปัจจุบันช่องสัญญาณขาออกเป็นหลักให้ความสามารถในการ จำกัด ขนาดไฟล์เอาต์พุต หากต้องการทำเช่นนั้นให้ระบุขนาดสูงสุด เมื่อถึงขนาดนี้แล้ว rsyslogd จะดำเนินการคำสั่ง action-on-max-size จากนั้นเปิดไฟล์อีกครั้งและลองอีกครั้ง คำสั่งควรเป็นสคริปต์การหมุนวนบันทึก

หากไม่มีคำสั่ง action-on-max-size หรือคำสั่งไม่สามารถแก้ไขสถานการณ์ไฟล์จะถูกปิดและไม่เปิดใหม่โดย rsyslogd (ยกเว้นแน่นอนโดยการ huping) ตรรกะนี้ถูกรวมเข้าด้วยกันเมื่อเราพบปัญหาร้ายแรงกับไฟล์ขนาดใหญ่กว่า 2gb ซึ่งอาจนำไปสู่การถ่ายโอนข้อมูลหลักของ rsyslogd ในกรณีเช่นนี้การหยุดเขียนลงไฟล์เดียวจะเหมาะสมกว่า ในขณะเดียวกัน rsyslogd ได้รับการแก้ไขเพื่อรองรับไฟล์ขนาดใหญ่กว่า 2gb แต่เห็นได้ชัดว่าเฉพาะในระบบไฟล์และระบบปฏิบัติการเวอร์ชันที่ทำเช่นนั้น ดังนั้นจึงยังคงเหมาะสมที่จะบังคับใช้ขีด จำกัด ขนาดไฟล์ 2gb

ขนาดสูงสุดคือ 1MB วางบรรทัดนี้ไว้ข้างหน้า*.*; ...บรรทัด

$outchannel mysyslog,/var/log/syslog,1048576

และเปลี่ยน*.*; ...สายเป็น

*.*;auth,authpriv.none  :omfile:$mysyslog

เริ่ม rsyslogd ใหม่

sudo service rsyslog restart

0

ฉันมีปัญหาเดียวกันกับ Lexmark Pro915 เป็นเวลาสองสัปดาห์ ฉันทำสองสิ่งและตอนนี้ก็ใช้ได้ดี ฉันติดตั้งไดรเวอร์อีกครั้ง (อย่าคิดว่านี่เป็นสิ่งที่ช่วยได้) ฉันถอดส่วนขยาย USB ที่ฉันใช้ซึ่งทำให้ความยาวรวมเกือบ 15 'ยาวและอาจไม่เข้ากันได้ทั้งหมด ฉันสงสัยว่าไดรเวอร์ Lexmark สำหรับระบบ Linux อาจตรวจพบสัญญาณไม่ดีหรือมีเวลาไม่ดีและต้องการบอกคุณเกี่ยวกับมัน 10,000 ล้านครั้งต่อวัน ลองปรับปรุงการเชื่อมต่อของคุณอย่างใด

การแก้ปัญหาแบบ Logrotate และคล้ายคลึงกันไม่ได้ช่วยฉัน Kern.log และ syslog ร่วมกันทำการบันทึกมากกว่า 1TB ต่อวัน! Logrotate อาจช่วยได้ถ้าคุณสามารถตั้งค่าให้ทำงานทุกสิบสองนาที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.