SaltStack - การบันทึก
การบันทึกใช้เพื่อติดตามเหตุการณ์ซอฟต์แวร์ที่กำลังทำงานอยู่ เหตุการณ์ถูกอธิบายโดยข้อความอธิบายซึ่งอาจมีข้อมูลตัวแปรก็ได้ วิธีการบันทึกเกลือใช้เพื่อแก้ไขปัญหาใด ๆ ที่คุณอาจประสบ คุณสามารถตรวจสอบกับระดับการบันทึกที่เฉพาะเจาะจง
การตั้งค่าการกำหนดค่า
ให้เราเข้าใจการตั้งค่าการกำหนดค่าต่างๆสำหรับการบันทึกโดยละเอียด
LOG_FILE
บันทึกข้อมูลเกลือจะถูกส่งผ่านไฟล์ซึ่งมีชื่อพา ธ ภายในเครื่องหรือตำแหน่งเครือข่ายเพื่อระบุตัวตน ไฟล์นี้ถือเป็นล็อกไฟล์
log_file: /var/log/salt/master
ที่นี่ไฟล์ขึ้นอยู่กับไบนารีที่ดำเนินการในต้นแบบ ในทำนองเดียวกันคุณสามารถใช้งานใน minion ได้เช่นกันซึ่งแสดงไว้ด้านล่าง
log_file: /var/log/salt/minion
คุณยังสามารถใช้ที่อยู่ระยะไกล ไวยากรณ์สำหรับการใช้ที่อยู่ระยะไกลคือ - <file | udp | tcp>: // <host | socketpath>: <port-if-required> / <log-facility>
log_file: udp://loghost:port
ที่นี่ Log-facility มีค่าเริ่มต้นเป็น LOG_USER
LOG_LEVEL
ระดับการบันทึกจะเรียงลำดับตามค่าที่กำหนดเป็นตัวเลข ไลบรารี Python ได้กำหนดระดับการบันทึกส่วนใหญ่ตามค่าเริ่มต้น นอกจากนั้น Salt ยังใช้ระดับอื่น ๆ อีก บางระดับมีคำอธิบายด้านล่าง
log_level: error; level value is 40 - ระบุว่าบันทึกคำสั่งบันทึกที่มีข้อผิดพลาด
log_level: quiet; level value is 1000 - บ่งชี้ว่าไม่ควรบันทึกสิ่งใดในระดับนี้
log_level: info; level value is 20 - ระบุข้อมูลบันทึกปกติ
log_level: warn; level value is 30 - ระบุบันทึกคำสั่งบันทึกเมื่อมีการเตือน
log_level: debug; level value is 10 - ข้อมูลที่เป็นประโยชน์สำหรับการดีบักทั้งการใช้เกลือและรหัสเกลือ
log_level: trace; level value is 5 - ข้อมูลการดีบักโค้ดโดยละเอียดเพิ่มเติม
LOG_LEVEL_LOGFILE
กำหนดระดับของข้อความที่จะส่งไปยังล็อกไฟล์
log_level_logfile: info
LOG_DATEFMT
กำหนดรูปแบบวันที่บันทึก โดยค่าเริ่มต้นจะแสดงเป็น% Y-% m-% d% H:% M:% S
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
LOG_FMT_CONSOLE
กำหนดรูปแบบของคอนโซลที่บันทึกข้อความ เกลือใช้แบบกำหนดเองLogRecordแอตทริบิวต์เพื่อปรับสีเอาต์พุตบันทึกของคอนโซล เป็นไปตามไวยากรณ์ต่อไปนี้ -
'%(colorlevel)s' # log level name colorized by level
'%(colorname)s' # colorized module name
'%(colorprocess)s' # colorized process number
'%(colormsg)s' # colorized messages name
LOG_FMT_LOGFILE
เป็นการกำหนดรูปแบบของไฟล์บันทึกที่บันทึกข้อความ ไวยากรณ์พื้นฐานมีดังนี้ -
%(asctime)s,%(msecs)03d [%(name)-17s][%(levelname)-8s] %(message)s
LOG_GRANULAR_LEVELS
ระดับนี้ใช้เพื่อควบคุมระดับการบันทึกโดยเฉพาะมากขึ้น
log_granular_levels:
'salt': 'info'
'salt.modules': ‘trace'
ที่นี่ไลบรารีเกลือหลักที่ระดับ 'ข้อมูล' จะตั้งค่าไฟล์ salt.modules เพื่อบันทึกที่ระดับการติดตาม
ตัวจัดการบันทึกภายนอก
Salt ใช้ตัวจัดการบันทึกภายนอก LogStash และ Sentry สำหรับการบันทึก ให้เราเข้าใจโดยละเอียดในบทนี้
ตัวจัดการ LOGSTASH
LogStash เป็นโอเพ่นซอร์ส ไปป์ไลน์การประมวลผลข้อมูลที่ปลอดภัยฝั่งเซิร์ฟเวอร์ ให้เราพิจารณาตัวจัดการการบันทึก UDP แบบง่ายๆใน Salt ที่ใช้ LogStash
ระบุการเปลี่ยนแปลงต่อไปนี้ในไฟล์ Salt master -
logstash_udp_handler:
host: 127.0.0.1
port: 9999
version: 1
msg_type: logstash
จากนั้นเพิ่มการเปลี่ยนแปลงในไฟล์กำหนดค่า Logstash -
input {
udp {
port ⇒ 9999
codec ⇒ json
}
}
ที่นี่ UDP - คืออินพุตที่ต้องมีรูปแบบเป็น json_eventซึ่งเป็นสิ่งที่เราส่งผ่านสาย
SENTRY Logging Handler
Sentry คือการติดตามข้อผิดพลาดแบบเรียลไทม์ในการปรับใช้การผลิตและข้อมูลในการสร้างซ้ำและแก้ไขข้อขัดข้อง การกำหนดค่าเริ่มต้นในไฟล์หลักถูกกำหนดไว้ด้านล่าง
sentry_handler:
dsn: https://pub-key:[email protected]/app-id
log_level: debug
ที่นี่ระดับการบันทึกเริ่มต้นสำหรับตัวจัดการยามคือ ERROR แต่เรากำหนดการดีบัก log_level ภายใต้คีย์การกำหนดค่า sentry_handler