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