Pantau kemajuan program pada banyak server

9

Kami memiliki tiga server yang menjalankan program python yang menjalankan tugas analisis data dalam satu tmuxsesi. Metode yang kami gunakan saat ini adalah ssh'ing ke masing-masing dari mereka yang menghubungkan tmuxsesi dan menonton output pada baris perintah.

Metode ini membosankan, jadi yang kami cari adalah solusi yang mengotomatiskan pemantauan kemajuan program (output pada CLI) untuk beberapa server sekaligus. Kami idealnya menginginkan solusi UI web tetapi CLI juga akan sangat cocok.

Terima kasih telah membaca.

pupuk dr tahi burung
sumber
Gunakan prometheus dan grafana :-)
Monica - M. Schröder

Jawaban:

8

Setiap kali Anda menjalankan perintah jangka panjang ad-hoc, Anda harus mundur dan memikirkan kembali proses Anda, karena itu harus otomatis, termasuk penanganan kesalahan.

Daripada menghubungkan ke server untuk melihat status, pendekatan yang lebih baik adalah mendorong informasi itu keluar. Anda dapat melakukan berbagai hal jika Anda ingin menulis banyak kode khusus, tetapi hal yang paling sederhana adalah mulai mengirim output melalui syslog ke sistem logging terpusat (syslog itu sendiri, atau ELK, atau apa pun). Dengan begitu Anda dapat memantau semuanya dari lokasi pusat.

Berpikir ke depan, jika ini bukan tugas satu kali, pemantauan harus dilakukan secara otomatis. Artinya, Anda tidak harus hanya menonton log untuk melihat apakah ada kemajuan sebagaimana mestinya. Alih-alih, Anda harus menganggap mereka (dan melanjutkan pekerjaan lain) sampai peringatan Anda padam . Ini adalah investasi waktu untuk mendapatkan peringatan yang luas dan dapat diandalkan, tetapi seiring dengan semakin kompleksnya sistem Anda, sistem ini akan terbayar karena Anda tidak harus memantau semuanya kapan pun Anda mengubah apa pun .

Boikot SE untuk Monica Cellio
sumber
Ini bukan satu hal. Saya suka ide Anda tentang menginvestasikan waktu ke dalam otomatisasi pemantauan dan pemusatan logging. Apakah Anda memiliki saran untuk alat yang gratis untuk digunakan dan yang berfungsi dengan baik dengan host ubuntu yang menjalankan program?
guano
@ Guano Saya pikir Wissam telah membahas semua alat spesifik yang akan saya sebutkan, selain menggunakan sesuatu seperti Sensu untuk menyalakan peringatan.
Boikot SE untuk Monica Cellio
4

Graylog

Karena dua orang sudah menyarankan Anda untuk memikirkan kembali proses Anda saat ini (yang saya kedua karena akan menyebabkan Anda tidak bisa tidur di beberapa titik;)), saya akan pergi ke rute lain dan merekomendasikan perangkat lunak tertentu yang - menurut saya - cocok untuk sebagian besar kebutuhan Anda: Graylog .

Saya menerapkan dan menggunakan beberapa tumpukan ELK untuk agregasi log dan intelijen bisnis dan juga menjalankan / memelihara graylog selama sekitar dua tahun sekarang di perusahaan saya saat ini. Saya merekomendasikan graylog karena memiliki fitur-fitur berikut sebagai bawaan dan - menurut saya - sedikit lebih mudah untuk diatur dan dipelihara:

  • Antarmuka web
  • Kemampuan multiuser
  • Peringatan

Sejauh yang saya mengerti skenario Anda, sepertinya Anda harus bertindak atau diberitahu tentang peristiwa tertentu yang muncul dalam aliran pesan log Anda. Jika kita melihat fitur Graylog :

Trigger tindakan atau dapatkan pemberitahuan ketika sesuatu membutuhkan perhatian, seperti upaya login gagal, pengecualian atau penurunan kinerja.

Gagasan: Kirim email atau pesan Slack ke tim Anda. Menelurkan mesin baru untuk menyeimbangkan beban pemrosesan. Blokir rentang IP di firewall Anda secara otomatis ketika serangan terdeteksi.

Untuk mencoba Graylog, saya akan merekomendasikan dua langkah berikut:

  • Siapkan host khusus yang dapat dijangkau oleh semua host aplikasi Anda untuk menjalankan graylog (dan dependensinya MongoDB dan ElasticSearch)
  • Kirim log dari aplikasi Anda ke graylog (mungkin sebagai pesan GELF )

Catatan: Dua langkah ini memiliki kemampuan untuk mengisi halaman dan halaman praktik terbaik dan harus menerima setidaknya beberapa pemikiran. Belum lagi bahwa graylog bukan solusi pemantauan dan graylog itu sendiri harus dipantau oleh alat pemantauan yang tepat (seperti misalnya Icinga, Prometheus, Nagios untuk menyebutkan beberapa saja).

malte
sumber
3

Saya setuju dengan @Xiong Chiamiov dan saya ingin memberikan opsi yang lebih jelas. Jika Anda ingin setiap baris di CLI dipantau, saya akan menyarankan untuk mengarahkan ulang semua output ke file tertentu dan kesalahan ke file lain, kemudian gunakan logstash atau filebeat untuk mengirim kedua file ini ke Elasticsearch , maka Anda dapat mengkonfigurasi Logtril dengan Kibana memberi Anda melihat, menganalisis, mencari, dan mengekor log peristiwa dari beberapa host secara realtime dengan antarmuka yang ramah

Wissam Roujoulah
sumber
1

terpusat tmux

Sementara jawaban lain lebih pintar dan lebih bijaksana untuk jangka panjang saya pikir solusi CLI cepat hacky layak disebutkan. Jalankan tmuxdi satu server yang dapat menjangkau semua yang lain. Tempat yang bagus untuk ini adalah kotak lompatan atau tempat lain yang biasanya orang masuk. Dalam tmuxssh "tengah" ini untuk setiap kotak dalam panel dan ekor yang berbeda, apa pun file log yang diperlukan. Anda dapat menggunakan ctrl- b "untuk mendapatkan lebih banyak panel di satu tab di dalamnya tmux. Sekarang yang harus dilakukan seseorang untuk memeriksa semuanya adalah melampirkan ke tmuxsesi "pusat" dan mereka dapat melihat seluruh cluster secara sekilas.

Saya menghabiskan banyak waktu untuk membangun solusi UI web yang sedang Anda upayakan, tetapi jika Anda membutuhkannya hari ini, meretas sesuatu yang tmuxdapat menyelamatkan hari.

anak ayam
sumber