Udplogbeat เป็นแอปพลิเคชัน Beats แบบกำหนดเองที่มีจุดประสงค์เพื่อให้นักพัฒนาสามารถบันทึกเหตุการณ์เพื่อสร้างดัชนีใน Elasticsearch รายการบันทึกจะถูกส่งไปยังซ็อกเก็ต UDP ในเครื่อง จากนั้นจึงส่งออกผ่านเอาต์พุตที่เลือก วัตถุประสงค์ของเครื่องมือนี้คือเพื่อให้แอปพลิเคชันใดๆ บันทึกข้อความในเครื่องได้อย่างง่ายดายโดยไม่ต้องเขียนลงดิสก์ และใช้ประโยชน์จากเอาท์พุตและฟีเจอร์ต่างๆ ในตัวของ Beats Framework
ตรวจสอบให้แน่ใจว่าโฟลเดอร์นี้อยู่ในตำแหน่งต่อไปนี้: ${GOPATH}/github.com/hartfordfive
ขณะนี้จังหวะนี้ถูกแทนที่ด้วย protologbeat แม้ว่าจังหวะนี้น่าจะทำงานได้ดี แต่ขอแนะนำให้คุณใช้ตัวตายตัวแทนแทน เนื่องจากมีการปรับปรุงบางอย่าง เช่นเดียวกับความสามารถในการเลือกระหว่าง tcp หรือ udp จะไม่ทำการเปลี่ยนแปลงกับโปรเจ็กต์นี้อีกต่อไป
udplogbeat.port
: พอร์ต UDP ที่กระบวนการจะรับฟัง (ค่าเริ่มต้น = 5,000)udplogbeat.max_message_size
: ขนาดข้อความสูงสุดที่ยอมรับ (ค่าเริ่มต้น = 1024)udplogbeat.enable_syslog_format_only
: ค่าบูลีนที่ระบุว่าควรยอมรับเฉพาะข้อความ syslog เท่านั้น (ค่าเริ่มต้น = เท็จ)udplogbeat.enable_json_validation
: ค่าบูลีนที่ระบุว่าควรใช้การตรวจสอบความถูกต้องของสคีมา JSON สำหรับข้อความรูปแบบ json
หรือไม่ (ค่าเริ่มต้น = false)udplogbeat.publish_failed_json_invalid
: ค่าบูลีนที่ระบุว่าควรส่งอ็อบเจ็กต์ JSON ให้เป็นอนุกรมหรือไม่ในกรณีที่การตรวจสอบความถูกต้องล้มเหลว สิ่งนี้จะเพิ่มแท็ก _udplogbeat_jspf
(ค่าเริ่มต้น = เท็จ)udplogbeat.json_document_type_schema
: แฮชที่ประกอบด้วยประเภท Elasticsearch เป็นคีย์ และพาธไฟล์สคีมาโลคัลสัมบูรณ์เป็นค่าตัวอย่างการกำหนดค่าสำหรับการแทนที่ syslog
udplogbeat:
port: 5000
max_message_size: 4096
enable_syslog_format_only: false
ตัวอย่างการกำหนดค่าที่บังคับใช้สคีมาสำหรับเหตุการณ์รูปแบบ JSON
udplogbeat:
port: 5001
max_message_size: 2048
enable_json_validation: true
json_document_type_schema:
email_contact: "/etc/udplogbeat/app1_schema.json"
stock_item: "/etc/udplogbeat/app2_schema.json"
สคีมา JSON สามารถสร้างขึ้นได้โดยอัตโนมัติจากออบเจ็กต์ที่นี่: http://jsonschema.net/ คุณยังสามารถดูสคีมาตัวอย่างที่รวมไว้ app1_schema.json
และ app2_schema.json
เป็นตัวอย่างได้
หากคุณตั้งใจจะใช้สิ่งนี้แทนการบันทึกแบบดรอปอินด้วย Rsyslog วิธีการนี้จะไม่คงข้อมูลของคุณไว้ที่ไฟล์บนดิสก์
หาก udplogbeat หยุดทำงานด้วยเหตุผลใดก็ตาม ข้อความที่ส่งไปยังพอร์ต UDP ที่กำหนดค่าไว้จะไม่ได้รับการประมวลผลหรือส่งไปยังคลัสเตอร์ ELK ของคุณ หากคุณต้องการการรับประกัน 100% แต่ละข้อความจะถูกส่งอย่างน้อยหนึ่งครั้ง นี่อาจไม่ใช่ทางออกที่ดีที่สุดสำหรับคุณ
หากคุณยอมรับการสูญเสียเหตุการณ์บันทึกที่อาจเกิดขึ้นได้ วิธีนี้อาจเป็นวิธีแก้ปัญหาที่สมเหตุสมผลสำหรับคุณ
เพื่อให้แอปพลิเคชัน udplogbeat ยอมรับเหตุการณ์ เมื่อไม่อยู่ในโหมดรูปแบบ syslog เท่านั้น ( Enable_syslog_format_only: false ) จะต้องมีโครงสร้างในรูปแบบต่อไปนี้:
[FORMAT]:[ES_TYPE]:[EVENT_DATA]
json
หรือ plain
. รายการที่เข้ารหัส JSON จะถูกแยกวิเคราะห์โดยอัตโนมัติตัวอย่าง:
เหตุการณ์ที่เข้ารหัสธรรมดา:
plain:syslog:Nov 26 18:51:42 my-web-host01 dhclient: DHCPACK of 10.2.1.2 from 10.2.1.3
เหตุการณ์ที่เข้ารหัส JSON:
json:my_application:{"message":"This is a test JSON message", "application":"my_application", "log_level":"INFO"}
โปรดทราบว่าวันที่/เวลาปัจจุบันจะถูกเพิ่มลงในแต่ละรายการบันทึกโดยอัตโนมัติ
โปรดดูไดเร็กทอรี sample_clients/
สำหรับตัวอย่างไคลเอนต์ในภาษาต่างๆ
หากต้องการใช้งาน Udplogbeat และติดตั้งการขึ้นต่อกัน ให้รันคำสั่งต่อไปนี้:
make setup
มันจะสร้างประวัติคอมไพล์ที่สะอาดสำหรับแต่ละขั้นตอนหลัก โปรดทราบว่าคุณสามารถเขียนประวัติใหม่ได้ตลอดเวลาหากต้องการก่อนที่จะพุชการเปลี่ยนแปลง
หากต้องการพุช Udplogbeat ในพื้นที่เก็บข้อมูล git ให้รันคำสั่งต่อไปนี้:
git remote set-url origin https://github.com/hartfordfive/udplogbeat
git push origin master
สำหรับการพัฒนาเพิ่มเติม โปรดดูคู่มือนักพัฒนา Beat
หากต้องการสร้างไบนารีสำหรับ Udplogbeat ให้รันคำสั่งด้านล่าง สิ่งนี้จะสร้างไบนารีในไดเร็กทอรีเดียวกันกับชื่อ udplogbeat
make
หรือสร้างไบนารีแบบซิปสำหรับ OSX, Windows และ Linux:
./build_os_binaries.sh "[VERSION_NUMBER]"
สิ่งเหล่านี้จะถูกวางไว้ในไดเร็กทอรี bin/
หากต้องการรัน Udplogbeat โดยเปิดใช้งานเอาต์พุตการดีบัก ให้รัน:
./udplogbeat -c udplogbeat.yml -e -d "*"
หากต้องการทดสอบ Udplogbeat ให้รันคำสั่งต่อไปนี้:
make testsuite
หรืออีกทางหนึ่ง:
make unit-tests
make system-tests
make integration-tests
make coverage-report
รายงานความครอบคลุมการทดสอบในโฟลเดอร์ ./build/coverage/
แต่ละจังหวะมีเทมเพลตสำหรับการแมปใน elasticsearch และเอกสารประกอบสำหรับฟิลด์ที่ถูกสร้างขึ้นโดยอัตโนมัติตาม etc/fields.yml
เพื่อสร้าง etc/udplogbeat.template.json และ etc/udplogbeat.asciidoc
make update
หากต้องการล้างซอร์สโค้ด Udplogbeat ให้รันคำสั่งต่อไปนี้:
make fmt
make simplify
หากต้องการล้างไดเร็กทอรี build และส่วนที่สร้างขึ้น ให้รัน:
make clean
หากต้องการโคลน Udplogbeat จากที่เก็บ git ให้รันคำสั่งต่อไปนี้:
mkdir -p ${GOPATH}/github.com/hartfordfive
cd ${GOPATH}/github.com/hartfordfive
git clone https://github.com/hartfordfive/udplogbeat
สำหรับการพัฒนาเพิ่มเติม โปรดดูคู่มือนักพัฒนา Beat
กรอบจังหวะมีเครื่องมือในการคอมไพล์และจัดแพคเกจจังหวะของคุณสำหรับแพลตฟอร์มต่างๆ สิ่งนี้ต้องใช้นักเทียบท่าและผู้จำหน่ายตามที่อธิบายไว้ข้างต้น หากต้องการสร้างแพ็คเกจตามจังหวะของคุณ ให้รันคำสั่งต่อไปนี้:
make package
การดำเนินการนี้จะดึงและสร้างอิมเมจทั้งหมดที่จำเป็นสำหรับกระบวนการสร้าง กระบวนการเจาะรูให้เสร็จสิ้นอาจใช้เวลาหลายนาที
อแลง เลอเฟบฟวร์ <hartfordfive 'at' gmail.com>
อยู่ภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0 ลิขสิทธิ์ (c) 2016 Alain Lefebvre