นโยบาย MessageLogging

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

อะไร

วิธีที่ดีที่สุดวิธีหนึ่งในการติดตามปัญหาในสภาพแวดล้อมรันไทม์ของ API คือการบันทึกข้อความ คุณแนบและกำหนดค่านโยบาย MessageLoking ใน API เพื่อบันทึกข้อความที่กำหนดเองไปยังดิสก์ในเครื่อง (Edge สำหรับ Private Cloud เท่านั้น) หรือ 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>

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

ตัวอย่างเช่น สมมติว่าคุณต้องการบันทึกข้อมูลเกี่ยวกับข้อความคำขอแต่ละรายการที่ API ของคุณได้รับจากแอปของผู้บริโภค ค่า 3f509b58 แสดงค่าคีย์เฉพาะสำหรับบริการ 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>

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


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

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

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

File

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

Message สร้างข้อความเพื่อส่งไปยังไฟล์บันทึก ซึ่งรวมข้อความเข้ากับตัวแปรต่างๆ เพื่อบันทึกข้อมูลที่ต้องการ ดูลองฟัง
FileName ชื่อของไฟล์บันทึกที่ข้อความถูกบันทึกไว้
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 หลังจากขั้นตอนข้อผิดพลาด ใช้ตัวแปรข้อความเพื่อบันทึกข้อมูลการตอบกลับสำหรับสถานการณ์ที่มีข้อผิดพลาดและความสำเร็จ โปรดดูเพิ่มเติมที่หมายเหตุการใช้งาน

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 ตัวประมวลผลข้อความ
  • "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 (ตั้งค่าเป็น "จริง") การตั้งค่า logLevel จะส่งผลต่อคะแนนลำดับความสำคัญที่คำนวณแล้ว (ตัวเลขในวงเล็บมุม) ในข้อมูลที่สร้างโดย Apigee ซึ่งต่อท้ายข้อความ

สคีมา


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

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

PostClientFlow มีความพิเศษในสองลักษณะ:

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

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

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

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

ด้านล่างนี้เป็นคำนิยามของ ProxyEndpoint ที่รวม PostClientFlow:

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

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

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

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

Log message size exceeded. Increase the max message size setting

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

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

สำหรับ Edge สำหรับ Private Cloud 4.16.01 ขึ้นไป ให้ตั้งค่าพร็อพเพอร์ตี้ conf_message-logging_max.log.message.size.in.kb ในไฟล์ /opt/apigee/customer/application/message-processor.properties และรีสตาร์ทโปรแกรมประมวลผลข้อความ

หมายเหตุ: ตัวแปรข้อความตอบกลับใน 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 ในตัวประมวลผลข้อความ 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
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processorรีสตาร์ท

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

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

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

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

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

  • 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รีสตาร์ท

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 ในตัวประมวลผลข้อความ ข้อความจะเก็บไว้ในไดเรกทอรีที่พร็อพเพอร์ตี้ข้างต้นระบุไว้ และชื่อไฟล์จะอยู่ในรูปแบบ {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>

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

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

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

การอ้างอิงข้อผิดพลาด

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

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

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

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

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

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

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

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