Мазмуну:

Linux серверлери үчүн Service Monitor Script: 4 кадам
Linux серверлери үчүн Service Monitor Script: 4 кадам

Video: Linux серверлери үчүн Service Monitor Script: 4 кадам

Video: Linux серверлери үчүн Service Monitor Script: 4 кадам
Video: Рынок IT в 2021. Intel и конкуренты. Игры от Netflix. [MJC News #8] 2024, Ноябрь
Anonim
Linux серверлери үчүн Service Monitor Script
Linux серверлери үчүн Service Monitor Script

Туруктуу, дайыма иштеп жаткан системага ээ болуу, эгер сиз Linuxту колдонуп жатсаңыз да, кыйын иш болушу мүмкүн.

Заманбап программалык камсыздоонун татаалдыгына жана начар коддоого байланыштуу кээ бир процесстер мезгил -мезгили менен бузулушу мүмкүн. Эгерде сиз серверди иштетип жатсаңыз жана кээ бирөөлөр бул кызматтарга таянса, бул жаман нерсе болушу мүмкүн.

1 -кадам: Systemd тарабынан берилген ыкмаларды колдонуу

Белгилүү болгондой, көпчүлүк Linux операциялык системалары systemd колдонушат.

Эгерде сиз systemd менен тааныш эмес болсоңуз, бул Википедияга ылайык:

"… Linux дистрибуциясында UNIX System V же Berkeley Software Distribution (BSD) init системаларынын ордуна, колдонуучу мейкиндигин жүктөө жана бардык процесстерди башкаруу үчүн колдонулган 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 = дайыма [Орнотуу] WantedBy = multi-user.target

Муну application.service файлына/lib/systemd/system папкасына салыңыз.

Бул варианттардын ар бири эмне кылары төмөнкү шилтемеде түшүндүрүлөт:

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

Колдонмоңузду баштоо үчүн, төмөнкү буйрукту бериңиз:

sudo systemctl баштоо application.service

Эскертүү:.service кеңейтүүсүн алып салууга болот.

Колдонмону токтотуу үчүн:

sudo systemctl stop application.service

Эгерде конфигурация файлы өзгөртүлүп, орнотууларды кайра жүктөөнү кааласаңыз:

sudo systemctl reload application.service

Колдонмону кайра баштоо үчүн:

sudo systemctl application.service өчүрүп күйгүзүү

Жүктөөдө автоматтык баштоону иштетүү үчүн:

sudo systemctl application.service иштетүү

Эгер бул иштетилген болсо, анда systemd процесс менеджери тутум файлы тарабынан берилген орнотуулардын негизинде тиркемени баштоого аракет кылат.

Аны өчүрүү үчүн жогорудагыдай буйрукту колдонуңуз, бирок 'disable' parameter менен.

Эгер кайра жүктөөнү = дайыма кызмат файлына койсоңуз, анда systemd процессти көзөмөлдөйт жана эгер процесстин тизмесинен табылбаса, аны автоматтык түрдө кайра баштоого аракет кылат.

Эгер жайгаштырсаңыз

RestartSec = 30

кайра баштоо көрсөтмөсүнөн кийин, процессти кайра баштоо үчүн 30 секунд күтөт. Бул пайдалуу болушу мүмкүн, анткени иштебей калган кызматтын/тиркемени үзгүлтүксүз өчүрүп -күйгүзүү системада суроо -талаптын жогору болушуна алып келиши мүмкүн (ката журналдарын жазуу ж.б.)

Көрүнүп тургандай, systemd буга чейин процесстерди көзөмөлдөө үчүн кээ бир каражаттарды берет. Бирок, кээ бир учурларда бул жетишсиз болушу мүмкүн. Процесс чыкпай калса (ал процесстин тизмесинде кала берет), бирок жооп берүүнү токтотот. Бул учурда, бир процесс чындап эле иштеп жатканына ынануу үчүн, кошумча текшерүүлөр жүргүзүлүшү мүмкүн.

Бул жерде бул нускамадан сценарийлер жардамга келет.

2 -кадам: Кызматты текшерүүчү скрипттерди конфигурациялоо жана колдонуу

Эгерде сиз иштеп жаткан процесстерди/кызматтарды көбүрөөк көзөмөлдөөгө муктаж болсоңуз, анда бул скрипттер пайдалуу болот.

Код бир аз чоң болгондуктан, ал githubга жүктөлгөн жана аны төмөнкү репозиторийден тапса болот:

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

Бүт пакеттин "жүрөгү" - бул

checkService.sh

Аны колдонуудан мурун, сиз кызмат папкасына толук жолду алмаштырышыңыз керек. Муну сценарийдин башында тапса болот.

Скрипт төмөндө сүрөттөлгөндөй бир нече процесстерди көзөмөлдөп, кошумча тапшырманы аткара алат:

Бул.serv же.check кеңейтүүлөрүнө ээ болгон /кызматтар папкасынан ар бир файлдан өтөт жана 'application' деп аталган активдүү процесс бар -жогун текшерет.

Колдонмо үчүн '.check' файлы жок болсо, application.serv файлы гана:

Эгерде процесс активдүү болсо, ал процессти активдүү деп эсептейт

Эгерде процесс активдүү болбосо, анда ал төмөнкү буйрукту берүү менен кызматты кайра баштайт:

systemctl кайра иштетүү колдонмосу

эгер.serv файлы бош болсо!

Эгерде.serv файлы бош болбосо жана аткарылуучу укуктарга ээ болсо, аны жөнөкөй BASH скрипти катары иштетүүгө аракет кылат.

Бул кызматты кайра жүктөөдөн башка бир нерсе жасалышы керек болсо пайдалуу.

Мисалы, spamd.serv файлында, жогорудагы репо кызматынан, эгер спам кызматы өлгөн болсо, анын ордуна спамассассин кызматын кайра баштоо керек, бул дагы спамды кайра баштайт. Жөн эле спамды кайра жүктөө жетишсиз болмок.

Мындай сервис файлынын мазмунун муктаждыктарга жараша түзөтө аласыз.

Дагы бир мисал pcscd.serv файлы. Бул учурда дагы бир нече процесстер кайра башталды/өлтүрүлдү.

Эгерде текшерүү файлы бар болсо, процесстин иштеп жаткандыгын текшергенден кийин, ал кошумча текшерүүлөрдү аткаруу үчүн бул скрипт файлын иштетет.

Мисалы, oscam кызматы үчүн, биз анын интерфейсине туташууга аракет кылган текшерүү файлын түздүк, анын ийгиликтүү болгонун билүү үчүн. Эгер андай болбосо, анда процесс активдүү болгонуна карабастан, кызмат жооп бербейт жана кайра баштоо керек. Кызматты кайра баштоо.чек файлынын өзү тарабынан аткарылышы/чакырылышы керек.

Дагы бир мисал медиатомб 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 -кадам: Акыркы ойлор

Бул пакетти пайдалуу деп табасыз деп үмүттөнөм, анткени ал Linux процесстерин жөн эле көзөмөлдөп турат жана кызматыңыздын иштебей калуусун азайтат деп үмүттөнөм.

Githubга кошумча сценарийлерди жүктөп берүүдөн тартынбаңыз, эгер сиз жаңыларын түзсөңүз. Мага кабарлаңыз, мен сизди салымчы катары кошом.

Сунушталууда: