นโยบาย MessageLogging

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

อะไร

วิธีที่ดีที่สุดวิธีหนึ่งในการติดตามปัญหาในสภาพแวดล้อมรันไทม์ของ API คือการบันทึกข้อความ คุณสามารถแนบและกำหนดค่านโยบาย MessageLogging ใน API เพื่อบันทึกข้อความที่กำหนดเองไปยัง ดิสก์ในเครื่อง (Edge สำหรับ Private Cloud เท่านั้น) หรือไปยัง Syslog

ตัวอย่าง

Syslog

<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
    <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat>
  </Syslog>
  <logLevel>ALERT</logLevel>
</MessageLogging>

การใช้งานประเภทนโยบาย MessageLogging ที่พบบ่อยคือการบันทึกไปยังบัญชี Syslog เมื่อกำหนดค่าสำหรับ Syslog พร็อกซี API จะส่งต่อข้อความบันทึกจาก Apigee Edge ไปยังเซิร์ฟเวอร์ Syslog ระยะไกล คุณต้องมีเซิร์ฟเวอร์ Syslog พร้อมใช้งานอยู่แล้ว หากไม่มี คุณสามารถใช้บริการจัดการบันทึกสาธารณะ เช่น Splunk, Sumo Logic และ Loggly ดูการกำหนดค่าบริการจัดการบันทึกของบุคคลที่สาม

เช่น สมมติว่าคุณต้องบันทึกข้อมูลเกี่ยวกับข้อความคำขอแต่ละรายการที่ API ได้รับจากแอปสำหรับผู้บริโภค ค่า 3f509b58 แสดงค่าคีย์ ที่เฉพาะเจาะจงสำหรับบริการ Loggly หากมีบัญชี Loggly ให้แทนที่คีย์ Loggly ข้อความในบันทึกที่สร้างขึ้นจะมีค่า 4 ค่า ได้แก่ องค์กร พร็อกซี API และชื่อสภาพแวดล้อมที่เชื่อมโยงกับธุรกรรม รวมถึงค่าสำหรับพารามิเตอร์การค้นหาในข้อความคำขอ

หากมีการติดตั้งใช้งาน Edge สำหรับ Private Cloud คุณจะเขียนข้อความบันทึกลงในไฟล์ได้ด้วย

Syslog ผ่าน TLS/SSL

<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>6514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
    <SSLInfo>
        <Enabled>true</Enabled>
    </SSLInfo>
    <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat>
  </Syslog>
  <logLevel>WARN</logLevel>
</MessageLogging>

คุณสามารถส่งข้อความไปยังผู้ให้บริการบันทึกข้อความของบุคคลที่สามผ่าน TLS/SSL ได้โดยเพิ่ม <SSLInfo>

การหมุนเวียนไฟล์: ขนาด

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
      <FileName>test.log</FileName>
      <FileRotationOptions rotateFileOnStartup="true">
        <FileRotationType>SIZE</FileRotationType>
        <MaxFileSizeInMB>10</MaxFileSizeInMB>
        <MaxFilesToRetain>10</MaxFilesToRetain>
      </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

การหมุนเวียนไฟล์ตามขนาดไฟล์

การหมุนเวียนไฟล์: เวลา

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
    <FileName>test.log</FileName>
    <FileRotationOptions rotateFileOnStartup="true">
      <FileRotationType>TIME</FileRotationType>
      <RotationFrequency unit="minute">10</RotationFrequency>
      <MaxFilesToRetain>10</MaxFilesToRetain>
    </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

การหมุนเวียนไฟล์ตามเวลา

การหมุนเวียนไฟล์: เวลาและขนาด

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
    <FileName>test.log</FileName>
    <FileRotationOptions rotateFileOnStartup="true">
      <FileRotationType>TIME_SIZE</FileRotationType>
      <MaxFileSizeInMB>10</MaxFileSizeInMB>
      <MaxFilesToRetain>10</MaxFilesToRetain>
      <RotationFrequency unit="minute">10</RotationFrequency>
    </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

การหมุนเวียนไฟล์ตามเวลาและขนาด

เปิดใช้สตรีม

<MessageLogging name="LogPolicy">
  <File>
  ....
  ....
  </File>
  <BufferMessage>true</BufferMessage>
</MessageLogging>

การบันทึกข้อความที่เปิดใช้สตรีม


การอ้างอิงองค์ประกอบ

ใช้องค์ประกอบต่อไปนี้เพื่อกำหนดค่านโยบายประเภท MessageLogging

ชื่อช่อง คำอธิบายของช่อง

File

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

Message สร้างข้อความที่จะส่งไปยังไฟล์บันทึก โดยรวม ข้อความกับตัวแปรเพื่อบันทึกข้อมูลที่ต้องการ ดูตัวอย่าง
FileName ชื่อฐานของไฟล์บันทึก อย่าระบุเส้นทางไฟล์ เช่น องค์ประกอบ FileName นี้ระบุเส้นทางไฟล์และ ไม่ถูกต้อง
<FileName>/opt/apigee/var/log/messages/mylog.log</FileName>

โค้ดนี้ระบุเฉพาะชื่อไฟล์และใช้ได้

<FileName>mylog.log</FileName>

ดูข้อมูลเกี่ยวกับตำแหน่งที่จัดเก็บไฟล์ได้ที่ตำแหน่งไฟล์บันทึก ใน Edge สำหรับ Private Cloud

FileRotationOptions
rotateFileOnStartup

แอตทริบิวต์ ค่าที่ถูกต้อง: true/false

หากตั้งค่าเป็น "จริง" ระบบจะหมุนเวียนไฟล์บันทึกทุกครั้งที่เครื่องมือรับส่งข้อความ รีสตาร์ท

FileRotationType ระบุนโยบายการหมุนเวียน (size หรือ time) ของไฟล์บันทึก
MaxFileSizeInMB (เมื่อเลือก size เป็นประเภทการหมุนเวียน) ระบุขนาดของไฟล์บันทึกที่ทําให้เซิร์ฟเวอร์ย้ายข้อความบันทึกไปยัง ไฟล์แยกต่างหาก หลังจากไฟล์บันทึกมีขนาดถึงขนาดที่ระบุ เซิร์ฟเวอร์จะเปลี่ยนชื่อ ไฟล์บันทึกปัจจุบัน
RotationFrequency (เมื่อเลือก time เป็นประเภทการหมุนเวียน) ระบุเวลาเป็นนาทีที่จะทริกเกอร์ให้เซิร์ฟเวอร์ย้ายข้อความบันทึกไปยังไฟล์แยกต่างหาก หลังจากช่วงเวลาที่ระบุผ่านไป ระบบจะเปลี่ยนชื่อไฟล์บันทึกปัจจุบัน
MaxFilesToRetain

ระบุจำนวนไฟล์สูงสุดที่จะเก็บไว้ในบริบทของการตั้งค่าการหมุนเวียน ค่าเริ่มต้นคือ 8

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

BufferMessage

หากเปิดใช้การสตรีม HTTP สำหรับพร็อกซี ระบบจะไม่บัฟเฟอร์ข้อความคำขอ/การตอบกลับ หากต้องการ บันทึกเนื้อหาที่ต้องแยกวิเคราะห์ข้อความโฟลว์ ให้ตั้งค่า BufferMessage เป็น true ดูตัวอย่างได้ที่แท็บตัวอย่าง "เปิดใช้สตรีม" ค่าเริ่มต้น: เท็จ

Syslog

ปลายทาง Syslog หากต้องการส่ง Syslog ไปยัง Splunk, Sumo Logic หรือ Loggly โปรดดูการกำหนดค่าบริการจัดการบันทึกของบุคคลที่สาม

Message

สร้างข้อความที่จะส่งไปยัง Syslog โดยรวมข้อความกับตัวแปรเพื่อบันทึก ข้อมูลที่ต้องการ ดูตัวอย่าง

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

Host ชื่อโฮสต์หรือที่อยู่ IP ของเซิร์ฟเวอร์ที่ควรส่ง Syslog ไป หากไม่ระบุองค์ประกอบนี้ ค่าเริ่มต้นจะเป็น localhost
Port พอร์ตที่ Syslog ทำงานอยู่ หากไม่ได้ระบุองค์ประกอบนี้ ค่าเริ่มต้นจะเป็น 514
Protocol TCP หรือ UDP (ค่าเริ่มต้น) แม้ว่า UDP จะมีประสิทธิภาพมากกว่า แต่โปรโตคอล TCP จะรับประกันการนำส่งบันทึกข้อความไปยังเซิร์ฟเวอร์ Syslog หากต้องการส่งข้อความ syslog ผ่าน TLS/SSL ระบบจะรองรับเฉพาะ TCP
FormatMessage

true หรือ false (ค่าเริ่มต้น)

ไม่บังคับ แต่ต้องระบุ <FormatMessage>true</FormatMessage> เพื่อใช้กับ Loggly

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

<14>1 2023-03-20T09:24:39.039+0000 e49cd3a9-4cf6-48a7-abb9-7ftfe4d97d00 Apigee-Edge - - - Message starts here

ข้อมูลที่ Apigee สร้างขึ้นประกอบด้วย

  • <14> - คะแนนลำดับความสำคัญ (ดูโปรโตคอล Syslog) ตาม ระดับบันทึกและระดับสิ่งอำนวยความสะดวกของข้อความ
  • 1 - เวอร์ชัน Syslog ปัจจุบัน
  • วันที่ที่มีค่าชดเชยเวลา UTC (UTC = +0000)
  • UUID ของ Message Processor
  • "Apigee-Edge - - - "

หากตั้งค่าเป็น "เท็จ" (ค่าเริ่มต้น) ระบบจะไม่เพิ่มอักขระคงที่เหล่านั้น ไว้ที่ด้านหน้าข้อความ

PayloadOnly

true หรือ false (ค่าเริ่มต้น)

องค์ประกอบนี้จะตั้งค่ารูปแบบของข้อความที่ Apigee สร้างขึ้นให้มีเฉพาะเนื้อหาของ ข้อความ Syslog โดยไม่มีอักขระที่นำหน้าซึ่งระบุโดย FormatMessage

หากไม่ได้ระบุองค์ประกอบนี้หรือปล่อยให้ว่างไว้ ค่าเริ่มต้นจะเป็น false

ดู FormatMessage

DateFormat

ไม่บังคับ

สตริงเทมเพลตการจัดรูปแบบที่จะใช้ในการจัดรูปแบบการประทับเวลาสำหรับข้อความในบันทึกแต่ละรายการ โดยค่าเริ่มต้น Apigee จะใช้ yyyy-MM-dd'T'HH:mm:ss.SSSZ ลักษณะการทำงาน ของเทมเพลตนี้อธิบายไว้ในเอกสารประกอบสำหรับ คลาส SimpleDateFormat ของ Java

SSLInfo

ช่วยให้คุณบันทึกข้อความผ่าน SSL/TLS ได้ ใช้กับ องค์ประกอบย่อย <Enabled>true</Enabled>

หากไม่ได้ระบุองค์ประกอบนี้หรือปล่อยให้ว่างไว้ ค่าเริ่มต้นจะเป็น false (ไม่มี TLS/SSL)

<SSLInfo>
    <Enabled>true</Enabled>
</SSLInfo>

คุณกำหนดค่าแท็ก <SSLInfo> ได้เช่นเดียวกับที่ทำใน TargetEndpoint รวมถึงการเปิดใช้ TLS/SSL แบบ 2 ทาง ตามที่อธิบายไว้ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API รองรับเฉพาะโปรโตคอล TCP เท่านั้น

logLevel

ไม่บังคับ

ค่าที่ถูกต้อง: INFO (ค่าเริ่มต้น), ALERT, WARN, ERROR

กำหนดระดับข้อมูลที่เฉพาะเจาะจงที่จะรวมไว้ในบันทึกข้อความ

หากคุณใช้องค์ประกอบ FormatMessage (ตั้งค่าเป็น true) การตั้งค่า logLevel จะส่งผลต่อคะแนนลำดับความสำคัญที่คำนวณแล้ว (ตัวเลขภายในวงเล็บมุม) ในข้อมูลที่ Apigee สร้างขึ้นซึ่งนำหน้าข้อความ

สคีมา


หมายเหตุการใช้งาน

เมื่อแนบนโยบาย MessageLogging ไปยังโฟลว์พร็อกซี API ให้พิจารณาวางนโยบายไว้ใน การตอบกลับ ProxyEndpoint ในโฟลว์พิเศษที่เรียกว่า PostClientFlow PostClientFlow จะทํางาน หลังจากส่งการตอบกลับไปยังไคลเอ็นต์ที่ขอ ซึ่งทําให้มั่นใจได้ว่าเมตริกทั้งหมดพร้อม สําหรับการบันทึก ดูรายละเอียดเกี่ยวกับการใช้ PostClientFlow ได้ที่ข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API

PostClientFlow มีความพิเศษใน 2 ด้าน ดังนี้

  1. โดยจะดำเนินการเป็นส่วนหนึ่งของโฟลว์การตอบกลับเท่านั้น
  2. ซึ่งเป็นโฟลว์เดียวที่ดำเนินการหลังจากที่พร็อกซีเข้าสู่สถานะข้อผิดพลาด

เนื่องจากมีการดำเนินการไม่ว่าพร็อกซีจะสำเร็จหรือไม่ก็ตาม คุณจึงวางนโยบาย MessageLogging ไว้ใน PostClientFlow ได้ และรับประกันได้ว่าจะมีการดำเนินการเสมอ

รูปภาพการติดตามต่อไปนี้แสดงนโยบาย MessageLogging ที่ดำเนินการเป็นส่วนหนึ่งของ PostClientFlow หลังจากที่ DefaultFaultRule ดำเนินการ

ในตัวอย่างนี้ นโยบาย "ยืนยันคีย์ API" ทำให้เกิดข้อผิดพลาดเนื่องจากคีย์ไม่ถูกต้อง

ด้านล่างนี้คือคำจำกัดความของ ProxyEndpoint ที่มี PostClientFlow

<ProxyEndpoint name="default">
  ...
  <PostClientFlow>
    <Response>
      <Step>
        <Name>Message-Logging-1</Name>
      </Step>
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

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

นโยบาย MessageLogging จะเขียนข้อความที่บันทึกไว้ในหน่วยความจำไปยังบัฟเฟอร์ เครื่องมือบันทึกข้อความ จะอ่านข้อความจากบัฟเฟอร์ แล้วเขียนไปยังปลายทางที่คุณกำหนดค่า แต่ละ ปลายทางจะมีบัฟเฟอร์ของตัวเอง

ผู้ใช้อาจได้รับข้อความบันทึกที่ส่งไปยังปลายทาง Syslog ใหม่ล่าช้า ซึ่งเป็นผลมาจากลักษณะการทำงาน "cold start" ที่ตั้งใจไว้ในนโยบาย เมื่อกำหนดค่าปลายทางการบันทึกใหม่ นอกเหนือจากปลายทางการบันทึกที่มีอยู่ Message Processor (MP) อาจจัดคิวข้อความในบันทึก 1,000 รายการในหน่วยความจำก่อนที่จะส่ง ซึ่งอาจส่งผลให้เกิดความล่าช้าในตอนแรก ในสภาพแวดล้อมที่มีการเข้าชมต่ำ ความล่าช้าเริ่มต้นนี้ไม่สามารถสังเกตได้สำหรับภาระงานการผลิตทั่วไป เนื่องจากข้อความควรสะสมอย่างรวดเร็ว เมื่อถึงเกณฑ์แล้ว ระบบจะส่งข้อความบันทึก ตามที่คาดไว้ การรีสตาร์ท Message Processor อย่างราบรื่นยังสามารถทริกเกอร์ การนำส่งข้อความที่อยู่ในคิวเมื่อข้อความเหล่านั้นออกจากคิวได้ด้วย

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

Log message size exceeded. Increase the max message size setting

หากพบปัญหานี้ใน Edge for Private Cloud 4.15.07 และเวอร์ชันก่อนหน้า ให้ค้นหาไฟล์ message-logging.properties แล้วใช้โซลูชันนี้

เพิ่มพร็อพเพอร์ตี้ max.log.message.size.in.kb (ค่าเริ่มต้น = 128 KB) ในไฟล์ message-logging.properties

สําหรับ Edge for Private Cloud 4.16.01 ขึ้นไป ให้ตั้งค่าพร็อพเพอร์ตี้ conf/message-logging.properties+max. log.message.size.in.kb ในไฟล์ /opt/apigee/customer/application/message-processor.properties แล้วรีสตาร์ท Message Processor โปรดทราบว่าพร็อพเพอร์ตี้นี้จะถูกแสดงความคิดเห็นโดยค่าเริ่มต้นในตอนแรก

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

การควบคุมการประทับเวลาของข้อความในบันทึกใน Edge สำหรับ Private Cloud

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

yyyy-MM-dd'T'HH:mm:ss.SSSZ

ค่าเริ่มต้นทั่วทั้งระบบนี้สามารถลบล้างได้สำหรับปลายทาง Syslog โดยใช้ องค์ประกอบ DateFormat ลักษณะการทำงานของเทมเพลตนี้อธิบายไว้ใน เอกสารประกอบสำหรับคลาส SimpleDateFormat ของ Java ตามคำนิยามนั้น yyyy จะถูกแทนที่ ด้วยปี 4 หลัก MM จะถูกแทนที่ด้วยหมายเลขเดือน 2 หลัก และอื่นๆ รูปแบบข้างต้นอาจส่งผลให้เกิดสตริงในรูปแบบต่อไปนี้

2022-09-28T22:38:11.721+0000

คุณสามารถใช้พร็อพเพอร์ตี้ conf_system_apigee.syslogger.dateFormat ใน Message Processor Edge เพื่อควบคุมรูปแบบดังกล่าว เช่น การเปลี่ยนรูปแบบข้อความ เป็น

yy/MM/dd'T'HH:mm:ss.SSSZ

..แทนที่ขีดกลางด้วยเครื่องหมายทับ และย่อให้เหลือปี 2 หลัก จะบันทึกการประทับเวลาในรูปแบบต่อไปนี้

22/09/28T22:38:11.721+0000

วิธีเปลี่ยนรูปแบบ

  1. เปิดไฟล์ message-processor.properties ใน โปรแกรมแก้ไข หากไม่มีไฟล์ ให้สร้างไฟล์โดยทำดังนี้
    > vi /opt/apigee/customer/application/message-processor.properties
  2. ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ
    conf_system_apigee.syslogger.dateFormat=yy/MM/dd'T'HH:mm:ss.SSSZ
  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้ "apigee"
    > chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. รีสตาร์ท Edge Message Processor:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

ตำแหน่งไฟล์บันทึกใน Edge สำหรับ Private Cloud

Edge สำหรับ Private Cloud 4.16.01 ขึ้นไป

โดยค่าเริ่มต้น บันทึกข้อความ Private Cloud จะอยู่ในไดเรกทอรีต่อไปนี้ในโหนด Message Processor

/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/

คุณเปลี่ยนตำแหน่งบันทึกเริ่มต้นได้โดยแก้ไขพร็อพเพอร์ตี้ในไฟล์ message-logging.properties ใน Message Processor ดังนี้

  • bin_setenv_data_dir - ตั้งค่าเส้นทางรูทสำหรับที่เก็บไฟล์บันทึก เช่น bin_setenv_data_dir=/opt/apigee/var/log
  • conf_message-logging_log.root.dir - หาก คุณตั้งค่าเป็นเส้นทางแบบสัมพัทธ์ เช่น conf/message-logging.properties+log.root.dir=custom/folder/, the path is appended to the bin_setenv_data_dir location.

    หากคุณตั้งค่าเป็นเส้นทางแบบสัมบูรณ์ เช่น conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages ระบบจะจัดเก็บบันทึก ข้อความไว้ใน /opt/apigee/var/log/messages/messagelog/ เส้นทางแบบสัมบูรณ์ จะมีความสำคัญเหนือกว่า bin_setenv_data_dir

    โปรดทราบว่าคุณต้องอ้างอิงพร็อพเพอร์ตี้เป็น conf/message-logging.properties+log.root.dir เนื่องจาก มีการแสดงความคิดเห็นไว้โดยค่าเริ่มต้น ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่าโทเค็น ที่ถูกใส่ความคิดเห็นไว้ในขณะนี้

หากต้องการจัดเก็บไฟล์บันทึกในโครงสร้างไฟล์แบบเรียบเพื่อให้ระบบวางไฟล์บันทึกทั้งหมดไว้ใน ไดเรกทอรีเดียวกัน ให้ตั้งค่า conf/message-logging.properties+enable.flat.directory.structure เป็น true ในไฟล์ message-logging.properties ระบบจะจัดเก็บข้อความไว้ในไดเรกทอรีที่ระบุโดย พร็อพเพอร์ตี้ด้านบน และชื่อไฟล์จะมีรูปแบบเป็น {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename}

วิธีตั้งค่าพร็อพเพอร์ตี้เหล่านี้

  1. เปิดไฟล์ message-processor.properties ใน โปรแกรมแก้ไข หากไม่มีไฟล์ ให้สร้างไฟล์โดยทำดังนี้
    > vi /opt/apigee/customer/application/message-processor.properties
  2. ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ
    conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของเจ้าของซึ่งเป็นผู้ใช้ "apigee"
    > chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. รีสตาร์ทคอมโพเนนต์ Edge
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Edge สำหรับ Private Cloud 4.15.07 และเวอร์ชันก่อนหน้า

โดยค่าเริ่มต้น บันทึกข้อความจะอยู่ในตำแหน่งต่อไปนี้ในตัวประมวลผลข้อความ

/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/

คุณเปลี่ยนตำแหน่งบันทึกเริ่มต้นได้โดยแก้ไขพร็อพเพอร์ตี้ต่อไปนี้ในไฟล์ message-logging.properties ในเครื่องมือประมวลผลข้อความ

  • data.dir - ตั้งค่ารูท เส้นทางสำหรับการจัดเก็บไฟล์บันทึก เช่น data.dir=/opt/apigee4/var/log
  • log.root.dir - หากตั้งค่านี้เป็นเส้นทางแบบสัมพัทธ์ เช่น log.root.dir=custom/folder/ ระบบจะต่อท้ายเส้นทางนี้กับตำแหน่ง data.dir

ตัวอย่างเช่น การรวมพร็อพเพอร์ตี้ทั้ง 2 รายการจะตั้งค่าไดเรกทอรีการบันทึกที่ /opt/apigee4/var/log/custom/folder/messagelog/ (โปรดทราบว่าระบบจะเพิ่ม /messagelog โดยอัตโนมัติ)

หากคุณตั้งค่านี้เป็นเส้นทางแบบสัมบูรณ์ เช่น log.root.dir=/opt/apigee4/var/log/messages ระบบจะจัดเก็บบันทึกข้อความไว้ใน /opt/apigee4/var/log/messages/messagelog/ เส้นทางแบบสัมบูรณ์ใน log.root.dir จะมีความสำคัญเหนือกว่า data.dir

หากต้องการจัดเก็บไฟล์บันทึกในโครงสร้างไฟล์แบบเรียบเพื่อให้ระบบวางไฟล์บันทึกทั้งหมดไว้ในไดเรกทอรีเดียวกัน ให้ตั้งค่าพร็อพเพอร์ตี้ enable.flat.directory.structure เป็น true ในไฟล์ message-logging.properties ใน Message Processors ข้อความจะจัดเก็บไว้ในไดเรกทอรีที่ระบุโดยพร็อพเพอร์ตี้ด้านบน และชื่อไฟล์จะมีรูปแบบเป็น {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename}

ค่าเริ่มต้นสำหรับตัวแปรใน เทมเพลตข้อความ

คุณระบุค่าเริ่มต้นสำหรับตัวแปรแต่ละรายการในเทมเพลตข้อความแยกกันได้ เช่น หากไม่สามารถระบุค่าของตัวแปร request.header.id ได้ ระบบจะแทนที่ค่าดังกล่าว ด้วยค่า unknown

<Message>This is a test message. id = {request.header.id:unknown}</Message>

คุณระบุค่าเริ่มต้นทั่วไปสำหรับตัวแปรที่ยังไม่ได้รับการแก้ไขทั้งหมดได้โดยการตั้งค่าแอตทริบิวต์ defaultVariableValue ในองค์ประกอบ Message ดังนี้

<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>

การกำหนดค่าบริการจัดการบันทึกของบุคคลที่สาม

นโยบายการบันทึกข้อความช่วยให้คุณส่งข้อความ Syslog ไปยังบริการจัดการบันทึกของบุคคลที่สาม เช่น Splunk, Sumo Logic และ Loggly ได้ หากต้องการส่ง Syslog ไปยังบริการใดบริการหนึ่ง โปรดดูเอกสารประกอบของบริการนั้นเพื่อกำหนดค่าโฮสต์ พอร์ต และโปรโตคอลของบริการ จากนั้นตั้งค่าองค์ประกอบ Syslog ในนโยบายนี้ตามนั้น

ดูเอกสารประกอบต่อไปนี้สำหรับการกำหนดค่าการจัดการบันทึกของบุคคลที่สาม

ข้อมูลอ้างอิงข้อผิดพลาด

ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ
steps.messagelogging.StepDefinitionExecutionFailed 500 ดูสตริงข้อผิดพลาด

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
InvalidProtocol การติดตั้งใช้งานนโยบาย MessageLcking อาจล้มเหลวเนื่องจากข้อผิดพลาดนี้หากโปรโตคอล ที่ระบุภายในองค์ประกอบ <Protocol> ไม่ถูกต้อง โปรโตคอลที่ถูกต้องคือ TCP และ UDP สำหรับการส่งข้อความ syslog ผ่าน TLS/SSL จะสามารถสนับสนุนเฉพาะ TCP เท่านั้น
InvalidPort การทำให้ใช้งานได้ของนโยบาย MessageLนั้นๆ อาจล้มเหลวเนื่องจากข้อผิดพลาดนี้ หากหมายเลขพอร์ต ไม่ได้ระบุภายในองค์ประกอบ <Port> หรือหากไม่ถูกต้อง หมายเลขพอร์ตต้องเป็น จำนวนเต็มที่มากกว่า 0

ตัวแปรความผิดพลาด

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

ตัวแปร สถานที่ ตัวอย่าง
fault.name="fault_name" fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด fault.name Matches "StepDefinitionExecutionFailed"
messagelogging.policy_name.failed policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด messagelogging.ML-LogMessages.failed = true

ตัวอย่างการตอบสนองข้อผิดพลาด

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed"
      },
      "faultstring":"Execution failed"
   }
}

ตัวอย่างกฎข้อผิดพลาด

<FaultRule name="MessageLogging">
    <Step>
        <Name>ML-LogMessages</Name>
        <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition>
    </Step>
    <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition>
</FaultRule>


ตัวแปรโฟลว์

ระบบจะป้อนข้อมูลตัวแปรต่อไปนี้เมื่อนโยบายไม่สำเร็จ

  • messagelogging.failed
  • messagelogging.{stepdefinition-name}.failed

หัวข้อที่เกี่ยวข้อง