Làm cách nào để giới hạn kích thước của syslog của tôi?


13

Tôi đã có máy tính của mẹ tôi chạy Ubuntu 12.04 LTS. Nó đã hoạt động tốt nhưng tất cả các syslog đột ngột đã được lấp đầy. Và bằng cách điền vào tôi có nghĩa là tôi vừa xóa một /var/log/syslogcái có kích thước 400GB. Có - Gigabyte.

Mặc dù tôi chắc chắn có một số thông tin hữu ích trong đó, tôi không chắc rằng 400GB là bất kỳ loại thông tin nào để sàng lọc. Và điều thực sự đáng kinh ngạc là nó đã xảy ra trong khoảng thời gian 8 giờ - tôi đã chạy dfvào khoảng giữa trưa, và từ đó đến giờ, ổ đĩa của cô ấy đã chiếm tới 30% (từ dưới 70% đến 100%).

Điều gì có thể gây ra điều này và làm thế nào tôi có thể sửa chữa nó? '

EDIT Có vẻ như usb là người vi phạm:

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
Tôi muốn nói rằng thay vì giới hạn kích thước, bạn nên cố gắng tìm ra cái gì lấp đầy nó. Cần có nhiều tin nhắn lặp đi lặp lại, hãy thử chạy tail -n20 /var/log/syslogđể xem 20 dòng cuối cùng.
mikewhthing

Tôi đã thử điều đó trước khi hos tập tin - dường như không có gì được lặp lại, nhưng tôi sẽ xem lại
Wayne Werner

Vì vậy, điều này có vẻ như vấn đề là "demond_nscan", mà tôi không tìm thấy bất cứ điều gì về google. nscanlà một ứng dụng quét cổng, vì vậy đây có thể là một sửa đổi của ai đó (nhưng tôi chỉ đang lý thuyết hóa). Nếu đây không phải là một ứng dụng mà bạn đang cố gắng chạy một cách rõ ràng, tôi khuyên bạn nên cố gắng tìm chương trình thực thi (giống như find / -iname demond_nscan) và đổi tên nó / thay đổi quyền của nó để nó không thể thực thi được. (Bằng cách này, nếu nó thực sự quan trọng đối với một thứ gì đó, bạn sẽ không mất nó và nếu nó được tung ra bởi một thứ khác, bạn có thể nhận thấy. Ngoài ra, hãy kiểm tra crontab -l?
Steve Kroon

1
demond_nscan có vẻ như nó liên quan đến trình điều khiển quét lexmark.
Wayne Werner

Câu trả lời:


12

Bạn nên tìm hiểu những gì gây ra số lượng lớn tin nhắn, vì nếu bạn khắc phục vấn đề này thì bạn sửa tệp nhật ký lớn.

Tuy nhiên, cho đến lúc đó bạn có thể đặt một cơ sở xoay vòng log trên một trong những điều dưới đây.

  • thời gian (ví dụ: xoay vòng mỗi ngày)
  • kích thước (ví dụ: xoay khi tệp đạt 10mb)

Điều này sẽ được thiết lập trên hệ thống theo mặc định: /etc/logrotate.d/rsyslog

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

Từ đó bạn có thể thấy rằng nó sẽ xoay tập tin he / var / log / syslog hàng ngày và giữ 7 bản sao của tệp được xoay.

Bạn có thể thay đổi điều này để xoay theo giới hạn kích thước, giả sử 1mb hoặc giảm số lượng bản sao lưu trữ.

Cảnh báo: Điều này sẽ không khắc phục được nguyên nhân gốc rễ của vấn đề của bạn , tuy nhiên nó sẽ mua cho bạn một thời gian vì nó sẽ ngăn hệ thống tệp lấp đầy.

  • Nguồn: /etc/logrotate.d/rsyslog
  • Nguồn: người đàn ông logrotate

2
Điều này sẽ không giới hạn kích thước của syslog thực tế!
abu_bua

6

Giới hạn kích thước của logrotate

Mở /etc/logrotate.d/syslogtập tin cấu hình

sudo nano /etc/logrotate.d/syslog

Các tập tin trông sth. giống

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

Thêm ví dụ size 100k trong ngoặc đơn. Sau đó, nó sẽ trông như:

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

Lưu ý rằng điều này giới hạn kích thước tệp của các tệp đang quay chứ không phải tệp syslog thực tế. Lưu các tập tin. Lần tiếp theo công việc chron logrotate bắt đầu, nó sẽ giới hạn kích thước của các bản ghi được xoay.

Giới hạn kích thước của syslog hiện tại

Để giới hạn kích thước /var/log/syslog, bạn phải chỉnh sửa /etc/rsyslog.d/50-default.confvà đặt kích thước nhật ký cố định.

Thêm hoặc sửa đổi cài đặt này, bằng cách thay đổi dòng sau trong /etc/rsyslog.d/50-default.conf:

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

Dưới đây là một đoạn trích của hướng dẫn rsyslog :

Kênh đầu rađược định nghĩa thông qua một lệnh $ outchannel. Cú pháp của nó như sau: $ outchannel name, tên tệp, kích thước tối đa, tên hành động trên kích thước tối đa là tên của kênh đầu ra (không phải tệp), tên tệp là tên tệp được ghi vào , kích thước tối đa kích thước tối đa được phép và kích hoạt tối đa kích thước lệnh được ban hành khi đạt kích thước tối đa. Lệnh này luôn có chính xác một tham số. Nhị phân là một phần của kích thước hành động tối đa trước không gian đầu tiên, tham số của nó là mọi thứ phía sau không gian đó. Xin lưu ý rằng kích thước tối đa được truy vấn TRƯỚC KHI viết thông điệp tường trình vào tệp. Vì vậy, hãy chắc chắn đặt giới hạn này ở mức thấp một cách hợp lý để bất kỳ tin nhắn nào cũng có thể phù hợp. Đối với bản phát hành hiện tại, đặt nó thấp hơn 1k so với bạn mong đợi là hữu ích. Kích thước tối đa phải luôn được chỉ định theo byte - không có ký hiệu đặc biệt (như 1k, 1m, Sọ) tại điểm phát triển này. Hãy nhớ rằng $ outchannel chỉ định nghĩa một kênh có tên là Mt. Nó không kích hoạt nó. Để làm như vậy, bạn phải sử dụng một dòng chọn (xem bên dưới). Dòng chọn đó bao gồm tên kênh cộng với dấu $ phía trước nó. Một mẫu có thể là:. : omfile: $ mychannel Ở dạng hiện tại, các kênh đầu ra chủ yếu cung cấp khả năng giới hạn kích thước tệp đầu ra. Để làm như vậy, chỉ định một kích thước tối đa. Khi đạt được kích thước này, rsyslogd sẽ thực thi lệnh hành động trên kích thước tối đa và sau đó mở lại tệp và thử lại. Lệnh nên là một cái gì đó giống như một kịch bản xoay vòng nhật ký hoặc một điều tương tự.

Nếu không có lệnh hành động kích thước tối đa hoặc lệnh không giải quyết được tình huống, tệp sẽ bị đóng và không bao giờ được mở lại bởi rsyslogd (tất nhiên, ngoại trừ bằng cách hup nó). Logic này được tích hợp khi chúng tôi lần đầu tiên gặp sự cố nghiêm trọng với các tệp lớn hơn 2gb, điều này có thể dẫn đến việc bán phá giá rsyslogd. Trong những trường hợp như vậy, sẽ tốt hơn nếu dừng ghi vào một tệp duy nhất. Trong khi đó, rsyslogd đã được sửa để hỗ trợ các tệp lớn hơn 2gb, nhưng rõ ràng chỉ trên các hệ thống tệp và phiên bản hệ điều hành mới làm như vậy. Vì vậy, nó vẫn có thể có ý nghĩa để thực thi giới hạn kích thước tệp 2gb.

Ở đây kích thước tối đa là 1MB, đặt dòng này trước *.*; ...dòng

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

và thay đổi *.*; ...dòng thành

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

Khởi động lại rsyslogd

sudo service rsyslog restart

0

Tôi đã có cùng một vấn đề với một chiếc Nether Pro915 trong hai tuần. Tôi đã làm hai điều, và bây giờ nó hoạt động tốt. Tôi cài đặt lại trình điều khiển. (Đừng nghĩ rằng đây là những gì đã giúp.) Tôi lấy ra phần mở rộng USB tôi đang sử dụng, khiến tổng chiều dài gần 15 'và có thể không hoàn toàn tương thích. Tôi nghi ngờ rằng trình điều khiển Nether cho các hệ thống Linux có thể đang phát hiện tín hiệu kém hoặc kém thời gian, và muốn cho bạn biết về nó 10 tỷ lần mỗi ngày. Hãy thử cải thiện kết nối của bạn bằng cách nào đó.

Logrotate và các giải pháp tương tự đã không giúp tôi. Kern.log và syslog cùng nhau đã đăng nhập hơn 1TB mỗi ngày! Logrotate có thể giúp nếu bạn có thể thiết lập nó chạy cứ sau mười hai phút.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.