Chciałbym przeprowadzić kontrolę stanu usługi, dzwoniąc na określony adres URL. Wydaje się, że najprostszym rozwiązaniem byłoby użycie crona do sprawdzania co około minutę. W przypadku błędów cron wysyła mi wiadomość e-mail.
Próbowałem do tego celu użyć cUrl, ale nie mogę uzyskać wyprowadzania komunikatów tylko w przypadku błędów. Jeśli spróbuję skierować dane wyjściowe do / dev / null, drukuje raport postępu.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
Próbowałem przejrzeć opcje zawijania, ale po prostu nie mogę znaleźć niczego, co pasowałoby do sytuacji, w której chciałbyś, aby cicho mówiła o sukcesie, ale hałasowała przy błędach.
Czy istnieje sposób, aby curl robił to, co chcę, czy jest jakieś inne narzędzie, na które powinienem patrzeć?
curl
monitoring
palto
źródło
źródło
icinga
lub inny system monitorowania?Odpowiedzi:
Co
-sSf
? Ze stron podręcznika:Na przykład:
źródło
curl -fsS http://example.org > /dev/null
. To nie wyświetli niczego, gdy nic nie jest źle, ale wydrukuje kod stanu przy błędach, co jest dla mnie w porządku.-f
do przyszłych odniesień.Myślę, że w najprostszy sposób, aby sprawdzić, czy strona jest żywa, możesz użyć następującej metody:
To wróci
HTTP/1.1 200 OK
. Jeśli zwrot nie odpowiada twojemu wynikowi, wezwij pomoc.źródło
Potrzebujesz
-s
flagi (cicha),-f
flagi (błąd z kodem wyjścia w przypadku błędu) i możesz użyć-o
flagi do przekierowania danych wyjściowych:To tylko zły przykład prostego skryptu cron. Zwykle chcesz dostać tylko jedną pocztę, jeśli witryna nie działa.
źródło
możesz przechwytywać statystyki synchronizacji sieci z curl. opóźnienia w każdej fazie w cyklu żądanie / odpowiedź mogą być przydatne do określenia stanu zdrowia.
źródło
Ten sposób pomoże ci podczas próby przetestowania witryny, gdy obecny jest https:
źródło
Ostatnio poproszono mnie o wymyślenie czegoś, co działałoby bardziej jak wyrafinowane bicie serca.
Lub rozszerzony dla nieco większej czytelności,
To, co zrobiłem,
curl
to strona internetowa, analizując wszystkie linki z html, a następniecurl
te przeanalizowane linki, wyświetlając tylko kod stanu. Następnie szukałem kodów stanu http> = 400, aby znaleźć błędy.źródło
Odpowiedź:
Objaśnienia:
timeout 3s
ustawi 3-sekundowy limit czasu dla twojego żądania. Wolniejsze odpowiadanie jest uważane za „niezdrowe”-f
flaga curl nie powiedzie się wcześnie,-S
pokaże błędy,-s
pominie normalne wyjście,-I
pobierze tylko nagłówki HTTP, a nie treść. (Jak zawsze więcej szczegółów dostępnych jest naman curl
polecenie).-checkend
Dyrektywa openssl sprawdza daty ważności certyfikatu. W moim przykładzie jest to 20 dni (określone w sekundach).źródło
-s
i-S
zamienionoCurl ma bardzo specyficzne kody stanu wyjścia.
Dlaczego nie po prostu ich sprawdzić?
Stosowanie:
Wynik:
Uwagi:
Ten skrypt sprawdza tylko, czy daną stronę można rozwiązać.
Ten kod powinien Cię załatwić, jeśli jedyne, na czym Ci zależy, to że witryna jest w górę lub w dół.
Jeśli jednak wprowadzisz kilka zmian w bloku if / else, możesz z łatwością przetestować inne kody stanu, jeśli chcesz
źródło