คุณกำลังดูเอกสารประกอบ 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นั้นๆ
ชื่อช่อง | คำอธิบายของช่อง | |
---|---|---|
ปลายทางของไฟล์ในเครื่อง (การบันทึกไฟล์รองรับเฉพาะใน Edge for Private Cloud deployments.) สำหรับข้อมูลเกี่ยวกับตำแหน่งที่ใช้จัดเก็บไฟล์ โปรดดูที่ไฟล์บันทึก ใน 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 (no TLS/SSL) <SSLInfo> <Enabled>true</Enabled> </SSLInfo> คุณกำหนดค่าแท็ก <SSLInfo> ได้เหมือนกับ ใน TargetEndpoint ได้ ซึ่งรวมถึงการเปิดใช้ TLS/SSL แบบ 2 ทางตามที่อธิบายไว้ใน ข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API เฉพาะโปรโตคอล TCP เท่านั้น ที่รองรับ |
|
logLevel |
ไม่บังคับ ค่าที่ใช้ได้: ตั้งค่าระดับของข้อมูลเฉพาะที่จะรวมไว้ในบันทึกข้อความ หากคุณใช้องค์ประกอบ |
สคีมา
หมายเหตุการใช้งาน
เมื่อแนบนโยบาย MessageLaking กับขั้นตอนพร็อกซี API ให้พิจารณาวางใน การตอบสนอง ProxyEndpoint ในขั้นตอนพิเศษที่เรียกว่า PostClientFlow PostClientFlow ดำเนินการ หลังจากส่งการตอบสนองไปยังไคลเอ็นต์ที่ส่งคำขอ ซึ่งตรวจสอบว่าเมตริกทั้งหมดพร้อมใช้งาน ในการบันทึก โปรดดูรายละเอียดการใช้ PostClientFlow ที่ข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API
PostClientFlow มีความพิเศษใน 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
หากต้องการเปลี่ยนรูปแบบ ให้ทำดังนี้
- เปิดไฟล์ message-processor.properties ใน
Editor หากไม่มีไฟล์ ให้สร้างขึ้นมา:
> 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 จะอยู่ในไดเรกทอรีต่อไปนี้ใน 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}
วิธีตั้งค่าคุณสมบัติเหล่านี้
- เปิดไฟล์ message-processor.properties ใน
Editor หากไม่มีไฟล์ ให้สร้างขึ้นมา:
> 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/โฟลเดอร์/ เส้นทางจะต่อท้ายไฟล์ ตำแหน่ง 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 ในนโยบายนี้ให้สอดคล้องกัน
โปรดดูเอกสารประกอบต่อไปนี้สำหรับการกำหนดค่าการจัดการบันทึกของบุคคลที่สาม
- Splunk (เลือกเวอร์ชันผลิตภัณฑ์)
ดูโพสต์ชุมชน Apigee นี้ด้วย https://community.apigee.com/content/kbentry/13298/log-messages-into-splunk.html -
Sumo
เชิงตรรกะ
- ดูโพสต์ชุมชน Apigee นี้ด้วย https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic-which-host-shou.html
- ดูตัวอย่างที่สมบูรณ์ที่ใช้ Sumo Logic เป็นบริการบันทึกได้ดังนี้ โพสต์ชุมชน Apigee โซลูชันนี้ใช้นโยบาย JavaScript เดียวเพื่อสร้าง HTTP POST คำขอไปยังเครื่องมือรวบรวมแหล่งที่มา HTTP ของ Sumo Logic: 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 |
การติดตั้งใช้งานนโยบาย 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.failed
messagelogging.{stepdefinition-name}.failed
หัวข้อที่เกี่ยวข้อง
- ตัวแปรที่แสดงโดย Edge: ข้อมูลอ้างอิงตัวแปร