คุณกําลังดูเอกสารประกอบของ 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
ชื่อช่อง | คำอธิบายของช่อง | |
---|---|---|
ปลายทางของไฟล์ในเครื่อง (การบันทึกไฟล์ใช้ได้เฉพาะในการติดตั้งใช้งาน 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 เป็น "จริง" ดูตัวอย่างได้ในแท็บ "เปิดใช้สตรีม" ค่าเริ่มต้น: เท็จ |
|
ปลายทาง 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 หากไม่ได้ใส่องค์ประกอบนี้หรือปล่อยว่างไว้ ค่าเริ่มต้นจะเป็น |
|
DateFormat |
ไม่บังคับ สตริงเทมเพลตการจัดรูปแบบที่จะใช้จัดรูปแบบการประทับเวลาสำหรับข้อความบันทึกแต่ละรายการ
โดยค่าเริ่มต้น Apigee จะใช้ |
|
SSLInfo |
ช่วยให้คุณบันทึกข้อความผ่าน SSL/TLS ได้ ใช้กับองค์ประกอบย่อย หากไม่ได้ใส่องค์ประกอบนี้หรือปล่อยว่างไว้ ค่าเริ่มต้นจะเป็นเท็จ (ไม่มี TLS/SSL) <SSLInfo> <Enabled>true</Enabled> </SSLInfo> คุณสามารถกําหนดค่าแท็ก <SSLInfo> ได้เช่นเดียวกับใน TargetEndpoint รวมถึงเปิดใช้ TLS/SSL แบบ 2 ทาง ตามที่อธิบายไว้ในข้อมูลอ้างอิงการกําหนดค่าพร็อกซี API รองรับเฉพาะโปรโตคอล TCP |
|
logLevel |
ไม่บังคับ ค่าที่ถูกต้อง: กำหนดระดับข้อมูลที่เจาะจงที่จะรวมไว้ในบันทึกข้อความ หากคุณใช้องค์ประกอบ |
สคีมา
หมายเหตุการใช้งาน
เมื่อแนบนโยบายการบันทึกข้อความไปยังเวิร์กโฟลว์พร็อกซี 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 ต้นทางที่ส่งคำขอ และอื่นๆ 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
วิธีเปลี่ยนรูปแบบ
- เปิดไฟล์ 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 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}
วิธีตั้งค่าพร็อพเพอร์ตี้เหล่านี้
- เปิดไฟล์ 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 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 ในนโยบายนี้ตามความเหมาะสม
ดูเอกสารประกอบต่อไปนี้สําหรับการกําหนดค่าการจัดการบันทึกของบุคคลที่สาม
- 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 ไปยังเครื่องมือรวบรวมแหล่งที่มา 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 แสดง: การอ้างอิงตัวแปร