Садамаҳои зуд-зуди Apache2 бо HestiaCP? Дастури мониторинги автоматӣ ва ҳалли мушкилотро Monit (бо конфигуратсияи пурра)

Дар муҳитҳои HestiaCP садамаҳои зуд-зуд рух медиҳанд ё нокомиҳои аз нав оғозкунии худкори Monit ? Ин мақола роҳнамои амалиро барои пешгирӣ аз хатогиҳои маъмулӣ ҳангоми назорати Apache2 бо Monit, таҳлили амиқи масъалаҳои маъмулӣ, ба монанди номутобиқатии роҳи PID ва бастани иҷозатҳо ва пешниҳоди файлҳои конфигуратсияи автоматикунонии Monit дар сатҳи истеҳсолӣ пешниҳод мекунад. Ҳоло усулҳои нигоҳдории серверҳои дастрасии баландро аз худ кунед ва барқароркунии худкори сатҳи дуюмро аз нокомиҳо ба даст оред!

Хатогиҳое, ки ман ҳангоми истифодаи Monit барои назорат кардани Apache2 дучор шудам

Ҷумъаи гузашта, мизбон нисфи шаб ба ман огоҳии Monit дод.

Ман бо ҳайрат ба панел нигоҳ кардам ва дар сутуни ҳолати apache2 Timeout сурх буд.

Садамаҳои зуд-зуди Apache2 бо HestiaCP? Дастури мониторинги автоматӣ ва ҳалли мушкилотро Monit (бо конфигуратсияи пурра)

Ман каме дар ин бора фикр кардам. Ман танҳо дар давоми рӯз мониторинги Monit-ро ба сервер илова кардам ва конфигуратсияро аз як дарси онлайн нусхабардорӣ ва часбондам. Ҳеҷ мушкиле набояд бошад, дуруст аст?

Субҳи рӯзи дигар, вақти он боз тамом шуд. Пас аз бори сеюм, Монитор танҳо хомӯш шуд ва панел "Нотонида нашудааст"-ро нишон дод.

Ман...

Иқрор мешавам, ки дар аввал ман онро ҷиддӣ қабул накардам. Мониторинги Apache2? Шумо метавонед дар интернет тоннаҳо конфигуратсияҳои шаблонро пайдо кунед, танҳо нусхабардорӣ ва часбонед. Аммо ин раванди часбондан маро воқеан хашмгин кард.

Сабаби аслии низоъ байни меъмории пешфарзии HestiaCP ва портҳои Monit

Бигзор аввал ман ба шумо конфигуратсияеро нишон диҳам, ки ба ман ин қадар мушкилӣ овард, то шумо бубинед, ки оё он бо версияи дидаатон комилан якхела аст ё не.

check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/usr/sbin/service apache2 start"
    stop program  = "/usr/sbin/service apache2 stop"
    if failed host 127.0.0.1 port 80 protocol http then restart
    if 5 restarts within 5 cycles then timeout

Ба назар хуб менамояд, дуруст аст? Он порти 80-ро тафтиш мекунад ва агар он вайрон шавад, он аз нав оғоз мешавад. Агар он пас аз 5 бозоғозӣ ҳанӯз ҳам вайрон шавад, вақти он ба охир мерасад.

Мушкилот дар он аст, ки Apache2-и шумо ҳатто дар порти 80 кор намекунад.

Ин як дом барои HestiaCP ва сабаби аслии афтодани бисёриҳо ба он аст. Меъмории пешфарзии HestiaCP проксии баръакси Nginx + Apache2 мебошад, ки дар он Nginx дар пеш портҳои 80 ва 443-ро ишғол мекунад ва Apache2 дар паси он дар порти маҳаллии 8081 кор мекунад.

Агар шумо аз Монит хоҳиш кунед, ки фаъол будани Apache2-ро дар порти 80 тафтиш кунад, ин мисли он аст, ки ба Макдоналдс рафта KFC-ро пайдо кунед. Хидматгор ба шумо холӣ менигарад ва шумо ду нафар ба якдигар нигоҳ мекунед. Дар ниҳоят, Монит муайян мекунад, ки шумо хомӯш ҳастед ва бо шитоб аз нав оғоз мекунад.

Пас аз бозоғозӣ, порт ҳоло ҳам 8081 аст. Сипас Monit кӯшиш мекунад, ки порти 80-ро санҷад, ки он низ кор намекунад, аз ин рӯ он дубора бозоғоз мешавад. Ин давра то он даме такрор мешавад, ки Monit қарор диҳад, ки таъмирнопазир аст ва вақташ тамом мешавад.

Вақте ки ман бори аввал бо ин дучор шудам, воқеан ҳайрон шудам. Аз даҳ дарсие, ки ман дар интернет ёфтам, нӯҳтоаш аз порти 80 истифода мекарданд. Агар шумо онҳоро риоя кунед, мушкилот дар шумо набуд, балки дар худи манбаи иттилоот буд.

Садамаҳои зуд-зуди Apache2 бо HestiaCP? Дастури мониторинги автоматӣ ва ҳалли мушкилотро Monit (бо конфигуратсияи пурра)

Файли вайроншудаи PID Apache2 боис шуд, ки Monit ин равандро ба таври хато ҳамчун вуҷуд надошта муайян кунад.

Пас аз иваз кардани порт аз 80 ба 8081, Monit бояд аз ҷиҳати назариявӣ онро муайян кунад, дуруст аст?

Аммо, дар асл, он баъзан дар бораи "Иҷро ноком шуд " хабар медиҳад.

Пас аз муддати тӯлонӣ мубориза бурдан, ниҳоят фаҳмидам, ки сабаб оддӣ аст: файли PID вайрон шудааст.

Фикр кунед, Монит Apache2-ро бо шитоб аз нав оғоз мекард ва ҳар дафъа онро маҷбуран хомӯш мекард ва аз нав оғоз мекард, чанд маротиба пешу пас мерафт. Дар ин раванд, файли /var/run/apache2/apache2.pid метавонад ба 0 байт табдил ёбад.

Ба ибораи дигар, файл ҳанӯз ҳам дар он ҷост, аммо холӣ аст.

Вақте ки Monit ин файлро мехонад, ҳеҷ чиз намеёбад. Он Apache2-и шуморо намешиносад, ҳатто агар Apache2-и шумо дар замина комилан хуб кор кунад; Monit фикр намекунад, ки ин раванд вуҷуд дорад.

Вақте инро дидам, як лаҳза бесадо мондам.

Ин як монеаи бунбаст аст. Monit дар муайян кардани мисоли Apache 2 хато мекунад, Apache2-ро аз нав оғоз мекунад, файли PID-ро ҳангоми раванди аз нав оғоз кардан вайрон мекунад, муайянкунии навбатӣ хато мекунад ва аз нав оғоз мекунад. Ин давра то ба охир расидани тайм-аут идома меёбад.

Қадамҳои ҳалли мушкилот ва таъмир барои мониторинги Apache2 дар муҳити HestiaCP

Рости гап, раванди тафтишот мураккаб нест, аммо шумо бояд донед, ки кадом самтро тафтиш кардан лозим аст.

Қадами аввал муайян кардани он аст, ки Apache2-и шумо ба кадом порт гӯш медиҳад. Танҳо дар терминал фармонро ворид кунед.

netstat -tulpn | grep apache2

Интихобан, шумо метавонед фармони `ss`-ро истифода баред; таъсир якхела аст.

ss -tulpn | grep apache2

Шумо натиҷаи монанд ба инро хоҳед дид.

tcp  0  0 127.0.0.1:8081       0.0.0.0:*  LISTEN  2942372/apache2

Тасдиқ шудааст, ки он 80 аст, на 8081. Ин решаи мушкилот аст.

Қадами дуюм таъмири файли PID-и вайроншуда мебошад. Ин соддатар аст.

monit unmonitor apache2
systemctl restart apache2
cat /var/run/apache2/apache2.pid

Аввалан, мониторинги Монитро таваққуф кунед, то ки он ҳангоми ислоҳи корҳо халал нарасонад. Сипас, Apache2-ро аз нав оғоз кунед, то ба он имкон диҳад, ки PID-и тозаро аз нав нависад. Дар ниҳоят, барои санҷидани мундариҷаи файл аз `cat` истифода баред; он бояд сатри рақамҳоро дар бар гирад, на сатри холӣ.

Пас аз анҷоми ин қадам, мушкилот асосан ҳал карда мешавад.

Садамаҳои зуд-зуди Apache2 бо HestiaCP? Дастури мониторинги автоматӣ ва ҳалли мушкилотро Monit (бо конфигуратсияи пурра)

Таҳлили муқоисавии конфигуратсияҳои муҳофизатии мутобиқшаванда ва хашмгинонаи анъанавии Monit

Дарсҳои онлайн оид ба танзими Apache2 бо Monit одатан ба ду категория тақсим мешаванд.

Як навъ "навъи мутобиқшавии анъанавӣ" аст, ки аз фармони `service` барои идоракунии хидматҳо ва санҷиши портҳои маҳаллӣ бидуни илова кардани маҳдудиятҳои мураккаб истифода мебарад. Ин конфигуратсияро дар HestiaCP танҳо бо иваз кардани порт истифода бурдан мумкин аст ва он нисбатан устувор аст.

Як равиши дигар усули "ҳимояи хашмгин" аст, ки барои идоракунии хидматҳо аз systemctl истифода мебарад, маҳдудиятҳои равандҳои кӯдакро илова мекунад ва мантиқи ошкоркунии сахттарро истифода мебарад. Он хеле хуб ба назар мерасад, аммо як камбудии марговар дорад: фармони stop, ки истифода мешавад, `killall -9` аст.

Маънои 'killall -9' чист? Ин маънои маҷбуран нобуд кардани дастгоҳро новобаста аз он ки он чӣ кор мекунад, дорад. Ин амалиёти brute-force метавонад ба осонӣ файлҳои PID-и вайроншударо боқӣ гузорад, ки ин мушкилотест, ки ман нав зикр кардам.

Таҷрибаи шахсии ман нишон медиҳад, ки маҳдуд кардани шумораи равандҳои кӯдак дар конфигуратсияи хашмгин воқеан муфид аст. Вақте ки Apache2-и шумо аз ҳамлаи CC пур мешавад, маҳдуд кардани шумораи равандҳои кӯдак метавонад аз тамом шудани хотираи сервер пешгирӣ кунад. Аммо, усули `killall -9` воқеан истифоданашаванда аст.

Пас, дар ниҳоят ман ба созиш расидам ва бартариҳои ҳарду конфигуратсияро муттаҳид кардам.

Танзимоти беҳтарини амалияи HestiaCP Apache2 Monit

Файли /etc/monit/conf.d/apache2-ро бо мундариҷаи зерин тағир диҳед.

check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/bin/systemctl start apache2"
    stop program  = "/bin/systemctl stop apache2"
    if children > 120 for 2 cycles then restart
    if failed host 127.0.0.1 port 8081 protocol http for 2 cycles then restart
    if 5 restarts within 10 cycles then timeout

Бигзор ман ба таври мухтасар мантиқи ин чанд сатри танзимотро шарҳ диҳам.

Порти 8081-ро нависед, то бо меъмории баръакси проксии HestiaCP дақиқ мувофиқат кунад; аз навиштани порти 80 даст кашед.

Барои боздоштани файли PID, ба ҷои фармони `killall -9` аз фармони `systemctl stop` истифода баред, то ки он вайрон нашавад.

Маҳдудияти раванди кӯдак илова карда шуд: агар шумораи кӯдакон аз 120 зиёд бошад, раванд пас аз ду давраи пайдарпай барои пешгирии ҳамлаҳои CC аз нав оғоз мешавад, аммо он хеле хашмгин нест.

Мантиқи ошкор кардани нокомиҳо барои истифодаи равиши "барои 2 давра" тағйир дода шудааст, яъне бозоғозӣ танҳо пас аз ду нокомии пайдарпай оғоз мешавад ва мусбатҳои бардурӯғро коҳиш медиҳад. Конфигуратсияи қаблӣ, ки танҳо пас аз як ошкоркунӣ бозоғоз мешуд, ростқавлона каме аз ҳад зиёд ҳассос буд.

Остонаи ниҳоии тайм-аут то 5 бозоғозӣ дар давоми 10 давра кам карда мешавад, ки таҳаммулпазирии кофии хатогиҳоро боқӣ мегузорад.

HestiaCP Мониторинги мониторингХулосаи ҳалли мушкилоти танзимот ва мубодилаи таҷриба

Пас аз ворид кардани тағйирот дар конфигуратсия, ман apache2-ро назорат кардам ва дар ниҳоят панел нишондиҳандаи сабзи "OK"-ро нишон дод.

Чӣ тавр эҳсосоти худро дар он вақт тасвир кунам? Ин мисли он буд, ки ду рӯз бо як ҳашарот мубориза мебурдам, аммо баъд фаҳмидам, ки сабаби он як сатри танзимот нодуруст аст. Ин ҳам ноумедкунанда ва ҳам хандаовар буд.

Монит худ як чизи хуб аст ва назорат кардани демонҳо коре аст, ки ҳар як сервер бояд анҷом диҳад. Аммо мушкил дар он аст, ки бисёре аз дарсҳои онлайн бар асоси фарзияе сохта шудаанд, ки "Apache2 танҳо аз порти 80 истифода мебарад", дар ҳоле ки HestiaCP аз прокси баръакс истифода мебарад, ки маънои онро дорад, ки ин фарзия дуруст нест.

Агар шумо дастурҳоро риоя кунед, мушкилот дар шумо нест; он дар он аст, ки дастур барои сенарияи дигаре аз сенарияи шумо татбиқ мешавад.

Пас, агар шумо инчунин HestiaCP-ро истифода баред ва бо Monit барои назорат кардани Apache2 кор кунед, танҳо ду чизро дар хотир доред: Портро ба 8081 иваз кунед ва барои қатъ кардани он аз фармони `systemctl` истифода баред, на `killall -9`. Агар шумо ин ду корро кунед, шумо бояд аз мушкилоти дигар канорагирӣ кунед.


Азбаски шумо то ин ҷо хондаед, агар он барои шумо муфид бошад, лутфан онро лайк монед ва мубодила кунед. Агар шумо хоҳед, ки аввал навсозиҳоро қабул кунед, шумо инчунин метавонед маро пайгирӣ кунед!

Ташаккур барои хондани мақолаи ман. Дафъаи оянда мебинем.

Умедворем, ки мақолаи "Хатоҳои зуд-зуд рухдода дар HestiaCP Apache2? Дастури мониторинги автоматӣ ва ҳалли мушкилотро дар Monitoring Automated (бо конфигуратсияи пурра)" дар блоги Чен Вейлианг ( https://www.chenweiliang.com/ ) мубодилашуда барои шумо муфид хоҳад буд.

Озодона истиноди ин мақоларо мубодила кунед: https://www.chenweiliang.com/cwl-34457.html

Барои кушодани ҳилаҳои пинҳонии бештар🔑, хуш омадед ба канали мо дар Telegram ҳамроҳ шавед!

Поделиться ва лайк, агар ба шумо писанд омад! Саҳмияҳо ва лайкҳои шумо ангезаи доимии мо мебошанд!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Акс аз бойгонӣ