นโยบาย MessageLogging

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

อะไร

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

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 เป็น "จริง" ดูตัวอย่างได้ในแท็บ "เปิดใช้สตรีม" ค่าเริ่มต้น: เท็จ

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>

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

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

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

logLevel

ไม่บังคับ

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

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

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

สคีมา


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

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

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

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

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 หากขั้นตอนก่อนหน้าคือ Error Flow หากต้องการบันทึกข้อมูลการตอบกลับจาก 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 Message Processor เพื่อควบคุมรูปแบบดังกล่าว เช่น การเปลี่ยนรูปแบบข้อความเป็น

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 for 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 ในโปรแกรมประมวลผลข้อความ ดังนี้

  • 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 for 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 เป็น "จริง" ในไฟล์ 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>

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

นโยบายการบันทึกข้อความช่วยให้คุณส่งข้อความ 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

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