Trong một cụm gồm hơn 12 centos 5,8 máy chủ, tôi đã triển khai logstash bằng cách sử dụng trình gửi logstash gốc, gửi /var/log/*/*.log
lại cho một máy chủ logstash trung tâm.
Chúng tôi đã thử sử dụng rsyslogd với tư cách là người giao hàng, nhưng do lỗi trong mô-đun ImFile của rsyslogd, nếu đầu từ xa không trả lời, nhật ký sẽ chồng chất trong bộ nhớ.
Chúng tôi hiện đang sử dụng Redis làm cơ chế vận chuyển, vì vậy logstash01 đã chạy lại cục bộ, ràng buộc với IP cho Vlan cho các nhật ký này.
Vì vậy, logstash-shipper gửi tới redis trên logstash01. logstash01 gửi đến Elaticsearch đang chạy trong một quy trình riêng.
Đây là những gì chúng ta đang thấy. Elaticsearch có 141 chủ đề bị chặn. Stracing cha mẹ elaticsearch cho thấy:
futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL
Vì vậy, đêm qua, một số máy chủ web (có nhật ký được xử lý bằng logstash) đã hoạt động, với tải trung bình trên 500.
Trên logstash01, có cái này
Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB
Vì vậy, kẻ giết người OOM đã giết chết máy chủ redis, điều đó có nghĩa là các bản ghi được chất đống trong bộ nhớ trên các máy chủ đang vận chuyển .. Điều đó có nghĩa là apache bị mắc kẹt trong vòng xoắn. (Thành thật mà nói, tôi không chắc bằng cách nào, tôi chỉ cho rằng nó đang theo dõi nhật ký) ..
Đây là lý thuyết của tôi về cách các sự kiện diễn ra:
- Chúng tôi đã có một lưu lượng truy cập tăng đột biến.
- Một lượng lớn các bản ghi đã được tạo ra.
- Những thứ này chất đống trong Redis, vì logstash / elSTERearch dường như chỉ có thể xử lý 300-400 sự kiện mới / giây.
- Redis đã lấp đầy hoàn toàn đến mức giết chết OOM một cách vô nghĩa.
- Redis ngừng chấp nhận các mặt hàng mới.
- Các mục bây giờ bắt đầu chồng chất lên phía máy chủ từ xa.
- Tất cả mọi thứ đi hạt . Apache ngừng chấp nhận yêu cầu. (Tại sao?).
Câu hỏi là:
Tại sao apache trở nên tồi tệ nếu chỉ có một cái gì đó theo đuôi nhật ký của nó. Có phải đó là điều mà nó ngăn chặn apache viết?
Có cách nào lành mạnh để làm cho elaticsearch nhanh hơn / tốt hơn / kiên cường hơn không?
Có cách nào lành mạnh để làm cho redis trở nên kiên cường và không chết vì bị OOM'd
Có một lỗ hổng cơ bản trong cách tôi thiết lập tất cả, hoặc mọi người có vấn đề này không?
-- BIÊN TẬP --
Một số thông số kỹ thuật cho @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