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

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

จินตนาการว่า: คุณเพิ่งเสร็จสิ้นการทำงานบน Rails App ใหม่ของคุณ และ Deploy ไปที่ Cloud Provider อย่าง DigitalOcean ในฐานะ Developer คุณภูมิใจในงานของคุณ แต่ยังมีคำถามเยอะอยู่ เช่น:

  • App ใหม่ของคุณจะจราจรได้ดีแค่ไหน
  • การเพิ่มประสิทธิภาพที่คุณวางไว้ จะทำงานจริงไหม ฯลฯ

เป้าหมายของคุณคือให้ User Experience ที่ดีที่สุด คุณต้องการได้รับแจ้งเตือนทุกครั้งที่มี Errors หรือ Events สำคัญอื่นๆ เกิดขึ้น เพื่อให้คุณดูแลได้เร็ว

จะดีมากถ้ามี Setup ที่ Monitor Application ของคุณโดยอัตโนมัติ นี่คือ AppSignal! ในบทความนี้ ส่วนแรกของซีรีส์ 2 ส่วน เราจะตั้งค่า AppSignal ให้คุณสามารถ Monitor Rails App ที่ Host บน DigitalOcean ได้อย่างมีประสิทธิภาพ

Prerequisites (ข้อกำหนดเบื้องต้น)

เพื่อปฏิบัติตามบทช่วยสอน ตรวจสอบให้แน่ใจว่าคุณมี:

  • Local Installation ของ Ruby (บทช่วยสอนนี้ใช้ Version 3.3.0)
  • Local PostgreSQL Installation (คุณสามารถใช้ Docker Version หรือ Local Installed Version)
  • DigitalOcean Account สำหรับ Deploy Application
  • AppSignal Account (มี Free 30-day Trial)

บทนำสู่ Ruby on Rails App ของเรา

สำหรับบทช่วยสอนนี้ เราจะใช้ Rails 7 Expense Tracker App ที่เรียบง่าย Users จะสามารถ Sign Up และสร้าง Entries สำหรับค่าใช้จ่ายส่วนตัว เพื่อติดตามค่าใช้จ่ายตามเวลา

เราจะ Deploy App นี้ไป DigitalOcean แล้วกำหนดค่า Monitoring Solution ของ AppSignal เพื่อติดตามสิ่งที่เกิดขึ้นใต้ฝา

คุณสามารถดู Source Code หรือ Fork App ได้จากที่นี่เพื่อปฏิบัติตาม

Deploy Rails App ของคุณไป DigitalOcean

เราจะใช้ DigitalOcean's App Platform เพื่อ Deploy Application ขั้นตอนด้านล่างสมมติว่าคุณ Fork Expense Tracker App ที่อธิบายไว้ข้างต้นแล้ว และมี DigitalOcean Account พร้อม

หลัง Login เราจะสร้าง App และทำให้มัน Up and Running เนื่องจากเราต้องการควบคุมบางส่วนของกระบวนการนี้ ขั้นตอนแรกคือสร้าง Database สำหรับ App

สร้าง App Database

คลิกที่ลิงก์ Databases ด้านซ้ายเมนู แล้วคลิกลิงก์ Create Database เพื่อสร้าง PostgreSQL Database ใหม่:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

หลังจากตั้งค่า Database ในหน้าจอถัดไป ให้จด Connection String ของ Database ไว้ คุณจะใช้มันเป็น Environment Variable เมื่อสร้าง App ในขั้นตอนถัดไป:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

ในจุดนี้ คุณอาจได้รับ Warning ว่า Database ของคุณเปิดให้ทุก Incoming Connections เข้าถึงได้ ตามลิงก์ที่มาพร้อมเพื่อจัดการคำเตือนด้านความปลอดภัยนี้

สร้างและ Deploy App

สุดท้าย สร้าง App โดยคลิกที่ลิงก์ Apps ด้านซ้ายเมนู:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

จากนั้นเชื่อมต่อ Code Repository Resource ของ App ตามที่แสดงด้านล่าง:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

ต่อไปไปหน้าจอ Environment Variables และวาง Database URL String ที่คัดลอกมา เพิ่ม RAILS_MASTER_KEY เป็น Environment Variable ด้วย เนื่องจากจะใช้ในกระบวนการ Deploy

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

จากนั้น ด้วย Environment Variables เหล่านี้แล้ว คลิกปุ่ม Next เพื่อ Deploy App:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

ด้วย App ที่ Deploy สำเร็จ ตอนนี้เราจะตั้งค่า Monitoring ด้วย AppSignal

ตั้งค่า AppSignal เพื่อ Monitor Rails App ของคุณ

ก่อนอื่น Login เข้า AppSignal Account ของคุณ และเลือก 'Ruby & Rails'

ตอนนี้เพิ่ม AppSignal Gem เข้า Rails App Gem นี้จะ Collect Errors, Exceptions และ Performance Data ที่เกี่ยวข้อง และส่งมันไป AppSignal เพื่อวิเคราะห์

เปิด Gemfile ของ App และเพิ่ม Gem:


จากนั้นรัน bundle install

สุดท้าย คุณจะต้องรัน Installation Script ที่มาพร้อมกับ API Key เฉพาะบัญชีของคุณ ตอนรัน Install Script นี้ คุณควรได้ผลลัพธ์คล้ายด้านล่าง:


มี 2 สิ่งที่ควรสังเกตตอนรัน Script:

  • คุณจะได้ตัวเลือกเปลี่ยนชื่อ App ตามที่จะปรากฏบน Dashboard ของ AppSignal หรือใช้ Default Option
  • คุณยังได้ตัวเลือกว่า ต้องการให้ AppSignal กำหนดค่าสำหรับ App ของคุณอย่างไร ในกรณีของผม ผมเลือก Config File Option สร้าง Config File ที่ config/appsignal.yml พร้อมเนื้อหาด้านล่าง:

ที่นี่ เรากำหนด:

  • push_api_key ซึ่งเชื่อมต่อ App กับ AppSignal
  • ชื่อ App ตามที่จะปรากฏบน AppSignal
  • Environments ที่ AppSignal จะ Monitor App (ในกรณีนี้ ทั้ง Development และ Production Environments)

By the way หากคุณต้องการปิด AppSignal Monitoring บน Development Environment เพียงแค่ตั้งค่า Flag active เป็น false ดังนี้:


Tip: ทั้ง Config File และ Environment Variable Options ทำสิ่งเดียวกัน พวกมันกำหนดว่า AppSignal จะเชื่อมต่อกับ App ของคุณอย่างไร ชื่อ App และ Environment ไหนที่จะถูก Monitor

สมมติว่าทุกอย่างไปตามแผน คุณควรเห็นหน้าจอแสดงว่า AppSignal กำลังรับ Data จาก App ของคุณ!

บทนำสู่ Dashboard ของ AppSignal สำหรับ Rails

ตอนนี้ทุกอย่าง Setup ถูกต้องแล้ว และ AppSignal กำลังรับ Data จาก App ของคุณ คุณสามารถเข้าถึง Default App Monitoring Dashboard View ตามที่แสดงด้านล่าง:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

Tip: หากคุณตั้งค่า Monitoring สำหรับทั้ง Development และ Production Environments คุณสามารถสลับระหว่างพวกมันได้ง่ายจาก Selection ที่ลูกศรชี้

จาก Default View คุณเข้าถึง Default Charts ต่อไปนี้ได้:

  • Error Rate - จะแสดง Rate ของ Errors ที่เกิดขึ้นใน App ต่อหน่วยเวลา
  • Throughput - ที่นี่ คุณจะได้ Snapshot ของ Throughput ที่ App ของคุณจัดการได้ ในแง่ของ Requests ต่อนาที
  • Response Time - จะแสดง Response Times ของ App ของคุณ
  • Latest Open Errors - Section นี้จะ List Latest Errors ที่เกิดขึ้นภายใน App ของคุณ
  • Latest Open Performance Measurements - Section นี้ List Latest Performance Measurements รวมถึง Method Calls, API Requests ฯลฯ

ต่อไป เราจะดูวิธีตั้งค่า Error Tracking ที่เหมาะสมสำหรับ Rails Application ด้วย AppSignal

Monitor Errors ด้วย AppSignal

มี Error Types มากกว่า 10 ประเภทที่อาจส่งผลต่อ Ruby on Rails App ที่กำลังรัน อย่างชัดเจน บางอย่างพบได้บ่อยกว่า ใน Section นี้ เราจะ Simulate Errors บางอย่าง และดูว่า AppSignal จัดการมันอย่างไร เริ่มจากตัวอย่างง่ายๆ ก่อน

เนื่องจาก Expense Tracker App ใช้ Devise สำหรับ Authentication มาเพิ่มการตรวจสอบว่าผู้ใช้ Sign In แล้วหรือไม่ แทนที่จะใช้ Method user_signed_in? ที่แนะนำ เราจะใช้ Method user_logged_in? ที่ผิดพลาด ซึ่งควร Trigger ActionView::Template::Error:


Deploy การเปลี่ยนแปลงนี้ Reload Production App แล้วไปที่ Production Environment Dashboard ใน AppSignal และดูว่าข้อผิดพลาดนี้แสดงขึ้นอย่างไร:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

AppSignal ทำให้ง่ายมากที่จะได้รายละเอียดเพิ่มเติมเกี่ยวกับ Errors ใดๆ ที่เกิดขึ้นใน Application ตัวอย่างเช่น เราสามารถได้รายละเอียดเกี่ยวกับ ActionView Template Error โดยการคลิกที่มันจาก Dashboard Panel 'Latest Open Errors'

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

คุณมองเห็นชัดเจนว่า Error เกิดจาก Undefined Method ซึ่งชี้ทางให้เราแก้ไขได้ถูกต้อง

Errors Dashboard ของ AppSignal ยังให้ข้อมูลเพิ่มเติมผ่าน Panel Logbook และ Settings:

เปิดตัว Ruby on Rails App บน DigitalOcean พร้อม AppSignal: คู่มือขั้นตอน

  • Logbook - ที่นี่ คุณหรือสมาชิกในทีมสามารถเพิ่ม Comments ให้ Error ที่ AppSignal กำลัง Track Logbook Panel ยังแสดง Chronological Breakdown ของ Actions ใดๆ ที่ดำเนินการเกี่ยวกับ Error นั้น
  • Settings - จาก Panel นี้ คุณสามารถ Assign Error ให้สมาชิกทีมคนอื่น, เปลี่ยน Alert Settings (เราจะดูรายละเอียดใน Part 2 ของบทช่วยสอนนี้) และตั้ง Error Severity

และนี่คือจบสำหรับ Part นี้ของซีรีส์!

สรุป

ในบทช่วยสอนนี้ เรา Deploy Rails Application เรียบง่ายไปที่ DigitalOcean's App Platform และเชื่อมต่อกับ AppSignal's Application Monitoring Platform เรายังผ่านการ Monitor และ Display Errors ใน Errors Dashboard ของ AppSignal

ชัดเจนว่านี่เพียงแค่ขูดผิวหน้าของสิ่งที่เป็นไปได้กับ AppSignal ใน Part 2 ของซีรีส์นี้ เราจะเจาะลึก Performance Measurements, Anomaly Detection, Uptime Monitoring และ Logging

ขณะนี้ Happy Coding!

P.S. หากคุณต้องการอ่าน Ruby Magic Posts ทันทีที่เผยแพร่ สมัครสมาชิก Ruby Magic Newsletter ของเรา และจะไม่พลาดโพสต์ไหนเลย!