Daftar Isi:

Skrip Monitor Layanan untuk Server Linux: 4 Langkah
Skrip Monitor Layanan untuk Server Linux: 4 Langkah

Video: Skrip Monitor Layanan untuk Server Linux: 4 Langkah

Video: Skrip Monitor Layanan untuk Server Linux: 4 Langkah
Video: Create a Linux Service Monitoring Script - Learn Bash scripting tutorial 2024, November
Anonim
Skrip Monitor Layanan untuk Server Linux
Skrip Monitor Layanan untuk Server Linux

Memiliki sistem yang stabil dan selalu berjalan, bahkan jika Anda menggunakan Linux bisa menjadi tugas yang sulit.

Karena kompleksitas paket perangkat lunak modern dan pengkodean yang buruk, pasti beberapa proses mungkin macet dari waktu ke waktu. Ini bisa menjadi hal yang buruk jika Anda menjalankan server dan beberapa orang mengandalkan layanan ini.

Langkah 1: Menggunakan Metode yang Disediakan oleh Systemd

Seperti yang mungkin sudah Anda ketahui, sebagian besar sistem operasi Linux modern menggunakan systemd.

Jika Anda tidak terbiasa dengan systemd, ini menurut wikipedia:

"… sebuah sistem init yang digunakan dalam distribusi Linux untuk mem-bootstrap ruang pengguna dan mengelola semua proses selanjutnya, alih-alih sistem init UNIX System V atau Berkeley Software Distribution (BSD). …"

Banyak orang masih memperdebatkan mengapa perlu mengganti sistem init lama yang baik dengan sistem manajemen proses yang lebih rumit ini, tetapi pada tautan berikut mungkin ada penjelasan yang bagus:

www.tecmint.com/systemd-replaces-init-in-l…

Peningkatan yang paling penting adalah ia dapat membuka sistem lebih cepat daripada init, karena pemrosesan bersamaan dan paralel saat boot alih-alih pendekatan berurutan dari init

Tanpa masuk ke bagian dalam systemd, untuk menambahkan proses ke systemd, Anda harus membuat file layanan. Sintaks file semacam itu dapat berkisar dari yang sangat sederhana hingga yang sangat rumit, dan kami tidak akan membahasnya secara detail. Untuk memiliki file.service dasar, cukup menggunakan entri berikut:

[Unit]Description=Deskripsi applicationDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=always[Install]WantedBy=multi-user.target

Tempatkan ini ke dalam file application.service di folder /lib/systemd/system.

Apa yang dilakukan masing-masing opsi ini dijelaskan di tautan berikut:

access.redhat.com/documentation/en-US/Red_…

Untuk memulai aplikasi Anda, jalankan perintah berikut:

sudo systemctl start application.service

Catatan: ekstensi.service dapat dihilangkan.

Untuk menghentikan aplikasi:

sudo systemctl stop application.service

Jika file konfigurasi telah diubah dan Anda ingin memuat ulang pengaturan:

sudo systemctl reload application.service

Untuk memulai ulang aplikasi:

sudo systemctl restart application.service

Untuk mengaktifkan mulai otomatis saat boot:

sudo systemctl aktifkan application.service

Jika ini diaktifkan, maka manajer proses systemd akan mencoba memulai aplikasi berdasarkan pengaturan yang disediakan oleh file sistem.

Untuk menonaktifkannya, gunakan perintah yang sama seperti di atas, tetapi dengan parameter 'disable'.

Jika Anda menempatkan Restart=always di file layanan, maka systemd akan memantau proses dan jika tidak dapat ditemukan dalam daftar proses, ia akan mencoba memulai ulang secara otomatis.

Jika Anda menempatkan

RestartSec=30

setelah perintah restart, itu akan menunggu selama 30 detik sebelum mencoba memulai kembali proses. Ini mungkin berguna, karena upaya restart terus menerus dari layanan/aplikasi yang gagal dapat menyebabkan permintaan tinggi pada sistem (menulis log kesalahan, dll)

Seperti yang Anda lihat, systemd sudah menyediakan beberapa cara untuk memantau proses. Namun, dalam beberapa kasus ini mungkin tidak cukup. Bagaimana jika suatu proses tidak keluar (masih ada dalam daftar proses), tetapi berhenti merespons. Dalam hal ini, untuk memastikan bahwa suatu proses benar-benar aktif dan berjalan, Anda mungkin memerlukan pemeriksaan tambahan untuk dilakukan.

Di sinilah skrip dari instruksi ini akan berguna.

Langkah 2: Mengonfigurasi dan Menggunakan Skrip Pemeriksa Layanan

Jika Anda memerlukan lebih banyak kontrol atas proses/layanan yang sedang berjalan, skrip ini pasti akan sangat membantu.

Karena kodenya agak besar, Ini diunggah ke github dan dapat ditemukan di bawah repositori berikut:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

'Jantung' dari seluruh paket adalah

checkService.sh

Sebelum menggunakannya, Anda harus mengganti path lengkap ke folder layanan. Ini dapat ditemukan di awal skrip.

Script dapat memantau beberapa proses dan melakukan tugas tambahan, seperti yang dijelaskan di bawah ini:

Ia melewati setiap file dari subfolder /services yang memiliki ekstensi.serv atau.check dan akan memeriksa apakah ada proses aktif yang disebut 'aplikasi'.

Jika tidak ada file '.check' untuk suatu aplikasi, hanya file application.serv:

Jika proses aktif, maka proses akan dianggap aktif

Jika proses tidak aktif, maka layanan akan restart dengan mengeluarkan perintah berikut:

systemctl restart aplikasi

jika file.serv kosong!

Jika file.serv tidak kosong dan memiliki hak yang dapat dieksekusi, ia akan mencoba menjalankannya sebagai skrip BASH biasa.

Ini berguna jika ada sesuatu yang harus dilakukan selain hanya memulai ulang layanan.

Misalnya, dalam file spamd.serv, dari repo di atas, jika layanan spamd mati, layanan spamassassin perlu di-restart sebagai gantinya, yang juga akan me-restart spamd. Restart hanya spamd tidak akan cukup.

Seseorang dapat mengedit konten file serv seperti itu sesuai dengan kebutuhan.

Contoh lain adalah file pcscd.serv. Dalam hal ini beberapa proses lain juga dimulai ulang/dimatikan.

Jika ada file cek, setelah memeriksa apakah proses sedang berjalan, maka file skrip ini juga akan dijalankan untuk melakukan pemeriksaan tambahan.

Misalnya, untuk layanan oscam, kami telah membuat file pemeriksaan yang mencoba menghubungkan ke antarmuka webnya untuk melihat apakah itu berhasil. Jika tidak, maka, meskipun prosesnya aktif, layanan tidak merespons dan perlu dimulai ulang. Restart layanan harus dilakukan/dipanggil oleh file.check itu sendiri.

Contoh lain adalah layanan DLNA mediatomb.

Ini adalah server kecil yang menyediakan konten video/audio ke klien DLNA dan menyiarkan dirinya sendiri di jaringan. Terkadang layanan hang dan tidak dapat ditemukan lagi, tetapi prosesnya akan tetap aktif. Untuk memeriksa apakah layanan dapat ditemukan, utilitas CLI yang disebut gssdp-discover digunakan. Seluruh kode yang memeriksa server DLNA ditempatkan di dalam skrip mediatomb.check.

Ini hanya beberapa contoh tentang bagaimana Anda dapat menggunakan file.serv dan.check.

Untuk memantau layanan baru, Anda harus membuat.serv dan, jika perlu, juga file pemeriksaan dan menulis skrip yang sesuai di dalamnya.

Jika hanya memeriksa keberadaan proses jika cukup, maka file.serv kosong sudah cukup. Jika pemeriksaan tambahan harus dilakukan, maka file.check harus dibuat dan skrip kecil harus ditulis untuk melakukan pekerjaan tersebut.

Tentu saja, skrip.sh harus dijalankan secara berkala, oleh karena itu tugas cron juga harus dibuat untuknya:

#periksa layanan yang berjalan setiap 5 menit*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null

Langkah 3: Pikiran Terakhir

Saya harap Anda akan menemukan paket ini berguna karena dapat dengan mudah memantau proses Linux dan mudah-mudahan akan meminimalkan waktu henti layanan Anda.

Jangan ragu untuk mengunggah skrip tambahan ke github, jika Anda membuat yang baru. Beri tahu saya dan saya akan menambahkan Anda sebagai kontributor.

Direkomendasikan: