Anyè Atik
Apache2 souvan kraze oubyen Monit gen echèk rekòmanse otomatik nan anviwònman HestiaCP ? Atik sa a bay yon gid pratik pou evite pyèj komen lè w ap siveye Apache2 ak Monit, li analize an pwofondè pwoblèm komen tankou move aliyman chemen PID ak blokaj pèmisyon, epi li ofri dosye konfigirasyon automatisation Monit pou pwodiksyon. Metrize teknik antretyen sèvè ki gen gwo disponiblite kounye a epi reyalize dezyèm nivo rekiperasyon otomatik apre echèk!
Pyèj mwen te rankontre pandan m t ap itilize Monit pou siveye Apache2
Vandredi pase a, sèvè a te ban mwen yon alèt Monit nan mitan lannwit.
Mwen te voye yon je sou panèl la ak yon sezisman, epi nan kolòn estati apache2 a, te gen yon Timeout wouj.

Mwen te reflechi sou sa yon ti tan. Mwen jis ajoute siveyans Monit sou sèvè a pandan jounen an, epi mwen kopye kole konfigirasyon an nan yon leson patikilye sou entènèt. Pa ta dwe gen okenn pwoblèm, pa vre?
Nan denmen maten, li te ekspire ankò. Apre twazyèm fwa a, Monitor la te tou senpleman abandone, epi panèl la te montre "Pa kontwole".
Mwen...
Mwen admèt, mwen pa t pran l oserye okòmansman. Siveyans Apache2? Ou ka jwenn yon pakèt konfigirasyon modèl sou entènèt, jis kopye epi kole. Men, pwosesis kole sa a te fè m fache anpil.
Kòz prensipal konfli ki genyen ant achitekti default HestiaCP a ak pò Monit yo
Kite m montre w konfigirasyon ki te ban m tout pwoblèm sa a anvan, pou w ka wè si l egzakteman menm jan ak vèsyon ou te wè a.
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 timeoutLi sanble anfòm, pa vre? Li tcheke pò 80, epi si li plante, li rekòmanse. Si li toujou plante apre 5 rekòmanse, li pran yon delè.
Pwoblèm nan se, Apache2 ou a pa menm ap fonksyone sou pò 80.
Sa a se yon pyèj HestiaCP, epi kòz prensipal anpil moun tonbe ladan l. Achitekti HestiaCP a pa defo se yon proxy envès Nginx + Apache2, ak Nginx k ap okipe pò 80 ak 443 devan, epi Apache2 k ap fonksyone sou pò lokal 8081 dèyè.
Si ou mande Monit pou l sonde si Apache2 aktif sou pò 80 a, se tankou w ta ale nan McDonald's pou jwenn KFC. Sèvè a ap gade w ak yon je vid, epi nou toulede ap fikse youn lòt. Alafen, Monit detèmine ou pa ka fonksyone epi li kòmanse rekòmanse san rete.
Apre rekòmanse, pò a toujou 8081. Apre sa, Monit eseye sonde pò 80, ki echwe tou, kidonk li rekòmanse ankò. Sik sa a repete jiskaske Monit deside ke li pa ka repare epi li pran yon delè.
Lè m te rankontre sa a pou premye fwa, mwen te vrèman sezi. Nèf sou dis leson patikilye mwen te jwenn sou entènèt te itilize pò 80. Si ou te swiv yo, pwoblèm nan pa t avèk ou, men avèk sous enfòmasyon an li menm.

Yon fichye PID Apache2 ki pèvèti te lakòz Monit idantifye pwosesis la pa erè kòm yon pwosesis ki pa egziste.
Apre chanje pò a soti nan 80 pou rive nan 8081, teyorikman Monit ta dwe kapab detekte li, pa vre?
Sepandan, an reyalite, li toujou rapòte detanzantan "Egzekisyon an echwe ".
Apre mwen fin lite pandan yon bon bout tan, mwen finalman dekouvri rezon an te senp: fichye PID la te pèvèti.
Reflechi sou sa, Monit t ap rekòmanse Apache2 san rete, chak fwa li te fòse touye l epi rekòmanse l, li t ap fè ale vini plizyè fwa. Pandan pwosesis sa a, fichye /var/run/apache2/apache2.pid la te ka vin gen 0 okte.
Nan lòt mo, dosye a toujou la, men li vid.
Lè Monit li fichye sa a, li pa jwenn anyen. Li pa rekonèt Apache2 ou a, menm si Apache2 ou a ap fonksyone byen nèt nan background nan; Monit pa panse pwosesis la egziste.
Lè m te wè sa, m te rete san pawòl pou yon ti moman.
Sa a se yon blokaj. Monit pa rive detekte egzanp Apache 2 a, li rekòmanse Apache2, li pèvèti fichye PID la pandan pwosesis rekòmansman an, li echwe nan pwochen deteksyon an, epi li rekòmanse ankò. Sik sa a kontinye jiskaske delè a rive.
Etap depanaj ak reparasyon pou siveyans Apache2 nan anviwònman HestiaCP
Pou di vre, pwosesis ankèt la pa konplike, men ou bezwen konnen ki direksyon pou w mennen ankèt la.
Premye etap la se detèmine sou ki pò Apache2 ou a ap koute. Senpleman tape yon kòmand nan tèminal la.
netstat -tulpn | grep apache2Ou kapab itilize kòmandman `ss` la tou; efè a se menm bagay la.
ss -tulpn | grep apache2Ou pral wè yon rezilta ki sanble ak sa a.
tcp 0 0 127.0.0.1:8081 0.0.0.0:* LISTEN 2942372/apache2Li konfime se 8081, pa 80. Se la pwoblèm nan ye.
Dezyèm etap la se repare fichye PID ki pèvèti a. Sa pi senp.
monit unmonitor apache2
systemctl restart apache2
cat /var/run/apache2/apache2.pidPremyèman, mete siveyans Monit sou yon poz pou anpeche l entèfere pandan w ap ranje bagay yo. Apre sa, rekòmanse Apache2 pou pèmèt li reekri yon PID pwòp. Finalman, sèvi ak `cat` pou verifye sa ki nan fichye a; li ta dwe gen yon chèn nimewo, pa yon chèn vid.
Yon fwa etap sa a fini, pwoblèm nan fondamantalman rezoud.

Analiz konparatif konfigirasyon pwoteksyon adaptif ak agresif tradisyonèl Monit yo
Leson patikilye sou entènèt sou konfigirasyon Apache2 ak Monit jeneralman tonbe nan de kategori.
Youn nan kalite yo se "kalite adaptasyon tradisyonèl la," ki itilize kòmandman `sèvis` la pou jere sèvis yo epi tcheke pò lokal yo san ajoute twòp restriksyon konplike. Ou ka itilize konfigirasyon sa a sou HestiaCP tou senpleman lè w chanje pò a, epi li relativman stab.
Yon lòt apwòch se metòd "pwoteksyon agresif" la, ki itilize systemctl pou jere sèvis yo, ajoute restriksyon sou pwosesis pitit yo, epi ki anplwaye yon lojik deteksyon ki pi strik. Li bèl anpil, men li gen yon defo grav: kòmandman arè ki itilize a se `killall -9`.
Ki sa `killall -9` vle di? Sa vle di fòse aparèy la kèlkeswa sa l ap fè. Operasyon fòs brit sa a ka fasilman kite dosye PID pèvèti, ki se pwoblèm mwen sot mansyone a.
Eksperyans pèsonèl mwen se ke limite kantite pwosesis pitit nan yon konfigirasyon agresif se vreman itil. Lè Apache2 ou a depase pa yon atak CC, limite kantite pwosesis pitit ka anpeche sèvè a fini memwa. Sepandan, apwòch `killall -9` la vrèman pa ka itilize.
Kidonk, nan fen a, mwen te fè yon konpwomi epi mwen te konbine avantaj tou de konfigirasyon yo.
Konfigirasyon Meyè Pratik pou HestiaCP Apache2 Monit
Modifye fichye /etc/monit/conf.d/apache2 a avèk kontni sa a.
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 timeoutKite m eksplike yon ti kras lojik ki dèyè kèk liy konfigirasyon sa yo.
Ekri pò 8081 pou l koresponn egzakteman ak achitekti proxy envès HestiaCP a; sispann ekri pò 80 san reflechi.
Sèvi ak kòmandman `systemctl stop` olye de `killall -9` pou kanpe fichye PID la, pou pa korije li.
Yo ajoute yon limit pou pwosesis pitit yo: si kantite pitit yo depase 120, pwosesis la ap rekòmanse apre de sik youn apre lòt pou anpeche atak CC yo, men li pa twò agresif.
Yo modifye lojik pou detekte echèk yo pou itilize yon apwòch "pou 2 sik", sa vle di yon rekòmanse sèlman deklanche apre de echèk youn apre lòt, sa ki diminye fo pozitif yo. Ansyen konfigirasyon an, ki te rekòmanse apre yon sèl deteksyon, te franchman yon ti jan twò sansib.
Papòt dènye delè a detann a 5 rekòmansman nan 10 sik, sa ki kite yon tolerans fòt sifizan.
HestiaCP Monit siveyansRezime depanaj konfigirasyon ak pataj eksperyans
Apre mwen fin fè chanjman konfigirasyon yo, mwen te kontwole apache2, epi finalman panèl la te montre yon endikatè vèt "OK".
Kijan pou m dekri santiman m nan moman sa a? Se te tankou m te pase de jou ap lite ak yon pinèz, sèlman pou m dekouvri kòz la se te yon sèl liy konfigirasyon ki pa t bon. Se te an menm tan fwistre e komik.
Monit se yon bon bagay an li menm, epi siveyans daemons se yon bagay chak sèvè ta dwe fè. Men pwoblèm nan se ke anpil leson patikilye sou entènèt baze sou sipozisyon ke "Apache2 sèlman itilize pò 80," pandan HestiaCP itilize yon proxy envès, ki vle di sipozisyon sa a pa vre.
Si ou swiv enstriksyon yo, pwoblèm nan se pa ou; se ke leson patikilye a aplikab nan yon senaryo diferan de pa ou a.
Kidonk, si w ap itilize HestiaCP tou epi w ap jwe ak Monit pou siveye Apache2, sonje de bagay: Chanje pò a an 8081, epi sèvi ak kòmand `systemctl` la pou kanpe li, pa `killall -9`. Si ou fè de bagay sa yo, ou ta dwe kapab evite plis pwoblèm.
Piske ou fin li tout sa, si ou twouve l itil, tanpri like li epi pataje li. Si ou vle resevwa dènye nouvèl yo an premye, ou ka swiv mwen tou!
Mèsi paske ou li atik mwen an. N a wè pita.
Espere ke atik "HestiaCP Apache2 Frequent Crashes? Monit Automated Monitoring and Troubleshooting Guide (with Complete Configuration)" ki pataje sou blog Chen Weiliang la ( https://www.chenweiliang.com/ ) ap itil ou.
Pa ezite pataje lyen atik sa a: https://www.chenweiliang.com/cwl-34457.html
