Apache Flume - แหล่งที่มาของ NetCat

บทนี้เป็นตัวอย่างเพื่ออธิบายว่าคุณสามารถสร้างเหตุการณ์ได้อย่างไรจากนั้นจึงบันทึกเหตุการณ์เหล่านั้นลงในคอนโซล สำหรับสิ่งนี้เรากำลังใช้ไฟล์NetCat แหล่งที่มาและ logger จม.

ข้อกำหนดเบื้องต้น

ในการเรียกใช้ตัวอย่างที่ให้ไว้ในบทนี้คุณต้องติดตั้ง Flume.

การกำหนดค่า Flume

เราต้องกำหนดค่าซอร์สช่องและซิงก์โดยใช้ไฟล์กำหนดค่าในไฟล์ confโฟลเดอร์ ตัวอย่างที่ให้ไว้ในบทนี้ใช้ไฟล์NetCat Source, Memory channelและก logger sink.

ที่มา NetCat

ในขณะกำหนดคอนฟิกซอร์ส NetCat เราต้องระบุพอร์ตขณะกำหนดคอนฟิกซอร์ส ตอนนี้แหล่งที่มา (แหล่ง NetCat) จะรับฟังพอร์ตที่กำหนดและรับแต่ละบรรทัดที่เราป้อนในพอร์ตนั้นเป็นแต่ละเหตุการณ์และโอนไปยังซิงก์ผ่านช่องทางที่ระบุ

ขณะกำหนดค่าแหล่งที่มานี้คุณต้องระบุค่าให้กับคุณสมบัติต่อไปนี้ -

  • channels

  • Source type - netcat

  • bind - ชื่อโฮสต์หรือที่อยู่ IP ที่จะผูก

  • port - หมายเลขพอร์ตที่เราต้องการให้แหล่งรับฟัง

ช่อง

เรากำลังใช้ไฟล์ memoryช่อง ในการกำหนดค่าช่องหน่วยความจำคุณต้องระบุค่าให้กับประเภทของช่องสัญญาณ ด้านล่างนี้เป็นรายการคุณสมบัติที่คุณต้องจัดหาในขณะกำหนดค่าช่องหน่วยความจำ -

  • type- ถือประเภทของช่อง ในตัวอย่างของเราประเภทคือMemChannel.

  • Capacity- เป็นจำนวนเหตุการณ์สูงสุดที่จัดเก็บไว้ในช่อง ค่าเริ่มต้นคือ 100 (ไม่บังคับ)

  • TransactionCapacity- เป็นจำนวนเหตุการณ์สูงสุดที่ช่องยอมรับหรือส่ง ค่าเริ่มต้นคือ 100 (ไม่บังคับ)

อ่างล้างจาน

ซิงก์นี้บันทึกเหตุการณ์ทั้งหมดที่ส่งผ่านไป โดยทั่วไปจะใช้เพื่อการทดสอบหรือการดีบัก ในการกำหนดค่าซิงก์นี้คุณต้องระบุรายละเอียดต่อไปนี้

  • Channel

  • type - คนตัดไม้

ตัวอย่างไฟล์คอนฟิกูเรชัน

ด้านล่างเป็นตัวอย่างของไฟล์กำหนดค่า คัดลอกเนื้อหานี้และบันทึกเป็นnetcat.conf ในโฟลเดอร์ conf ของ Flume

# Naming the components on the current agent
NetcatAgent.sources = Netcat   
NetcatAgent.channels = MemChannel 
NetcatAgent.sinks = LoggerSink  

# Describing/Configuring the source 
NetcatAgent.sources.Netcat.type = netcat 
NetcatAgent.sources.Netcat.bind = localhost
NetcatAgent.sources.Netcat.port = 56565  

# Describing/Configuring the sink 
NetcatAgent.sinks.LoggerSink.type = logger  

# Describing/Configuring the channel 
NetcatAgent.channels.MemChannel.type = memory 
NetcatAgent.channels.MemChannel.capacity = 1000 
NetcatAgent.channels.MemChannel.transactionCapacity = 100 
 
# Bind the source and sink to the channel 
NetcatAgent.sources.Netcat.channels = MemChannel
NetcatAgent.sinks.LoggerSink.channel = MemChannel

การดำเนินการ

เรียกดูโฮมไดเร็กทอรี Flume และเรียกใช้แอพพลิเคชั่นดังที่แสดงด้านล่าง

$ cd $FLUME_HOME
$ ./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/netcat.conf 
   --name NetcatAgent -Dflume.root.logger=INFO,console

หากทุกอย่างเรียบร้อยดีแหล่งที่มาจะเริ่มฟังพอร์ตที่ระบุ ในกรณีนี้ก็คือ56565. ด้านล่างนี้เป็นภาพรวมของหน้าต่างพรอมต์คำสั่งของแหล่งที่มา NetCat ซึ่งเริ่มต้นและรับฟังพอร์ต 56565

การส่งผ่านข้อมูลไปยังแหล่งที่มา

ในการส่งข้อมูลไปยังแหล่งที่มาของ NetCat คุณต้องเปิดพอร์ตที่ระบุในไฟล์คอนฟิกูเรชัน เปิดเทอร์มินัลแยกต่างหากและเชื่อมต่อกับแหล่งสัญญาณ (56565) โดยใช้ไฟล์curlคำสั่ง เมื่อการเชื่อมต่อสำเร็จคุณจะได้รับข้อความ“connected” ตามที่แสดงด้านล่าง

$ curl telnet://localhost:56565 
connected

ตอนนี้คุณสามารถป้อนข้อมูลทีละบรรทัด (หลังจากแต่ละบรรทัดคุณต้องกด Enter) แหล่งที่มา NetCat ได้รับแต่ละบรรทัดเป็นแต่ละเหตุการณ์และคุณจะได้รับข้อความที่ได้รับ "OK”.

เมื่อใดก็ตามที่คุณส่งข้อมูลเสร็จแล้วคุณสามารถออกจากคอนโซลได้โดยกด (Ctrl+C). ด้านล่างนี้เป็นภาพรวมของคอนโซลที่เราเชื่อมต่อกับซอร์สโดยใช้ไฟล์curl คำสั่ง

แต่ละบรรทัดที่ป้อนในคอนโซลด้านบนจะได้รับเป็นเหตุการณ์แต่ละรายการโดยต้นทาง เนื่องจากเราได้ใช้ไฟล์Logger sink เหตุการณ์เหล่านี้จะถูกล็อกออนเข้าสู่คอนโซล (คอนโซลต้นทาง) ผ่านช่องทางที่ระบุ (ช่องหน่วยความจำในกรณีนี้)

สแน็ปช็อตต่อไปนี้แสดงคอนโซล NetCat ที่บันทึกเหตุการณ์