คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
วิธีที่ดีที่สุดวิธีหนึ่งในการติดตามปัญหาในสภาพแวดล้อมรันไทม์ของ API คือการบันทึกข้อความ คุณสามารถแนบและกำหนดค่านโยบาย MessageLogging ใน API เพื่อบันทึกข้อความที่กำหนดเองไปยัง ฮาร์ดดิสก์ในเครื่อง (Edge for 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
| ชื่อช่อง | คำอธิบายของช่อง | |
|---|---|---|
|
ปลายทางของไฟล์ในเครื่อง (การบันทึกไฟล์รองรับเฉพาะการติดตั้งใช้งาน 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 |
แอตทริบิวต์ ค่าที่ถูกต้อง: หากตั้งค่าเป็น "จริง" ระบบจะหมุนเวียนไฟล์บันทึกทุกครั้งที่เครื่องมือรับส่งข้อความ รีสตาร์ท |
|
FileRotationType |
ระบุนโยบายการหมุนเวียน (size หรือ
time) ของไฟล์บันทึก |
|
MaxFileSizeInMB |
(เมื่อเลือก size เป็นประเภทการหมุนเวียน)
ระบุขนาดของไฟล์บันทึกที่ทําให้เซิร์ฟเวอร์ย้ายข้อความบันทึกไปยัง
ไฟล์แยกต่างหาก หลังจากไฟล์บันทึกมีขนาดถึงที่ระบุแล้ว เซิร์ฟเวอร์จะเปลี่ยนชื่อไฟล์บันทึกปัจจุบัน
|
|
RotationFrequency |
(เมื่อเลือก time เป็นประเภทการหมุนเวียน)
ระบุเวลาเป็นนาทีที่ทริกเกอร์ให้เซิร์ฟเวอร์ย้ายข้อความบันทึกไปยังไฟล์แยก
หลังจากช่วงเวลาที่ระบุผ่านไป ระบบจะเปลี่ยนชื่อไฟล์บันทึกปัจจุบัน |
|
MaxFilesToRetain |
ระบุจำนวนไฟล์สูงสุดที่จะเก็บไว้ในบริบทของการตั้งค่าการหมุนเวียน ค่าเริ่มต้นคือ 8 หากระบุเป็น 0 ระบบจะเก็บไฟล์บันทึกไว้โดยไม่มีกำหนด แต่จะขึ้นอยู่กับการตั้งค่าการหมุนเวียนไฟล์ แม้ว่าจะไม่มีการลบหรือเปลี่ยนชื่อไฟล์ใดๆ ก็ตาม ดังนั้น หากต้องการหลีกเลี่ยงข้อผิดพลาดเกี่ยวกับดิสก์เต็มในอนาคต ให้ตั้งค่านี้เป็นค่าที่มากกว่า 0 หรือใช้ระบบอัตโนมัติปกติในการล้างหรือเก็บไฟล์บันทึกที่เก็บไว้เก่ากว่า |
|
BufferMessage |
หากเปิดใช้การสตรีม HTTPสำหรับพร็อกซี ระบบจะไม่บัฟเฟอร์ข้อความคำขอ/การตอบกลับ หากต้องการ บันทึกเนื้อหาที่ต้องแยกวิเคราะห์ข้อความโฟลว์ ให้ตั้งค่า BufferMessage เป็น true ดูตัวอย่างได้ที่แท็บตัวอย่าง "เปิดใช้สตรีม" ค่าเริ่มต้น: เท็จ |
|
|
ปลายทางของ 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 |
ไม่บังคับ แต่ต้องระบุ องค์ประกอบนี้ช่วยให้คุณควบคุมรูปแบบของเนื้อหาที่ Apigee สร้างขึ้นซึ่งนำหน้าข้อความได้ หากตั้งค่าเป็น "จริง" ระบบจะเพิ่มจำนวนอักขระคงที่ไว้หน้าข้อความ Syslog ซึ่งจะช่วยให้คุณกรองข้อมูลดังกล่าวออกจากข้อความได้ ตัวอย่างสำหรับรูปแบบคงที่ มีดังนี้
ข้อมูลที่ Apigee สร้างขึ้นประกอบด้วย
หากตั้งค่าเป็น "เท็จ" (ค่าเริ่มต้น) ระบบจะไม่เพิ่มอักขระคงที่เหล่านั้น ไว้ที่ด้านหน้าข้อความ |
|
PayloadOnly |
องค์ประกอบนี้จะตั้งค่ารูปแบบของข้อความที่ Apigee สร้างขึ้นให้มีเฉพาะเนื้อหาของ ข้อความ Syslog โดยไม่มีอักขระที่นำหน้าซึ่งระบุโดย FormatMessage หากไม่ได้ระบุองค์ประกอบนี้หรือปล่อยให้ว่างไว้ ค่าเริ่มต้นจะเป็น |
|
DateFormat |
ไม่บังคับ สตริงเทมเพลตการจัดรูปแบบที่จะใช้ในการจัดรูปแบบการประทับเวลาสำหรับข้อความบันทึกแต่ละรายการ
โดยค่าเริ่มต้น Apigee จะใช้ |
|
SSLInfo |
ช่วยให้คุณบันทึกข้อความผ่าน SSL/TLS ได้ ใช้กับ
องค์ประกอบย่อย หากไม่ได้ระบุองค์ประกอบนี้หรือปล่อยให้ว่างไว้ ค่าเริ่มต้นจะเป็น false (ไม่มี TLS/SSL) <SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>คุณกำหนดค่าแท็ก <SSLInfo> ได้เช่นเดียวกับที่ทำใน TargetEndpoint ซึ่งรวมถึงการเปิดใช้ TLS/SSL แบบ 2 ทาง ตามที่อธิบายไว้ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API รองรับเฉพาะโปรโตคอล TCP เท่านั้น |
|
logLevel |
ไม่บังคับ ค่าที่ถูกต้อง: กำหนดระดับข้อมูลที่เฉพาะเจาะจงที่จะรวมไว้ในบันทึกข้อความ หากคุณใช้องค์ประกอบ |
|
สคีมา
หมายเหตุการใช้งาน
เมื่อแนบนโยบาย MessageLogging ไปยังโฟลว์พร็อกซี API ให้พิจารณาวางไว้ใน การตอบกลับ ProxyEndpoint ในโฟลว์พิเศษที่เรียกว่า PostClientFlow PostClientFlow จะทำงาน หลังจากส่งการตอบกลับไปยังไคลเอ็นต์ที่ขอ ซึ่งจะช่วยให้มั่นใจได้ว่าเมตริกทั้งหมดพร้อมใช้งาน สำหรับการบันทึก ดูรายละเอียดเกี่ยวกับการใช้ PostClientFlow ได้ที่เอกสารอ้างอิงการกำหนดค่าพร็อกซี API
PostClientFlow มีความพิเศษ 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" ที่ตั้งใจไว้ในนโยบาย เมื่อกำหนดค่าปลายทางการบันทึกใหม่ นอกเหนือจากปลายทางการบันทึกที่มีอยู่ ตัวประมวลผลข้อความ (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 ในตัวประมวลผลข้อความ Edge เพื่อควบคุมรูปแบบดังกล่าวได้ เช่น การเปลี่ยนรูปแบบข้อความ เป็น
yy/MM/dd'T'HH:mm:ss.SSSZ
..แทนที่ขีดกลางด้วยเครื่องหมายทับ และย่อให้เหลือปี 2 หลัก ระบบจะบันทึกการประทับเวลาในรูปแบบต่อไปนี้
22/09/28T22:38:11.721+0000
วิธีเปลี่ยนรูปแบบ
- เปิดไฟล์ message-processor.properties ใน
โปรแกรมแก้ไข หากไม่มีไฟล์ ให้สร้างไฟล์โดยทำดังนี้
> vi /opt/apigee/customer/application/message-processor.properties - ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ
conf_system_apigee.syslogger.dateFormat=yy/MM/dd'T'HH:mm:ss.SSSZ - บันทึกการเปลี่ยนแปลง
- ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้ "apigee"
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - รีสตาร์ท 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}
วิธีตั้งค่าพร็อพเพอร์ตี้เหล่านี้
- เปิดไฟล์ message-processor.properties ใน
โปรแกรมแก้ไข หากไม่มีไฟล์ ให้สร้างไฟล์โดยทำดังนี้
> vi /opt/apigee/customer/application/message-processor.properties - ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ
conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages - บันทึกการเปลี่ยนแปลง
- ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้ "apigee"
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - รีสตาร์ทคอมโพเนนต์ 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 ในนโยบายนี้ตามนั้น
ดูเอกสารประกอบต่อไปนี้สำหรับการกำหนดค่าการจัดการบันทึกของบุคคลที่สาม
- Splunk (เลือกเวอร์ชันผลิตภัณฑ์)
ดูโพสต์ชุมชน Apigee นี้ด้วย: บันทึกข้อความลงใน Splunk -
Sumo
Logic
- ดูโพสต์ในชุมชน Apigee นี้ด้วย Setting up logging with Sumo Logic, which host should I use?
- ดูตัวอย่างที่สมบูรณ์โดยใช้ Sumo Logic เป็นบริการบันทึกได้ในโพสต์ชุมชน Apigee ต่อไปนี้ โซลูชันใช้นโยบาย JavaScript เดียวเพื่อส่งคำขอ HTTP POST ไปยังตัวรวบรวมแหล่งที่มาของ HTTP ของ Sumo Logic: การบันทึกไปยัง Sumo Logic โดยใช้ JavaScript และ HTTP
- Loggly
เมื่อใช้ Loggly คุณต้องระบุ<FormatMessage>true</FormatMessage>ในนโยบายเป็นองค์ประกอบย่อยขององค์ประกอบ<Syslog>
ดูข้อมูลเพิ่มเติมเกี่ยวกับการบันทึกข้อความไปยัง Loggly ได้ในโพสต์ชุมชน Apigee นี้ บันทึกข้อความลงใน Loggly
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
| รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ |
|---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 | ดูสตริงข้อผิดพลาด |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
InvalidProtocol |
การติดตั้งใช้งานนโยบาย MessageLcking อาจล้มเหลวเนื่องจากข้อผิดพลาดนี้หากโปรโตคอล
ที่ระบุภายในองค์ประกอบ <Protocol> ไม่ถูกต้อง โปรโตคอลที่ถูกต้องคือ TCP และ UDP
สำหรับการส่งข้อความ syslog ผ่าน TLS/SSL จะสามารถสนับสนุนเฉพาะ TCP เท่านั้น |
build |
InvalidPort |
การทำให้ใช้งานได้ของนโยบาย MessageLนั้นๆ อาจล้มเหลวเนื่องจากข้อผิดพลาดนี้ หากหมายเลขพอร์ต
ไม่ได้ระบุภายในองค์ประกอบ <Port> หรือหากไม่ถูกต้อง หมายเลขพอร์ตต้องเป็น
จำนวนเต็มที่มากกว่า 0 |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
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.failedmessagelogging.{stepdefinition-name}.failed
หัวข้อที่เกี่ยวข้อง
- ตัวแปรที่ Edge แสดง: การอ้างอิงตัวแปร