นโยบาย MessageLogging

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

อะไร

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

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

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

หากมีการติดตั้งใช้งาน Edge for 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 for Private Cloud deployments.) สำหรับข้อมูลเกี่ยวกับตำแหน่งที่ใช้จัดเก็บไฟล์ โปรดดูที่ไฟล์บันทึก ใน 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 Protocol) ตาม ระดับการบันทึกและระดับสิ่งอำนวยความสะดวกของข้อความ
  • 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 (no TLS/SSL)

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

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

logLevel

ไม่บังคับ

ค่าที่ใช้ได้: INFO (ค่าเริ่มต้น), ALERT, WARN, ERROR

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

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

สคีมา


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

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

PostClientFlow มีความพิเศษใน 2 รูปแบบ ดังนี้

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

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

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

ในตัวอย่างนี้ นโยบายคีย์ API "ยืนยัน" เป็นสาเหตุของข้อผิดพลาดเนื่องจากข้อผิดพลาด

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

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

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

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

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

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 และรีสตาร์ทตัวประมวลผลข้อความ โปรดทราบว่าจะมีการแสดงความคิดเห็นในพร็อพเพอร์ตี้นี้โดยค่าเริ่มต้น

หมายเหตุ: ข้อความตอบกลับ ตัวแปรใน 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 ใน Editor หากไม่มีไฟล์ ให้สร้างขึ้นมา:
    &gt; Vi /opt/apigee/customer/application/message-processor.properties
  2. ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ
    conf_system_apigee.syslogger.dateFormat=yy/MM/dd&#39;T&#39;HH:mm:ss.SSSZ
  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของ "apigee" ผู้ใช้:
    &gt; chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. รีสตาร์ทตัวประมวลผลข้อความ Edge ดังนี้
    &gt; /opt/apigee/apigee-service/bin/apigee-service edge-message-processor รีสตาร์ท

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

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

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

/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/ Absolute Path มีความสำคัญเหนือ 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 ใน Editor หากไม่มีไฟล์ ให้สร้างขึ้นมา:
    &gt; Vi /opt/apigee/customer/application/message-processor.properties
  2. ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ
    conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของ "apigee" ผู้ใช้:
    &gt; chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. รีสตาร์ทคอมโพเนนต์ Edge ดังนี้
    &gt; /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/โฟลเดอร์/ เส้นทางจะต่อท้ายไฟล์ ตำแหน่ง data.dir

เช่น ชุดค่าผสมของพร็อพเพอร์ตี้ทั้ง 2 รายการจะตั้งค่าไดเรกทอรีการบันทึกที่ /opt/apigee4/var/log/custom/โฟลเดอร์/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 ผู้ประมวลผลข้อมูล ข้อความจะจัดเก็บอยู่ในไดเรกทอรีที่พร็อพเพอร์ตี้ข้างต้นระบุไว้ รวมถึงไฟล์ จะอยู่ในรูปแบบ {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

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