12 सेंटीमीटर से अधिक 5.8 सर्वरों के क्लस्टर पर, मैंने देशी लॉगस्टैश शिपर का उपयोग करके लॉगस्टैश को तैनात किया, जो /var/log/*/*.log
केंद्रीय लॉगस्टैश सर्वर पर वापस भेजता है।
हमने rsyslogd को shipper के रूप में उपयोग करने की कोशिश की, लेकिन rsyslogd के ImFile मॉड्यूल में बग के कारण, यदि दूरस्थ छोर ने उत्तर नहीं दिया, तो लॉग स्मृति में ढेर हो जाएंगे।
हम वर्तमान में Redis को परिवहन तंत्र के रूप में उपयोग कर रहे हैं, इसलिए logstash01 स्थानीय रूप से चलने वाली redis है, इन लॉग के लिए VLAN के लिए IP से बाध्य है।
तो logstash-shipper logstash01 पर redis को भेजता है। logstash01 एक अलग प्रक्रिया में चल रहे एलिस्टिक्स को भेजता है।
यहां हम देख रहे हैं। इलास्टिसर्च में 141 अवरुद्ध धागे हैं। इलास्टिसर्च अभिभावक शो को स्ट्रगल करना:
futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL
यहाँ इलास्टिक्स खोज से jstack है
तो .. कल रात, कुछ वेब्सवर्कर्स (जिनके लॉग लॉगस्ट द्वारा पूंछे गए हैं) पागल हो गए, जिनमें 500 से अधिक लोड औसत हैं।
Logstash01 पर, यह है
Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB
तो OOM- किलर ने रेडिस-सर्वर को मार दिया, जिसका मतलब था कि लॉग इन सर्वरों पर मेमोरी में ढेर हो गया जो कि शिपिंग सामान थे .. जिसका किसी भी तरह से मतलब है कि अपाचे को एक मोड़ में अपने शूरवीर मिलते हैं। (स्पष्ट रूप से, मुझे यकीन नहीं है कि, मैं सिर्फ यह मान रहा हूं कि यह लॉग को पूंछ रहा है) ।।
यह मेरा सिद्धांत है कि कैसे घटनाएँ सामने आईं:
- हमारे पास एक ट्रैफिक स्पाइक था।
- लॉग की एक विशाल राशि उत्पन्न की गई थी।
- ये Redis में ढेर हो गए, क्योंकि logstash / elasticsearch केवल 300-400 नई घटनाओं / सेकंड को संभालने में सक्षम प्रतीत होता है।
- रेडिस पूरी तरह से उस बिंदु तक भर गया था जहां ओओएम-हत्यारे ने इसे मूर्खतापूर्ण तरीके से मार दिया था।
- रेडिस नए आइटम स्वीकार करना बंद कर देता है।
- आइटम अब दूरस्थ मेजबान पक्ष पर ढेर करना शुरू करते हैं।
- सब कुछ पागल हो जाता है । अपाचे अनुरोध स्वीकार करना बंद कर देता है। (क्यों?)।
प्रश्न ये हैं:
अपाचे क्यों पागल हो जाता है अगर वहाँ सिर्फ कुछ लॉग इसकी पूंछ है। क्या यह है कि इसे पूंछने वाली चीज लेखन से अपाचे को रोकती है?
क्या इलास्टिक खोज को तेज / बेहतर / लचीला बनाने के लिए एक समझदार तरीका है?
क्या रेडिस को लचीला बनाने के लिए एक सामान्य तरीका है और OOM'd होने के कारण मरना नहीं है
क्या मेरे द्वारा इसे स्थापित करने के तरीके में कोई मौलिक दोष है, या सभी को यह समस्या है?
- संपादित करें -
कुछ निष्कर्ष @lusis के लिए।
admin@log01:/etc/init$ free -m
total used free shared buffers cached
Mem: 7986 6041 1944 0 743 1157
-/+ buffers/cache: 4140 3845
Swap: 3813 3628 185
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 5.3G 13G 31% /
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 1.6G 240K 1.6G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
/dev/sda1 90M 72M 14M 85% /boot
/dev/mapper/data-disk 471G 1.2G 469G 1% /data
/dev/sda2 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext2 (rw)
/dev/mapper/data-disk on /data type ext3 (rw)
/data/elasticsearch on /var/lib/elasticsearch type none (rw,bind)
log01:/etc/init$ top
top - 14:12:20 up 18 days, 21:59, 2 users, load average: 0.20, 0.35, 0.40
Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
Cpu0 : 3.0%us, 1.0%sy, 0.0%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu1 : 12.0%us, 1.0%sy, 0.0%ni, 86.6%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu2 : 4.7%us, 0.3%sy, 0.0%ni, 94.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 5.6%us, 1.3%sy, 0.0%ni, 93.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 5.3%us, 1.3%sy, 0.0%ni, 93.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 6.4%us, 1.0%sy, 0.0%ni, 92.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 8178120k total, 6159036k used, 2019084k free, 761780k buffers