TLDR;
ฉันได้รับปริมาณงานที่ลดลงอย่างมากเมื่อส่งต่อข้อความ syslog ด้วย rsyslog บนเซิร์ฟเวอร์ Redhat ที่มี 32 คอร์และ 128Gi RAM ไปยังเซิร์ฟเวอร์ระยะไกลโดยใช้ TCP แทน UDP syslog ใน ขอบคุณ หนังบู๊.
ฉันจะใช้ TCP เพื่อส่งต่อข้อความในขณะที่รักษาปริมาณข้อความขาเข้าได้อย่างไร
Note1: pps = แพ็คเก็ตต่อวินาที
หมายเหตุ 2: สังเกตความแตกต่างของค่าสถานะ Rx vs Tx
เมื่อใช้ UDP เพื่อส่งต่อข้อความขาเข้า:
[~]$ ./check_network_stats.bash eth0
Rx 10088 pps Tx 10092 pps |--| Rx 7 Mbps Tx 7 Mbps
Rx 11858 pps Tx 11857 pps |--| Rx 8 Mbps Tx 8 Mbps
Rx 11503 pps Tx 11502 pps |--| Rx 8 Mbps Tx 8 Mbps
Rx 11423 pps Tx 11321 pps |--| Rx 8 Mbps Tx 8 Mbps
เมื่อใช้ TCP เพื่อส่งต่อข้อความขาเข้า:
[~]$ แหล่งที่มา check_network_stats.bash eth0
Rx 10318 pps Tx 87 pps |--| Rx 7 Mbps Tx 0 Mbps
Rx 12150 pps Tx 162 pps |--| Rx 8 Mbps Tx 0 Mbps
Rx 9504 pps Tx 139 pps |--| Rx 7 Mbps Tx 0 Mbps
Rx 9774 pps Tx 67 pps |--| Rx 6 Mbps Tx 0 Mbps
Rx 12894 pps Tx 159 pps |--| Rx 9 Mbps Tx 0 Mbps
rsyslog.conf:
# ไฟล์กำหนดค่า rsyslog
#################
#### โมดูล ####
#################
โมดูล (โหลด = "imjournal" StateFile = "imjournal.state")
โมดูล (โหลด = "imklog") # อ่านข้อความเคอร์เนล (เหมือนกับที่อ่านจาก Journald)
module(load="immark" interval="300") # ให้ --MARK-- ความสามารถของข้อความ
module(load="imudp" threads="4" batchSize ="128") # ให้ UDP syslog รับ
module(load="imptcp" threads="10") # จัดเตรียมการรับ TCP syslog
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") # ใช้รูปแบบการประทับเวลาเริ่มต้น
###############
#### กฎ ####
###############
ชุดกฎ (ชื่อ = "sendToLogstash") {
การกระทำ (ประเภท = "omfwd"
ชื่อ = "การกระทำ_ls"
เป้าหมาย="10.10.10.10"
พอร์ต = "514"
Protocol="udp" # เมื่อสิ่งนี้เปลี่ยนเป็น TCP ปริมาณงานจะลดลง
คิว.type="FixedArray"
)
}
###########################
#### ผู้ฟัง ####
###########################
อินพุต (ประเภท = "imudp" พอร์ต = "514" ชุดกฎ = "sendToLogstash")
อินพุต (ประเภท = "imptcp" พอร์ต = "514" ชุดกฎ = "sendToLogstash")
###########################
#### คำสั่งสากล ####
###########################
เครื่องหมาย* /var/log/messages
# ตำแหน่งที่จะวางไฟล์เสริม
ส่วนกลาง (workDirectory = "/var/lib/rsyslog")