Saya mencoba menggunakan NTPD untuk memperbarui waktu mesin Linux saya ke server NTP yang ditentukan.
Berikut ini skenarionya:
Setiap kali mesin Linux dinyalakan, saya ingin memperbarui waktu dari server NTP dan jika tidak berhasil, saya ingin mencoba lagi setiap 5 menit hingga berhasil (maks. Adalah 2 jam).
Saya mencari-cari dan menemukan bahwa saya harus (?) Menggunakan NTPD dan menggunakan beberapa perintah seperti:
#ntpdate ntp.server.com
(sebelum memulai NTPD)
#ntpd some_options_to_start
Pertanyaannya adalah:
- Bagaimana saya bisa tahu jika waktu berhasil diperbarui oleh perintah-perintah ini?
- Bisakah saya mengatur interval untuk memperbarui waktu dari ntpd? (atau saya harus menggunakan sesuatu seperti
sleep
dan loop dengando
..while
/for
di shell?)
Perhatikan bahwa saya ingin menjalankan perintah di atas dalam skrip shell dan akan meletakkan shell di server web. Kemudian klien (dengan browser browser web) akan menjalankan skrip di situs web. Jadi saya perlu memeriksa apakah pembaruan berhasil atau tidak mengirim hasil ke klien (melalui web).
Gunakan ntpstat.
sumber
ntpq -p
tidak menunjukkan rekan. Jadi saya tidak mempercayai utilitas ini.Untuk menjawab pertanyaan pertama,
ntpdate
biasanya memberi tahu Anda apa yang telah dilakukannya, atau mungkin tidak.Daemon NTP
ntpd
,, berjalan terus-menerus, dan menanyakan server NTP (biasanya dikonfigurasi dalam/etc/ntp.conf
) untuk waktu sesering itu. Anda tidak harus menjalankan skrip Anda setiap 5 menit.ntpdate
harus membawa mesin menjadi selaras dekat dengan server, danntpd
akan berjalan di latar belakang dan tetap selaras. Anda tidak mengatur interval yang dicoba ntpd, ia menyesuaikan interval berdasarkan bagaimana ia mempersepsikan drift jam lokal dari server, dan kualitas koneksi ke server.Anda dapat menggunakan program bernama
ntpdc
untuk melihat apa yangntpd
disimpan sebagai informasi:Saya pikir nomor yang biasanya Anda minati adalah "offset", itu adalah jumlah detik jam lokal Anda dimatikan dari jam server.
Sebagai
man
laman untukntpdc
status untuk perintah "rekan":Jadi, jelas, "offset" dalam hitungan detik.
Tampaknya
ntpdc
sudah usang, diganti denganntpq
.ntpq
memiliki perintah interaktif "peer", yang memberikan "offset" dalam milidetik. Server Redhat saya memiliki keduanyantpdc
danntpq
, jadi Anda harus berhati-hati.sumber
ntp-wait
dibuat untuk masalah ini.Lima menit dengan
man ntp-wait
dan Anda harus berdiri dan berlari ...sumber
Saya menambahkan ke skrip bash @BillTHor juga cek untuk kode keluar ntpdstat> 0:
[PEMBARUAN] karena skrip yang menggunakan keluaran ntpq tidak berguna untuk sebagian besar offset (lebih dari 4 digit offset) Saya mencoba versi baru menggunakan hanya ntpstat:
sumber
NTP offset dapat diperoleh dengan pipa UNIX berikut:
Hitungan rekan NTP dapat diperoleh dengan pipa UNIX berikut:
Untuk offset NTP kami menggunakan:
Untuk jumlah rekan NTP kami menggunakan:
Konfigurasi pemantauan NTP siap Zabbix (sumber: Joyent):
Plugin pemantauan NTP yang siap-nagios:
check_ntp_offset:
check_ntp_peers:
Saya benar-benar harus membiarkan peringatan dan ambang kritis dalam skrip Nagios dapat dikonfigurasi dengan -w dan -c. Mereka tidak sepenuhnya siap tanpa plugin. Panduan lebih lanjut tentang itu dalam tutorial di sini: http://www.kernel-panic.it/openbsd/nagios/nagios6.html
sumber
Chrony diklaim menangani kasus penggunaan Anda lebih baik daripada NTPd (jaringan dan mesin hidup / mati, tunda, dll.). Lihat
http://fedoraproject.org/wiki/Features/ChronyDefaultNTP
RE mengapa saya pikir chronny baik: Itu datang pra-instal pada mesin fedora saya dan saya tidak pernah punya masalah dengan itu (menggunakannya selama bertahun-tahun sekarang). Saya tidak pernah memiliki masalah dengan ntpd di masa lalu juga, tetapi jika Anda membaca tautan yang saya berikan, ada beberapa informasi mengapa chrony lebih baik untuk tidak selalu menggunakan mesin. Itu sebabnya saya menyarankan kepada op untuk mencobanya, mungkin atau mungkin tidak bekerja lebih baik untuknya. Jadi itu hanyalah pilihan lain yang baik untuk dicoba sebelum masuk ke terlalu banyak penyetelan, pengoptimalan, dan peretasan ntpd.
sumber
sumber
Sama seperti jawaban sebelumnya di atas, tetapi dengan sedikit modifikasi seperti perintah sebelumnya akan menjalankan pernyataan if untuk sebanyak offset, yaitu jika offset adalah 3 maka akan mencetak NTP dalam 0,1 .... 3 kali sebelum ditutup. Bisa menjengkelkan jika Anda memiliki server yang jauh dari sinkronisasi. Mungkin ada cara untuk menghapus for for loop juga ...
sumber