ในส่วนแรกของชุดบทความนี้ เราได้ปรับใช้แอปพลิเคชัน Ruby on Rails อย่างง่ายกับแพลตฟอร์มแอปของ DigitalOcean นอกจากนี้เรายังเชื่อมต่อแอป Rails เข้ากับ AppSignal เพื่อดูว่ามีการติดตามและแสดงข้อผิดพลาดง่ายๆ ในแดชบอร์ดข้อผิดพลาดของ AppSignal อย่างไร
ในส่วนนี้ของซีรีส์นี้ เราจะเจาะลึกถึงวิธีการตั้งค่าต่อไปนี้สำหรับแอปพลิเคชัน Ruby on Rails ของคุณโดยใช้ AppSignal:
- การตรวจสอบประสิทธิภาพ
- การตรวจสอบงานพื้นหลังของ Rails รวมถึงวิธีการตรวจสอบการเรียก API แบบง่าย
- การบันทึก
- การแจ้งเตือน
เข้าเรื่องเลย!
การตรวจสอบประสิทธิภาพของแอป Rails โดยใช้ AppSignal
เมื่อการตรวจสอบสถานะการออนไลน์ของคุณแสดงว่าแอปของคุณพร้อมใช้งาน คุณอาจคิดว่าทุกอย่างเรียบร้อยดี แต่ในความเป็นจริงแล้ว ปัญหาอาจซ่อนเร้นอยู่ในรูปแบบของกระบวนการที่ช้า การสืบค้นฐานข้อมูลที่ไม่ได้เพิ่มประสิทธิภาพ และการเรียกใช้บริการที่ใช้เวลานาน
นี่เป็นเรื่องที่สำคัญมากเมื่อคุณพิจารณาว่ามีความสัมพันธ์ระหว่างหน้าเว็บที่โหลดช้าและอัตรา Conversion ของผู้เข้าชมต่ำ โดยสรุป กระบวนการที่ทำงานช้าเหล่านั้นจะทำให้คุณเสียค่าใช้จ่ายมากหากปล่อยทิ้งไว้โดยไม่ตรวจสอบ แต่ด้วยส่วนที่เคลื่อนไหวได้มากมายในแอป Ruby on Rails คำถามสำคัญคือ คุณควรมองหาอะไร และที่ไหน
นั่นคือจุดที่ AppSignal เข้ามามีบทบาท มาดูกันว่าคุณสามารถใช้ AppSignal เพื่อติดตามประสิทธิภาพของแอป Rails ของคุณได้อย่างไร
การติดตามเวลาตอบสนอง
จากแดชบอร์ดเริ่มต้น AppSignal มีกราฟสองกราฟที่ให้ภาพรวมคร่าวๆ ว่าแอป Rails ของคุณทำงานช้า (หรือเร็ว) แค่ไหน:ปริมาณงาน และ เวลาตอบสนอง กราฟ

- ปริมาณงาน - โดยพื้นฐานแล้วจะวัดจำนวนคำขอต่อวินาทีที่แอปของคุณกำลังประมวลผลอยู่ (อย่าสับสนกับจำนวนคำขอต่อวินาทีที่แอปของคุณสามารถจัดการโดยรวมได้) หลักการพื้นฐานคือ:ยิ่งมีคำขอต่อวินาทีมากเท่าไรก็ยิ่งดีเท่านั้น อย่างไรก็ตาม หากเซิร์ฟเวอร์แอปของคุณจัดการคำขอต่อวินาทีมากเกินไป อาจถึงเวลาที่ต้องปรับขนาดทรัพยากรเซิร์ฟเวอร์ของคุณเพื่อจัดการสิ่งนี้
- เวลาตอบสนอง - เวลาเฉลี่ยที่เบราว์เซอร์ตอบสนองใช้ในหน่วยมิลลิวินาที ยิ่งใช้เวลาตอบสนองมากเท่าใด แอปของคุณก็จะยิ่งทำงานแย่ลงเท่านั้น หลักการทั่วไปคือ หากเว็บแอป Rails ของคุณมีเวลาตอบสนองต่ำกว่า 100 มิลลิวินาที คุณสามารถถือว่าเร็วได้ ในขณะที่เวลาตอบสนอง 300 มิลลิวินาทีขึ้นไปถือว่าช้า
ตอนนี้ สมมติว่าเราต้องการติดตามเวลาตอบสนองและปริมาณงานของแอปของเราในช่วงระยะเวลาเจ็ดวัน ทำได้ง่ายมาก เพียงไปที่ กราฟ เมนูย่อยภายใต้ ประสิทธิภาพ อยู่ที่เมนูด้านซ้าย จากนั้นใช้ปุ่มตัวกรองเวลาที่ด้านบนของกราฟ ดังที่แสดงด้านล่าง:

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

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

มีการเน้นข้อความค้นหา N+1 ในวิธีการจัดทำดัชนีของตัวควบคุมค่าใช้จ่าย
หากเราเจาะลึกเพิ่มเติมโดยการคลิกลิงก์ปัญหา เราจะไปที่รายละเอียดปัญหา หน้าจอดังนี้:

สังเกตว่า AppSignal เสนอคำอธิบายของปัญหาอย่างไร รวมถึงลิงก์ไปยังโพสต์บล็อกที่มีรายละเอียดเพิ่มเติมซึ่งแสดงวิธีจัดการกับปัญหา
มาดูกันว่า AppSignal ช่วยคุณทำงานเบื้องหลังได้อย่างไร
การติดตามงานพื้นหลังของ Rails ด้วย AppSignal
งานเบื้องหลังเป็นคุณสมบัติทั่วไปในแอปพลิเคชัน Ruby on Rails ที่ใช้งานจริงจำนวนมาก โดยมี Gem และไลบรารีการประมวลผลคิวงานที่หลากหลายให้คุณเลือก
AppSignal รองรับการติดตามและติดตามไลบรารีการประมวลผลงานเบื้องหลังต่างๆ รวมถึง Sidekiq, Que, Delayed Job, Resque และอื่นๆ
สมมติว่าเราต้องการคุณลักษณะที่ผู้ใช้ได้รับอัตราแลกเปลี่ยนสกุลเงินรายวันในแดชบอร์ด
เพื่อให้ได้ผล เราจำเป็นต้องมีการเรียก API ไปยังบริการที่ให้อัตราดังกล่าว (เราจะใช้บริการที่ไม่ต้องการการกำหนดค่าล่วงหน้าหรือการชำระเงินมากเกินไป เช่นนี้ เพื่อดึงข้อมูลอัตราสกุลเงิน) นอกจากนี้เรายังต้องมีงานเบื้องหลังเพื่อจัดคิวการโทรไปยังบริการนี้เป็นระยะๆ
อัญมณีการประมวลผลเบื้องหลังที่เราจะใช้ในแอปติดตามค่าใช้จ่ายคือ GoodJob แต่คุณสามารถใช้อะไรก็ได้ที่เหมาะกับคุณได้อย่างอิสระ
มาสร้างงานพื้นหลังเพื่อดึงอัตรา:
จากนั้นตั้งค่า GoodJob ให้รัน cron สำหรับงานนี้ทุกๆ สองสามนาที (หรือตามที่คุณต้องการ) AppSignal ตรวจจับการมีอยู่ของบริการพื้นหลังโดยอัตโนมัติ และรวมตัวกรองที่ดีเพื่อให้คุณสามารถแยกออกจากแดชบอร์ดเว็บเริ่มต้นได้:

โดยไม่ต้องใช้เครื่องมือล่วงหน้ามากนัก AppSignal จะตรวจจับการเรียก API และติดตามปัญหาต่างๆ:

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


ดำเนินการตรวจสอบสถานะการออนไลน์ของคุณให้สมบูรณ์โดยเพิ่มการตั้งค่าที่สำคัญที่สุด:
- ชื่อ - ตั้งชื่อที่เหมาะสมให้กับมอนิเตอร์สถานะการออนไลน์ของคุณ
- URL - ระบุ URL แบบเต็มไปยังเส้นทางสถานะการออนไลน์ เริ่มต้นด้วย Rails 7.1 เส้นทางสถานะการออนไลน์เริ่มต้นคือ https://your-app-domain/up .
- ภูมิภาค - เลือกภูมิภาคที่คุณต้องการตรวจสอบสถานะการออนไลน์
- การแจ้งเตือน - เลือกช่องทางการแจ้งเตือนเพื่อรับการแจ้งเตือน
เมื่อเสร็จแล้ว ดำเนินการต่อและสร้างจอภาพได้เลย!
สิ่งหนึ่งที่ควรทราบเกี่ยวกับการตรวจสอบสถานะการออนไลน์ของ AppSignal ก็คือ เนื่องจากการสำรวจจะดำเนินการเกือบทุกนาทีโดยประมาณ จึงเป็นเรื่องง่ายมากที่จะบรรลุขีดจำกัดของแผนของคุณ แต่มีวิธีแก้ปัญหาที่ดีมาก ซึ่งคุณสามารถอ่านเพิ่มเติมได้ในเอกสารของพวกเขา
ก่อนที่จะไปยังวิธีที่ AppSignal สามารถช่วยในเรื่องการบันทึก มีคุณลักษณะที่สำคัญอีกประการหนึ่งในการทำให้เลเยอร์การตรวจสอบสถานะการออนไลน์สมบูรณ์:หน้าสถานะสาธารณะฟรี
คลิกที่ การสร้างสถานะสาธารณะ ลิงค์หน้าดังที่แสดงด้านล่าง:

จากนั้นคลิกที่ หน้าสถานะใหม่ ปุ่ม นำคุณไปสู่สิ่งนี้:


กรอกข้อมูลที่จำเป็นทั้งหมดได้เลย โปรดทราบว่าหากคุณใช้โดเมนที่กำหนดเอง คุณจะต้องเพิ่มคำสั่ง CNAME ที่ชี้ไปที่ cname.appsignal-status.com ในการตั้งค่า DNS ของโดเมนที่คุณกำหนดเอง
การบันทึกด้วย AppSignal
การบันทึกเป็นคุณสมบัติที่ค่อนข้างใหม่ใน AppSignal แต่เป็นคุณสมบัติที่ทันท่วงทีและยินดีต้อนรับ เมื่อใช้ AppSignal คุณไม่จำเป็นต้องเรียกใช้การตรวจสอบแอปพลิเคชันและการบันทึกเป็นบริการแยกต่างหาก
หากต้องการเริ่มต้นการบันทึก ตรวจสอบให้แน่ใจว่าคุณใช้งาน AppSignal gem เวอร์ชันล่าสุด หากคุณมี gem เวอร์ชันเก่า ให้อัปเดตด้วย:
จากนั้นสร้างเครื่องมือเริ่มต้นใหม่และแก้ไขดังนี้:
ตอนนี้คุณสามารถเข้าถึงบันทึกของแอปของคุณได้ดังนี้:

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

- เมตริก - ในกรณีของฉัน ฉันสนใจในการใช้หน่วยความจำ แต่คุณสามารถเลือกเมตริกอื่นๆ ที่เหมาะกับกรณีการใช้งานของคุณได้
- รายละเอียดทริกเกอร์ - ที่นี่ คุณจะกำหนดค่ารายละเอียดที่เกี่ยวข้องกับทริกเกอร์ของคุณ ในกรณีของฉัน ทริกเกอร์จะเริ่มทำงานหากหน่วยความจำโฮสต์มีขนาดต่ำกว่า 200MB
ตัวชี้วัดที่กำหนดเอง
AppSignal ยังมอบเครื่องมือในการจับภาพและแสดงภาพตัววัดแบบกำหนดเอง คุณลักษณะนี้เพียงอย่างเดียวรับประกันบทความทั้งหมด คุณสามารถอ่านข้อมูลทั้งหมดได้ในวิธีตรวจสอบตัววัดแบบกำหนดเองด้วย AppSignal และดูเอกสารของ AppSignal ได้เช่นกัน
สรุป
ในส่วนหนึ่งของชุดบทความนี้ เราได้ตั้งค่าแอป Rails ที่โฮสต์บน DigitalOcean และตรวจสอบข้อผิดพลาดโดยใช้ AppSignal
ในส่วนที่สองและสุดท้ายนี้ เราได้ดูคุณสมบัติที่ยอดเยี่ยมบางประการของ AppSignal สำหรับแอป Rails ของคุณ รวมถึงการตรวจสอบประสิทธิภาพ การตรวจสอบสถานะการออนไลน์ การบันทึก และอื่นๆ
AppSignal มีอะไรอีกมากมายเกินกว่าที่จะครอบคลุมได้ในบทความชุดนี้ ฉันขอแนะนำให้คุณลองใช้แอป Rails ของคุณ
ขอให้สนุกกับการเขียนโค้ด!
ปล. หากคุณต้องการอ่านโพสต์ Ruby Magic ทันทีที่เผยแพร่ สมัครรับจดหมายข่าว Ruby Magic ของเราและไม่พลาดแม้แต่โพสต์เดียว! ป>