Агуулгын хүснэгт:

Линукс серверүүдэд зориулсан үйлчилгээний монитор скрипт: 4 алхам
Линукс серверүүдэд зориулсан үйлчилгээний монитор скрипт: 4 алхам

Видео: Линукс серверүүдэд зориулсан үйлчилгээний монитор скрипт: 4 алхам

Видео: Линукс серверүүдэд зориулсан үйлчилгээний монитор скрипт: 4 алхам
Видео: NETSTAT Command Explained 2024, Арваннэгдүгээр
Anonim
Линукс серверүүдэд зориулсан үйлчилгээний монитор скрипт
Линукс серверүүдэд зориулсан үйлчилгээний монитор скрипт

Линукс ашиглаж байсан ч гэсэн тогтвортой, байнга ажилладаг системтэй байх нь хэцүү ажил болно.

Орчин үеийн програм хангамжийн багцын нарийн төвөгтэй байдал, муу кодчилол зэргээс шалтгаалан зарим процессууд үе үе сүйрч магадгүй юм. Хэрэв та сервер ажиллуулж байгаа бөгөөд зарим хүмүүс эдгээр үйлчилгээнд найдаж байгаа бол энэ нь муу зүйл болно.

Алхам 1: Systemd -ийн өгсөн аргуудыг ашиглах

Линуксийн орчин үеийн ихэнх үйлдлийн системүүд systemd -ийг ашиглаж байгааг та мэдэж байгаа байх.

Хэрэв та systemd -ийг сайн мэдэхгүй байгаа бол энэ нь Википедиагийн дагуу:

"… UNIX System V эсвэл Berkeley Software Distribution (BSD) init системийн оронд хэрэглэгчийн орон зайг ачаалах, дараа нь бүх процессыг удирдахын тулд Линукс дистрибутивт ашигладаг эхлэлийн систем.…"

Олон хүмүүс хуучин хуучин системийг яагаад илүү нарийн төвөгтэй үйл явцын удирдлагын системээр солих шаардлагатай болсон талаар маргаантай байгаа боловч дараах холбоос дээр сайн тайлбарыг олж болно.

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

Хамгийн чухал сайжруулалт нь эхлүүлэх дараалсан арга барилын оронд ачаалах үед нэгэн зэрэг болон зэрэгцээ боловсруулалт хийсний ачаар системийг эхлүүлэхээс илүү хурдан гаргах боломжтой байх явдал юм.

Systemd -ийн гүн рүү орохгүйгээр systemd -д процесс нэмэхийн тулд та үйлчилгээний файл үүсгэх ёстой. Ийм файлын синтакс нь маш энгийнээс маш нарийн төвөгтэй байж болох бөгөөд бид нарийвчлан тайлбарлахгүй. Үндсэн.service файлтай болохын тулд дараах оруулгуудыг ашиглахад хангалттай.

[Unit] Description = applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = үргэлж [Install] WantedBy = multi-user.target

Эдгээрийг/lib/systemd/system хавтсанд application.service файлд байрлуулна.

Эдгээр сонголт тус бүрийг дараах линкээр тайлбарласан болно.

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

Програмаа эхлүүлэхийн тулд дараах тушаалыг өгнө үү:

sudo systemctl програмыг эхлүүлэх.үйлчилгээ

Тэмдэглэл:.service өргөтгөлийг орхиж болно.

Аппликешныг зогсоохын тулд:

sudo systemctl програмыг зогсоох.үйлчилгээ

Хэрэв тохиргооны файл өөрчлөгдсөн бол та тохиргоог дахин ачаалахыг хүсч байна.

sudo systemctl reload application.service

Аппликешныг дахин эхлүүлэхийн тулд:

sudo systemctl програмыг дахин эхлүүлэх.үйлчилгээ

Ачаалах үед автоматаар эхлүүлэхийг идэвхжүүлэхийн тулд:

sudo systemctl application.service -ийг идэвхжүүлнэ

Хэрэв үүнийг идэвхжүүлсэн бол systemd процессийн менежер нь системийн файлаас өгсөн тохиргоон дээр үндэслэн програмыг эхлүүлэхийг оролдох болно.

Үүнийг идэвхгүй болгохын тулд дээр дурдсантай ижил командыг ашиглана уу, гэхдээ 'disable' параметртэй.

Хэрэв та Restart = -г үргэлж үйлчилгээний файлд байрлуулдаг бол systemd процессыг хянадаг бөгөөд хэрэв үйл явцын жагсаалтаас олдохгүй бол автоматаар дахин эхлүүлэхийг оролдох болно.

Хэрэв та байрлуулбал

RestartSec = 30

дахин эхлүүлэх удирдамжийн дараа процессыг дахин эхлүүлэхийг оролдохын өмнө 30 секунд хүлээх болно. Алдаа гарсан үйлчилгээ/програмыг тасралтгүй дахин эхлүүлэх оролдлого нь системийн эрэлт ихтэй болоход хүргэдэг (алдааны бүртгэл бичих гэх мэт)

Таны харж байгаагаар systemd нь үйл явцыг хянах зарим хэрэгслийг аль хэдийн хангаж өгдөг. Гэсэн хэдий ч зарим тохиолдолд энэ нь хангалтгүй байж магадгүй юм. Хэрэв процесс гарахгүй бол (энэ нь процессын жагсаалтад байсаар байх болно), гэхдээ хариу өгөхөө болино. Энэ тохиолдолд процесс үнэхээр ажиллаж байгаа эсэхийг шалгахын тулд танд нэмэлт шалгалт хийх шаардлагатай байж магадгүй юм.

Энэ зааварчилгааны скриптүүд энд хэрэгтэй болно.

Алхам 2: Үйлчилгээ шалгагчийн скриптүүдийг тохируулах, ашиглах

Хэрэв танд ажиллаж буй процесс/үйлчилгээгээ илүү хянах шаардлагатай бол эдгээр скриптүүд танд тустай байх нь дамжиггүй.

Код нь жаахан том хэмжээтэй тул github -д байршуулсан бөгөөд үүнийг дараах репозитороос олж болно.

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

Бүх багцын "зүрх" бол

checkService.sh

Үүнийг ашиглахаасаа өмнө үйлчилгээний фолдерт хүрэх замыг бүрэн солих ёстой. Үүнийг скриптийн эхэнд олж болно.

Скрипт нь хэд хэдэн процессыг хянаж, доор тайлбарласны дагуу нэмэлт даалгавар гүйцэтгэх боломжтой.

Энэ нь.serv эсвэл.check өргөтгөлүүдтэй /services дэд хавтаснаас файл бүрээр дамжих бөгөөд 'application' гэж нэрлэгддэг идэвхтэй процесс байгаа эсэхийг шалгах болно.

Хэрэв аппликешнд '.check' файл байхгүй бол зөвхөн application.serv файл байна:

Хэрэв процесс идэвхтэй байгаа бол энэ үйл явцыг идэвхтэй гэж үзнэ

Хэрэв процесс идэвхгүй бол дараах тушаалыг өгч үйлчилгээгээ дахин эхлүүлнэ

systemctl програмыг дахин эхлүүлэх

хэрэв.serv файл хоосон байвал!

Хэрэв.serv файл хоосон биш бөгөөд гүйцэтгэх эрхтэй бол үүнийг энгийн BASH скрипт болгон ажиллуулахыг оролдох болно.

Үйлчилгээг дахин эхлүүлэхээс гадна нэмэлт зүйл хийх шаардлагатай бол энэ нь ашигтай болно.

Жишээлбэл, spamd.serv файлын дээрх репо -с, хэрэв спам үйлчилгээ устсан бол түүний оронд спамассассины үйлчилгээг дахин эхлүүлэх шаардлагатай бөгөөд энэ нь спамыг дахин эхлүүлэх болно. Зөвхөн спамыг дахин эхлүүлэх нь хангалтгүй байх болно.

Ийм сервис файлын агуулгыг хэрэгцээнд нийцүүлэн засварлаж болно.

Өөр нэг жишээ бол pcscd.serv файл юм. Энэ тохиолдолд бусад хэд хэдэн процессыг дахин эхлүүлж/устгасан.

Хэрэв шалгах файл байгаа бол процесс ажиллаж байгаа эсэхийг шалгасны дараа нэмэлт шалгалт хийхийн тулд энэ скрипт файлыг ажиллуулах болно.

Жишээлбэл, оскамын үйлчилгээний хувьд бид амжилттай ажиллаж байгаа эсэхийг шалгахын тулд вэб интерфэйстэй холбогдохыг оролддог шалгах файл үүсгэсэн. Хэрэв тийм биш бол процесс идэвхтэй байсан ч үйлчилгээ хариу өгөхгүй байгаа тул дахин эхлүүлэх шаардлагатай болно. Үйлчилгээний дахин эхлүүлэлтийг.check файл өөрөө хийх/дуудах ёстой.

Өөр нэг жишээ бол медиатомб DLNA үйлчилгээ юм.

Энэ бол DLNA үйлчлүүлэгчдэд видео/аудио контент өгч, сүлжээгээр цацдаг жижиг сервер юм. Заримдаа үйлчилгээ унтардаг бөгөөд үүнийг илрүүлэх боломжгүй байдаг, гэхдээ процесс идэвхтэй хэвээр байх болно. Үйлчилгээг илрүүлэх боломжтой эсэхийг шалгахын тулд gssdp-discover гэж нэрлэдэг CLI хэрэгслийг ашигласан. DLNA серверийг шалгадаг бүх кодыг mediatomb.check скрипт дотор байрлуулсан болно.

Эдгээр нь.serv болон.check файлуудыг хэрхэн ашиглах тухай цөөн хэдэн жишээ юм.

Шинэ үйлчилгээнд хяналт тавихын тулд та.serv, шаардлагатай бол шалгах файл үүсгэж, дотор нь харгалзах скриптийг бичих ёстой.

Хэрэв процесс хангалттай байгаа эсэхийг шалгаж үзвэл хоосон.serv файл хангалттай байх болно. Хэрэв нэмэлт шалгалт хийх шаардлагатай бол.check файл үүсгэж, жижиг скрипт бичиж ажлыг гүйцэтгэх ёстой.

Мэдээжийн хэрэг,.sh скриптийг үе үе ажиллуулж байх ёстой, тиймээс cron ажлын байрыг бас бий болгох ёстой.

#ажиллаж байгаа үйлчилгээг 5 минут тутамд шалгах */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Алхам 3: Эцсийн бодол

Энэ багц нь танд хэрэгтэй болно гэж найдаж байна, учир нь энэ нь Линукс процессыг хянах боломжтой бөгөөд таны үйлчилгээний зогсолтыг багасгах болно.

Хэрэв та шинээр үүсгэсэн бол github -д нэмэлт скрипт оруулах боломжтой. Зүгээр л надад мэдэгдээрэй, би таныг хувь нэмэр оруулагч болгоно.

Зөвлөмж болгож буй: