Đăng nhập tốt hơn cho cronjobs? Gửi đầu ra cron đến syslog?


43

Tôi đang tìm kiếm một cách tốt hơn để đăng nhập cronjobs. Hầu hết các cronjobs có xu hướng spam email hoặc bảng điều khiển, bị bỏ qua hoặc tạo một logfile khác.

Trong trường hợp này, tôi có tập lệnh Nagios NSCA gửi dữ liệu đến một trung tâm Nagios. Tập lệnh send_nsca này cũng in một dòng trạng thái thành STDOUT, biểu thị thành công hay thất bại.

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk

Điều này gửi email thông báo sau đến root @ localhost, sau đó được chuyển tiếp đến nhóm sysadmin của tôi. Thư rác.

chuyển tiếp nsca_check_disk: 1 gói dữ liệu được gửi đến máy chủ thành công.

Tôi đang tìm kiếm một phương pháp ghi nhật ký:

  1. Không spam thư đến email hoặc bảng điều khiển
  2. Đừng tạo một logfile krufty khác yêu cầu dọn dẹp hàng tháng hoặc nhiều năm sau đó.
  3. Nắm bắt thông tin nhật ký ở đâu đó, để có thể xem sau nếu muốn.
  4. Hoạt động trên hầu hết các unixes
  5. Phù hợp với một cơ sở hạ tầng đăng nhập hiện có.
  6. Sử dụng các quy ước nhật ký hệ thống phổ biến như 'cơ sở' và 'ưu tiên'
  7. Có thể làm việc với các tập lệnh của bên thứ ba mà không phải lúc nào cũng đăng nhập nội bộ.

Câu trả lời:


69

Trong quá trình viết câu hỏi này, tôi đã tự trả lời. Vì vậy, tôi sẽ tự trả lời " Phong cách nguy hiểm ". Điều này mở rộng dựa trên câu trả lời được cung cấp bởi Dennis Williamson.

Sau đây sẽ gửi bất kỳ đầu ra Cron nào tới /usr/bin/logger(bao gồm cả stderr, được chuyển đổi thành thiết bị xuất chuẩn bằng cách sử dụng 2>&1), sẽ gửi đến syslog, với một 'thẻ' là nsca_check_disk. Syslog xử lý nó từ đó. Vì các hệ thống này (CentOS và FreeBSD) đã có các cơ chế xoay vòng nhật ký tích hợp, tôi không cần phải lo lắng về việc đăng nhập như / var/log/mycustom.logđiền vào đĩa.

*/5 * * * * root    /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk

/ var / log / message hiện có thêm một thông báo cho biết điều này:

Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.

Tôi thích / usr / bin / logger, vì nó hoạt động tốt với cấu hình và cơ sở hạ tầng syslog hiện có, và được bao gồm trong hầu hết các bản phân phối Unix. Hầu hết các bản phân phối * nix đã thực hiện luân chuyển nhật ký và thực hiện tốt.


1
Lệnh 2> & 1 làm gì? nó có nghĩa là gì? Cảm ơn bạn.
Brettski


với systemd trong Ubuntu 00 00 * * * systemd-cat -t "tagname" /path/to/app.shsausudo crontab -u root -e
bảnh bao vào

5

Ống đầu ra thông qua logger .

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice

Chỉnh sửa: Bản cập nhật của bạn có vẻ như đúng cách để đi.


Cảm ơn! Sau khi tôi đăng câu hỏi của mình, tôi đã thấy rằng các ống dẫn của Apache ghi nhật ký đầu ra vào / usr / bin / logger. Tôi đã không nhận ra rằng chúng ta có thể dẫn đầu ra tới logger (1) - nó không có trong trang!
Stefan Lasiewski

2
"tin nhắn - Viết tin nhắn để ghi nhật ký; nếu không được chỉ định và cờ -f không được cung cấp, đầu vào tiêu chuẩn được ghi lại."
Dennis Williamson

1

Bạn cũng có thể chạy crondvới tùy chọn -s(hoặc -Strong Busybox) để đầu ra được gửi đến syslog.

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.