Pemantauan server web sederhana (hidup)

8

Adakah tip tentang perangkat lunak untuk dipantau jika server web aktif dan berjalan di linux? Seharusnya bisa dijalankan dengan tidak mengetahui apa pun selain URL. Dan itu harus memiliki fungsionalitas untuk mengirim peringatan email ketika situs turun. Seharusnya tidak sulit untuk menulis skrip untuk ini sendiri tetapi tampaknya tidak ada gunanya jika sudah ada sesuatu yang baik di luar sana.

Perhatikan bahwa saya akan memantau server internal, jadi ini harus menjadi alat yang berjalan pada mesin saya di jaringan yang sama, bukan layanan berbasis web eksternal.

Dan perhatikan bahwa solusi kecil dan sederhana lebih disukai.

Pembaruan : Saya akhirnya membuat skrip python kecil yang saat ini saya gunakan untuk ini, dapat ditemukan di sini .

Zitrax
sumber
Lihat juga: serverfault.com/questions/44/… - Topik ini telah dibahas secara luas pada tingkat tinggi.
Warner

Jawaban:

12

Anda bisa menggunakan wget dalam skrip seperti ini

wget --timeout=3 --tries=1 --spider --no-check-certificate http://serverfault.com

if [ $? -ne 0 ];then
  echo "Site Down" | mail -s "Site Down" [email protected]
fi

Dan Anda akan mendapatkan email jika wget tidak dapat mengakses situs pertama kali dalam tiga detik.

Menyiapkan pekerjaan cron untuk menjalankan skrip setiap beberapa menit.

Ada banyak alternatif lain tetapi ini mungkin yang paling sederhana untuk diatur dari awal.

Richard Holloway
sumber
7
selama Anda tidak menjalankannya di server yang pemantauannya - Anda tidak tahu seberapa sering saya melihat itu dilakukan ;-)
Geraint Jones
Terima kasih. Selain itu saya menemukan bahwa --spider juga merupakan opsi yang berguna karena menghindari untuk benar-benar menyimpan halaman ke disk.
Zitrax
2
Dan tanpa menginstal 'postfix' perintah mail gagal mengirim.
Zitrax
3
@Zitrax: Dan tanpa menginstalnya, Anda akan mendapatkan kesalahan. Tanpa jaringan naik wget akan gagal. Tanpa skrip yang dapat dieksekusi, pekerjaan cron akan gagal dan seterusnya. Juga saya tidak menginstal 'postfix' dan berfungsi dengan baik untuk saya karena saya menggunakan exim.
Richard Holloway
1
Mengapa --no-check-certificate? Diperingatkan tentang penyebaran TLS yang rusak juga merupakan informasi berharga.
Avamander
7

Anda memiliki banyak pilihan, saya akan memberi Anda dua.

  • Nagios adalah aplikasi pemantauan lengkap yang mampu memantau jauh lebih banyak daripada http, tetapi juga menangani hal itu. Itu juga dapat membuat semua jenis repot ("Katakan padaku persentase uptime dari server / layanan X kami minggu ini / bulan / tahun ...")

  • Monit adalah pilihan populer lainnya. Mungkin tidak sebanyak fitur seperti nagios, tapi tetap saja itu menyenangkan.

Janne Pikkarainen
sumber
Saya mencari sesuatu yang kecil dan sederhana, jadi monit sepertinya lebih dekat dengan itu.
Zitrax
1

Nah, jika Anda ingin menjalankan sesuatu sendiri.

Ini beberapa opsi:

Atau jika Anda menginginkan solusi terkelola:

Secara pribadi saya pikir Zabbix dan Zenoss berlebihan jika Anda hanya ingin memantau status server web. Tetapi jika Anda juga berencana untuk memantau apa pun selain mereka memiliki lebih banyak fitur daripada yang Anda perlukan;)

Wolph
sumber
Saya kira pingdom dan uptrends tidak dapat memonitor situs-situs di jaringan internal saya.
Zitrax
@Zitrax: tidak, mereka tidak bisa. Saya membaca bagian itu.
Wolph
1

Saya telah mengangkat jawaban Richard dan Janne, tetapi jika Anda ingin lebih detail mengenai apa yang dikirim dan diterima server web Anda, beberapa bab pertama dari buku O'Reilly "Pemrograman Klien Web dengan Perl" oleh Clinton Wong memberikan gambaran yang bagus protokol HTTP. Jika Anda ingin pemantauan yang lebih rinci daripada hanya naik / turun dan ingin memasukkan kode respons, dll, ini adalah tempat yang baik untuk memulai.

Buku itu sudah tua, tetapi masih valid. Diterbitkan pada tahun 1997, O'Reilly telah memposting konten buku online secara gratis di http://oreilly.com/openbook/webclient/ sebagai bagian dari inisiatif OpenBook mereka.

gWaldo
sumber
0

Saya akan memilih jawaban Janne jika saya punya perwakilan.

Catatan penting tentang Nagios, fakta bahwa itu penuh sesak nafas tidak berarti itu adalah instalasi yang keras dan panjang, Ini cukup sederhana dan ramah.

Hal kedua, Anda harus benar-benar memeriksa apa yang ditawarkan vendor perangkat keras Anda. Sebagai contoh, saya menggunakan HP Proliants dan mereka memiliki rpm yang sangat bagus untuk membantu.

bangolio
sumber
0

Jika Anda menyukai apa yang dilakukan Nagios, tetapi tidak ingin mempelajari internal, Anda juga dapat melihat Opsview . Ini adalah Nagios dan beberapa alat lainnya, tetapi dikirimkan melalui GUI yang bagus. Ini adalah titik awal yang cukup bagus.

SystemParadox
sumber
0

Saya setuju bahwa Nagios adalah perangkat lunak yang hebat, tetapi jika Anda menginginkan freeware, saya sarankan Anda untuk melihat AppPerfect Agentless Monitor . Linux Server Monitoring dengan AppPerfect sangat ringan dan menambahkan overhead yang dapat diabaikan ke sistem target sambil memantau. Anda dapat memantau semua statistik penting yang terkait dengan CPU, disk, jaringan, dan memori menggunakan alat ini. Setup sangat sederhana dan perangkat lunaknya sangat mudah digunakan. Dokumentasi dan tutorial yang jelas juga tersedia di sini untuk pemantauan server Linux

Steve Young
sumber
0

Salah satu solusi yang saya gunakan adalah konsul HashiCorp .

Ini jelas lebih dari sekadar skrip sederhana dengan keluaran email, tetapi mengatur jenis pemantauan yang Anda bicarakan masih sangat mudah (beberapa baris YAML atau JSON).

Anda kemungkinan besar akan membuat template, tetapi pemantauan satu server dapat dilakukan sebagai berikut:

{
  "service": {
    "name": "web", 
    "tags": ["production"], 
    "port": 80,
    "check": {
      "id": "front-end",
      "name": "HTTP front-end for web service",
      "http": "http://web.domain.tld",
      "interval": "10s",
      "timeout": "1s"
    }
  }
}

Salah satu alasan untuk menyarankan itu adalah bahwa hal itu memungkinkan Anda melampaui pemantauan 'hanya' ujung-depan web jika Anda mau, dan juga memungkinkan Anda untuk mengelompokkan pemeriksaan berdasarkan layanan (mis. report_serverLayanan Anda dapat memiliki pemeriksaan untuk web-depan) akhir, satu untuk back-end web, dan satu untuk DB primer, yang semuanya akan memberikan peringatan terkait dengan layanan yang satu ini).

iwaseatenbyagrue
sumber