ในคู่มือนี้ เราจะควบคุม AppSignal เพื่อตรวจจับ วินิจฉัย และขจัดปัญหาคอขวดของประสิทธิภาพ และใช้การติดตามที่เหมาะสมในแอปพลิเคชัน Ruby on Rails ตั้งแต่การตั้งค่าการติดตามไปจนถึงการจับข้อผิดพลาดและการบันทึก เราพร้อมให้คุณแล้ว
เรารับประกันว่าแอปพลิเคชันของเราจะทำงานราบรื่นกว่าที่เคย แม้ภายใต้ภาระงานหนักที่สุด!
แต่ก่อนอื่น เรามาพูดถึงวิธีกำหนดการสืบค้นกลับและประโยชน์ของมันกันก่อน
การติดตามคืออะไร?
การติดตามเป็นกระบวนการในการปฏิบัติตามคำขอและการดำเนินการผ่านแอปพลิเคชัน ในแอปพลิเคชัน Ruby การติดตามจะบันทึกขั้นตอนการดำเนินการ โดยให้ข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพของส่วนประกอบต่างๆ
ประโยชน์ของการติดตาม
การติดตามมีประโยชน์หลายประการ รวมถึง:
- การเพิ่มประสิทธิภาพการทำงาน :การติดตามจะระบุส่วนที่ช้าของแอปพลิเคชันที่ต้องการการปรับปรุงประสิทธิภาพ
- การแก้ไขจุดบกพร่องที่ดีขึ้น :การติดตามโดยละเอียดทำให้คุณสามารถปักหมุดปัญหาโค้ดและระบุสาเหตุของปัญหาได้อย่างรวดเร็ว
- ปรับปรุงความน่าเชื่อถือ :การติดตามติดตามพฤติกรรมของแอปพลิเคชัน ทำให้มั่นใจได้ถึงการทำงานของระบบที่เชื่อถือได้และมีประสิทธิภาพมากขึ้น
สถานการณ์จำลอง:แอป Lagging Rails ของเรา
สมมติว่าเป็น Black Friday ซึ่งเป็นวันช้อปปิ้งที่ใหญ่ที่สุดของปี แพลตฟอร์มอีคอมเมิร์ซที่ใช้ Rails ของคุณเต็มไปด้วยลูกค้าที่กระตือรือร้นนับพันราย รถเข็นของพวกเขาเต็มไปด้วยสินค้าต่างๆ พร้อมที่จะชำระเงิน ทุกอย่างดูสมบูรณ์แบบ — จนกว่าระบบจะเริ่มล้าหลัง
การทำธุรกรรมล้มเหลว เกวียนที่ถูกทิ้งร้างพุ่งสูงขึ้น ความตื่นตระหนกเกิดขึ้น นี่คือฝันร้ายของนักพัฒนาทุกคน แต่ถ้าคุณมีอาวุธลับล่ะ? เครื่องมือที่ไม่เพียงแจ้งเตือนคุณถึงปัญหาแบบเรียลไทม์ แต่ยังเจาะลึกถึงหัวใจของแอปพลิเคชันของคุณ ติดตามทุกคำขอ ทุกการสืบค้นฐานข้อมูล และทุกงานเบื้องหลัง ป้อน AppSignal .
วิธีตั้งค่าการติดตามสำหรับแอพ Ruby on Rails โดยใช้ AppSignal
เพื่อแสดงให้เห็นถึงพลังของการติดตามโดยใช้ AppSignal ฉันได้สร้างโครงการอีคอมเมิร์ซ Rails ตัวอย่างที่เราสามารถผสานรวมกับ AppSignal ได้ ซึ่งจะช่วยให้คุณเห็นโดยตรงว่าการติดตามสามารถระบุและแก้ไขปัญหาเหล่านี้ได้อย่างไร
ข้อกำหนดเบื้องต้น
- เวอร์ชัน Ruby :AppSignal เข้ากันได้กับ Ruby 2.5 ขึ้นไป
- บัญชี AppSignal :สร้างบัญชีบน AppSignal (มีให้ทดลองใช้ฟรี)
ตอนนี้คุณพร้อมที่จะตั้งค่าการติดตามในแอปพลิเคชัน Ruby โดยใช้ AppSignal แล้ว
ขั้นตอนที่ 1:ติดตั้ง AppSignal Gem
นี่คืออัญมณี:
เพียงเรียกใช้ bundle install :
ขั้นตอนที่ 2:เริ่มต้น AppSignal
เรียกใช้คำสั่งการติดตั้ง AppSignal เพื่อตั้งค่าไฟล์การกำหนดค่าที่จำเป็น
ปฏิบัติตามข้อความแจ้งบนเทอร์มินัลของคุณ คุณสามารถเลือกไฟล์กำหนดค่าหรือตัวแปรสภาพแวดล้อมเพื่อกำหนดค่า AppSignal ในแอปของคุณได้ เราจะเลือกตัวเลือกไฟล์กำหนดค่า
คำสั่งนี้จะสร้าง appsignal.yml ไฟล์การกำหนดค่าในไดเร็กทอรีการกำหนดค่าของคุณ ไฟล์นี้จะถูกเติมไว้ล่วงหน้าด้วยคีย์ AppSignal push API และการตั้งค่าการกำหนดค่าพื้นฐานบางอย่าง
ขั้นตอนที่ 3:กำหนดค่า AppSignal
ตรวจสอบให้แน่ใจว่า config/appsignal.yml ได้รับการกำหนดค่าอย่างถูกต้องสำหรับสภาพแวดล้อมของคุณ ไฟล์นี้มีการตั้งค่าสำหรับสภาพแวดล้อมที่แตกต่างกัน (การพัฒนา การทดสอบ การผลิต) ละเว้นการกระทำที่ให้คุณค่าเพียงเล็กน้อย
แล้วก็ทาดา! คุณพร้อมแล้ว:

การใช้งานแอปพลิเคชัน Ruby on Rails ของเรา
AppSignal สามารถติดตั้งองค์ประกอบหลักหลายประการของแอปพลิเคชัน Rails ของเราได้โดยอัตโนมัติ เช่น การสืบค้นฐานข้อมูลและคำขอเว็บ นอกจากนี้เรายังสามารถเพิ่มเครื่องมือแบบกำหนดเองเพื่อติดตามส่วนเฉพาะของแอปพลิเคชันของเรา
เครื่องมือวัด Rails แบบกำหนดเอง
หากต้องการติดตั้งโค้ดบางส่วนโดยเฉพาะ เราจะล้อมโค้ดสองสามบรรทัดด้วย Appsignal.instrument วิธีการ วิธีการนี้สามารถใช้เพื่อติดตามบล็อกโค้ดเฉพาะ เช่น ส่วนที่ซับซ้อนมากขึ้นของการดำเนินการกับคอนโทรลเลอร์หรืองานเบื้องหลัง
การส่งคำขอไปยังปลายทางนี้จะส่งผลให้มีการรายงานแบบสอบถาม N+1
ปัญหา N+1 เกิดขึ้นเมื่อแอปพลิเคชันของเราสร้างการสืบค้นฐานข้อมูลหลายรายการเพื่อโหลดบันทึกที่เกี่ยวข้องสำหรับแต่ละออบเจ็กต์ในคอลเลกชัน แทนที่จะใช้การสืบค้นที่มีประสิทธิภาพเพียงรายการเดียว ซึ่งอาจลดประสิทธิภาพลงอย่างมาก โดยเฉพาะอย่างยิ่งเมื่อต้องรับมือกับชุดข้อมูลขนาดใหญ่
การแก้ไขในกรณีนี้คือการโหลดแบบสอบถามรับคำสั่งซื้อทั้งหมดอย่างกระตือรือร้น — เพียงแทนที่โค้ดนี้:
โดยมีดังต่อไปนี้:
การรวบรวมและรายงานข้อผิดพลาด Ruby ด้วย AppSignal
AppSignal ช่วยให้คุณสามารถบันทึกและรายงานข้อผิดพลาดของแอปพลิเคชันโดยใช้ Appsignal.set_error วิธีการ.
นี่คือตัวอย่างการจับและรายงานข้อผิดพลาดในการดำเนินการดัชนีของตัวควบคุมคำสั่งซื้อ:
ในตัวอย่างนี้ เราสาธิตการจัดการข้อผิดพลาดแบบกำหนดเองภายในการทำงานของคอนโทรลเลอร์เฉพาะ อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือ AppSignal รายงานข้อผิดพลาดตามค่าเริ่มต้น ดังนั้นการรายงานข้อผิดพลาดที่ชัดเจนด้วย Appsignal.set_error มักจะไม่จำเป็น
เพื่อการจัดการข้อผิดพลาดที่สม่ำเสมอและรวมศูนย์ในการดำเนินการของตัวควบคุมทั้งหมด ขอแนะนำให้คุณใช้ rescue_from ในระดับตัวควบคุม วิธีการนี้ช่วยให้แน่ใจว่าข้อยกเว้นที่ไม่สามารถจัดการได้ในการดำเนินการของผู้ควบคุมของคุณได้รับการรายงานและจัดการอย่างเหมาะสม
นี่คือตัวอย่างวิธีที่คุณสามารถนำไปใช้:
ใน ข้อผิดพลาด> รายการปัญหา แท็บ เราจะสามารถดูรายการข้อผิดพลาดทั้งหมด สถานะของแต่ละปัญหา และระยะเวลาที่เกิดข้อผิดพลาด:

คลิกที่ RuntimeError เราจะเห็นบันทึกข้อผิดพลาดและบรรทัดโค้ดที่ทำให้เกิดข้อผิดพลาดนี้:

เรามาพูดถึงเทคนิคการติดตามขั้นสูงเพิ่มเติมก่อนที่เราจะสรุปกัน
เทคนิคการติดตามขั้นสูง
เราจะใช้เทคนิคการติดตามขั้นสูงกับจุดสิ้นสุดคำสั่งซื้อของแอปอีคอมเมิร์ซของเรา
เทคนิคเหล่านี้จะช่วยให้เราจัดการสภาพแวดล้อมที่มีการรับส่งข้อมูลสูงได้อย่างมีประสิทธิภาพ รับประกันความเป็นส่วนตัวของข้อมูล และเข้าถึงข้อมูลการติดตามได้อย่างปลอดภัย
กรณีการใช้งานที่มีการเข้าชมสูง
ในสภาพแวดล้อมที่มีปริมาณงานสูง การรวบรวมข้อมูลการติดตามสำหรับทุกคำขออาจทำให้เกิดค่าใช้จ่ายจำนวนมาก การสุ่มตัวอย่างช่วยลดสิ่งนี้โดยการรวบรวมข้อมูลการติดตามสำหรับคำขอเพียงบางส่วนเท่านั้น
การเพิ่มข้อมูลเมตาในธุรกรรม
คุณสามารถระบุบริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาดและปัญหาด้านประสิทธิภาพได้โดยใช้แท็กและข้อมูลตัวอย่าง วิธีนี้สามารถช่วยเพิ่มข้อมูลที่ไม่ได้เป็นส่วนหนึ่งของคำขอ เซสชัน หรือพารามิเตอร์สภาพแวดล้อม อ่านเพิ่มเติมเกี่ยวกับวิธีการส่งผ่านและเพิ่มข้อมูลเมตาเพิ่มเติม
การประมวลผลแบบอะซิงโครนัส
การประมวลผลแบบอะซิงโครนัสเป็นเทคนิคทั่วไปที่ใช้ในการจัดการงานที่ใช้เวลานานเกินกว่าจะดำเนินการภายในวงจรการตอบกลับคำขอ เช่น การส่งอีเมล การประมวลผลงานเบื้องหลัง และการจัดการการนำเข้าข้อมูลขนาดใหญ่ โดยทั่วไปแอปพลิเคชัน Ruby on Rails จะใช้ไลบรารีงานพื้นหลังเช่น Sidekiq, Resque หรือ Delayed Job เพื่อจัดการงานเหล่านี้
AppSignal ทำงานร่วมกับไลบรารีต่างๆ ได้อย่างราบรื่น เช่น Active Job, DelayedJob, Shoryuken, Sidekiq และ Que เพื่อให้ข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพและข้อผิดพลาดของงานเบื้องหลังของคุณ
ข้อควรพิจารณาด้านความปลอดภัย
การรักษาความปลอดภัยเป็นส่วนที่สำคัญมากของแอปพลิเคชันที่พร้อมสำหรับการใช้งานจริง เราต้องตรวจสอบให้แน่ใจว่าข้อมูลที่ละเอียดอ่อนจะไม่รวมอยู่ในข้อมูลการติดตามเพื่อรักษาความเป็นส่วนตัวของผู้ใช้ ค่าของพารามิเตอร์ตัวกรองจะถูกแทนที่ด้วย [FILTERED] เมื่อส่งไปยัง AppSignal
มาแก้ไข config/appsignal.yml กันดีกว่า เพื่อรวมพารามิเตอร์คำขอที่ละเอียดอ่อนหลายรายการซึ่งจำเป็นต้องปิดบัง
หากคุณใช้ Rails filter_parameters ตัวเลือกการกำหนดค่า AppSignal จะรวมการกำหนดค่าเข้ากับการกำหนดค่าของ Rails ดังนั้นจึงไม่จำเป็นต้องกำหนดค่าสองครั้ง
ด้วยการใช้เทคนิคการติดตามขั้นสูงเหล่านี้ คุณสามารถจัดการสภาพแวดล้อมที่มีการรับส่งข้อมูลสูงได้อย่างมีประสิทธิภาพ และรับประกันความเป็นส่วนตัวของข้อมูลที่ละเอียดอ่อน อ่านเพิ่มเติมเกี่ยวกับพารามิเตอร์ตัวกรอง
สรุป
เราพบว่าการตั้งค่าการติดตามสำหรับแอป Ruby โดยใช้ AppSignal เกี่ยวข้องกับการทำความเข้าใจพื้นฐานการติดตาม การเตรียมแอปพลิเคชันของคุณ และการปฏิบัติตามกระบวนการตั้งค่าทีละขั้นตอน จากนั้นสามารถใช้วิธีการขั้นสูงและเทคนิคการแก้ไขจุดบกพร่องเพื่อปรับปรุงการติดตามได้
การใช้การติดตามในรอบการพัฒนาและการบำรุงรักษาเป็นประจำจะนำไปสู่ประสิทธิภาพและความน่าเชื่อถือที่สูงขึ้น เริ่มต้นใช้งาน AppSignal วันนี้เพื่อรับการตรวจสอบที่ได้รับการปรับปรุงและข้อมูลเชิงลึกด้านประสิทธิภาพในแอปพลิเคชัน Ruby ของคุณ
ขอให้สนุกกับการเขียนโค้ด!
ดาเนียล อามาห์
Daniel ผู้เขียนรับเชิญของเราเป็นหัวหน้าวิศวกรซอฟต์แวร์และผู้ก่อตั้งด้านเทคนิคที่มีประสบการณ์มากกว่าทศวรรษในการสร้างแพลตฟอร์มเว็บและมือถือที่ปรับขนาดได้โดยใช้ Ruby on Rails, React และสถาปัตยกรรมที่ขับเคลื่อนด้วย AI เขาเป็นผู้สร้าง Taskclan และมักเขียนเกี่ยวกับความเป็นผู้นำด้านวิศวกรรม ขั้นตอนการทำงานของนักพัฒนา และการดำเนินการสตาร์ทอัพบน Medium และ LinkedIn
บทความทั้งหมดโดย Daniel Amah