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 สตรีมมิ่ง 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 | ใช้เพื่อส่งอีเมลแจ้งเตือนเมื่อสร้างผลลัพธ์ ผู้ใช้สามารถเพิ่มข้อมูลเกี่ยวกับผลลัพธ์ในอีเมล |
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