Beat แบบกำหนดเองของ Elastic Stack เพื่อโต้ตอบกับคิวบ์ eBPF ที่ใช้ Polycube
ตรวจสอบให้แน่ใจว่าโฟลเดอร์นี้อยู่ในตำแหน่งต่อไปนี้: ${GOPATH}/src/gitlab.com/astrid-repositories/cubebeat
mkdir -p ${GOPATH}/src/gitlab.com/astrid-repositories/
cd ${GOPATH}/src/gitlab.com/astrid-repositories
git clone https://gitlab.com/astrid-repositories/cubebeat.git
หากต้องการสร้างไบนารี่สำหรับ Cubebeat
ให้รันคำสั่งด้านล่าง สิ่งนี้จะสร้างไบนารีในไดเร็กทอรีเดียวกันกับชื่อ cubebeat
chmod +x build.sh
build.sh
หากต้องการรัน Cubebeat
โดยเปิดใช้งานเอาต์พุตการดีบัก ให้รัน:
./cubebeat -c cubebeat.yml -e -d "*"
หากต้องการรัน Cubebeat
โดยไม่เปิดใช้งานการดีบักเอาต์พุต ให้รัน:
./cubebeat -c cubebeat.yml -e
Cubebeat
อ่านไฟล์การกำหนดค่า (ค่าเริ่มต้น: cubebeat.yml
) ที่ถูกส่งผ่านเป็นอาร์กิวเมนต์
ไฟล์นี้ยอมรับการกำหนดค่าบีททั่วไปตามที่อธิบายไว้ในรูปแบบไฟล์กำหนดค่า
นอกจากนี้ยังยอมรับการกำหนดค่าเฉพาะตามที่แสดงในตัวอย่างถัดไป:
cubebeat :
config.inputs :
path : config/*.yml
reload :
enabled : true
period : 10s
ตัวเลือกต่างๆ จะอธิบายไว้ในส่วนต่อไปนี้
Cubebeat
สามารถโหลดไฟล์การกำหนดค่าภายนอกสำหรับอินพุต ทำให้คุณสามารถแยกการกำหนดค่าออกเป็นไฟล์การกำหนดค่าขนาดเล็กหลายไฟล์ได้
บนระบบที่มีสิทธิ์อนุญาตไฟล์
POSIX
ไฟล์การกำหนดค่าทั้งหมดจะต้องได้รับการตรวจสอบความเป็นเจ้าของและสิทธิ์ของไฟล์
สำหรับข้อมูลเพิ่มเติม โปรดดูกำหนดค่าความเป็นเจ้าของไฟล์และการอนุญาตใน การอ้างอิงแพลตฟอร์ม Beats
คุณระบุอ็อพชัน path
ในส่วน cubebeat.config.inputs
ของ cubebeat.yml
ตัวอย่างเช่น:
cubebeat :
config.inputs :
path : config.d/*.yml
แต่ละไฟล์ที่พบตาม path
Glob จะต้องมีรายการคำจำกัดความอินพุตตั้งแต่หนึ่งรายการขึ้นไป
บรรทัดแรกของไฟล์คอนฟิกูเรชันภายนอกแต่ละไฟล์ต้องเป็นข้อกำหนดอินพุตที่ขึ้นต้นด้วย
- name
ตัวอย่างเช่น:
- name : synflood
enabled : true
period : 10s
polycube.api-url : " http://localhost:9000/polycube/v1/synflood/sf/stats/ "
- name : packetcapture
enabled : true
period : 5s
polycube.api-url : " http://localhost:9000/polycube/v1/packetcapture/pc "
จำเป็นอย่างยิ่งที่อินพุตที่ทำงานอยู่สองตัวจะต้องไม่มี
name
เดียวกัน หากมีการป้อนname
เดียวกันมากกว่าหนึ่งรายการ ระบบจะยอมรับเฉพาะชื่อแรกเท่านั้น ในขณะที่อันอื่นถูกทิ้งไป
เมื่อ enabled
ตัวเลือกเป็น true
อินพุตคิวบ์เฉพาะจะโต้ตอบเป็นระยะกับ Polycube Cube เฉพาะแต่ละช่วงเวลาที่กำหนดไว้ใน period
ที่ส่งคำขอ HTTP ไปยัง URL ที่กำหนดไว้ใน polycube.api-url
หากไม่สามารถเข้าถึงคิวบ์หรือมีข้อผิดพลาดบางอย่างเมื่อดึงข้อมูล
cubebeat
จะยังคงทำงานต่อไป โดยลองเชื่อมต่อใหม่หลังจากช่วงระยะเวลาหนึ่งที่กำหนดไว้ในperiod
ในแต่ละ period
เวลา อินพุตคิวบ์เฉพาะจะส่งเหตุการณ์ Elastic
ใหม่ไปยังเอาต์พุตตามที่กำหนดไว้ในไฟล์กำหนดค่า cubebeat.yml
คุณสามารถกำหนดค่า cubebeat
เพื่อรีโหลดไฟล์คอนฟิกูเรชันภายนอกแบบไดนามิกเมื่อมีการเปลี่ยนแปลง คุณลักษณะนี้พร้อมใช้งานสำหรับการกำหนดค่าอินพุตที่โหลดเป็นไฟล์การกำหนดค่าภายนอก คุณไม่สามารถใช้คุณลักษณะนี้เพื่อรีโหลดไฟล์คอนฟิกูเรชันหลัก cubebeat.yml
หากต้องการกำหนดค่าคุณลักษณะนี้ คุณต้องระบุ path
(Glob) เพื่อดูการเปลี่ยนแปลงการกำหนดค่า เมื่อไฟล์ที่ Glob พบการเปลี่ยนแปลง อินพุตใหม่จะเริ่มและหยุดตามการเปลี่ยนแปลงในไฟล์คอนฟิกูเรชัน
คุณลักษณะนี้มีประโยชน์อย่างยิ่งในสภาพแวดล้อมของคอนเทนเนอร์ซึ่งมีการใช้คอนเทนเนอร์หนึ่งเพื่อท้ายบันทึกสำหรับบริการที่ทำงานในคอนเทนเนอร์อื่นบนโฮสต์เดียวกัน
หากต้องการเปิดใช้งานการโหลดการกำหนดค่าแบบไดนามิกซ้ำ คุณจะต้องระบุ path
และตัวเลือก reload
ภายใต้ส่วน cubebeat.config.inputs
ตัวอย่างเช่น:
cubebeat :
config.inputs :
path : config/*.yml
reload :
enabled : true
period : 10s
ตัวเลือก | คำอธิบาย |
---|---|
path | Glob ที่กำหนดไฟล์เพื่อตรวจสอบการเปลี่ยนแปลง |
reload.enabled | เมื่อตั้งค่าเป็นจริง เปิดใช้งานการโหลดการกำหนดค่าแบบไดนามิกซ้ำ |
reload.period | ระบุความถี่ในการตรวจสอบการเปลี่ยนแปลงไฟล์ อย่าตั้ง period ให้น้อยกว่า 1s เนื่องจากเวลาแก้ไขไฟล์มักจะถูกจัดเก็บในหน่วยวินาทีการตั้งค่า period ให้น้อยกว่า 1s จะส่งผลให้ มีค่าใช้จ่ายที่ไม่จำเป็น |
บนระบบที่มีสิทธิ์อนุญาตไฟล์
POSIX
ไฟล์การกำหนดค่าทั้งหมดจะต้องได้รับการตรวจสอบความเป็นเจ้าของและสิทธิ์ของไฟล์
สำหรับข้อมูลเพิ่มเติม โปรดดูกำหนดค่าความเป็นเจ้าของไฟล์และการอนุญาตใน การอ้างอิงแพลตฟอร์ม Beats