Logstash - คู่มือฉบับย่อ

Logstash เป็นเครื่องมือตามรูปแบบตัวกรอง / ไปป์สำหรับรวบรวมประมวลผลและสร้างบันทึกหรือเหตุการณ์ ช่วยในการรวมศูนย์และทำการวิเคราะห์บันทึกและเหตุการณ์แบบเรียลไทม์จากแหล่งต่างๆ

Logstash เขียนด้วยภาษาโปรแกรม JRuby ที่ทำงานบน JVM ดังนั้นคุณจึงสามารถเรียกใช้ Logstash บนแพลตฟอร์มต่างๆได้ รวบรวมข้อมูลประเภทต่างๆเช่นบันทึกแพ็กเก็ตเหตุการณ์ธุรกรรมข้อมูลเวลาประทับ ฯลฯ จากแหล่งที่มาเกือบทุกประเภท แหล่งข้อมูลอาจเป็นข้อมูลโซเชียลอีคอมเมิร์ซบทความข่าว CRM ข้อมูลเกมเทรนด์เว็บข้อมูลทางการเงินอินเทอร์เน็ตของสิ่งต่างๆอุปกรณ์มือถือ ฯลฯ

คุณสมบัติทั่วไปของ Logstash

คุณสมบัติทั่วไปของ Logstash มีดังต่อไปนี้ -

  • Logstash สามารถรวบรวมข้อมูลจากแหล่งต่างๆและส่งไปยังปลายทางหลายแห่ง

  • Logstash สามารถจัดการข้อมูลบันทึกทุกประเภทเช่น Apache Logs, Windows Event Logs, Data over Network Protocols, Data from Standard Input และอื่น ๆ อีกมากมาย

  • Logstash ยังสามารถจัดการคำขอ http และข้อมูลการตอบกลับ

  • Logstash มีตัวกรองที่หลากหลายซึ่งช่วยให้ผู้ใช้สามารถค้นหาความหมายของข้อมูลได้มากขึ้นโดยการแยกวิเคราะห์และแปลงข้อมูล

  • Logstash ยังสามารถใช้สำหรับจัดการข้อมูลเซ็นเซอร์ในอินเทอร์เน็ตของสิ่งต่างๆ

  • Logstash เป็นโอเพ่นซอร์สและพร้อมใช้งานภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0

แนวคิดหลัก Logstash

แนวคิดหลักของ Logstash มีดังนี้ -

วัตถุเหตุการณ์

เป็นวัตถุหลักใน Logstash ซึ่งห่อหุ้มการไหลของข้อมูลในไปป์ไลน์ Logstash Logstash ใช้อ็อบเจ็กต์นี้เพื่อเก็บข้อมูลอินพุตและเพิ่มฟิลด์พิเศษที่สร้างขึ้นระหว่างขั้นตอนการกรอง

Logstash เสนอ Event API ให้กับนักพัฒนาเพื่อจัดการกับเหตุการณ์ ในบทช่วยสอนนี้เหตุการณ์นี้ถูกอ้างถึงด้วยชื่อต่างๆเช่น Logging Data Event, Log Event, Log Data, Input Log Data, Output Log Data เป็นต้น

ท่อ

ประกอบด้วยขั้นตอนการไหลของข้อมูลใน Logstash จากอินพุตไปยังเอาต์พุต ข้อมูลอินพุตถูกป้อนลงในไปป์ไลน์และถูกประมวลผลในรูปแบบของเหตุการณ์ จากนั้นส่งไปยังปลายทางเอาต์พุตในรูปแบบที่ต้องการของผู้ใช้หรือระบบปลายทาง

อินพุต

นี่เป็นขั้นตอนแรกในไปป์ไลน์ Logstash ซึ่งใช้เพื่อรับข้อมูลใน Logstash สำหรับการประมวลผลต่อไป Logstash เสนอปลั๊กอินต่างๆเพื่อรับข้อมูลจากแพลตฟอร์มต่างๆ ปลั๊กอินที่ใช้บ่อยที่สุด ได้แก่ File, Syslog, Redis และ Beats

กรอง

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

Logstash นำเสนอปลั๊กอินต่างๆเพื่อช่วยนักพัฒนาในการแยกวิเคราะห์และเปลี่ยนเหตุการณ์ให้เป็นโครงสร้างที่ต้องการ ปลั๊กอินตัวกรองที่ใช้บ่อยที่สุด ได้แก่ - Grok, Mutate, Drop, Clone และ Geoip

เอาต์พุต

นี่คือขั้นตอนสุดท้ายในไปป์ไลน์ Logstash ซึ่งสามารถจัดรูปแบบเหตุการณ์เอาต์พุตลงในโครงสร้างที่ระบบปลายทางต้องการ สุดท้ายจะส่งเหตุการณ์ผลลัพธ์หลังจากการประมวลผลเสร็จสมบูรณ์ไปยังปลายทางโดยใช้ปลั๊กอิน ปลั๊กอินที่ใช้บ่อยที่สุด ได้แก่ - Elasticsearch, File, Graphite, Statsd และอื่น ๆ

ข้อดีของ Logstash

ประเด็นต่อไปนี้อธิบายข้อดีต่างๆของ Logstash

  • Logstash นำเสนอลำดับรูปแบบ regex เพื่อระบุและแยกวิเคราะห์ฟิลด์ต่างๆในเหตุการณ์อินพุตใด ๆ

  • Logstash รองรับเว็บเซิร์ฟเวอร์และแหล่งข้อมูลที่หลากหลายสำหรับการแยกข้อมูลการบันทึก

  • Logstash มีปลั๊กอินหลายตัวเพื่อแยกวิเคราะห์และแปลงข้อมูลการบันทึกเป็นรูปแบบที่ผู้ใช้ต้องการ

  • Logstash ถูกรวมไว้ที่ส่วนกลางซึ่งทำให้ง่ายต่อการประมวลผลและรวบรวมข้อมูลจากเซิร์ฟเวอร์ต่างๆ

  • Logstash สนับสนุนฐานข้อมูลโปรโตคอลเครือข่ายและบริการอื่น ๆ เป็นแหล่งปลายทางสำหรับเหตุการณ์การบันทึก

  • Logstash ใช้โปรโตคอล HTTP ซึ่งช่วยให้ผู้ใช้สามารถอัปเกรดเวอร์ชัน Elasticsearch ได้โดยไม่ต้องอัปเกรด Logstash ในขั้นตอนการล็อก

ข้อเสีย Logstash

ประเด็นต่อไปนี้จะอธิบายถึงข้อเสียต่างๆของ Logstash

  • Logstash ใช้ http ซึ่งส่งผลเสียต่อการประมวลผลข้อมูลการบันทึก

  • การทำงานกับ Logstash ในบางครั้งอาจมีความซับซ้อนเล็กน้อยเนื่องจากจำเป็นต้องมีความเข้าใจและวิเคราะห์ข้อมูลการบันทึกข้อมูลเข้าที่ดี

  • ปลั๊กอินตัวกรองไม่ใช่แบบทั่วไปดังนั้นผู้ใช้อาจต้องหาลำดับรูปแบบที่ถูกต้องเพื่อหลีกเลี่ยงข้อผิดพลาดในการแยกวิเคราะห์

ในบทถัดไปเราจะเข้าใจว่า ELK Stack คืออะไรและช่วย Logstash ได้อย่างไร

ELK ย่อมาจาก Elasticsearch, Logstash, และ Kibana. ใน ELK stack Logstash จะแยกข้อมูลการบันทึกหรือเหตุการณ์อื่น ๆ จากแหล่งอินพุตอื่น มันประมวลผลเหตุการณ์และเก็บไว้ใน Elasticsearch ในภายหลัง Kibana เป็นเว็บอินเตอร์เฟสที่เข้าถึงแบบฟอร์มข้อมูลการบันทึก Elasticsearch และแสดงภาพ

Logstash และ Elasticsearch

Logstash จัดเตรียมปลั๊กอิน Elasticsearch อินพุตและเอาต์พุตเพื่ออ่านและเขียนบันทึกเหตุการณ์ไปยัง Elasticsearch Elasticsearch เป็นปลายทางเอาต์พุตยังแนะนำโดย บริษัท Elasticsearch เนื่องจากเข้ากันได้กับ Kibana Logstash ส่งข้อมูลไปยัง Elasticsearch ผ่านโปรโตคอล http

Elasticsearch มีสิ่งอำนวยความสะดวกในการอัปโหลดจำนวนมากซึ่งช่วยในการอัปโหลดข้อมูลจากแหล่งต่างๆหรืออินสแตนซ์ Logstash ไปยังเครื่องมือ Elasticsearch แบบรวมศูนย์ ELK มีข้อดีดังต่อไปนี้เหนือโซลูชัน DevOps อื่น ๆ -

  • ELK stack นั้นง่ายต่อการจัดการและสามารถปรับขนาดเพื่อจัดการกับเหตุการณ์ได้

  • สถาปัตยกรรม ELK stack มีความยืดหยุ่นสูงและให้การทำงานร่วมกับ Hadoop Hadoop ส่วนใหญ่ใช้เพื่อวัตถุประสงค์ในการเก็บถาวร Logstash สามารถเชื่อมต่อโดยตรงกับ Hadoop โดยใช้ flume และ Elasticsearch จัดเตรียมตัวเชื่อมต่อที่ชื่อes-hadoop เพื่อเชื่อมต่อกับ Hadoop

  • ต้นทุนรวมในการเป็นเจ้าของ ELK น้อยกว่าทางเลือกอื่นมาก

Logstash และ Kibana

Kibana ไม่ได้โต้ตอบกับ Logstash โดยตรง แต่ผ่านแหล่งข้อมูลซึ่งก็คือ Elasticsearch ใน ELK stack Logstash รวบรวมข้อมูลจากทุกแหล่งและ Elasticsearch จะวิเคราะห์ด้วยความเร็วที่รวดเร็วมากจากนั้น Kibana จะให้ข้อมูลเชิงลึกที่นำไปใช้ได้จริงเกี่ยวกับข้อมูลนั้น

Kibana เป็นเครื่องมือสร้างภาพบนเว็บซึ่งช่วยให้นักพัฒนาและคนอื่น ๆ สามารถวิเคราะห์รูปแบบต่างๆของเหตุการณ์จำนวนมากที่ Logstash รวบรวมไว้ในเครื่องมือ Elasticsearch การแสดงภาพนี้ช่วยให้คาดการณ์หรือดูการเปลี่ยนแปลงแนวโน้มของข้อผิดพลาดหรือเหตุการณ์สำคัญอื่น ๆ ของแหล่งข้อมูลเข้าได้ง่าย

ในการติดตั้ง Logstash บนระบบเราควรทำตามขั้นตอนด้านล่าง -

Step 1- ตรวจสอบเวอร์ชันของ Java ของคุณที่ติดตั้งในคอมพิวเตอร์ของคุณ ควรเป็น Java 8 เนื่องจากไม่สามารถใช้งานร่วมกับ Java 9 ได้คุณสามารถตรวจสอบได้โดย -

ในระบบปฏิบัติการ Windows (OS) (โดยใช้พรอมต์คำสั่ง) -

> java -version

ใน UNIX OS (โดยใช้ Terminal) -

$ echo $JAVA_HOME

Step 2 - ดาวน์โหลด Logstash จาก -

https://www.elastic.co/downloads/logstash.

  • สำหรับ Windows OS ให้ดาวน์โหลดไฟล์ ZIP

  • สำหรับ UNIX OS ให้ดาวน์โหลดไฟล์ TAR

  • สำหรับ Debian OS ให้ดาวน์โหลดไฟล์ DEB

  • สำหรับ Red Hat และ Linux อื่น ๆ ให้ดาวน์โหลดไฟล์ RPN

  • ยูทิลิตี้ APT และ Yum ยังสามารถใช้เพื่อติดตั้ง Logstash ในลีนุกซ์หลายรุ่น

Step 3- ขั้นตอนการติดตั้ง Logstash นั้นง่ายมาก มาดูกันว่าคุณสามารถติดตั้ง Logstash บนแพลตฟอร์มต่างๆได้อย่างไร

Note - อย่าใส่ช่องว่างหรือโคลอนในโฟลเดอร์การติดตั้ง

  • Windows OS - คลายซิปแพ็คเกจ zip และติดตั้ง Logstash

  • UNIX OS - แตกไฟล์ tar ในตำแหน่งใดก็ได้และติดตั้ง Logstash

$tar –xvf logstash-5.0.2.tar.gz

Using APT utility for Linux OS −

  • ดาวน์โหลดและติดตั้งคีย์การลงนามสาธารณะ -
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  • บันทึกนิยามที่เก็บ -
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo
   tee -a /etc/apt/sources.list.d/elastic-5.x.list
  • เรียกใช้การอัปเดต -
$ sudo apt-get update
  • ตอนนี้คุณสามารถติดตั้งโดยใช้คำสั่งต่อไปนี้ -
$ sudo apt-get install logstash

Using YUM utility for Debian Linux OS -

  • ดาวน์โหลดและติดตั้งคีย์การลงนามสาธารณะ -
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  • เพิ่มข้อความต่อไปนี้ในไฟล์ด้วยคำต่อท้าย. repo ในไดเร็กทอรี o“ /etc/yum.repos.d/” ของคุณ ตัวอย่างเช่น,logstash.repo

[logstash-5.x]
name = Elastic repository for 5.x packages
baseurl = https://artifacts.elastic.co/packages/5.x/yum
gpgcheck = 1
gpgkey = https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled = 1
autorefresh = 1
type = rpm-md
  • ตอนนี้คุณสามารถติดตั้ง Logstash โดยใช้คำสั่งต่อไปนี้ -
$ sudo yum install logstash

Step 4- ไปที่โฮมไดเร็กทอรี Logstash ภายในโฟลเดอร์ bin เรียกใช้ไฟล์elasticsearch.batไฟล์ในกรณีของ windows หรือคุณสามารถทำได้โดยใช้พรอมต์คำสั่งและผ่านเทอร์มินัล ใน UNIX ให้เรียกใช้ไฟล์ Logstash

เราจำเป็นต้องระบุแหล่งอินพุตแหล่งเอาต์พุตและตัวกรองเสริม สำหรับการตรวจสอบการติดตั้งคุณสามารถรันด้วยการกำหนดค่าพื้นฐานโดยใช้อินพุตสตรีมมาตรฐาน (stdin) เป็นแหล่งอินพุตและสตรีมเอาต์พุตมาตรฐาน (stdout) เป็นแหล่งเอาต์พุต คุณสามารถระบุการกำหนดค่าในบรรทัดคำสั่งได้โดยใช้–e ตัวเลือก

In Windows −

> cd logstash-5.0.1/bin
> Logstash -e 'input { stdin { } } output { stdout {} }'

In Linux −

$ cd logstash-5.0.1/bin
$ ./logstash -e 'input { stdin { } } output { stdout {} }'

Note- ในกรณีของ windows คุณอาจได้รับข้อผิดพลาดที่ระบุว่าไม่ได้ตั้งค่า JAVA_HOME สำหรับสิ่งนี้โปรดตั้งค่าในตัวแปรสภาพแวดล้อมเป็น“ C: \ Program Files \ Java \ jre1.8.0_111” หรือตำแหน่งที่คุณติดตั้ง java

Step 5 - พอร์ตเริ่มต้นสำหรับเว็บอินเตอร์เฟส Logstash คือ 9600 ถึง 9700 ถูกกำหนดไว้ในไฟล์ logstash-5.0.1\config\logstash.yml เป็น http.port และจะรับพอร์ตแรกที่มีในช่วงที่กำหนด

เราสามารถตรวจสอบว่าเซิร์ฟเวอร์ Logstash ทำงานหรือไม่โดยการเรียกดู http://localhost:9600หรือหากพอร์ตแตกต่างจากนั้นโปรดตรวจสอบพรอมต์คำสั่งหรือเทอร์มินัล เราจะเห็นพอร์ตที่กำหนดเป็น“ จุดสิ้นสุด Logstash API สำเร็จแล้ว {: พอร์ต⇒ 9600} มันจะส่งคืนออบเจ็กต์ JSON ซึ่งมีข้อมูลเกี่ยวกับ Logstash ที่ติดตั้งด้วยวิธีต่อไปนี้ -

{
   "host":"manu-PC", 
   "version":"5.0.1",
   "http_address":"127.0.0.1:9600",
   "build_date":"2016-11-11T22:28:04+00:00",
   "build_sha":"2d8d6263dd09417793f2a0c6d5ee702063b5fada",
   "build_snapshot":false
}

ในบทนี้เราจะพูดถึงสถาปัตยกรรมภายในและส่วนประกอบต่างๆของ Logstash

สถาปัตยกรรมบริการ Logstash

Logstash ประมวลผลบันทึกจากเซิร์ฟเวอร์และแหล่งข้อมูลที่แตกต่างกันและทำหน้าที่เป็นผู้จัดส่ง ผู้ขนส่งจะใช้ในการรวบรวมบันทึกและสิ่งเหล่านี้จะถูกติดตั้งในแหล่งอินพุตทุกแห่ง โบรกเกอร์เช่นRedis, Kafka หรือ RabbitMQ เป็นบัฟเฟอร์ในการเก็บข้อมูลสำหรับตัวทำดัชนีอาจมีมากกว่าหนึ่งโบรกเกอร์ที่ล้มเหลวในอินสแตนซ์

ดัชนีเช่น Luceneใช้เพื่อจัดทำดัชนีบันทึกเพื่อประสิทธิภาพการค้นหาที่ดีขึ้นจากนั้นเอาต์พุตจะถูกเก็บไว้ใน Elasticsearch หรือปลายทางเอาต์พุตอื่น ๆ ข้อมูลในหน่วยเก็บข้อมูลเอาต์พุตมีให้สำหรับ Kibana และซอฟต์แวร์การแสดงภาพอื่น ๆ

สถาปัตยกรรมภายใน Logstash

ไปป์ไลน์ Logstash ประกอบด้วยสามองค์ประกอบ Input, Filters และ Output. ส่วนอินพุตมีหน้าที่ระบุและเข้าถึงแหล่งข้อมูลอินพุตเช่นโฟลเดอร์บันทึกของไฟล์Apache Tomcat Server.

ตัวอย่างการอธิบาย Logstash Pipeline

ไฟล์คอนฟิกูเรชัน Logstash มีรายละเอียดเกี่ยวกับส่วนประกอบสามอย่างของ Logstash ในกรณีนี้เรากำลังสร้างชื่อไฟล์ที่เรียกว่าLogstash.conf.

การกำหนดค่าต่อไปนี้จะรวบรวมข้อมูลจากบันทึกการป้อนข้อมูล“ inlog.log” และเขียนลงในบันทึกการส่งออก“ outlog.log” โดยไม่มีตัวกรองใด ๆ

Logstash.conf

ไฟล์กำหนดค่า Logstash เพียงคัดลอกข้อมูลจากไฟล์ inlog.log ไฟล์โดยใช้ปลั๊กอินอินพุตและล้างข้อมูลบันทึกไปที่ outlog.log ไฟล์โดยใช้ปลั๊กอินเอาต์พุต

input {
   file {
      path => "C:/tpwork/logstash/bin/log/inlog.log"
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/outlog.log"
   }
}

เรียกใช้ Logstash

Logstash ใช้ –f ตัวเลือกเพื่อระบุไฟล์กำหนดค่า

C:\logstash\bin> logstash –f logstash.conf

inlog.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

Hello tutorialspoint.com

outlog.log

เอาต์พุต Logstash มีข้อมูลอินพุตในฟิลด์ข้อความ Logstash ยังเพิ่มฟิลด์อื่น ๆ ให้กับเอาต์พุตเช่น Timestamp, Path of the Input Source, Version, Host และ Tags

{
   "path":"C:/tpwork/logstash/bin/log/inlog1.log",
   "@timestamp":"2016-12-13T02:28:38.763Z",
   "@version":"1", "host":"Dell-PC",
   "message":" Hello tutorialspoint.com", "tags":[]
}

ดังที่คุณสามารถทำได้ผลลัพธ์ของ Logstash มีมากกว่าข้อมูลที่ให้มาผ่านบันทึกการป้อนข้อมูล เอาต์พุตประกอบด้วย Source Path, Timestamp, Version, Hostname และ Tag ซึ่งใช้เพื่อแสดงข้อความพิเศษเช่นข้อผิดพลาด

เราสามารถใช้ตัวกรองเพื่อประมวลผลข้อมูลและทำให้เป็นประโยชน์สำหรับความต้องการของเรา ในตัวอย่างถัดไปเราใช้ตัวกรองเพื่อรับข้อมูลซึ่ง จำกัด ผลลัพธ์ไว้เฉพาะข้อมูลที่มีคำกริยาเช่น GET หรือ POST ตามด้วยUnique Resource Identifier.

Logstash.conf

ในการกำหนดค่า Logstash นี้เราจะเพิ่มตัวกรองชื่อ grokเพื่อกรองข้อมูลที่ป้อนออก เหตุการณ์บันทึกการป้อนข้อมูลซึ่งตรงกับบันทึกการป้อนข้อมูลลำดับรูปแบบไปที่ปลายทางเอาต์พุตที่มีข้อผิดพลาดเท่านั้น Logstash เพิ่มแท็กชื่อ "_grokparsefailure" ในเหตุการณ์เอาต์พุตซึ่งไม่ตรงกับลำดับรูปแบบตัวกรอง grok

Logstash นำเสนอรูปแบบ regex ในตัวมากมายสำหรับการแยกวิเคราะห์บันทึกเซิร์ฟเวอร์ยอดนิยมเช่น Apache รูปแบบที่ใช้ในที่นี้คาดว่าจะเป็นคำกริยาเช่น get, post ฯลฯ ตามด้วยตัวระบุทรัพยากรที่เหมือนกัน

input {
   file {
      path => "C:/tpwork/logstash/bin/log/inlog2.log"
   }
}
filter {
   grok {
      match => {"message" => "%{WORD:verb} %{URIPATHPARAM:uri}"}
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/outlog2.log"
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

C:\logstash\bin> logstash –f  Logstash.conf

inlog2.log

ไฟล์อินพุตของเรามีสองเหตุการณ์ที่คั่นด้วยตัวคั่นเริ่มต้นนั่นคือตัวคั่นบรรทัดใหม่ เหตุการณ์แรกตรงกับรูปแบบที่ระบุใน GROk และเหตุการณ์ที่สองไม่ตรงกัน

GET /tutorialspoint/Logstash
Input 1234

outlog2.log

เราจะเห็นว่าเหตุการณ์ผลลัพธ์ที่สองมีแท็ก "_grokparsefailure" เนื่องจากไม่ตรงกับรูปแบบตัวกรอง grok ผู้ใช้ยังสามารถลบเหตุการณ์ที่ไม่ตรงกันเหล่านี้ออกได้โดยใช้ไฟล์‘if’ เงื่อนไขในปลั๊กอินเอาต์พุต

{
   "path":"C:/tpwork/logstash/bin/log/inlog2.log",
   "@timestamp":"2016-12-13T02:47:10.352Z","@version":"1","host":"Dell-PC","verb":"GET",
   "message":"GET /tutorialspoint/logstash", "uri":"/tutorialspoint/logstash", "tags":[]
}
{
   "path":"C:/tpwork/logstash/bin/log/inlog2.log",
   "@timestamp":"2016-12-13T02:48:12.418Z", "@version":"1", "host":"Dell-PC",
   "message":"t 1234\r", "tags":["_grokparsefailure"]
}

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

ส่วนใหญ่จะส่งเอาต์พุตไปยัง Elasticsearch เพื่อจัดเก็บ Logstash รับอินพุตจากแหล่งต่อไปนี้ -

  • STDIN
  • Syslog
  • Files
  • TCP/UDP
  • Microsoft windows Eventlogs
  • Websocket
  • Zeromq
  • ส่วนขยายที่กำหนดเอง

การรวบรวมบันทึกโดยใช้เซิร์ฟเวอร์ Apache Tomcat 7

ในตัวอย่างนี้เรากำลังรวบรวมบันทึกของ Apache Tomcat 7 Server ที่ติดตั้งใน windows โดยใช้ปลั๊กอินป้อนไฟล์และส่งไปยังบันทึกอื่น

logstash.conf

ที่นี่ Logstash ได้รับการกำหนดค่าให้เข้าถึงบันทึกการเข้าถึงของ Apache Tomcat 7 ที่ติดตั้งในเครื่อง รูปแบบ regex ใช้ในการตั้งค่าพา ธ ของปลั๊กอินไฟล์เพื่อรับข้อมูลจากล็อกไฟล์ ซึ่งมีคำว่า "access" อยู่ในชื่อและเพิ่มประเภท apache ซึ่งช่วยในการแยกแยะเหตุการณ์ apache จากเหตุการณ์อื่น ๆ ในต้นทางปลายทางแบบรวมศูนย์ ในที่สุดเหตุการณ์ผลลัพธ์จะแสดงใน output.log

input {
   file {
      path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
      type => "apache"
   }
} 
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

C:\logstash\bin> logstash –f  Logstash.conf

บันทึก Apache Tomcat

เข้าถึงเซิร์ฟเวอร์ Apache Tomcat และเว็บแอป (http://localhost:8080) เพื่อสร้างบันทึก ข้อมูลที่อัพเดตในบันทึกจะถูกอ่านโดย Logstash แบบเรียลไทม์และเก็บไว้ใน output.log ตามที่ระบุในไฟล์คอนฟิกูเรชัน

Apache Tomcat สร้างไฟล์บันทึกการเข้าถึงใหม่ตามวันที่และบันทึกเหตุการณ์การเข้าถึงที่นั่น ในกรณีของเรามันคือ localhost_access_log.2016-12-24.txt ในไฟล์logs ไดเรกทอรีของ Apache Tomcat

0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
0:0:0:0:0:0:0:1 - munish [
   25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399

output.log

คุณสามารถดูได้ในเหตุการณ์เอาต์พุตมีการเพิ่มฟิลด์ประเภทและเหตุการณ์จะปรากฏในฟิลด์ข้อความ

{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt",
   "@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
   HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
   manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
   HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
   introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
}

การรวบรวมบันทึกโดยใช้ปลั๊กอิน STDIN

ในส่วนนี้เราจะพูดถึงอีกตัวอย่างหนึ่งของการรวบรวมบันทึกโดยใช้ไฟล์ STDIN Plugin.

logstash.conf

เป็นตัวอย่างที่ง่ายมากโดยที่ Logstash กำลังอ่านเหตุการณ์ที่ผู้ใช้ป้อนในอินพุตมาตรฐาน ในกรณีของเราคือพร้อมต์คำสั่งซึ่งเก็บเหตุการณ์ไว้ในไฟล์ output.log

input {
   stdin{}
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

C:\logstash\bin> logstash –f  Logstash.conf

เขียนข้อความต่อไปนี้ในพรอมต์คำสั่ง -

ผู้ใช้ป้อนสองบรรทัดต่อไปนี้ Logstash แยกเหตุการณ์ตามการตั้งค่าตัวคั่นและค่าเริ่มต้นคือ '\ n' ผู้ใช้สามารถเปลี่ยนแปลงได้โดยการเปลี่ยนค่าของตัวคั่นในปลั๊กอินไฟล์

Tutorialspoint.com welcomes you
Simply easy learning

output.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกผลลัพธ์

{
   "@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
   "message":"tutrialspoint.com welcomes you\r","tags":[]
}
{
   "@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
   "message":"simply easy learning\r","tags":[]
}

Logstash รองรับบันทึกจำนวนมากจากแหล่งต่างๆ กำลังทำงานร่วมกับแหล่งข้อมูลที่มีชื่อเสียงตามที่อธิบายไว้ด้านล่าง

รวบรวมบันทึกจากเมตริก

เหตุการณ์ของระบบและกิจกรรมเวลาอื่น ๆ จะถูกบันทึกไว้ในเมตริก Logstash สามารถเข้าถึงบันทึกจากเมตริกของระบบและประมวลผลโดยใช้ตัวกรอง ซึ่งจะช่วยให้ผู้ใช้เห็นฟีดสดของเหตุการณ์ในลักษณะที่กำหนดเอง เมตริกจะถูกล้างตามflush_interval settingของตัวกรองเมตริกและโดยค่าเริ่มต้น ตั้งค่าเป็น 5 วินาที

เรากำลังติดตามเมตริกการทดสอบที่สร้างโดย Logstash โดยการรวบรวมและวิเคราะห์เหตุการณ์ที่ทำงานผ่าน Logstash และแสดงฟีดสดบนพรอมต์คำสั่ง

logstash.conf

การกำหนดค่านี้มีปลั๊กอินตัวสร้างซึ่ง Logstash นำเสนอสำหรับเมตริกการทดสอบและตั้งค่าประเภทเป็น "สร้าง" สำหรับการแยกวิเคราะห์ ในขั้นตอนการกรองเรากำลังประมวลผลเฉพาะบรรทัดที่มีประเภทที่สร้างขึ้นโดยใช้คำสั่ง 'if' จากนั้นปลั๊กอินเมตริกจะนับฟิลด์ที่ระบุในการตั้งค่ามิเตอร์ ปลั๊กอินเมตริกจะล้างจำนวนหลังจากทุกๆ 5 วินาทีที่ระบุในไฟล์flush_interval.

สุดท้ายส่งออกเหตุการณ์ตัวกรองไปยังเอาต์พุตมาตรฐานเช่นพรอมต์คำสั่งโดยใช้ codec pluginสำหรับการจัดรูปแบบ ปลั๊กอิน Codec ใช้ค่า [ events ] [ rate_1m ] เพื่อส่งออกเหตุการณ์ต่อวินาทีในหน้าต่างเลื่อน 1 นาที

input {
   generator {
     	type => "generated"
   }
}
filter {
   if [type] == "generated" {
      metrics {
         meter => "events"
         add_tag => "metric"
      }
   }
}
output {
   # only emit events with the 'metric' tag
   if "metric" in [tags] {
      stdout {
         codec => line { format => "rate: %{[events][rate_1m]}"
      }
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>logsaths –f logstash.conf

stdout (พร้อมรับคำสั่ง)

rate: 1308.4
rate: 1308.4
rate: 1368.654529135342
rate: 1416.4796003951449
rate: 1464.974293984808
rate: 1523.3119444107458
rate: 1564.1602979542715
rate: 1610.6496496890895
rate: 1645.2184750334154
rate: 1688.7768007612485
rate: 1714.652283095914
rate: 1752.5150680019278
rate: 1785.9432934744932
rate: 1806.912181962126
rate: 1836.0070454626025
rate: 1849.5669494173826
rate: 1871.3814756851832
rate: 1883.3443123790712
rate: 1906.4879113216743
rate: 1925.9420717997118
rate: 1934.166137658981
rate: 1954.3176526556897
rate: 1957.0107444542625

รวบรวมบันทึกจากเว็บเซิร์ฟเวอร์

เว็บเซิร์ฟเวอร์สร้างบันทึกจำนวนมากเกี่ยวกับการเข้าถึงของผู้ใช้และข้อผิดพลาด Logstash ช่วยดึงบันทึกจากเซิร์ฟเวอร์ต่าง ๆ โดยใช้ปลั๊กอินอินพุตและเก็บไว้ในตำแหน่งที่รวมศูนย์

เรากำลังดึงข้อมูลจากไฟล์ stderr logs ของเซิร์ฟเวอร์ Apache Tomcat ในเครื่องและเก็บไว้ใน output.log

logstash.conf

ไฟล์คอนฟิกูเรชัน Logstash นี้สั่งให้ Logstash อ่านบันทึกข้อผิดพลาด apache และเพิ่มแท็กชื่อ“ apache-error” เราสามารถส่งไปยัง output.log โดยใช้ปลั๊กอินเอาต์พุตไฟล์

input {
   file {
      path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0 /logs/*stderr*"
      type => "apache-error"  
   }
} 
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>Logstash –f Logstash.conf

ตัวอย่างบันทึกการป้อนข้อมูล

นี่คือตัวอย่าง stderr logซึ่งสร้างขึ้นเมื่อเกิดเหตุการณ์เซิร์ฟเวอร์ใน Apache Tomcat

C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ logs \ tomcat7-stderr.2016-12-25.log

Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-9999"]
Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 823 ms

output.log

{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
   "@version":"1","host":"Dell-PC",
   "message":"Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start\r",
   "type":"apache-error","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
   "@version":"1","host":"Dell-PC",
   "message":"INFO: Starting ProtocolHandler [
      \"ajp-bio-8009\"]\r","type":"apache-error","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
   "@version":"1","host":"Dell-PC",
   "message":"Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start\r",
   "type":"apache-error","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z",
   "@version":"1","host":"Dell-PC",
   "message":"INFO: Server startup in 823 ms\r","type":"apache-error","tags":[]
}

รวบรวมบันทึกจากแหล่งข้อมูล

เริ่มต้นด้วยการให้เราเข้าใจวิธีกำหนดค่า MySQL สำหรับการบันทึก เพิ่มบรรทัดต่อไปนี้ในmy.ini file ของเซิร์ฟเวอร์ฐานข้อมูล MySQL ภายใต้ [mysqld]

ใน windows จะมีอยู่ในไดเร็กทอรีการติดตั้งของ MySQL ซึ่งอยู่ใน -

C:\wamp\bin\mysql\mysql5.7.11

ใน UNIX คุณสามารถค้นหาได้ใน - /etc/mysql/my.cnf

general_log_file   = "C:/wamp/logs/queries.log"
general_log = 1

logstash.conf

ในไฟล์กำหนดค่านี้ปลั๊กอินไฟล์ใช้เพื่ออ่านบันทึก MySQL และเขียนลงใน ouput.log

input {
   file {
      path => "C:/wamp/logs/queries.log"
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

queries.log

นี่คือบันทึกที่สร้างโดยแบบสอบถามที่ดำเนินการในฐานข้อมูล MySQL

2016-12-25T13:05:36.854619Z   2 Query		select * from test1_users
2016-12-25T13:05:51.822475Z    2 Query	select count(*) from users
2016-12-25T13:05:59.998942Z    2 Query         select count(*) from test1_users

output.log

{
   "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:37.905Z",
   "@version":"1","host":"Dell-PC",
   "message":"2016-12-25T13:05:36.854619Z    2 Query\tselect * from test1_users",
   "tags":[]
}
{
   "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:51.938Z",
   "@version":"1","host":"Dell-PC",
   "message":"2016-12-25T13:05:51.822475Z    2 Query\tselect count(*) from users",
   "tags":[]
}
{
   "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:06:00.950Z",
   "@version":"1","host":"Dell-PC",
   "message":"2016-12-25T13:05:59.998942Z    2 Query\tselect count(*) from test1_users",
   "tags":[]
}

Logstash รับบันทึกโดยใช้ปลั๊กอินอินพุตจากนั้นใช้ปลั๊กอินตัวกรองเพื่อแยกวิเคราะห์และแปลงข้อมูล การแยกวิเคราะห์และการแปลงบันทึกจะดำเนินการตามระบบที่มีอยู่ในปลายทางเอาต์พุต Logstash จะแยกวิเคราะห์ข้อมูลการบันทึกและส่งต่อเฉพาะฟิลด์ที่ต้องการ ต่อมาฟิลด์เหล่านี้จะถูกเปลี่ยนเป็นรูปแบบที่เข้ากันได้และเข้าใจได้ของระบบปลายทาง

วิธีแยกวิเคราะห์บันทึก

การแยกวิเคราะห์บันทึกจะดำเนินการโดยใช้ไฟล์ GROK (การแสดงความรู้แบบกราฟิก) และคุณสามารถค้นหาได้ใน Github -

https://github.com/elastic/logstash/tree/v1.4.2/patterns.

Logstash จับคู่ข้อมูลของบันทึกที่มีรูปแบบ GROK ที่ระบุหรือลำดับรูปแบบสำหรับการแยกวิเคราะห์บันทึกเช่น "% {COMBINEDAPACHELOG}" ซึ่งโดยทั่วไปจะใช้สำหรับบันทึก apache

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

ไวยากรณ์สำหรับรูปแบบ GROK คือ% {SYNTAX: SEMANTIC} ตัวกรอง Logstash GROK เขียนในรูปแบบต่อไปนี้ -

%{PATTERN:FieldName}

ในที่นี้ PATTERN แสดงถึงรูปแบบ GROK และชื่อฟิลด์คือชื่อของเขตข้อมูลซึ่งแสดงถึงข้อมูลที่แยกวิเคราะห์ในผลลัพธ์

ตัวอย่างเช่นการใช้ดีบักเกอร์ GROK ออนไลน์ https://grokdebug.herokuapp.com/

อินพุต

บรรทัดข้อผิดพลาดตัวอย่างในบันทึก -

[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
   [client 192.168.1.1:25007] JSP Notice:  Undefined index: abc in
   /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11

ลำดับรูปแบบ GROK

ลำดับรูปแบบ GROK นี้จับคู่กับเหตุการณ์บันทึกซึ่งประกอบด้วยการประทับเวลาตามด้วยระดับบันทึกรหัสกระบวนการรหัสธุรกรรมและข้อความแสดงข้อผิดพลาด

\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
   \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
   %{GREEDYDATA:errormsg}

เอาท์พุท

เอาต์พุตอยู่ในรูปแบบ JSON

{
   "day": [
      "Wed"
   ],
   "month": [
      "Dec"
   ],
   "loglevel": [
      "error"
   ],
   "pid": [
      "1234"
   ],
   "tid": [
      "3456829102"
   ],
   "clientip": [
      "192.168.1.1"
   ],
   "errormsg": [
      "JSP Notice:  Undefined index: abc in
      /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11"
   ]
}

Logstash ใช้ตัวกรองที่อยู่ตรงกลางของท่อระหว่างอินพุตและเอาต์พุต ตัวกรองของมาตรการ Logstash จัดการและสร้างเหตุการณ์เช่นApache-Access. ปลั๊กอินตัวกรองจำนวนมากที่ใช้ในการจัดการเหตุการณ์ใน Logstash นี่คือตัวอย่างของไฟล์Logstash Aggregate Filterเรากำลังกรองระยะเวลาทุกธุรกรรม SQL ในฐานข้อมูลและคำนวณเวลาทั้งหมด

การติดตั้ง Aggregate Filter Plugin

การติดตั้ง Aggregate Filter Plugin โดยใช้ยูทิลิตี้ Logstash-plugin Logstash-plugin เป็นไฟล์แบตช์สำหรับ windows inbin folder ใน Logstash

>logstash-plugin install logstash-filter-aggregate

logstash.conf

ในการกำหนดค่านี้คุณจะเห็นคำสั่ง 'if' สามคำสั่งสำหรับ Initializing, Incrementing, และ generating ระยะเวลาทั้งหมดของการทำธุรกรรมเช่น sql_duration. ปลั๊กอินการรวมใช้เพื่อเพิ่ม sql_duration ซึ่งมีอยู่ในทุกเหตุการณ์ของบันทึกการป้อนข้อมูล

input {
   file {
      path => "C:/tpwork/logstash/bin/log/input.log"
   }
} 
filter {
   grok {
      match => [
         "message", "%{LOGLEVEL:loglevel} - 
            %{NOTSPACE:taskid} - %{NOTSPACE:logger} - 
            %{WORD:label}( - %{INT:duration:int})?" 
      ]
   }
   if [logger] == "TRANSACTION_START" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] = 0"
         map_action => "create"
      }
   }
   if [logger] == "SQL" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] ||= 0 ;
            map['sql_duration'] += event.get('duration')"
      }
   }
   if [logger] == "TRANSACTION_END" {
      aggregate {
         task_id => "%{taskid}"
         code => "event.set('sql_duration', map['sql_duration'])"
         end_of_task => true
         timeout => 120
      }
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"    
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>logstash –f logstash.conf

input.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end

output.log

ตามที่ระบุในไฟล์คอนฟิกูเรชันคำสั่ง 'if' สุดท้ายที่ตัวบันทึกคือ - TRANSACTION_END ซึ่งพิมพ์เวลาในการทำธุรกรรมทั้งหมดหรือ sql_duration สิ่งนี้ถูกเน้นด้วยสีเหลืองใน output.log

{
   "path":"C:/tpwork/logstash/bin/log/input.log","@timestamp": "2016-12-22T19:04:37.214Z",
   "loglevel":"INFO","logger":"TRANSACTION_START","@version": "1","host":"wcnlab-PC",
   "message":"8566 - TRANSACTION_START - start\r","tags":[]
}
{
   "duration":320,"path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-22T19:04:38.366Z","loglevel":"INFO","logger":"SQL",
   "@version":"1","host":"wcnlab-PC","label":"transaction1",
   "message":" INFO - 48566 - SQL - transaction1 - 320\r","taskid":"48566","tags":[]
}
{
   "duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-22T19:04:38.373Z","loglevel":"INFO","logger":"SQL",
   "@version":"1","host":"wcnlab-PC","label":"transaction1",
   "message":" INFO - 48566 - SQL - transaction1 - 200\r","taskid":"48566","tags":[]
}
{
   "sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-22T19:04:38.380Z","loglevel":"INFO","logger":"TRANSACTION_END",
   "@version":"1","host":"wcnlab-PC","label":"end",
   "message":" INFO - 48566 - TRANSACTION_END - end\r","taskid":"48566","tags":[]
}

Logstash นำเสนอปลั๊กอินต่างๆเพื่อเปลี่ยนบันทึกที่แยกวิเคราะห์ ปลั๊กอินเหล่านี้สามารถAdd, Delete, และ Update ฟิลด์ในบันทึกเพื่อให้เข้าใจและสืบค้นในระบบเอาต์พุตได้ดีขึ้น

เรากำลังใช้ไฟล์ Mutate Plugin เพื่อเพิ่มชื่อผู้ใช้ในทุกบรรทัดของบันทึกการป้อนข้อมูล

ติดตั้ง Mutate Filter Plugin

ในการติดตั้งปลั๊กอินตัวกรองกลายพันธุ์ เราสามารถใช้คำสั่งต่อไปนี้

>Logstash-plugin install Logstash-filter-mutate

logstash.conf

ในไฟล์กำหนดค่านี้ Mutate Plugin จะถูกเพิ่มหลังจาก Aggregate Plugin เพื่อเพิ่มฟิลด์ใหม่

input {
   file {
      path => "C:/tpwork/logstash/bin/log/input.log"
   }
} 
filter {
   grok {
      match => [ "message", "%{LOGLEVEL:loglevel} -
         %{NOTSPACE:taskid} - %{NOTSPACE:logger} -
         %{WORD:label}( - %{INT:duration:int})?" ]
   }
   if [logger] == "TRANSACTION_START" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] = 0"
         map_action => "create"
      }
   }
   if [logger] == "SQL" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] ||= 0 ; 
            map['sql_duration'] += event.get('duration')"
      }
   }
   if [logger] == "TRANSACTION_END" {
      aggregate {
         task_id => "%{taskid}"
         code => "event.set('sql_duration', map['sql_duration'])"
         end_of_task => true
         timeout => 120
      }
   }
   mutate {
      add_field => {"user" => "tutorialspoint.com"}
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>logstash –f logstash.conf

input.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end

output.log

คุณจะเห็นว่ามีฟิลด์ใหม่ชื่อ "ผู้ใช้" ในเหตุการณ์เอาต์พุต

{
   "path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-25T19:55:37.383Z",
   "@version":"1",
   "host":"wcnlab-PC",
   "message":"NFO - 48566 - TRANSACTION_START - start\r",
   "user":"tutorialspoint.com","tags":["_grokparsefailure"]
}
{
   "duration":320,"path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-25T19:55:37.383Z","loglevel":"INFO","logger":"SQL",
   "@version":"1","host":"wcnlab-PC","label":"transaction1",
   "message":" INFO - 48566 - SQL - transaction1 - 320\r",
   "user":"tutorialspoint.com","taskid":"48566","tags":[]
}
{
   "duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-25T19:55:37.399Z","loglevel":"INFO",
   "logger":"SQL","@version":"1","host":"wcnlab-PC","label":"transaction1",
   "message":" INFO - 48566 - SQL - transaction1 - 200\r",
   "user":"tutorialspoint.com","taskid":"48566","tags":[]
}
{
   "sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
   "@timestamp":"2016-12-25T19:55:37.399Z","loglevel":"INFO",
   "logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC","label":"end",
   "message":" INFO - 48566 - TRANSACTION_END - end\r",
   "user":"tutorialspoint.com","taskid":"48566","tags":[]
}

เอาต์พุตเป็นขั้นตอนสุดท้ายในไปป์ไลน์ Logstash ซึ่งส่งข้อมูลตัวกรองจากบันทึกการป้อนข้อมูลไปยังปลายทางที่ระบุ Logstash มีปลั๊กอินเอาต์พุตหลายตัวเพื่อซ่อนเหตุการณ์บันทึกที่กรองแล้วไปยังอุปกรณ์จัดเก็บข้อมูลและเครื่องมือค้นหาต่างๆ

การจัดเก็บบันทึก

Logstash สามารถจัดเก็บบันทึกที่กรองแล้วในไฟล์ File, Elasticsearch Engine, stdout, AWS CloudWatch, ฯลฯ โปรโตคอลเครือข่ายเช่น TCP, UDP, Websocket นอกจากนี้ยังสามารถใช้ใน Logstash เพื่อถ่ายโอนเหตุการณ์บันทึกไปยังระบบจัดเก็บข้อมูลระยะไกล

ใน ELK stack ผู้ใช้จะใช้ Elasticsearch engine เพื่อเก็บบันทึกเหตุการณ์ ในตัวอย่างต่อไปนี้เราจะสร้างเหตุการณ์บันทึกสำหรับเอ็นจิ้น Elasticsearch ในเครื่อง

การติดตั้ง Elasticsearch Output Plugin

เราสามารถติดตั้งปลั๊กอินเอาต์พุต Elasticsearch ด้วยคำสั่งต่อไปนี้

>logstash-plugin install Logstash-output-elasticsearch

logstash.conf

ไฟล์กำหนดค่านี้มีปลั๊กอิน Elasticsearch ซึ่งเก็บเหตุการณ์เอาต์พุตใน Elasticsearch ที่ติดตั้งไว้ในเครื่อง

input {
   file {
      path => "C:/tpwork/logstash/bin/log/input.log"
   }
} 
filter {
   grok {
      match => [ "message", "%{LOGLEVEL:loglevel} -
      %{NOTSPACE:taskid} - %{NOTSPACE:logger} -  
      %{WORD:label}( - %{INT:duration:int})?" ]
   }
   if [logger] == "TRANSACTION_START" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] = 0"
         map_action => "create"
      }
   }
   if [logger] == "SQL" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] ||= 0 ;
            map['sql_duration'] += event.get('duration')"
      }
   }
   if [logger] == "TRANSACTION_END" {
      aggregate {
         task_id => "%{taskid}"
         code => "event.set('sql_duration', map['sql_duration'])"
         end_of_task => true
         timeout => 120
      }
   }
   mutate {
      add_field => {"user" => "tutorialspoint.com"}
   }
}
output {
   elasticsearch {
      hosts => ["127.0.0.1:9200"]
   }
}

Input.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end

เริ่ม Elasticsearch ที่ Localhost

ในการเริ่ม Elasticsearch ที่ localhost คุณควรใช้คำสั่งต่อไปนี้

C:\elasticsearch\bin> elasticsearch

เมื่อ Elasticsearch พร้อมแล้วคุณสามารถตรวจสอบได้โดยพิมพ์ URL ต่อไปนี้ในเบราว์เซอร์ของคุณ

http://localhost:9200/

การตอบสนอง

บล็อกโค้ดต่อไปนี้แสดงการตอบสนองของ Elasticsearch ที่ localhost

{
   "name" : "Doctor Dorcas",
   "cluster_name" : "elasticsearch",
   "version" : {
      "number" : "2.1.1",
      "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
      "build_timestamp" : "2015-12-15T13:05:55Z",
      "build_snapshot" : false,
      "lucene_version" : "5.3.1"
   },
   "tagline" : "You Know, for Search"
}

Note - สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Elasticsearch คุณสามารถคลิกที่ลิงค์ต่อไปนี้

https://www.tutorialspoint.com/elasticsearch/index.html

ตอนนี้เรียกใช้ Logstash ด้วย Logstash.conf ดังกล่าวข้างต้น

>Logstash –f Logstash.conf

หลังจากวางข้อความที่กล่าวถึงข้างต้นในบันทึกผลลัพธ์ข้อความนั้นจะถูกเก็บไว้ใน Elasticsearch โดย Logstash คุณสามารถตรวจสอบข้อมูลที่จัดเก็บได้โดยพิมพ์ URL ต่อไปนี้ในเบราว์เซอร์

http://localhost:9200/logstash-2017.01.01/_search?pretty

การตอบสนอง

เป็นข้อมูลในรูปแบบ JSON ที่จัดเก็บในดัชนี Logstash-2017.01.01

{
   "took" : 20,
   "timed_out" : false,
   "_shards" : {
      "total" : 5,
      "successful" : 5,
      "failed" : 0
   },
   "hits" : {
      "total" : 10,
      "max_score" : 1.0,
      "hits" : [ {
         "_index" : "logstash-2017.01.01",
         "_type" : "logs",
         "_id" : "AVlZ9vF8hshdrGm02KOs",
         "_score" : 1.0,
         "_source":{
            "duration":200,"path":"C:/tpwork/logstash/bin/log/input.log", 
            "@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO",
            "logger":"SQL","@version":"1","host":"wcnlab-PC",
            "label":"transaction1",
            "message":" INFO - 48566 - SQL - transaction1 - 200\r",
            "user":"tutorialspoint.com","taskid":"48566","tags":[]
         }
      },
      {
         "_index" : "logstash-2017.01.01",
         "_type" : "logs",
         "_id" : "AVlZ9vF8hshdrGm02KOt",
         "_score" : 1.0,
         "_source":{
            "sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
            "@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO",
            "logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC",
            "label":"end",
            "message":" INFO - 48566 - TRANSACTION_END - end\r",
            "user":"tutorialspoint.com","taskid":"48566","tags":[]
         }
      }
   }
}

Logstash มี Plugins หลายตัวเพื่อรองรับการจัดเก็บข้อมูลหรือเครื่องมือค้นหาต่างๆ เหตุการณ์เอาต์พุตของบันทึกสามารถส่งไปยังไฟล์เอาต์พุตเอาต์พุตมาตรฐานหรือเครื่องมือค้นหาเช่น Elasticsearch มีเอาต์พุตที่รองรับสามประเภทใน Logstash ได้แก่ -

  • เอาต์พุตมาตรฐาน
  • ไฟล์เอาต์พุต
  • เอาต์พุต Null

ตอนนี้ให้เราคุยรายละเอียดแต่ละเรื่องเหล่านี้

เอาต์พุตมาตรฐาน (stdout)

ใช้สำหรับสร้างเหตุการณ์บันทึกที่กรองแล้วเป็นสตรีมข้อมูลไปยังอินเทอร์เฟซบรรทัดคำสั่ง นี่คือตัวอย่างของการสร้างระยะเวลาทั้งหมดของธุรกรรมฐานข้อมูลเป็น stdout

logstash.conf

ไฟล์กำหนดค่านี้มีปลั๊กอินเอาต์พุต stdout เพื่อเขียน sql_duration ทั้งหมดไปยังเอาต์พุตมาตรฐาน

input {
   file {
      path => "C:/tpwork/logstash/bin/log/input.log"
   }
} 
filter {
   grok {
      match => [
         "message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid}
            - %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" 
      ]
   }
   if [logger] == "TRANSACTION_START" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] = 0"
         map_action => "create"
      }
   }
   if [logger] == "SQL" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] ||= 0 ;
            map['sql_duration'] += event.get('duration')"
      }
   }
   if [logger] == "TRANSACTION_END" {
      aggregate {
         task_id => "%{taskid}"
         code => "event.set('sql_duration', map['sql_duration'])"
         end_of_task => true
         timeout => 120
      }
   }
}
output {
   if [logger] == "TRANSACTION_END" {
      stdout {
         codec => line{format => "%{sql_duration}"}
      }
   }
}

Note - โปรดติดตั้งตัวกรองรวมหากยังไม่ได้ติดตั้ง

>logstash-plugin install Logstash-filter-aggregate

เรียกใช้ Logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>logstash –f logsatsh.conf

Input.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end

stdout (จะเป็นพร้อมรับคำสั่งใน windows หรือเทอร์มินัลใน UNIX)

นี่คือ sql_duration ทั้งหมด 320 + 200 = 520

520

ไฟล์เอาต์พุต

Logstash ยังสามารถจัดเก็บเหตุการณ์บันทึกตัวกรองไปยังไฟล์เอาต์พุต เราจะใช้ตัวอย่างที่กล่าวถึงข้างต้นและจัดเก็บผลลัพธ์ไว้ในไฟล์แทน STDOUT

logstash.conf

ไฟล์กำหนดค่า Logstash นี้โดยตรง Logstash เพื่อจัดเก็บ sql_duration ทั้งหมดไปยังไฟล์บันทึกเอาต์พุต

input {
   file {
      path => "C:/tpwork/logstash/bin/log/input1.log"
   }
} 
filter {
   grok {
      match => [
         "message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
            %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" 
      ]
   }
   if [logger] == "TRANSACTION_START" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] = 0"
         map_action => "create"
      }
   }
   if [logger] == "SQL" {
      aggregate {
         task_id => "%{taskid}"
         code => "map['sql_duration'] ||= 0 ;
            map['sql_duration'] += event.get('duration')"
      }
   }
   if [logger] == "TRANSACTION_END" {
      aggregate {
         task_id => "%{taskid}"
         code => "event.set('sql_duration', map['sql_duration'])"
         end_of_task => true
         timeout => 120
      }
   }
}
output {
   if [logger] == "TRANSACTION_END" {
      file {
         path => "C:/tpwork/logstash/bin/log/output.log"
         codec => line{format => "%{sql_duration}"}
      }
   }
}

เรียกใช้ logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>logstash –f logsatsh.conf

input.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end

output.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกผลลัพธ์

520

เอาต์พุต Null

นี่คือปลั๊กอินเอาต์พุตพิเศษซึ่งใช้สำหรับวิเคราะห์ประสิทธิภาพของปลั๊กอินอินพุตและตัวกรอง

Logstash มีปลั๊กอินที่หลากหลายสำหรับทั้งสามขั้นตอนของไปป์ไลน์ (อินพุตตัวกรองและเอาต์พุต) ปลั๊กอินเหล่านี้ช่วยให้ผู้ใช้บันทึกบันทึกจากแหล่งต่างๆเช่นเว็บเซิร์ฟเวอร์ฐานข้อมูล Over Network Protocols เป็นต้น

หลังจากจับภาพ Logstash สามารถแยกวิเคราะห์และแปลงข้อมูลให้เป็นข้อมูลที่มีความหมายตามที่ผู้ใช้ต้องการ สุดท้าย Logstash สามารถส่งหรือจัดเก็บข้อมูลที่มีความหมายนั้นไปยังแหล่งปลายทางต่างๆเช่น Elasticsearch, AWS Cloudwatch และอื่น ๆ

ปลั๊กอินอินพุต

ปลั๊กอินอินพุตใน Logstash ช่วยให้ผู้ใช้แยกและรับบันทึกจากแหล่งต่างๆ ไวยากรณ์สำหรับการใช้ปลั๊กอินอินพุตมีดังนี้ -

Input {
   Plugin name {
      Setting 1……
      Setting 2……..
   }
}

คุณสามารถดาวน์โหลดปลั๊กอินอินพุตได้โดยใช้คำสั่งต่อไปนี้ -

>Logstash-plugin install Logstash-input-<plugin name>

ยูทิลิตี้ Logstash-plugin มีอยู่ในไฟล์ bin folderของไดเร็กทอรีการติดตั้ง Logstash ตารางต่อไปนี้มีรายการปลั๊กอินอินพุตที่ Logstash นำเสนอ

ซีเนียร์ ชื่อปลั๊กอินและคำอธิบาย
1

beats

เพื่อรับข้อมูลการบันทึกหรือเหตุการณ์จากกรอบการเต้นยืดหยุ่น

2

cloudwatch

ในการดึงข้อมูลเหตุการณ์ออกจาก CloudWatch ข้อเสนอ API โดย Amazon Web Services

3

couchdb_changes

เหตุการณ์จาก _chages URI ของ couchdb จัดส่งโดยใช้ปลั๊กอินนี้

4

drupal_dblog

ในการแยกข้อมูลการบันทึกการเฝ้าดูของ drupal ด้วย DBLog ที่เปิดใช้งาน

5

Elasticsearch

เพื่อดึงผลลัพธ์ของการสืบค้นที่ดำเนินการในคลัสเตอร์ Elasticsearch

6

eventlog

เพื่อรับเหตุการณ์จากบันทึกเหตุการณ์ของ windows

7

exec

เพื่อรับเอาต์พุตคำสั่งเชลล์เป็นอินพุตใน Logstash

8

file

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

9

generator

ใช้เพื่อวัตถุประสงค์ในการทดสอบซึ่งจะสร้างเหตุการณ์แบบสุ่ม

10

github

บันทึกเหตุการณ์จาก GitHub webhook

11

graphite

เพื่อรับข้อมูลเมตริกจากเครื่องมือตรวจสอบกราไฟท์

12

heartbeat

นอกจากนี้ยังใช้สำหรับการทดสอบและทำให้เกิดการเต้นของหัวใจเช่นเหตุการณ์ต่างๆ

13

http

เพื่อรวบรวมเหตุการณ์บันทึกผ่านโปรโตคอลเครือข่ายสองโปรโตคอลซึ่ง ได้แก่ http และ https

14

http_poller

ใช้เพื่อถอดรหัสเอาต์พุต HTTP API ไปยังเหตุการณ์

15

jdbc

มันแปลงธุรกรรม JDBC เป็นเหตุการณ์ใน Logstash

16

jmx

ในการแยกเมตริกจากแอ็พพลิเคชัน Java ระยะไกลโดยใช้ JMX

17

log4j

จับภาพเหตุการณ์จากวัตถุ socketAppender ของ Log4j ผ่านซ็อกเก็ต TCP

18

rss

ไปยังเอาต์พุตของเครื่องมือบรรทัดคำสั่งเป็นเหตุการณ์อินพุตใน Logstash

19

tcp

บันทึกเหตุการณ์ผ่านซ็อกเก็ต TCP

20

twitter

รวบรวมกิจกรรมจาก twitter สตรีมมิ่ง API

21

unix

รวบรวมเหตุการณ์ผ่านซ็อกเก็ต UNIX

22

websocket

จับภาพเหตุการณ์ผ่านโปรโตคอล websocket

23

xmpp

อ่านเหตุการณ์ผ่านโปรโตคอล Jabber / xmpp

การตั้งค่าปลั๊กอิน

ปลั๊กอินทั้งหมดมีการตั้งค่าเฉพาะซึ่งจะช่วยในการระบุช่องที่สำคัญเช่นพอร์ตเส้นทาง ฯลฯ ในปลั๊กอิน เราจะพูดถึงการตั้งค่าของปลั๊กอินอินพุตบางส่วน

ไฟล์

ปลั๊กอินอินพุตนี้ใช้เพื่อแยกเหตุการณ์โดยตรงจากไฟล์บันทึกหรือไฟล์ข้อความที่มีอยู่ในแหล่งอินพุต ทำงานคล้ายกับคำสั่ง tail ใน UNIX และบันทึกเคอร์เซอร์อ่านล่าสุดและอ่านเฉพาะข้อมูลต่อท้ายใหม่จากไฟล์อินพุต แต่สามารถเปลี่ยนแปลงได้โดยใช้การตั้งค่า star_position ต่อไปนี้คือการตั้งค่าของปลั๊กอินอินพุตนี้

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
add_field {} เพิ่มฟิลด์ใหม่เข้ากับเหตุการณ์อินพุต
close_older 3600 ไฟล์ที่มีเวลาอ่านล่าสุด (เป็นวินาที) มากกว่าที่ระบุในปลั๊กอินนี้จะถูกปิด
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อถอดรหัสข้อมูลก่อนเข้าสู่ไปป์ไลน์ Logstash
ตัวคั่น “ \ n” ใช้เพื่อระบุตัวคั่นบรรทัดใหม่
Discover_interval 15 เป็นช่วงเวลา (เป็นวินาที) ระหว่างการค้นพบไฟล์ใหม่ในเส้นทางที่ระบุ
enable_metric จริง ใช้เพื่อเปิดหรือปิดการรายงานและการรวบรวมเมตริกสำหรับปลั๊กอินที่ระบุ
ไม่รวม ใช้เพื่อระบุชื่อไฟล์หรือรูปแบบซึ่งควรแยกออกจากปลั๊กอินอินพุต
Id เพื่อระบุเอกลักษณ์เฉพาะสำหรับอินสแตนซ์ปลั๊กอินนั้น
max_open_files ระบุจำนวนไฟล์อินพุตสูงสุดโดย Logstash ได้ตลอดเวลา
เส้นทาง ระบุเส้นทางของไฟล์และสามารถมีรูปแบบสำหรับชื่อไฟล์
start_position “ จบ” คุณสามารถเปลี่ยนเป็น“ จุดเริ่มต้น” ได้หากต้องการ เริ่มแรก Logstash ควรเริ่มอ่านไฟล์ตั้งแต่เริ่มต้นไม่ใช่เฉพาะเหตุการณ์บันทึกใหม่
start_interval 1 ระบุช่วงเวลาเป็นวินาทีหลังจากนั้น Logstash จะตรวจสอบไฟล์ที่แก้ไข
แท็ก หากต้องการเพิ่มข้อมูลเพิ่มเติมเช่น Logstash จะเพิ่ม "_grokparsefailure" ในแท็กเมื่อเหตุการณ์บันทึกใด ๆ ไม่เป็นไปตามตัวกรอง grok ที่ระบุ
ชนิด นี่คือฟิลด์พิเศษซึ่งคุณสามารถเพิ่มลงในเหตุการณ์อินพุตและมีประโยชน์ในตัวกรองและคิบานะ

ยางยืด

ปลั๊กอินเฉพาะนี้ใช้เพื่ออ่านผลการค้นหาในคลัสเตอร์ Elasticsearch ต่อไปนี้มีการตั้งค่าที่ใช้ในปลั๊กอินนี้ -

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
add_field {} เช่นเดียวกับในปลั๊กอินไฟล์ใช้เพื่อต่อท้ายฟิลด์ในเหตุการณ์อินพุต
ca_file ใช้เพื่อระบุเส้นทางของไฟล์ผู้ออกใบรับรอง SSL
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อถอดรหัสเหตุการณ์อินพุตจาก Elasticsearch ก่อนเข้าสู่ไปป์ไลน์ Logstash
docinfo “ เท็จ” คุณสามารถเปลี่ยนเป็นจริงได้หากต้องการดึงข้อมูลเพิ่มเติมเช่นดัชนีประเภทและรหัสจากเอ็นจิ้น Elasticsearch
docinfo_fields ["_index", "_type", "_id"] คุณสามารถลบฟิลด์ใดก็ได้ที่คุณไม่ต้องการในอินพุต Logstash ของคุณ
enable_metric จริง ใช้เพื่อเปิดหรือปิดการรายงานและการรวบรวมเมตริกสำหรับอินสแตนซ์ปลั๊กอินนั้น
เจ้าภาพ ใช้เพื่อระบุแอดเดรสของเอ็นจิน elasticsearch ทั้งหมดซึ่งจะเป็นอินพุตของอินสแตนซ์ Logstash นั้น ไวยากรณ์คือ host: port หรือ IP: port
Id ใช้เพื่อระบุหมายเลขประจำตัวเฉพาะให้กับอินสแตนซ์ปลั๊กอินอินพุตเฉพาะนั้น
ดัชนี "logstash- *" ใช้เพื่อระบุชื่อดัชนีหรือรูปแบบซึ่ง Logstash จะตรวจสอบโดย Logstash สำหรับอินพุต
รหัสผ่าน เพื่อวัตถุประสงค์ในการตรวจสอบสิทธิ์
แบบสอบถาม "{\" เรียงลำดับ \ ": [\" _ doc \ "]}" แบบสอบถามสำหรับการดำเนินการ
ssl เท็จ เปิดหรือปิดใช้งานเลเยอร์ซ็อกเก็ตที่ปลอดภัย
แท็ก หากต้องการเพิ่มข้อมูลเพิ่มเติมในเหตุการณ์การป้อนข้อมูล
ชนิด ใช้เพื่อจำแนกรูปแบบการป้อนข้อมูลเพื่อให้ง่ายต่อการค้นหาเหตุการณ์อินพุตทั้งหมดในขั้นตอนต่อไป
ผู้ใช้ เพื่อวัตถุประสงค์ที่แท้จริง

บันทึกเหตุการณ์

ปลั๊กอินอินพุตนี้อ่านข้อมูลจาก win32 API ของเซิร์ฟเวอร์ windows ต่อไปนี้คือการตั้งค่าของปลั๊กอินนี้ -

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
add_field {} เช่นเดียวกับในปลั๊กอินไฟล์ใช้เพื่อต่อท้ายฟิลด์ในเหตุการณ์อินพุต
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อถอดรหัสเหตุการณ์อินพุตจาก windows ก่อนที่จะเข้าสู่ไปป์ไลน์ Logstash
ไฟล์บันทึก ["แอปพลิเคชัน", "ความปลอดภัย", "ระบบ"] เหตุการณ์ที่จำเป็นในไฟล์บันทึกการป้อนข้อมูล
ช่วงเวลา 1,000 มีหน่วยเป็นมิลลิวินาทีและกำหนดช่วงเวลาระหว่างการตรวจสอบบันทึกเหตุการณ์ใหม่สองครั้งติดต่อกัน
แท็ก หากต้องการเพิ่มข้อมูลเพิ่มเติมในเหตุการณ์การป้อนข้อมูล
ชนิด ใช้เพื่อจำแนกรูปแบบอินพุตเป็นปลั๊กอินเฉพาะตามประเภทที่กำหนดเพื่อให้ง่ายต่อการค้นหาเหตุการณ์อินพุตทั้งหมดในระยะต่อมา

ทวิตเตอร์

ปลั๊กอินอินพุตนี้ใช้เพื่อรวบรวมฟีดของ twitter จาก Streaming API ตารางต่อไปนี้อธิบายการตั้งค่าของปลั๊กอินนี้

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
add_field {} เช่นเดียวกับในปลั๊กอินไฟล์ใช้เพื่อต่อท้ายฟิลด์ในเหตุการณ์อินพุต
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อถอดรหัสเหตุการณ์อินพุตจาก windows ก่อนที่จะเข้าสู่ไปป์ไลน์ Logstash
consumer_key มันมีรหัสผู้บริโภคของแอป twitter ดูข้อมูลเพิ่มเติมได้ที่https://dev.twitter.com/apps/new
consumer_secret มันมีคีย์ลับสำหรับผู้บริโภคของแอพ twitter ดูข้อมูลเพิ่มเติมได้ที่https://dev.twitter.com/apps/new
enable_metric จริง ใช้เพื่อเปิดหรือปิดการรายงานและการรวบรวมเมตริกสำหรับอินสแตนซ์ปลั๊กอินนั้น
ดังต่อไปนี้

ระบุรหัสผู้ใช้ที่คั่นด้วยเครื่องหมายจุลภาคและ LogStash จะตรวจสอบสถานะของผู้ใช้เหล่านี้ใน Twitter

ดูข้อมูลเพิ่มเติมได้ที่

https://dev.twitter.com

full_tweet เท็จ คุณสามารถเปลี่ยนเป็น true ได้หากคุณต้องการให้ Logstash อ่านการส่งคืนวัตถุทั้งหมดจาก twitter API
id ใช้เพื่อระบุหมายเลขประจำตัวเฉพาะให้กับอินสแตนซ์ปลั๊กอินอินพุตเฉพาะนั้น
เพิกเฉยต่อการรีทวีต เท็จ คุณสามารถเปลี่ยนการตั้งค่าเป็นจริงเพื่อละเว้นการรีทวีตในฟีด Twitter ที่ป้อน
คำหลัก เป็นอาร์เรย์ของคีย์เวิร์ดซึ่งต้องติดตามในฟีดอินพุตของ Twitters
ภาษา กำหนดภาษาของทวีตที่ LogStash ต้องการจากอินพุต Twitter ฟีด นี่คืออาร์เรย์ของตัวระบุซึ่งกำหนดภาษาเฉพาะใน twitter
สถานที่ เพื่อกรองทวีตออกจากฟีดอินพุตตามตำแหน่งที่ระบุ นี่คืออาร์เรย์ซึ่งประกอบด้วยลองจิจูดและละติจูดของตำแหน่ง
oauth_token จำเป็นต้องยื่นซึ่งมีโทเค็น oauth ของผู้ใช้ สำหรับข้อมูลเพิ่มเติมโปรดไปที่ลิงค์ต่อไปนี้https://dev.twitter.com/apps
oauth_token_secret จำเป็นต้องยื่นซึ่งมีโทเค็นลับของผู้ใช้ สำหรับข้อมูลเพิ่มเติมโปรดไปที่ลิงค์ต่อไปนี้https://dev.twitter.com/apps
แท็ก หากต้องการเพิ่มข้อมูลเพิ่มเติมในเหตุการณ์การป้อนข้อมูล
ชนิด ใช้เพื่อจำแนกรูปแบบอินพุตเป็นปลั๊กอินเฉพาะตามประเภทที่กำหนดเพื่อให้ง่ายต่อการค้นหาเหตุการณ์อินพุตทั้งหมดในระยะต่อมา

TCP

TCP ใช้เพื่อรับเหตุการณ์ผ่านซ็อกเก็ต TCP สามารถอ่านได้จากการเชื่อมต่อผู้ใช้หรือเซิร์ฟเวอร์ซึ่งระบุไว้ในการตั้งค่าโหมด ตารางต่อไปนี้อธิบายการตั้งค่าของปลั๊กอินนี้ -

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
add_field {} เช่นเดียวกับในปลั๊กอินไฟล์ใช้เพื่อต่อท้ายฟิลด์ในเหตุการณ์อินพุต
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อถอดรหัสเหตุการณ์อินพุตจาก windows ก่อนที่จะเข้าสู่ไปป์ไลน์ Logstash
enable_metric จริง ใช้เพื่อเปิดหรือปิดการรายงานและการรวบรวมเมตริกสำหรับอินสแตนซ์ปลั๊กอินนั้น
เจ้าภาพ “ 0.0.0.0” ที่อยู่ของเซิร์ฟเวอร์ OS ที่ไคลเอนต์ขึ้นอยู่กับ
id มันมีรหัสผู้บริโภคของแอป twitter
โหมด “ เซิร์ฟเวอร์” ใช้เพื่อระบุแหล่งอินพุตคือเซิร์ฟเวอร์หรือไคลเอนต์
ท่าเรือ เป็นการกำหนดหมายเลขพอร์ต
ssl_cert ใช้เพื่อระบุเส้นทางของใบรับรอง SSL
ssl_enable เท็จ เปิดหรือปิด SSL
ssl_key เพื่อระบุพา ธ ของไฟล์คีย์ SSL
แท็ก หากต้องการเพิ่มข้อมูลเพิ่มเติมในเหตุการณ์การป้อนข้อมูล
ชนิด ใช้เพื่อจำแนกรูปแบบอินพุตเป็นปลั๊กอินเฉพาะตามประเภทที่กำหนดเพื่อให้ง่ายต่อการค้นหาเหตุการณ์อินพุตทั้งหมดในระยะต่อมา

Logstash - ปลั๊กอินเอาต์พุต

Logstash รองรับแหล่งเอาต์พุตที่หลากหลายและในเทคโนโลยีต่างๆเช่นฐานข้อมูลไฟล์อีเมลเอาต์พุตมาตรฐานเป็นต้น

ไวยากรณ์สำหรับการใช้ปลั๊กอินเอาต์พุตมีดังนี้ -

output {
   Plugin name {
      Setting 1……
      Setting 2……..
   }
}

คุณสามารถดาวน์โหลดปลั๊กอินเอาต์พุตได้โดยใช้คำสั่งต่อไปนี้ -

>logstash-plugin install logstash-output-<plugin name>

Logstash-plugin utilityมีอยู่ในโฟลเดอร์ bin ของไดเร็กทอรีการติดตั้ง Logstash ตารางต่อไปนี้อธิบายปลั๊กอินเอาต์พุตที่ Logstash นำเสนอ

ซีเนียร์ ชื่อปลั๊กอินและคำอธิบาย
1

CloudWatch

ปลั๊กอินนี้ใช้เพื่อส่งข้อมูลเมตริกรวมไปยัง CloudWatch ของบริการเว็บ amazon

2

csv

ใช้เพื่อเขียนเหตุการณ์เอาต์พุตในลักษณะที่คั่นด้วยเครื่องหมายจุลภาค

3

Elasticsearch

ใช้เพื่อเก็บบันทึกผลลัพธ์ในดัชนี Elasticsearch

4

email

ใช้เพื่อส่งอีเมลแจ้งเตือนเมื่อสร้างผลลัพธ์ ผู้ใช้สามารถเพิ่มข้อมูลเกี่ยวกับผลลัพธ์ในอีเมล

5

exec

ใช้เพื่อรันคำสั่งซึ่งตรงกับเหตุการณ์เอาต์พุต

6

ganglia

มันเขียนตัวชี้วัดไปยัง gmond of Gangila

7

gelf

ใช้เพื่อสร้างเอาต์พุตสำหรับ Graylog2 ในรูปแบบ GELF

8

google_bigquery

ส่งออกเหตุการณ์ไปยัง Google BigQuery

9

google_cloud_storage

จัดเก็บเหตุการณ์ที่ส่งออกไปยัง Google Cloud Storage

10

graphite

ใช้เพื่อจัดเก็บเหตุการณ์เอาต์พุตไปยัง Graphite

11

graphtastic

ใช้เพื่อเขียนเมตริกผลลัพธ์บน Windows

12

hipchat

ใช้เพื่อจัดเก็บเหตุการณ์บันทึกเอาต์พุตไปยัง HipChat

13

http

ใช้เพื่อส่งเหตุการณ์บันทึกเอาต์พุตไปยังปลายทาง http หรือ https

14

influxdb

ใช้เพื่อเก็บเหตุการณ์เอาต์พุตใน InfluxDB

15

irc

ใช้เพื่อเขียนเหตุการณ์ที่ส่งออกไปยัง irc

16

mongodb

เก็บข้อมูลผลลัพธ์ใน MongoDB

17

nagios

ใช้เพื่อแจ้ง Nagios ด้วยผลการตรวจสอบแบบพาสซีฟ

18

nagios_nsca

ใช้เพื่อแจ้ง Nagios ด้วยผลการตรวจสอบแบบพาสซีฟผ่านโปรโตคอล NSCA

19

opentsdb

จัดเก็บเหตุการณ์เอาต์พุต Logstash ไปยัง OpenTSDB

20

pipe

สตรีมเหตุการณ์เอาต์พุตไปยังอินพุตมาตรฐานของโปรแกรมอื่น

21

rackspace

ใช้เพื่อส่งเหตุการณ์บันทึกเอาต์พุตไปยังคิวเซอร์วิสของ Rackspace Cloud

22

redis

ใช้คำสั่ง rpush เพื่อส่งข้อมูลการบันทึกเอาต์พุตไปยังคิว Redis

23

riak

ใช้เพื่อจัดเก็บเหตุการณ์เอาต์พุตไปยังคู่คีย์ / ค่าแบบกระจายของ Riak

24

s3

จัดเก็บข้อมูลการบันทึกเอาต์พุตไปยัง Amazon Simple Storage Service

25

sns

ใช้เพื่อส่งเหตุการณ์เอาต์พุตไปยัง Simple Notification Service ของ Amazon

26

solr_http

ทำดัชนีและจัดเก็บข้อมูลการบันทึกเอาต์พุตใน Solr

27

sps

ใช้เพื่อจัดส่งเหตุการณ์ไปยัง Simple Queue Service ของ AWS

28

statsd

ใช้เพื่อจัดส่งข้อมูลเมตริกไปยัง statsd network daemon

29

stdout

ใช้เพื่อแสดงเหตุการณ์เอาต์พุตบนเอาต์พุตมาตรฐานของ CLI เช่น command prompt

30

syslog

ใช้เพื่อจัดส่งเหตุการณ์เอาต์พุตไปยังเซิร์ฟเวอร์ syslog

31

tcp

ใช้เพื่อส่งเหตุการณ์เอาต์พุตไปยังซ็อกเก็ต TCP

32

udp

ใช้เพื่อผลักดันเหตุการณ์เอาต์พุตผ่าน UDP

33

websocket

ใช้เพื่อผลักดันเหตุการณ์เอาต์พุตผ่านโปรโตคอล WebSocket

34

xmpp

ใช้เพื่อผลักดันเหตุการณ์เอาต์พุตผ่านโปรโตคอล XMPP

ปลั๊กอินทั้งหมดมีการตั้งค่าเฉพาะซึ่งจะช่วยในการระบุช่องที่สำคัญเช่นพอร์ตเส้นทาง ฯลฯ ในปลั๊กอิน เราจะพูดถึงการตั้งค่าของปลั๊กอินเอาต์พุตบางส่วน

ยางยืด

ปลั๊กอินเอาต์พุต Elasticsearch ช่วยให้ Logstash เก็บเอาต์พุตในคลัสเตอร์เฉพาะของ Elasticsearch engine นี่เป็นหนึ่งในตัวเลือกที่มีชื่อเสียงของผู้ใช้เนื่องจากมาในแพ็คเกจของ ELK Stack ดังนั้นจึงมีโซลูชันแบบ end-to-end สำหรับ Devops ตารางต่อไปนี้อธิบายการตั้งค่าของปลั๊กอินเอาต์พุตนี้

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
หนังบู๊ ดัชนี ใช้เพื่อกำหนดการดำเนินการในโปรแกรม Elasticsearch ค่าอื่น ๆ สำหรับการตั้งค่านี้คือลบสร้างอัปเดต ฯลฯ
Cacert ประกอบด้วยพา ธ ของไฟล์ที่มี. cer หรือ. pem สำหรับการตรวจสอบใบรับรองของเซิร์ฟเวอร์
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อเข้ารหัสข้อมูลการบันทึกเอาต์พุตก่อนส่งไปยังต้นทางปลายทาง
doc_as_upset เท็จ การตั้งค่านี้ใช้ในกรณีของการดำเนินการอัปเดต สร้างเอกสารใน Elasticsearch engine หากไม่ได้ระบุรหัสเอกสารในปลั๊กอินเอาต์พุต
ประเภทเอกสาร ใช้เพื่อจัดเก็บเหตุการณ์ประเภทเดียวกันในเอกสารประเภทเดียวกัน หากไม่ได้ระบุไว้ประเภทเหตุการณ์จะถูกใช้เหมือนกัน
flush_size 500 ใช้เพื่อปรับปรุงประสิทธิภาพของการอัปโหลดจำนวนมากใน Elasticsearch
เจ้าภาพ [“ 127.0.0.1”] เป็นอาร์เรย์ของที่อยู่ปลายทางสำหรับข้อมูลการบันทึกเอาต์พุต
idle_flush_time 1 เป็นการกำหนดขีด จำกัด เวลา (วินาที) ระหว่างการล้างทั้งสองครั้งกองกำลัง Logstash จะล้างออกหลังจากเวลาที่กำหนดในการตั้งค่านี้
ดัชนี "logstash -% {+ YYYY.MM.dd}" ใช้เพื่อระบุดัชนีของ Elasticsearch engine
Manage_temlpate จริง ใช้เพื่อใช้เทมเพลตเริ่มต้นใน Elasticsearch
ผู้ปกครอง ศูนย์ ใช้เพื่อระบุ id ของเอกสารหลักใน Elasticsearch
รหัสผ่าน ใช้เพื่อพิสูจน์ตัวตนคำร้องขอไปยังคลัสเตอร์ที่ปลอดภัยใน Elasticsearch
เส้นทาง ใช้เพื่อระบุเส้นทาง HTTP ของ Elasticsearch
ท่อ ศูนย์ ใช้เพื่อตั้งค่าไปป์ไลน์การนำเข้าผู้ใช้ต้องการดำเนินการสำหรับเหตุการณ์
พร็อกซี ใช้เพื่อระบุพร็อกซี HTTP
retry_initial_interval 2 ใช้เพื่อกำหนดช่วงเวลาเริ่มต้น (วินาที) ระหว่างการลองซ้ำจำนวนมาก ได้รับเป็นสองเท่าหลังจากลองใหม่แต่ละครั้งจนกว่าจะถึง retry_max_interval
retry_max_interval 64 ใช้เพื่อกำหนดช่วงเวลาสูงสุดสำหรับ retry_initial_interval
retry_on_conflict 1 เป็นจำนวนการลองใหม่โดย Elasticsearch เพื่ออัปเดตเอกสาร
ssl เพื่อเปิดหรือปิดใช้งาน SSL / TLS ที่ปลอดภัยกับ Elasticsearch
แม่แบบ มันมีเส้นทางของเทมเพลตที่กำหนดเองใน Elasticsearch
template_name "logstash" ใช้เพื่อตั้งชื่อเทมเพลตใน Elasticsearch
หมดเวลา 60 เป็นช่วงหมดเวลาสำหรับคำขอเครือข่ายไปยัง Elasticsearch
อารมณ์เสีย “” จะอัปเดตเอกสารหรือถ้าไม่มี document_id ก็จะสร้างเอกสารใหม่ใน Elasticsearch
ผู้ใช้ มีผู้ใช้เพื่อพิสูจน์ตัวตนคำขอ Logstash ในคลัสเตอร์ Elasticsearch ที่ปลอดภัย

อีเมล์

ปลั๊กอินเอาต์พุตอีเมลใช้เพื่อแจ้งเตือนผู้ใช้เมื่อ Logstash สร้างเอาต์พุต ตารางต่อไปนี้อธิบายการตั้งค่าสำหรับปลั๊กอินนี้

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
ที่อยู่ “ localhost” เป็นที่อยู่ของเซิร์ฟเวอร์อีเมล
ไฟล์แนบ [] ประกอบด้วยชื่อและตำแหน่งของไฟล์ที่แนบ
ร่างกาย “” ประกอบด้วยเนื้อหาของอีเมลและควรเป็นข้อความธรรมดา
ซีซี ประกอบด้วยที่อยู่อีเมลในลักษณะคั่นด้วยจุลภาคสำหรับ cc ของอีเมล
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อเข้ารหัสข้อมูลการบันทึกเอาต์พุตก่อนส่งไปยังต้นทางปลายทาง
ชนิดของเนื้อหา "text / html; charset = UTF-8" ใช้สำหรับประเภทเนื้อหาของอีเมล
แก้จุดบกพร่อง เท็จ ใช้เพื่อดำเนินการรีเลย์เมลในโหมดดีบัก
โดเมน "localhost" ใช้เพื่อตั้งค่าโดเมนเพื่อส่งข้อความอีเมล
จาก "[email protected]" ใช้เพื่อระบุที่อยู่อีเมลของผู้ส่ง
htmlbody “” ใช้เพื่อระบุเนื้อหาของอีเมลในรูปแบบ html
รหัสผ่าน ใช้เพื่อพิสูจน์ตัวตนกับเมลเซิร์ฟเวอร์
ท่าเรือ 25 ใช้เพื่อกำหนดพอร์ตเพื่อสื่อสารกับเมลเซิร์ฟเวอร์
ตอบกลับ ใช้เพื่อระบุรหัสอีเมลสำหรับช่องตอบกลับอีเมล
เรื่อง “” ประกอบด้วยบรรทัดหัวเรื่องของอีเมล
use_tls เท็จ เปิดหรือปิด TSL สำหรับการสื่อสารกับเมลเซิร์ฟเวอร์
ชื่อผู้ใช้ มีชื่อผู้ใช้สำหรับการตรวจสอบสิทธิ์กับเซิร์ฟเวอร์
ผ่าน “ smtp” กำหนดวิธีการส่งอีเมลโดย Logstash

http

การตั้งค่านี้ใช้เพื่อส่งเหตุการณ์เอาต์พุตผ่าน http ไปยังปลายทาง ปลั๊กอินนี้มีการตั้งค่าดังต่อไปนี้ -

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
Automatic_retries 1 ใช้เพื่อตั้งค่าจำนวนการร้องขอ http การลองใหม่โดย logstash
Cacert มีเส้นทางของไฟล์สำหรับการตรวจสอบใบรับรองของเซิร์ฟเวอร์
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อเข้ารหัสข้อมูลการบันทึกเอาต์พุตก่อนส่งไปยังต้นทางปลายทาง
ชนิดของเนื้อหา ฉันระบุประเภทเนื้อหาของคำขอ http ไปยังเซิร์ฟเวอร์ปลายทาง
คุ้กกี้ จริง ใช้เพื่อเปิดหรือปิดคุกกี้
รูปแบบ "json" ใช้เพื่อกำหนดรูปแบบของเนื้อหาคำขอ http
ส่วนหัว มีข้อมูลของส่วนหัว http
http_ วิธีการ “” ใช้เพื่อระบุเมธอด http ที่ใช้ในการร้องขอโดย logstash และค่าสามารถเป็น "put", "post", "patch", "delete", "get", "head"
หมดเวลาการร้องขอ 60 ใช้เพื่อพิสูจน์ตัวตนกับเมลเซิร์ฟเวอร์
url การตั้งค่าที่จำเป็นสำหรับปลั๊กอินนี้เพื่อระบุจุดสิ้นสุด http หรือ https

stdout

ปลั๊กอินเอาต์พุต stdout ใช้เพื่อเขียนเหตุการณ์เอาต์พุตบนเอาต์พุตมาตรฐานของอินเทอร์เฟซบรรทัดคำสั่ง เป็นพรอมต์คำสั่งใน windows และ terminal ใน UNIX ปลั๊กอินนี้มีการตั้งค่าดังต่อไปนี้ -

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อเข้ารหัสข้อมูลการบันทึกเอาต์พุตก่อนส่งไปยังต้นทางปลายทาง
คนงาน 1 ใช้เพื่อระบุจำนวนคนงานสำหรับเอาต์พุต

statsd

เป็นดีมอนเครือข่ายที่ใช้ในการส่งข้อมูลเมทริกซ์ผ่าน UDP ไปยังบริการแบ็กเอนด์ปลายทาง เป็นพรอมต์คำสั่งใน windows และ terminal ใน UNIX ปลั๊กอินนี้มีการตั้งค่าดังต่อไปนี้ -

การตั้งชื่อ ค่าเริ่มต้น คำอธิบาย
ตัวแปลงสัญญาณ "ธรรมดา" ใช้เพื่อเข้ารหัสข้อมูลการบันทึกเอาต์พุตก่อนส่งไปยังต้นทางปลายทาง
นับ {} ใช้เพื่อกำหนดจำนวนที่จะใช้ในเมตริก
ลดลง [] ใช้เพื่อระบุชื่อเมตริกที่ลดลง
เจ้าภาพ “ localhost” ประกอบด้วยที่อยู่ของเซิร์ฟเวอร์ statsd
เพิ่มขึ้น [] ใช้เพื่อระบุชื่อเมตริกส่วนเพิ่ม
ท่าเรือ 8125 มันมีพอร์ตของเซิร์ฟเวอร์ statsd
sample_rate 1 ใช้ระบุอัตราตัวอย่างของเมตริก
ผู้ส่ง “% {host}” ระบุชื่อผู้ส่ง
ชุด {} ใช้เพื่อระบุเมตริกชุด
เวลา {} ใช้เพื่อระบุเมตริกเวลา
คนงาน 1 ใช้เพื่อระบุจำนวนคนงานสำหรับเอาต์พุต

ปลั๊กอินตัวกรอง

Logstash รองรับปลั๊กอินตัวกรองต่างๆเพื่อแยกวิเคราะห์และแปลงบันทึกข้อมูลเข้าเป็นรูปแบบที่มีโครงสร้างมากขึ้นและง่ายต่อการสืบค้น

ไวยากรณ์สำหรับการใช้ปลั๊กอินตัวกรองมีดังนี้ -

filter {
   Plugin name {
      Setting 1……
      Setting 2……..
   }
}

คุณสามารถดาวน์โหลดปลั๊กอินตัวกรองโดยใช้คำสั่งต่อไปนี้ -

>logstash-plugin install logstash-filter-<plugin name>

ยูทิลิตี้ Logstash-plugin มีอยู่ในโฟลเดอร์ bin ของไดเร็กทอรีการติดตั้ง Logstash ตารางต่อไปนี้อธิบายปลั๊กอินเอาต์พุตที่ Logstash นำเสนอ

ซีเนียร์ ชื่อปลั๊กอินและคำอธิบาย
1

aggregate

ปลั๊กอินนี้รวบรวมหรือรวมข้อมูลจากเหตุการณ์ประเภทเดียวกันและประมวลผลในเหตุการณ์สุดท้าย

2

alter

ช่วยให้ผู้ใช้สามารถเปลี่ยนฟิลด์ของเหตุการณ์บันทึกซึ่งตัวกรองการกลายพันธุ์ไม่สามารถจัดการได้

3

anonymize

ใช้แทนค่าของเขตข้อมูลด้วยแฮชที่สอดคล้องกัน

4

cipher

ใช้เพื่อเข้ารหัสเหตุการณ์เอาต์พุตก่อนจัดเก็บในต้นทางปลายทาง

5

clone

ใช้เพื่อสร้างเหตุการณ์ที่ซ้ำกันใน Logstash

6

collate

รวมเหตุการณ์จากบันทึกต่างๆตามเวลาหรือจำนวน

7

csv

ปลั๊กอินนี้แยกวิเคราะห์ข้อมูลจากบันทึกการป้อนข้อมูลตามตัวคั่น

8

date

มันแยกวิเคราะห์วันที่จากฟิลด์ในเหตุการณ์และตั้งค่านั้นเป็นเวลาประทับของเหตุการณ์

9

dissect

ปลั๊กอินนี้ช่วยให้ผู้ใช้แยกฟิลด์จากข้อมูลที่ไม่มีโครงสร้างและทำให้ตัวกรอง grok แยกวิเคราะห์ได้อย่างถูกต้อง

10

drop

ใช้เพื่อทิ้งเหตุการณ์ประเภทเดียวกันหรืออื่น ๆ ที่คล้ายคลึงกัน

11

elapsed

ใช้เพื่อคำนวณเวลาระหว่างเหตุการณ์เริ่มต้นและสิ้นสุด

12

Elasticsearch

ใช้เพื่อคัดลอกฟิลด์ของเหตุการณ์บันทึกก่อนหน้านี้ที่มีอยู่ใน Elasticsearch ไปยังฟิลด์ปัจจุบันใน Logstash

13

extractnumbers

ใช้เพื่อแยกหมายเลขออกจากสตริงในเหตุการณ์บันทึก

14

geoip

จะเพิ่มฟิลด์ในเหตุการณ์ซึ่งมีละติจูดและลองจิจูดของตำแหน่งของ IP ที่มีอยู่ในเหตุการณ์บันทึก

15

grok

เป็นปลั๊กอินตัวกรองที่ใช้กันทั่วไปในการแยกวิเคราะห์เหตุการณ์เพื่อรับฟิลด์

16

i18n

จะลบอักขระพิเศษออกจากไฟล์ในเหตุการณ์บันทึก

17

json

ใช้เพื่อสร้างวัตถุ Json ที่มีโครงสร้างในเหตุการณ์หรือในฟิลด์เฉพาะของเหตุการณ์

18

kv

ปลั๊กอินนี้มีประโยชน์ในการแยกคู่ค่าคีย์ในข้อมูลการบันทึก

19

metrics

ใช้เพื่อรวบรวมเมตริกเช่นการนับระยะเวลาในแต่ละเหตุการณ์

20

multiline

นอกจากนี้ยังเป็นหนึ่งในปลั๊กอินตัวกรองที่ใช้กันทั่วไปซึ่งช่วยผู้ใช้ในกรณีที่ต้องแปลงข้อมูลการบันทึกหลายบรรทัดเป็นเหตุการณ์เดียว

21

mutate

ปลั๊กอินนี้ใช้เพื่อเปลี่ยนชื่อลบแทนที่และแก้ไขฟิลด์ในกิจกรรมของคุณ

22

range

ใช้เพื่อตรวจสอบค่าตัวเลขของฟิลด์ในเหตุการณ์เทียบกับช่วงที่คาดหวังและความยาวของสตริงภายในช่วง

23

ruby

ใช้เพื่อเรียกใช้รหัส Ruby โดยพลการ

24

sleep

สิ่งนี้ทำให้ Logstash เข้าสู่โหมดสลีปตามระยะเวลาที่กำหนด

25

split

ใช้เพื่อแบ่งเขตข้อมูลของเหตุการณ์และวางค่าการแบ่งทั้งหมดในโคลนของเหตุการณ์นั้น

26

xml

ใช้เพื่อสร้างเหตุการณ์โดยการแยกข้อมูล XML ที่มีอยู่ในบันทึก

ปลั๊กอิน Codec

Codec Plugins สามารถเป็นส่วนหนึ่งของปลั๊กอินอินพุตหรือเอาต์พุต ปลั๊กอินเหล่านี้ใช้เพื่อเปลี่ยนหรือจัดรูปแบบการนำเสนอข้อมูลการบันทึก Logstash มีปลั๊กอินตัวแปลงสัญญาณหลายตัวและมีดังต่อไปนี้ -

ซีเนียร์ ชื่อปลั๊กอินและคำอธิบาย
1

avro

ปลั๊กอินนี้เข้ารหัสเหตุการณ์ Logstash ให้เป็นอนุกรมเพื่อ avro datums หรือถอดรหัสบันทึก avro เป็นเหตุการณ์ Logstash

2

cloudfront

ปลั๊กอินนี้อ่านข้อมูลที่เข้ารหัสจาก AWS cloudfront

3

cloudtrail

ปลั๊กอินนี้ใช้เพื่ออ่านข้อมูลจาก AWS cloudtrail

4

collectd

สิ่งนี้อ่านข้อมูลจากโปรโตคอลไบนารีที่เรียกว่ารวบรวมผ่าน UDP

5

compress_spooler

ใช้เพื่อบีบอัดเหตุการณ์บันทึกใน Logstash เป็นสพูลแบตช์

6

dots

ใช้การติดตามประสิทธิภาพโดยกำหนดจุดสำหรับทุกเหตุการณ์เป็น stdout

7

es_bulk

ใช้เพื่อแปลงข้อมูลจำนวนมากจาก Elasticsearch เป็นเหตุการณ์ Logstash รวมถึงข้อมูลเมตาของ Elasticsearch

8

graphite

ตัวแปลงสัญญาณนี้อ่านข้อมูลจากกราไฟท์เป็นเหตุการณ์และเปลี่ยนเหตุการณ์เป็นบันทึกที่จัดรูปแบบกราไฟท์

9

gzip_lines

ปลั๊กอินนี้ใช้เพื่อจัดการข้อมูลที่เข้ารหัส gzip

10

json

ใช้เพื่อแปลงองค์ประกอบเดียวในอาร์เรย์ Json เป็นเหตุการณ์ Logstash เดียว

11

json_lines

ใช้เพื่อจัดการกับข้อมูล Json ด้วยตัวคั่นขึ้นบรรทัดใหม่

12

line

ปลั๊กอินจะอ่านและเขียนเหตุการณ์ในการถ่ายทอดสดครั้งเดียวนั่นหมายความว่าหลังจากตัวคั่นขึ้นบรรทัดใหม่จะมีเหตุการณ์ใหม่

13

multiline

ใช้เพื่อแปลงข้อมูลการบันทึกหลายบรรทัดให้เป็นเหตุการณ์เดียว

14

netflow

ปลั๊กอินนี้ใช้เพื่อแปลงข้อมูล nertflow v5 / v9 เป็นเหตุการณ์ logstash

15

nmap

มันแยกวิเคราะห์ข้อมูลผลลัพธ์ nmap เป็นรูปแบบ XML

16

plain

สิ่งนี้อ่านข้อความโดยไม่มีตัวคั่น

17

rubydebug

ปลั๊กอินนี้จะเขียนเหตุการณ์ Logstash เอาต์พุตโดยใช้ไลบรารีการพิมพ์ Ruby awesome

สร้างปลั๊กอินของคุณเอง

คุณยังสามารถสร้าง Plugins ของคุณเองใน Logstash ซึ่งเหมาะกับความต้องการของคุณ ยูทิลิตี้ Logstash-plugin ใช้เพื่อสร้างปลั๊กอินแบบกำหนดเอง ที่นี่เราจะสร้างปลั๊กอินตัวกรองซึ่งจะเพิ่มข้อความที่กำหนดเองในเหตุการณ์

สร้างโครงสร้างพื้นฐาน

ผู้ใช้สามารถสร้างไฟล์ที่จำเป็นได้โดยใช้อ็อพชันการสร้างของยูทิลิตี้ logstash-plugin หรือยังมีอยู่ใน GitHub

>logstash-plugin generate --type filter --name myfilter --path c:/tpwork/logstash/lib

ที่นี่ typeตัวเลือกใช้เพื่อระบุปลั๊กอินคืออินพุตเอาต์พุตหรือตัวกรอง ในตัวอย่างนี้เรากำลังสร้างปลั๊กอินตัวกรองชื่อmyfilter. อ็อพชันพา ธ ถูกใช้เพื่อระบุพา ธ ที่คุณต้องการสร้างไดเร็กทอรีปลั๊กอินของคุณ หลังจากดำเนินการคำสั่งดังกล่าวข้างต้นคุณจะเห็นว่าโครงสร้างไดเร็กทอรีถูกสร้างขึ้น

พัฒนาปลั๊กอิน

คุณสามารถค้นหาไฟล์โค้ดของปลั๊กอินได้ในไฟล์ \lib\logstash\filtersโฟลเดอร์ในไดเร็กทอรีปลั๊กอิน นามสกุลไฟล์จะเป็น.rb.

ในกรณีของเราไฟล์รหัสอยู่ในเส้นทางต่อไปนี้ -

C:\tpwork\logstash\lib\logstash-filter-myfilter\lib\logstash\filters\myfilter.rb

เราเปลี่ยนข้อความเป็น - ค่าเริ่มต้น⇒ "สวัสดีคุณกำลังเรียนรู้สิ่งนี้บน tutorialspoint.com" และบันทึกไฟล์

ติดตั้งปลั๊กอิน

ในการติดตั้งปลั๊กอินนี้จำเป็นต้องแก้ไข Gemfile ของ Logstash คุณจะพบไฟล์นี้ในไดเร็กทอรีการติดตั้งของ Logstash ในกรณีของเรามันจะอยู่ในC:\tpwork\logstash. แก้ไขไฟล์นี้โดยใช้โปรแกรมแก้ไขข้อความและเพิ่มข้อความต่อไปนี้

gem "logstash-filter-myfilter",:path => "C:/tpwork/logstash/lib/logstash-filter-myfilter"

ในคำสั่งด้านบนเราระบุชื่อของปลั๊กอินพร้อมกับตำแหน่งที่เราสามารถหาได้สำหรับการติดตั้ง จากนั้นเรียกใช้ยูทิลิตี้ Logstash-plugin เพื่อติดตั้งปลั๊กอินนี้

>logstash-plugin install --no-verify

การทดสอบ

ที่นี่เรากำลังเพิ่ม myfilter ในหนึ่งในตัวอย่างก่อนหน้านี้ -

logstash.conf

ไฟล์กำหนดค่า Logstash นี้มี myfilter ในส่วนตัวกรองหลังจากปลั๊กอินตัวกรอง grok

input {
   file {
      path => "C:/tpwork/logstash/bin/log/input1.log"
   } 
}
filter {
   grok {
      match => [
         "message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
            %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" ]
   }
   myfilter{}
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output1.log"
      codec => rubydebug
   }
}

Run logstash

เราสามารถเรียกใช้ Logstash โดยใช้คำสั่งต่อไปนี้

>logstash –f logsatsh.conf

input.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกการป้อนข้อมูล

INFO - 48566 - TRANSACTION_START - start

output.log

บล็อกรหัสต่อไปนี้แสดงข้อมูลบันทึกผลลัพธ์

{
   "path" => "C:/tpwork/logstash/bin/log/input.log",
   "@timestamp" => 2017-01-07T06:25:25.484Z,
   "loglevel" => "INFO",
   "logger" => "TRANSACTION_END",
   "@version" => "1",
   "host" => "Dell-PC",
   "label" => "end",
   "message" => "Hi, You are learning this on tutorialspoint.com",
   "taskid" => "48566",
   "tags" => []
}

เผยแพร่บน Logstash

นักพัฒนายังสามารถเผยแพร่ปลั๊กอินที่กำหนดเองของตนไปยัง Logstash ได้โดยการอัปโหลดบน github และทำตามขั้นตอนมาตรฐานที่กำหนดโดย บริษัท Elasticsearch

โปรดอ้างอิง URL ต่อไปนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเผยแพร่ -

https://www.elastic.co/guide/en/logstash/current/contributing-to-logstash.html

Logstash เสนอ API เพื่อตรวจสอบประสิทธิภาพ API การตรวจสอบเหล่านี้แยกเมตริกรันไทม์เกี่ยวกับ Logstash

Node Info API

API นี้ใช้เพื่อรับข้อมูลเกี่ยวกับโหนดของ Logstash ส่งคืนข้อมูลของ OS, Logstash pipeline และ JVM ในรูปแบบ JSON

คุณสามารถดึงข้อมูลโดยส่งไฟล์ get ร้องขอ Logstash โดยใช้ URL ต่อไปนี้ -

GET http://localhost:9600/_node?pretty

การตอบสนอง

ต่อไปนี้จะเป็นการตอบสนองของ Node Info API

{
   "host" : "Dell-PC",
   "version" : "5.0.1",
   "http_address" : "127.0.0.1:9600",
   
   "pipeline" : {
      "workers" : 4,
      "batch_size" : 125,
      "batch_delay" : 5,
      "config_reload_automatic" : false,
      "config_reload_interval" : 3
   },
   "os" : {
      "name" : "Windows 7",
      "arch" : "x86",
      "version" : "6.1",
      "available_processors" : 4
   },
   "jvm" : {
      "pid" : 312,
      "version" : "1.8.0_111",
      "vm_name" : "Java HotSpot(TM) Client VM",
      "vm_version" : "1.8.0_111",
      "vm_vendor" : "Oracle Corporation",
      "start_time_in_millis" : 1483770315412,
      
      "mem" : {
         "heap_init_in_bytes" : 16777216,
         "heap_max_in_bytes" : 1046937600,
         "non_heap_init_in_bytes" : 163840,
         "non_heap_max_in_bytes" : 0
      },
      "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ]
   }
}

คุณยังสามารถรับข้อมูลเฉพาะของ Pipeline, OS และ JVM ได้โดยเพียงแค่เพิ่มชื่อใน URL

GET http://localhost:9600/_node/os?pretty
GET http://localhost:9600/_node/pipeline?pretty
GET http://localhost:9600/_node/jvm?pretty

Plugins Info API

API นี้ใช้เพื่อรับข้อมูลเกี่ยวกับปลั๊กอินที่ติดตั้งใน Logstash คุณสามารถดึงข้อมูลนี้ได้โดยส่งคำขอ get ไปยัง URL ที่ระบุด้านล่าง -

GET http://localhost:9600/_node/plugins?pretty

การตอบสนอง

ต่อไปนี้จะเป็นการตอบสนองของ Plugins Info API

{
   "host" : "Dell-PC",
   "version" : "5.0.1",
   "http_address" : "127.0.0.1:9600",
   "total" : 95,
   "plugins" : [ {
      "name" : "logstash-codec-collectd",
      "version" : "3.0.2"
   },
   {
      "name" : "logstash-codec-dots",
      "version" : "3.0.2"
   },
   {
      "name" : "logstash-codec-edn",
      "version" : "3.0.2"
   },
   {
      "name" : "logstash-codec-edn_lines",
      "version" : "3.0.2"
   },
   ............
}

Node Stats API

API นี้ใช้เพื่อดึงข้อมูลสถิติของ Logstash (Memory, Process, JVM, Pipeline) ในออบเจ็กต์ JSON คุณสามารถดึงข้อมูลนี้ได้โดยส่งคำขอ get ไปยัง URLS ที่กล่าวถึงด้านล่าง -

GET http://localhost:9600/_node/stats/?pretty
GET http://localhost:9600/_node/stats/process?pretty
GET http://localhost:9600/_node/stats/jvm?pretty
GET http://localhost:9600/_node/stats/pipeline?pretty

Hot Threads API

API นี้ดึงข้อมูลเกี่ยวกับเธรดร้อนใน Logstash Hot threads คือเธรด java ซึ่งมีการใช้งาน CPU สูงและรันนานกว่าเวลาดำเนินการปกติ คุณสามารถดึงข้อมูลนี้ได้โดยส่งคำขอ get ไปยัง URL ที่ระบุด้านล่าง -

GET http://localhost:9600/_node/hot_threads?pretty

ผู้ใช้สามารถใช้ URL ต่อไปนี้เพื่อรับคำตอบในรูปแบบที่อ่านได้ง่ายขึ้น

GET http://localhost:9600/_node/hot_threads?human = true

ในบทนี้เราจะพูดถึงแง่มุมด้านความปลอดภัยและการตรวจสอบของ Logstash

การตรวจสอบ

Logstash เป็นเครื่องมือที่ดีมากในการตรวจสอบเซิร์ฟเวอร์และบริการในสภาพแวดล้อมการผลิต แอปพลิเคชันในสภาพแวดล้อมการผลิตจะสร้างข้อมูลบันทึกประเภทต่างๆเช่นบันทึกการเข้าถึงบันทึกข้อผิดพลาด ฯลฯ Logstash สามารถนับหรือวิเคราะห์จำนวนข้อผิดพลาดการเข้าถึงหรือเหตุการณ์อื่น ๆ โดยใช้ปลั๊กอินตัวกรอง การวิเคราะห์และการนับนี้สามารถใช้สำหรับการตรวจสอบเซิร์ฟเวอร์และบริการต่างๆ

Logstash มีปลั๊กอินเช่น HTTP Pollerเพื่อตรวจสอบการตรวจสอบสถานะเว็บไซต์ ที่นี่เรากำลังตรวจสอบเว็บไซต์ชื่อmysite โฮสต์บนเซิร์ฟเวอร์ Apache Tomcat ในเครื่อง

logstash.conf

ในไฟล์กำหนดค่านี้ปลั๊กอิน http_poller ถูกใช้เพื่อตีไซต์ที่ระบุในปลั๊กอินหลังจากช่วงเวลาที่ระบุในการตั้งค่าช่วงเวลา สุดท้ายจะเขียนสถานะของไซต์ไปยังเอาต์พุตมาตรฐาน

input {
   http_poller {
      urls => {
         site => "http://localhost:8080/mysite"
      }
      request_timeout => 20
      interval => 30
      metadata_target => "http_poller_metadata"
   }
}
output {
   if [http_poller_metadata][code] == 200 {
      stdout {
         codec => line{format => "%{http_poller_metadata[response_message]}"}
      }
   }
   if [http_poller_metadata][code] != 200 {
      stdout {
         codec => line{format => "down"}
      }
   }
}

เรียกใช้ logstash

เราสามารถเรียกใช้ Logstash ด้วยคำสั่งต่อไปนี้

>logstash –f logstash.conf

stdout

หากไซต์ขึ้นผลลัพธ์จะเป็น -

Ok

หากเราหยุดไซต์โดยใช้ไฟล์ Manager App ของ Tomcat ผลลัพธ์จะเปลี่ยนเป็น -

down

ความปลอดภัย

Logstash มีคุณสมบัติมากมายสำหรับการสื่อสารที่ปลอดภัยกับระบบภายนอกและรองรับกลไกการพิสูจน์ตัวตน ปลั๊กอิน Logstash ทั้งหมดรองรับการตรวจสอบและเข้ารหัสผ่านการเชื่อมต่อ HTTP

ความปลอดภัยด้วยโปรโตคอล HTTP

มีการตั้งค่าเช่นผู้ใช้และรหัสผ่านสำหรับวัตถุประสงค์ในการตรวจสอบสิทธิ์ในปลั๊กอินต่างๆที่ Logstash นำเสนอเช่นในปลั๊กอิน Elasticsearch

elasticsearch {
   user => <username>
   password => <password>
}

การรับรองความถูกต้องอื่น ๆ คือ PKI (public key infrastructure)สำหรับ Elasticsearch นักพัฒนาจำเป็นต้องกำหนดการตั้งค่าสองรายการในปลั๊กอินเอาต์พุต Elasticsearch เพื่อเปิดใช้งานการพิสูจน์ตัวตน PKI

elasticsearch {
   keystore => <string_value>
   keystore_password => <password>
}

ในโปรโตคอล HTTPS นักพัฒนาสามารถใช้ใบรับรองของผู้มีอำนาจสำหรับ SSL / TLS

elasticsearch {
   ssl => true
   cacert => <path to .pem file>
}

ความปลอดภัยด้วย Transport Protocol

ในการใช้โปรโตคอลการขนส่งกับ Elasticsearch ผู้ใช้ต้องตั้งค่าโปรโตคอลเพื่อขนส่ง สิ่งนี้จะหลีกเลี่ยงการยกเลิกการจัดเรียงอ็อบเจ็กต์ JSON และนำไปสู่ประสิทธิภาพที่มากขึ้น

การพิสูจน์ตัวตนพื้นฐานเหมือนกับที่ดำเนินการในโปรโตคอล http ในโปรโตคอลเอาต์พุต Elasticsearch

elasticsearch {
   protocol => “transport”
   user => <username>
   password => <password>
}

การพิสูจน์ตัวตน PKI ยังต้องการให้ชุด SSL เป็นจริงกับการตั้งค่าอื่น ๆ ในโปรโตคอลเอาต์พุต Elasticsearch -

elasticsearch {
   protocol => “transport”
   ssl => true
   keystore => <string_value>
   keystore_password => <password>
}

สุดท้ายการรักษาความปลอดภัย SSL ต้องการการตั้งค่าเล็กน้อยมากกว่าวิธีการรักษาความปลอดภัยอื่น ๆ ในการสื่อสาร

elasticsearch {
   ssl => true
   ssl => true
   keystore => <string_value>
   keystore_password => <password>
   truststore => 
      
        truststore_password => <password> } 
      

ประโยชน์ด้านความปลอดภัยอื่น ๆ จาก Logstash

Logstash สามารถช่วยป้อนแหล่งที่มาของระบบเพื่อป้องกันการโจมตีเช่นการปฏิเสธการโจมตีบริการ การตรวจสอบบันทึกและการวิเคราะห์เหตุการณ์ต่างๆในบันทึกเหล่านั้นสามารถช่วยให้ผู้ดูแลระบบตรวจสอบการเปลี่ยนแปลงในการเชื่อมต่อขาเข้าและข้อผิดพลาด การวิเคราะห์เหล่านี้สามารถช่วยดูว่าการโจมตีกำลังเกิดขึ้นหรือกำลังจะเกิดขึ้นบนเซิร์ฟเวอร์

ผลิตภัณฑ์อื่น ๆ ของ บริษัท Elasticsearch เช่น x-pack และ filebeat มีฟังก์ชันบางอย่างเพื่อสื่อสารอย่างปลอดภัยกับ Logstash