Cronjobs için daha iyi günlük kaydı? Cron çıktısını syslog'a gönderilsin mi?


43

Cronjobs kaydetmek için daha iyi bir yol arıyorum. Çoğu cronjobs e-postayı veya konsola spam gönderme, yok sayılma veya başka bir günlük dosyası oluşturma eğilimindedir.

Bu durumda, merkezi bir Nagios sunucusuna veri gönderen bir Nagios NSCA komut dosyası var. Bu send_nsca betiği, STDOUT'a tek bir durum satırı da basar, başarı veya başarısızlık gösterir.

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

Bu, aşağıdaki mesajı root @ localhost'e gönderir, bu daha sonra sysadmins ekibime iletilir. İstenmeyen e.

iletilen nsca_check_disk: 1 veri paketi başarıyla barındırıldı.

Bir günlüğe kaydetme yöntemini arıyorum:

  1. İletileri e-postaya veya konsola spam olarak göndermez
  2. Aylar veya yıllar sonra temizleme gerektiren başka bir krufty log dosyası oluşturmayın.
  3. Günlük bilgilerini bir yerde yakalayın, böylece istenirse daha sonra görüntülenebilir.
  4. Çoğu unix üzerinde çalışır
  5. Mevcut bir günlük altyapısına uyar.
  6. “Tesis” ve “öncelik” gibi genel syslog sözleşmelerini kullanır.
  7. Dahili olarak her zaman giriş yapmayan üçüncü taraf komut dosyaları ile çalışabilir.

Yanıtlar:


69

Bu soruyu yazarken kendime cevap verdim. Bu yüzden " Jeopardy tarzı " kendime cevap vereceğim . Bu, Dennis Williamson tarafından verilen cevapta genişliyor.

Aşağıdaki, herhangi bir Cron çıktısını /usr/bin/logger('stdout kullanarak dönüştürülen stderr dahil 2>&1) syslog'a gönderecek olan' etiketi 'ile gönderecektir nsca_check_disk. Syslog oradan halleder. Bu sistemler (CentOS ve FreeBSD) halihazırda yerleşik log döndürme mekanizmalarına sahip olduğundan, var/log/mycustom.logbir diski doldurmak / doldurmak için kaygılanmama gerek kalmaz .

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

/ var / log / messages artık bunu söyleyen ek bir mesaja sahip:

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

/ Usr / bin / logger'ı seviyorum, çünkü mevcut bir syslog yapılandırması ve altyapısı ile iyi çalışıyor ve çoğu Unix dağıtımına dahil edildi. Çoğu * nix dağılımı zaten log dönüşü yapar ve iyi yapar.


1
2> & 1 komutu ne işe yarar? bunun anlamı ne? Teşekkür ederim.
Brettski


00 00 * * * systemd-cat -t "tagname" /path/to/app.shsonra Ubuntu'da systemd ilesudo crontab -u root -e
19:41

5

Çıktıyı logger aracılığıyla borulayın .

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

Düzenleme: Güncellemenin doğru yolu gibi görünüyor.


Teşekkürler! Sorumu gönderdikten sonra Apache'nin log çıktısını / usr / bin / logger olarak gördüm. Çıktının logger'a (1) gönderebileceğimizin farkında değildim - kılavuzda değil!
Stefan Lasiewski,

2
"message - Günlüğe kaydedilecek mesajı yazın; belirtilmezse ve -f bayrağı girilmezse standart giriş kaydedilir."
Dennis Williamson,

1

Çıktının gönderilmesi için crondseçenekle -s(veya -SBusybox'ta) da çalışabilirsiniz syslog.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.