Làm cách nào tôi có thể tạo email syslogd một số thông điệp tường trình cho tôi?


13

Tôi muốn có thể nhận được thông báo qua email bất cứ khi nào syslogd ghi nhật ký gì đó, nói errmức độ ưu tiên hoặc cao hơn. Giả sử đây là một trình nền syslog tương thích BSD.

  • Điều này có thể được thực hiện?
  • Tôi có nên sử dụng một đường ống được đặt tên cho một kịch bản shell?
  • Có những giải pháp khả thi nào khác?

Câu trả lời:


6

Đây là một giải pháp sử dụng các đường ống được đặt tên. Nó được thiết lập cho Debian, nhưng bạn sẽ có thể sửa đổi nó cho BSD.


Đã kết thúc dựa trên giải pháp của tôi về điều này để tôi có thể trình bày email. Cảm ơn các liên kết.
jason

Điều này có vẻ quá nhiều của một hack. Tại sao bạn lại dành thời gian viết kịch bản khi có các ứng dụng nguồn mở ổn định để làm điều đó cho bạn? (trong thời gian thực quá). * xem trả lời của tôi.
sucuri

2
Không phải là một hack nào cả. Đó là cách mà loại điều này thường được thực hiện.
Tạm dừng cho đến khi có thông báo mới.

6

Thông báo qua syslogd (8)

Trên máy chủ OpenBSD của tôi, tôi đăng nhập và gửi email các tin nhắn quan trọng từ các ứng dụng web của mình, sử dụng tiện ích local1 . Đây là /etc/syslog.conf của tôi để thực hiện điều đó:

local1.err    /var/log/example.com
local1.err    |while read log; do echo "$log" | /usr/bin/mail -s SYSLOG me@example.com; done

Lưu ý rằng vòng lặp while đọc vô hạn từng dòng từ syslogd và sau đó chuyển nó sang thư qua echo. Điều này quan trọng. Khi echo xuất ra dòng của nó, nó kết thúc đường ống, gửi thư EOF để nó có thể gửi email thông điệp tường trình.

Nói cách khác, bạn không thể chuyển trực tiếp đến thư qua syslogd như vậy:

local1.err    |/usr/bin/mail -s SYSLOG me@example.com

bởi vì syslogd sẽ tiếp tục ghi vào đường ống cho đến khi chính nó bị chấm dứt hoặc gửi tín hiệu HUP, tại thời điểm đó thư sẽ gửi toàn bộ bộ thông điệp tường trình trong một email lớn.

Thông báo qua newsyslog (8)

Lập lịch tin tức trong cron là một cách khác để nhận tin nhắn ở tốc độ chậm hơn hoặc hàng loạt.

Ví dụ: nếu bạn muốn thông báo email hàng ngày về thông điệp tường trình , hãy đặt cờ M và chỉ định địa chỉ email của màn hình trong /etc/newsyslog.conf :

# logfile_name        owner:group  mode  count  size  when  flags  monitor
/var/log/example.com  root:wheel   640   7      *     24    M      me@example.com

Sau đó lên lịch newsyslog trong crontab:

# minute hour  mday  month  wday  command
0        *     *     *      *     /usr/bin/newsyslog
1-59     *     *     *      *     /usr/bin/newsyslog -m

Các -m tùy chọn cho newsyslog (8) trạng thái:

Chế độ giám sát; chỉ các mục được đánh dấu bằng `M 'trong cờ được xử lý. Đối với mỗi tệp nhật ký được theo dõi, bất kỳ đầu ra nhật ký nào kể từ lần cuối newsyslog được chạy với cờ -m được gửi đến người dùng được liệt kê trong phần thông báo màn hình.


3

Bạn có thể muốn xem logcheck hoặc logwatch. Logcheck sẽ gửi email cho bạn hàng giờ với các dòng nhật ký không khớp với một tập các mẫu. Tôi nghi ngờ bạn có thể làm cho nó làm điều đó thường xuyên hơn. Tôi không biết bất kỳ công cụ nào làm điều đó bằng cách xem các logfiles, nhưng tôi chắc chắn có một cái gì đó ngoài đó làm điều đó.


Vâng, tôi không muốn theo dõi và phân tích các tệp nhật ký sau khi chúng được viết, mà chỉ cần nối vào quá trình đăng nhập để tôi có thể nhận được thông báo tức thì.
jason

1

Tôi sẽ sử dụng OSSEC. Nó theo dõi nhật ký của bạn trong thời gian thực và cho phép bạn dễ dàng cảnh báo bằng email (hoặc các phương tiện khác) khi các sự kiện cụ thể được khớp. Sử dụng đơn giản, có thể mở rộng và nguồn mở.

liên kết: http://www.ossec.net


Điều này có thể là quá mức cho ứng dụng. Tuy nhiên, gói này làm rất nhiều và nếu có nhu cầu thì nó có thể phù hợp.
Tạm dừng cho đến khi có thông báo mới.
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.