Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

คู่มือที่ครอบคลุมสำหรับการติดตาม AppSignal ใน Ruby on Rails:เพิ่มประสิทธิภาพและความน่าเชื่อถือ

ในคู่มือนี้ เราจะควบคุม AppSignal เพื่อตรวจจับ วินิจฉัย และขจัดปัญหาคอขวดของประสิทธิภาพ และใช้การติดตามที่เหมาะสมในแอปพลิเคชัน Ruby on Rails ตั้งแต่การตั้งค่าการติดตามไปจนถึงการจับข้อผิดพลาดและการบันทึก เราพร้อมให้คุณแล้ว

เรารับประกันว่าแอปพลิเคชันของเราจะทำงานราบรื่นกว่าที่เคย แม้ภายใต้ภาระงานหนักที่สุด!

แต่ก่อนอื่น เรามาพูดถึงวิธีกำหนดการสืบค้นกลับและประโยชน์ของมันกันก่อน

การติดตามคืออะไร?

การติดตามเป็นกระบวนการในการปฏิบัติตามคำขอและการดำเนินการผ่านแอปพลิเคชัน ในแอปพลิเคชัน Ruby การติดตามจะบันทึกขั้นตอนการดำเนินการ โดยให้ข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพของส่วนประกอบต่างๆ

ประโยชน์ของการติดตาม

การติดตามมีประโยชน์หลายประการ รวมถึง:

  1. การเพิ่มประสิทธิภาพการทำงาน :การติดตามจะระบุส่วนที่ช้าของแอปพลิเคชันที่ต้องการการปรับปรุงประสิทธิภาพ
  2. การแก้ไขจุดบกพร่องที่ดีขึ้น :การติดตามโดยละเอียดทำให้คุณสามารถปักหมุดปัญหาโค้ดและระบุสาเหตุของปัญหาได้อย่างรวดเร็ว
  3. ปรับปรุงความน่าเชื่อถือ :การติดตามติดตามพฤติกรรมของแอปพลิเคชัน ทำให้มั่นใจได้ถึงการทำงานของระบบที่เชื่อถือได้และมีประสิทธิภาพมากขึ้น

สถานการณ์จำลอง:แอป 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 ได้รับการกำหนดค่าอย่างถูกต้องสำหรับสภาพแวดล้อมของคุณ ไฟล์นี้มีการตั้งค่าสำหรับสภาพแวดล้อมที่แตกต่างกัน (การพัฒนา การทดสอบ การผลิต) ละเว้นการกระทำที่ให้คุณค่าเพียงเล็กน้อย

แล้วก็ทาดา! คุณพร้อมแล้ว:

คู่มือที่ครอบคลุมสำหรับการติดตาม AppSignal ใน Ruby on Rails:เพิ่มประสิทธิภาพและความน่าเชื่อถือ

การใช้งานแอปพลิเคชัน Ruby on Rails ของเรา

AppSignal สามารถติดตั้งองค์ประกอบหลักหลายประการของแอปพลิเคชัน Rails ของเราได้โดยอัตโนมัติ เช่น การสืบค้นฐานข้อมูลและคำขอเว็บ นอกจากนี้เรายังสามารถเพิ่มเครื่องมือแบบกำหนดเองเพื่อติดตามส่วนเฉพาะของแอปพลิเคชันของเรา

เครื่องมือวัด Rails แบบกำหนดเอง

หากต้องการติดตั้งโค้ดบางส่วนโดยเฉพาะ เราจะล้อมโค้ดสองสามบรรทัดด้วย Appsignal.instrument วิธีการ วิธีการนี้สามารถใช้เพื่อติดตามบล็อกโค้ดเฉพาะ เช่น ส่วนที่ซับซ้อนมากขึ้นของการดำเนินการกับคอนโทรลเลอร์หรืองานเบื้องหลัง

 

การส่งคำขอไปยังปลายทางนี้จะส่งผลให้มีการรายงานแบบสอบถาม N+1

ปัญหา N+1 เกิดขึ้นเมื่อแอปพลิเคชันของเราสร้างการสืบค้นฐานข้อมูลหลายรายการเพื่อโหลดบันทึกที่เกี่ยวข้องสำหรับแต่ละออบเจ็กต์ในคอลเลกชัน แทนที่จะใช้การสืบค้นที่มีประสิทธิภาพเพียงรายการเดียว ซึ่งอาจลดประสิทธิภาพลงอย่างมาก โดยเฉพาะอย่างยิ่งเมื่อต้องรับมือกับชุดข้อมูลขนาดใหญ่

การแก้ไขในกรณีนี้คือการโหลดแบบสอบถามรับคำสั่งซื้อทั้งหมดอย่างกระตือรือร้น — เพียงแทนที่โค้ดนี้:

 

โดยมีดังต่อไปนี้:

 

การรวบรวมและรายงานข้อผิดพลาด Ruby ด้วย AppSignal

AppSignal ช่วยให้คุณสามารถบันทึกและรายงานข้อผิดพลาดของแอปพลิเคชันโดยใช้ Appsignal.set_error วิธีการ.

นี่คือตัวอย่างการจับและรายงานข้อผิดพลาดในการดำเนินการดัชนีของตัวควบคุมคำสั่งซื้อ:

 

ในตัวอย่างนี้ เราสาธิตการจัดการข้อผิดพลาดแบบกำหนดเองภายในการทำงานของคอนโทรลเลอร์เฉพาะ อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือ AppSignal รายงานข้อผิดพลาดตามค่าเริ่มต้น ดังนั้นการรายงานข้อผิดพลาดที่ชัดเจนด้วย Appsignal.set_error มักจะไม่จำเป็น

เพื่อการจัดการข้อผิดพลาดที่สม่ำเสมอและรวมศูนย์ในการดำเนินการของตัวควบคุมทั้งหมด ขอแนะนำให้คุณใช้ rescue_from ในระดับตัวควบคุม วิธีการนี้ช่วยให้แน่ใจว่าข้อยกเว้นที่ไม่สามารถจัดการได้ในการดำเนินการของผู้ควบคุมของคุณได้รับการรายงานและจัดการอย่างเหมาะสม

นี่คือตัวอย่างวิธีที่คุณสามารถนำไปใช้:

 

ใน ข้อผิดพลาด> รายการปัญหา แท็บ เราจะสามารถดูรายการข้อผิดพลาดทั้งหมด สถานะของแต่ละปัญหา และระยะเวลาที่เกิดข้อผิดพลาด:

คู่มือที่ครอบคลุมสำหรับการติดตาม AppSignal ใน Ruby on Rails:เพิ่มประสิทธิภาพและความน่าเชื่อถือ

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

คู่มือที่ครอบคลุมสำหรับการติดตาม AppSignal ใน Ruby on Rails:เพิ่มประสิทธิภาพและความน่าเชื่อถือ

เรามาพูดถึงเทคนิคการติดตามขั้นสูงเพิ่มเติมก่อนที่เราจะสรุปกัน

เทคนิคการติดตามขั้นสูง

เราจะใช้เทคนิคการติดตามขั้นสูงกับจุดสิ้นสุดคำสั่งซื้อของแอปอีคอมเมิร์ซของเรา

เทคนิคเหล่านี้จะช่วยให้เราจัดการสภาพแวดล้อมที่มีการรับส่งข้อมูลสูงได้อย่างมีประสิทธิภาพ รับประกันความเป็นส่วนตัวของข้อมูล และเข้าถึงข้อมูลการติดตามได้อย่างปลอดภัย

กรณีการใช้งานที่มีการเข้าชมสูง

ในสภาพแวดล้อมที่มีปริมาณงานสูง การรวบรวมข้อมูลการติดตามสำหรับทุกคำขออาจทำให้เกิดค่าใช้จ่ายจำนวนมาก การสุ่มตัวอย่างช่วยลดสิ่งนี้โดยการรวบรวมข้อมูลการติดตามสำหรับคำขอเพียงบางส่วนเท่านั้น

การเพิ่มข้อมูลเมตาในธุรกรรม

คุณสามารถระบุบริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาดและปัญหาด้านประสิทธิภาพได้โดยใช้แท็กและข้อมูลตัวอย่าง วิธีนี้สามารถช่วยเพิ่มข้อมูลที่ไม่ได้เป็นส่วนหนึ่งของคำขอ เซสชัน หรือพารามิเตอร์สภาพแวดล้อม อ่านเพิ่มเติมเกี่ยวกับวิธีการส่งผ่านและเพิ่มข้อมูลเมตาเพิ่มเติม

การประมวลผลแบบอะซิงโครนัส

การประมวลผลแบบอะซิงโครนัสเป็นเทคนิคทั่วไปที่ใช้ในการจัดการงานที่ใช้เวลานานเกินกว่าจะดำเนินการภายในวงจรการตอบกลับคำขอ เช่น การส่งอีเมล การประมวลผลงานเบื้องหลัง และการจัดการการนำเข้าข้อมูลขนาดใหญ่ โดยทั่วไปแอปพลิเคชัน 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 ของคุณ

ขอให้สนุกกับการเขียนโค้ด!

คู่มือที่ครอบคลุมสำหรับการติดตาม AppSignal ใน Ruby on Rails:เพิ่มประสิทธิภาพและความน่าเชื่อถือ

ดาเนียล อามาห์

Daniel ผู้เขียนรับเชิญของเราเป็นหัวหน้าวิศวกรซอฟต์แวร์และผู้ก่อตั้งด้านเทคนิคที่มีประสบการณ์มากกว่าทศวรรษในการสร้างแพลตฟอร์มเว็บและมือถือที่ปรับขนาดได้โดยใช้ Ruby on Rails, React และสถาปัตยกรรมที่ขับเคลื่อนด้วย AI เขาเป็นผู้สร้าง Taskclan และมักเขียนเกี่ยวกับความเป็นผู้นำด้านวิศวกรรม ขั้นตอนการทำงานของนักพัฒนา และการดำเนินการสตาร์ทอัพบน Medium และ LinkedIn

บทความทั้งหมดโดย Daniel Amah