คุณกำลังดูเอกสารประกอบของ 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ในเร็วๆ นี้
ชื่อช่อง | คำอธิบายของช่อง | |
---|---|---|
ปลายทางไฟล์ในเครื่อง (ระบบรองรับการบันทึกไฟล์ใน Edge สำหรับการทำให้ Private Cloud ใช้งานได้เท่านั้น) โปรดดูข้อมูลเกี่ยวกับตำแหน่งจัดเก็บไฟล์ที่หัวข้อตำแหน่งไฟล์บันทึกใน Edge สำหรับ Private Cloud |
Message |
สร้างข้อความเพื่อส่งไปยังไฟล์บันทึก ซึ่งรวมข้อความเข้ากับตัวแปรต่างๆ เพื่อบันทึกข้อมูลที่ต้องการ ดูลองฟัง |
FileName |
ชื่อของไฟล์บันทึกที่ข้อความถูกบันทึกไว้ | |
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 หลังจากขั้นตอนข้อผิดพลาด ใช้ตัวแปรข้อความเพื่อบันทึกข้อมูลการตอบกลับสำหรับสถานการณ์ที่มีข้อผิดพลาดและความสำเร็จ โปรดดูเพิ่มเติมที่หมายเหตุการใช้งาน |
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 หากไม่ได้รวมองค์ประกอบนี้หรือปล่อยว่างไว้ ค่าเริ่มต้นจะเป็น โปรดดู 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 มีความพิเศษในสองลักษณะ:
- การดำเนินการนี้เป็นส่วนหนึ่งของขั้นตอนการตอบกลับเท่านั้น
- การดำเนินการดังกล่าวเป็นกระบวนการเดียวหลังจากพร็อกซีเข้าสู่สถานะข้อผิดพลาด
เนื่องจากระบบจะดำเนินการไม่ว่าพร็อกซีจะสำเร็จหรือล้มเหลวก็ตาม คุณจึงใส่นโยบาย 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
หากต้องการเปลี่ยนรูปแบบ ให้ทำดังนี้
- เปิดไฟล์ 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
> /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}
วิธีตั้งค่าพร็อพเพอร์ตี้เหล่านี้
- เปิดไฟล์ 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รีสตาร์ท
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 ในนโยบายนี้ตามนั้น
โปรดดูเอกสารต่อไปนี้สำหรับการกำหนดค่าการจัดการบันทึกของบุคคลที่สาม
- Splunk (เลือกเวอร์ชันผลิตภัณฑ์)
ดูโพสต์ชุมชน Apigee นี้เพิ่มเติมได้ที่ https://community.apigee.com/content/kbentry/13298/log-messages-into-splunk.html -
Sumo
Logic
- และดูโพสต์ชุมชน Apigee นี้เพิ่มเติมได้ที่ https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic- which-host-shou.html
- ดูตัวอย่างทั้งหมดที่ใช้ Sumo Logic เป็นบริการบันทึกได้ที่โพสต์ชุมชน Apigee ด้านล่าง โซลูชันนี้ใช้นโยบาย JavaScript เดียวเพื่อสร้างคำขอ HTTP POST ไปยัง Sumo Logic HTTP Source Collector: https://community.apigee.com/articles/32286/logging-to-sumo-logic-using-javascript-and-http.html
- Loggly
เมื่อใช้ Loggly จะมีการกำหนด<FormatMessage>true</FormatMessage>
ในนโยบายในฐานะองค์ประกอบย่อยขององค์ประกอบ<Syslog>
นอกจากนี้ โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการบันทึกข้อความใน Loggly ที่โพสต์ชุมชน Apigee นี้ https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
การอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 | ดูสตริงข้อผิดพลาด |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidProtocol |
การทำให้นโยบาย MessageLoking อาจล้มเหลวโดยมีข้อผิดพลาดนี้ หากโปรโตคอลที่ระบุภายในองค์ประกอบ <Protocol> ไม่ถูกต้อง โปรโตคอลที่ถูกต้องคือ TCP และ UDP
สำหรับการส่งข้อความ syslog ผ่าน TLS/SSL จะรองรับเฉพาะ TCP |
build |
InvalidPort |
การทำให้นโยบาย MessageLoking อาจล้มเหลวโดยมีข้อผิดพลาดนี้ หากไม่ได้ระบุหมายเลขพอร์ตภายในองค์ประกอบ <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.failed
messagelogging.{stepdefinition-name}.failed
หัวข้อที่เกี่ยวข้อง
- Edge เห็นตัวแปร: ข้อมูลอ้างอิงตัวแปร