Saya ingin melakukan pemeriksaan kesehatan suatu layanan dengan menghubungi url tertentu. Terasa seperti solusi paling sederhana adalah menggunakan cron untuk melakukan pemeriksaan setiap menit. Jika terjadi kesalahan, cron mengirimi saya email.
Saya mencoba menggunakan cUrl untuk ini, tetapi saya tidak bisa menampilkan pesan hanya pada kesalahan. Jika saya mencoba mengarahkan output ke / dev / null, itu akan mencetak laporan kemajuan.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
Saya mencoba melihat melalui opsi curl tapi saya tidak bisa menemukan apa pun yang sesuai dengan situasi di mana Anda ingin diam pada kesuksesan tetapi membuat kebisingan pada kesalahan.
Apakah ada cara untuk membuat ikal melakukan apa yang saya inginkan atau ada alat lain yang harus saya perhatikan?
curl
monitoring
palto
sumber
sumber
icinga
atau sistem pemantauan lainnya?Jawaban:
Bagaimana dengan
-sSf
? Dari halaman manual:Sebagai contoh:
sumber
curl -fsS http://example.org > /dev/null
. Itu tidak akan menghasilkan apa-apa ketika tidak ada yang salah tetapi itu akan mencetak kode status pada kesalahan yang saya terima.-f
untuk referensi di masa mendatang.Saya pikir untuk cara paling sederhana untuk memeriksa apakah situs tersebut masih hidup, Anda dapat menggunakan metode berikut:
Ini akan kembali
HTTP/1.1 200 OK
. Jika pengembalian tidak sesuai dengan output Anda maka panggil bantuan.sumber
Anda memerlukan
-s
flag (silent),-f
flag (gagal dengan kode keluar saat error) dan dapat menggunakan-o
flag untuk mengarahkan ulang output:Ini hanyalah contoh buruk untuk skrip cron sederhana. Biasanya, Anda hanya ingin mendapatkan satu email jika situs web rusak.
sumber
Anda dapat menangkap statistik waktu jaringan dari curl. latensi setiap fase dalam siklus permintaan / respons dapat berguna untuk menentukan kesehatan.
sumber
Cara ini akan membantu Anda ketika mencoba menguji situs ketika https ada:
sumber
Saya baru-baru ini diminta untuk membuat sesuatu yang akan bertindak lebih seperti detak jantung yang canggih.
Atau, diperluas agar lebih mudah dibaca,
Apa yang saya lakukan adalah
curl
situs web, parsing semua tautan dari html, dan kemudiancurl
tautan yang diurai tersebut, hanya menghasilkan kode status. Kemudian saya akan mencari kode status http> = 400 untuk menemukan kesalahan.sumber
Menjawab:
Penjelasan:
timeout 3s
akan menetapkan batas waktu 3 detik untuk permintaan Anda. Menjawab lebih lambat dianggap "tidak sehat"-f
Bendera curl akan gagal lebih awal,-S
akan menunjukkan kesalahan,-s
akan menekan output normal,-I
hanya akan mengambil header HTTP, bukan konten. (Seperti biasa, lebih banyak detail tersedia padaman curl
perintah.)-checkend
directive memeriksa tanggal kedaluwarsa untuk suatu sertifikat. Dalam contoh saya, ini adalah 20 hari (ditentukan dalam detik).sumber
-s
dan-S
bertukarCurl memiliki kode status keluar yang sangat spesifik.
Mengapa tidak memeriksa saja?
Pemakaian:
Hasil:
Catatan:
Script ini hanya memeriksa apakah situs dapat diselesaikan.
Kode ini seharusnya membantu Anda jika yang Anda pedulikan adalah situsnya naik atau turun.
Namun, jika Anda membuat beberapa perubahan pada blok if / else, Anda dapat dengan mudah menguji kode status lainnya jika diinginkan
sumber