Logstash เป็นส่วนหนึ่งของ Elastic Stack พร้อมด้วย Beats, Elasticsearch และ Kibana Logstash คือไปป์ไลน์การประมวลผลข้อมูลฝั่งเซิร์ฟเวอร์ที่นำเข้าข้อมูลจากแหล่งที่มาจำนวนมากพร้อมกัน แปลงข้อมูล และส่งไปยัง "ที่ซ่อน" ที่คุณชื่นชอบ (ของเราคือ Elasticsearch ตามธรรมชาติ) Logstash มีปลั๊กอินมากกว่า 200 รายการและคุณสามารถเขียนปลั๊กอินของคุณเองได้อย่างง่ายดายเช่นกัน
ดูข้อมูลเพิ่มเติมได้ที่ https://www.elastic.co/products/logstash
คุณสามารถดูเอกสารและคู่มือการเริ่มต้นใช้งาน Logstash ได้ที่เว็บไซต์ elastic.co
สำหรับข้อมูลเกี่ยวกับการสร้างเอกสาร โปรดดู README ใน https://github.com/elastic/docs
คุณสามารถดาวน์โหลดไบนารี Logstash ที่เปิดตัวอย่างเป็นทางการ รวมถึงแพ็คเกจ debian/rpm สำหรับแพลตฟอร์มที่รองรับได้จากหน้าดาวน์โหลด
ปลั๊กอิน Logstash ถูกโฮสต์ไว้ในที่เก็บข้อมูลแยกต่างหากภายใต้องค์กร GitHub ของปลั๊กอิน logstash ปลั๊กอินแต่ละตัวเป็นอัญมณี Ruby ที่มีอยู่ในตัวเองซึ่งได้รับการเผยแพร่ไปยัง RubyGems.org
Logstash มีชื่อเสียงในด้านความสามารถในการขยายได้ มีปลั๊กอินหลายร้อยรายการสำหรับ Logstash และคุณสามารถเขียนปลั๊กอินของคุณเองได้อย่างง่ายดาย! สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาและทดสอบปลั๊กอินเหล่านี้ โปรดดูส่วนการทำงานกับปลั๊กอิน
โปรดเปิดประเด็นใหม่และดึงคำขอปลั๊กอินภายใต้พื้นที่เก็บข้อมูลของตัวเอง
ตัวอย่างเช่น หากคุณต้องรายงานปัญหา/การปรับปรุงสำหรับเอาต์พุต Elasticsearch โปรดดำเนินการที่นี่
แกน Logstash จะยังคงอยู่ภายใต้พื้นที่เก็บข้อมูลนี้ และสามารถส่งปัญหาที่เกี่ยวข้องทั้งหมดและคำขอดึงข้อมูลได้ที่นี่
JAVA_HOME
เป็นพาธไปยังไดเร็กทอรีการติดตั้ง JDK ของคุณ ตัวอย่างเช่น set JAVA_HOME=<JDK_PATH>
rake
และ bundler
โดยใช้ gem install rake
และ gem install bundler
ตามลำดับหากคุณต้องการใช้ rvm (ตัวจัดการเวอร์ชัน ruby) เพื่อจัดการเวอร์ชัน Ruby บนเครื่องของคุณ ให้ทำตามคำแนะนำเหล่านี้ ในโฟลเดอร์ Logstash:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
ก่อนที่คุณจะดำเนินการต่อ โปรดตรวจสอบเวอร์ชัน Ruby ของคุณโดย:
$ ruby -v
เวอร์ชันที่พิมพ์ควรเหมือนกับในไฟล์ . .ruby-version
โปรเจ็กต์ Logstash มีซอร์สโค้ดสำหรับ Logstash ทั้งหมด รวมถึงฟีเจอร์และฟังก์ชัน X-Pack ที่ได้รับอนุญาตของ Elastic-Licensed หากต้องการเรียกใช้ Logstash จากแหล่งที่มาโดยใช้เฉพาะรหัสลิขสิทธิ์ OSS ให้ส่งออกตัวแปรสภาพแวดล้อม OSS
ด้วยค่า true
:
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
(แนะนำ) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
ในการตรวจสอบสภาพแวดล้อมของคุณ ให้รันสิ่งต่อไปนี้เพื่อเริ่ม Logstash และส่งเหตุการณ์แรกของคุณ:
bin/logstash -e ' input { stdin { } } output { stdout {} } '
สิ่งนี้ควรเริ่ม Logstash ด้วยอินพุต stdin ที่รอให้คุณเข้าสู่กิจกรรม
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
ขั้นสูง: Drip Launcher
Drip เป็นเครื่องมือที่ช่วยแก้ปัญหาการเริ่มต้น JVM ที่ช้าในขณะที่พัฒนา Logstash The drip script is intended to be a drop-in replacement for the java command. เราขอแนะนำให้ใช้หยดในระหว่างการพัฒนา โดยเฉพาะอย่างยิ่งสำหรับการทดสอบการทำงาน การใช้คำสั่งหยด การเรียกใช้คำสั่งครั้งแรกจะไม่เร็วขึ้น แต่คำสั่งต่อมาจะรวดเร็ว
หากต้องการบอก logstash ให้ใช้ drop ให้ตั้งค่าตัวแปรสภาพแวดล้อม JAVACMD=`which drip`
`
ตัวอย่าง (แต่ดูส่วน การทดสอบ ด้านล่างก่อนที่จะรัน rspec เป็นครั้งแรก):
JAVACMD=`which drip` bin/rspec
คำเตือน
Drip ไม่ทำงานกับ STDIN คุณไม่สามารถใช้หยดเพื่อเรียกใช้การกำหนดค่าซึ่งใช้ปลั๊กอิน stdin
หากต้องการสร้างการอ้างอิง Logstash (เนื้อหาโอเพ่นซอร์สเท่านั้น) บนเครื่องของคุณ ให้โคลน repos ต่อไปนี้:
logstash - มีเอกสารหลักเกี่ยวกับคุณสมบัติหลัก
logstash-docs - มีเอกสารปลั๊กอินที่สร้างขึ้น
docs - มีไฟล์ doc build
ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบสาขาเดียวกันใน logstash
และ logstash-docs
ตรวจสอบ master
ใน repo docs
เรียกใช้สคริปต์การสร้างเอกสารจากภายในที่เก็บ docs
ตัวอย่างเช่น:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
การทดสอบหน่วยส่วนใหญ่ใน Logstash เขียนโดยใช้ rspec สำหรับชิ้นส่วน Ruby For the Java parts, we use junit. สำหรับการทดสอบ คุณสามารถใช้งาน rake
ทดสอบ และคำสั่ง bin/rspec
ได้ โปรดดูคำแนะนำด้านล่าง:
1- ในการรันการทดสอบหลักคุณสามารถใช้งาน Gradle:
./gradlew test
หรือใช้เครื่องมือ rspec
เพื่อรันการทดสอบทั้งหมดหรือรันการทดสอบเฉพาะ:
bin/rspec
bin/rspec spec/foo/bar_spec.rb
โปรดทราบว่าก่อนรันคำสั่ง rspec
เป็นครั้งแรก คุณต้องตั้งค่าการขึ้นต่อกันของการทดสอบ RSpec โดยการรัน:
./gradlew bootstrap
2- หากต้องการรันชุดย่อยของการทดสอบที่ครอบคลุมโค้ดเบส Java ให้รันเท่านั้น:
./gradlew javaTests
3- หากต้องการดำเนินการชุดทดสอบที่สมบูรณ์ รวมถึงการทดสอบการรวม ให้ดำเนินการ:
./gradlew check
4- ในการดำเนินการทดสอบ Ruby ครั้งเดียว:
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- หากต้องการดำเนินการข้อมูลจำเพาะเดี่ยวสำหรับการทดสอบการรวม ให้รัน:
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
บางครั้งคุณอาจพบว่าการเปลี่ยนแปลงโค้ด Logstash ทำให้การทดสอบหยุดทำงาน สิ่งเหล่านี้อาจแก้ไขได้ยาก
หากคุณตั้งค่า LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
คุณสามารถเชื่อมต่อกับ Logstash ที่กำลังทำงานอยู่ด้วยดีบักเกอร์ IDEs ของคุณ ซึ่งอาจเป็นวิธีที่ดีในการค้นหาปัญหา
หากต้องการรันการทดสอบปลั๊กอินที่ติดตั้งอยู่ทั้งหมด:
rake test:plugins
คุณสามารถติดตั้งชุดปลั๊กอินเริ่มต้นที่รวมอยู่ในแพ็คเกจ logstash ได้:
rake test:install-default
โปรดทราบว่าหากมีการติดตั้งปลั๊กอินโดยใช้ตัวจัดการปลั๊กอิน bin/logstash-plugin install ...
อย่าลืมติดตั้งการพึ่งพาการพัฒนาปลั๊กอินด้วยโดยใช้คำสั่งต่อไปนี้หลังจากการติดตั้งปลั๊กอิน:
bin/logstash-plugin install --development
อาร์ติแฟกต์ที่สร้างขึ้นจะถูกวางไว้ในไดเร็กทอรี LS_HOME/build
และจะสร้างไดเร็กทอรีหากยังไม่มีอยู่
คุณสามารถสร้างแพ็คเกจสแนปช็อต Logstash เป็นไฟล์ tarball หรือ zip ได้
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
สิ่งประดิษฐ์เฉพาะ OSS เท่านั้นที่สามารถสร้างได้ด้วยงานไล่ระดับของตัวเองในทำนองเดียวกัน:
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
คุณยังสามารถสร้าง .rpm และ .deb ได้ แต่จำเป็นต้องใช้เครื่องมือ fpm
rake artifact:rpm
rake artifact:deb
และ:
rake artifact:rpm_oss
rake artifact:deb_oss
หากคุณต้องการให้บิลด์ใช้ JRuby แบบกำหนดเอง คุณสามารถทำได้โดยการตั้งค่าพาธไปยังรูทต้นทางของการแจกแจง JRuby แบบกำหนดเองผ่านคุณสมบัติ custom.jruby.path
Gradle
เช่น
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
เรายินดีรับการสนับสนุนทั้งหมด: แนวคิด โปรแกรมแก้ไข เอกสาร รายงานข้อผิดพลาด ข้อร้องเรียน และแม้แต่สิ่งที่คุณวาดลงบนผ้าเช็ดปาก
การเขียนโปรแกรมไม่ใช่ทักษะที่จำเป็น สิ่งที่คุณเคยเห็นเกี่ยวกับโอเพ่นซอร์สและผู้ดูแลหรือสมาชิกชุมชนที่พูดว่า "ส่งแพตช์หรือตาย" คุณจะไม่เห็นสิ่งนั้นที่นี่
สิ่งสำคัญคือคุณสามารถมีส่วนร่วมได้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการบริจาค โปรดดูไฟล์การมีส่วนร่วม
gradle
คุณสามารถใช้ bundle
:ติดตั้งการพึ่งพาการพัฒนา
bundle config set --local path vendor/bundle bundle install
บูตสภาพแวดล้อม:
rake bootstrap
จากนั้นคุณสามารถใช้ bin/logstash
เพื่อเริ่ม Logstash ได้ แต่ไม่ได้ติดตั้งปลั๊กอินไว้ หากต้องการติดตั้งปลั๊กอินเริ่มต้น คุณสามารถเรียกใช้:
rake plugin:install-default
การดำเนินการนี้จะติดตั้งปลั๊กอินเริ่มต้นมากกว่า 80 รายการ ซึ่งทำให้ Logstash พร้อมที่จะเชื่อมต่อกับแหล่งข้อมูลหลายแห่ง ทำการแปลง และส่งผลลัพธ์ไปยัง Elasticsearch และปลายทางอื่นๆ