สวัสดี ฉันชื่อยูจีน ฉันเป็นหัวหน้าทีม B2B ที่ Citymobil หนึ่งในภารกิจของทีมของเราคือการสนับสนุนการผสานรวมสำหรับการสั่งซื้อรถแท็กซี่จากพันธมิตร และเพื่อให้แน่ใจว่าบริการมีความเสถียร เราต้องเข้าใจสิ่งที่เกิดขึ้นในไมโครเซอร์วิสของเราอยู่เสมอ และสำหรับสิ่งนี้คุณต้องตรวจสอบบันทึกอย่างต่อเนื่อง
ใน Citymobil เราใช้ ELK stack (ElasticSearch, Logstash, Kibana) เพื่อทำงานกับบันทึก และจำนวนข้อมูลที่เข้ามามีจำนวนมาก การค้นหาปัญหาในคำขอจำนวนมากที่อาจปรากฏขึ้นหลังจากการปรับใช้โค้ดใหม่นั้นค่อนข้างยาก และเพื่อการระบุด้วยภาพ Kibana มีส่วนแดชบอร์ด
มีบทความสองสามบทความเกี่ยวกับ Habré พร้อมตัวอย่างวิธีตั้งค่า ELK stack เพื่อรับและจัดเก็บข้อมูล แต่ไม่มีเนื้อหาที่เกี่ยวข้องในการสร้างแดชบอร์ด ดังนั้นฉันต้องการแสดงวิธีสร้างการแสดงข้อมูลด้วยภาพตามบันทึกขาเข้าใน Kibana
การตั้งค่า
เพื่อให้ชัดเจนยิ่งขึ้น ฉันสร้างอิมเมจ Docker ด้วย ELK และ Filebeat และวางในภาชนะเล็กๆ
โคลนที่เก็บการกำหนดค่า docker-compose
และการตั้งค่า ELK และเปิดใช้งานด้วยคำสั่ง docker-compose up
. ตั้งใจไม่เพิ่มคีย์ -d
เพื่อดูความคืบหน้าของ ELK stack
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
หากทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง เราจะเห็นรายการในบันทึก (อาจไม่ใช่ในทันที กระบวนการเปิดใช้คอนเทนเนอร์ที่มีสแต็กทั้งหมดอาจใช้เวลาหลายนาที):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
ตามที่อยู่ localhost:5061
Kibana ควรเปิด
สิ่งเดียวที่เราต้องกำหนดค่าคือสร้างรูปแบบดัชนีสำหรับ Kibana พร้อมข้อมูลเกี่ยวกับข้อมูลที่จะแสดง ในการดำเนินการนี้ เราจะดำเนินการตามคำขอของ curl หรือดำเนินการต่างๆ ในส่วนติดต่อแบบกราฟิก
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
การสร้างรูปแบบดัชนีผ่าน GUI
ในการกำหนดค่า ให้เลือกส่วน Discover ในเมนูด้านซ้าย และไปที่หน้าการสร้างรูปแบบดัชนี
เมื่อคลิกที่ปุ่ม "สร้างรูปแบบดัชนี" เราจะไปที่หน้าการสร้างดัชนี ในฟิลด์ "ชื่อรูปแบบดัชนี" ให้ป้อน "logstash-*" หากกำหนดค่าทุกอย่างถูกต้อง ด้านล่าง Kibana จะแสดงดัชนีที่อยู่ภายใต้กฎ
ในหน้าถัดไป เลือกฟิลด์คีย์ที่มีการประทับเวลา ในกรณีของเราคือ @timestamp
.
การดำเนินการนี้จะแสดงหน้าการตั้งค่าดัชนี แต่เราไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติมในขณะนี้
ตอนนี้เราสามารถไปที่ส่วน Discover อีกครั้ง ซึ่งเราจะเห็นรายการบันทึก
Dashboard
ในเมนูด้านซ้าย คลิกที่ส่วนการสร้างแดชบอร์ดและไปที่หน้าที่เกี่ยวข้อง
คลิกที่ "สร้างแดชบอร์ดใหม่" และไปที่หน้าสำหรับเพิ่มวัตถุในแดชบอร์ด
คลิกที่ปุ่ม "สร้างใหม่" จากนั้นระบบจะแจ้งให้คุณเลือกประเภทการแสดงข้อมูล Kibana มีจำนวนมาก แต่เราจะดูที่การสร้างการแสดงกราฟิกของ "แถบแนวตั้ง" และ "ตารางข้อมูล" แบบตาราง งานนำเสนอประเภทอื่นได้รับการกำหนดค่าในลักษณะเดียวกัน
ออบเจ็กต์ที่มีอยู่บางรายการจะมีป้ายกำกับว่า B และ E ซึ่งหมายความว่ารูปแบบนี้เป็นรูปแบบทดลองหรืออยู่ในการทดสอบเบต้า เมื่อเวลาผ่านไป รูปแบบอาจเปลี่ยนหรือหายไปจาก Kibana โดยสิ้นเชิง
แถบแนวตั้ง
สำหรับตัวอย่าง "แถบแนวตั้ง" ลองสร้างฮิสโตแกรมของอัตราส่วนของสถานะการตอบสนองที่สำเร็จและไม่สำเร็จของบริการของเรา ในตอนท้ายของการตั้งค่า เราจะได้กราฟต่อไปนี้:
เราจะจำแนกคำขอทั้งหมดที่มีสถานะการตอบกลับ < 400 เป็นสำเร็จ และ >= 400 เป็นปัญหา
ในการสร้างแผนภูมิ "แถบแนวตั้ง" เราจำเป็นต้องเลือกแหล่งข้อมูล เลือก Index Pattern ที่เราสร้างไว้ก่อนหน้านี้
ตามค่าเริ่มต้น กราฟทึบเดียวจะปรากฏขึ้นหลังจากเลือกแหล่งข้อมูล มาตั้งค่ากันเถอะ
ในบล็อก "ที่เก็บข้อมูล" ให้กดปุ่ม "เพิ่ม" เลือก "X-asis" และตั้งค่าแกน X เรามาแยกการประทับเวลาของรายการในบันทึกไปพร้อมๆ กัน ในฟิลด์ "การรวม" เลือก "ฮิสโตแกรมวันที่" และในฟิลด์ "ฟิลด์" เลือก "@timestamp" เพื่อระบุฟิลด์เวลา ปล่อยให้ "ช่วงเวลาต่ำสุด" อยู่ในสถานะ "อัตโนมัติ" แล้วมันจะปรับให้เข้ากับการแสดงผลของเราโดยอัตโนมัติ
เมื่อคลิกที่ปุ่ม "อัปเดต" เราจะเห็นกราฟที่มีจำนวนคำขอทุกๆ 30 วินาที
ตอนนี้มาตั้งค่าคอลัมน์ตามแกน Y กัน ตอนนี้เรากำลังแสดงจำนวนคำขอทั้งหมดในช่วงเวลาที่เลือก
ลองเปลี่ยนค่า "การรวม" เป็น "Sum Bucket" ซึ่งจะช่วยให้เรารวมข้อมูลสำหรับคำขอที่สำเร็จและไม่สำเร็จได้ ในบล็อก Bucket -> Aggregation เลือกการรวมโดย "ตัวกรอง" และตั้งค่าการกรองโดย "statusCode >= 400" และในฟิลด์ "ป้ายกำกับที่กำหนดเอง" เราระบุชื่อตัวบ่งชี้ของเราเพื่อให้เข้าใจได้ง่ายขึ้นในคำอธิบายแผนภูมิและในรายการทั่วไป
เมื่อคลิกปุ่ม "อัปเดต" ใต้บล็อกการตั้งค่า เราจะได้รับกราฟพร้อมคำขอปัญหา
หากคุณคลิกที่วงกลมถัดจากคำอธิบาย หน้าต่างจะปรากฏขึ้นซึ่งคุณสามารถเปลี่ยนสีของคอลัมน์ได้
ตอนนี้มาเพิ่มข้อมูลเกี่ยวกับคำขอที่สำเร็จลงในแผนภูมิ ในส่วน "ตัวชี้วัด" คลิกปุ่ม "เพิ่ม" และเลือก "แกน Y"
ในเมตริกที่สร้างขึ้น เราทำการตั้งค่าเดียวกันกับคำขอที่ผิดพลาด เฉพาะในตัวกรองที่เราระบุ "รหัสสถานะ < 400"
ด้วยการเปลี่ยนสีของคอลัมน์ใหม่ เราจะแสดงอัตราส่วนของคำขอที่มีปัญหาและคำขอที่สำเร็จ
เมื่อคลิกปุ่ม "บันทึก" ที่ด้านบนของหน้าจอและระบุชื่อ เราจะเห็นแผนภูมิแรกบนแดชบอร์ด
ตารางข้อมูล
ตอนนี้พิจารณามุมมองแบบตาราง "ตารางข้อมูล" มาสร้างตารางที่มีรายการ URL ทั้งหมดที่ได้รับการร้องขอและจำนวนคำขอเหล่านั้น เช่นเดียวกับตัวอย่างแถบแนวตั้ง เราจะเลือกแหล่งข้อมูลก่อน
หลังจากนั้น หน้าจอจะแสดงตารางที่มีหนึ่งคอลัมน์ซึ่งแสดงจำนวนคำขอทั้งหมดสำหรับช่วงเวลาที่เลือก
เราจะเปลี่ยนบล็อก "ถัง" เท่านั้น คลิกปุ่ม "เพิ่ม" และเลือก "แยกแถว"
ในฟิลด์ "การรวม" เลือก "ข้อกำหนด" และในช่องที่ปรากฏ "ฟิลด์" เลือก "url.keyword"
เมื่อระบุค่า "Url" ในช่อง "ป้ายกำกับที่กำหนดเอง" แล้วคลิก "อัปเดต" เราจะได้ตารางที่ต้องการพร้อมจำนวนคำขอสำหรับแต่ละ URL สำหรับช่วงเวลาที่เลือก
ที่ด้านบนของหน้าจอ คลิกปุ่ม "บันทึก" อีกครั้ง และระบุชื่อตาราง เช่น URL กลับไปที่แดชบอร์ดและดูทั้งสองมุมมองที่สร้างขึ้น
การทำงานกับแดชบอร์ด
เมื่อสร้างแดชบอร์ด เราจะตั้งค่าเฉพาะพารามิเตอร์มุมมองหลักในการตั้งค่าวัตถุที่แสดง มันไม่มีเหตุผลที่จะระบุข้อมูลสำหรับตัวกรองในออบเจ็กต์ ตัวอย่างเช่น "ช่วงวันที่" "การกรองตาม useragent" "การกรองตามประเทศที่ร้องขอ" เป็นต้น สะดวกกว่ามากในการระบุช่วงเวลาที่ต้องการหรือตั้งค่าการกรองที่จำเป็นในแผงแบบสอบถามซึ่งอยู่เหนือวัตถุ
ตัวกรองที่เพิ่มในแผงนี้จะนำไปใช้กับแดชบอร์ดทั้งหมด และวัตถุที่แสดงทั้งหมดจะถูกสร้างขึ้นใหม่ตามข้อมูลที่กรองจริง
ข้อสรุป
Kibana เป็นเครื่องมืออันทรงพลังที่ช่วยให้คุณเห็นภาพข้อมูลใดๆ ได้อย่างสะดวก ฉันพยายามแสดงการตั้งค่าของจอแสดงผลหลักสองประเภท แต่ประเภทอื่นมีการกำหนดค่าในลักษณะเดียวกัน และการตั้งค่ามากมายที่ฉันทิ้งไว้ "เบื้องหลัง" จะช่วยให้คุณปรับแต่งแผนภูมิได้อย่างยืดหยุ่นมากเพื่อให้เหมาะกับความต้องการของคุณ
ที่มา: will.com