ส่วนใหญ่ของเวลา default application monitoring metrics, graphs และ visualizations ที่ AppSignal จัดเตรียมจะเพียงพอสำหรับแอป Ruby ของคุณ อย่างไรก็ตาม คุณอาจเป็นประเภทผู้ใช้ที่ชอบ control บ้างเกี่ยวกับสิ่งที่วัด วิธีที่แสดง และวิธีที่ critical information เกี่ยวกับแอปของคุณควรถูกสื่อสาร
AppSignal อนุญาตให้คุณ customize app metrics และ dashboards ตามที่คุณต้องการ ในคู่มือนี้ เราจะเรียนรู้ทั้งหมดเกี่ยวกับ custom metrics ของ AppSignal รวมถึง:
- Custom metrics คืออะไร
- ประเภท custom metrics ที่แตกต่างกันที่คุณสามารถตั้งค่าได้
- วิธี customize graph visualizations
- วิธีตั้งค่า effective alerts
และอีกมากมาย!
แต่ก่อนที่เราจะดำน้ำเข้าไป คุณจะต้องการสองสิ่งเพื่อติดตามมาด้วย
ข้อกำหนดเบื้องต้น
- AppSignal account: หากคุณไม่มี สมัคร 30-day free trial
- Ruby application: แอปนี้สามารถพัฒนาบน Ruby framework ที่รองรับใดๆ เช่น Rails, Sinatra หรือแค่ plain Ruby เพิ่มเติม มันสามารถเป็น production หรือ development app หากคุณไม่อยาก spin up แอปของตัวเอง ให้ clone โค้ดสำหรับ Sinatra app ตัวอย่างที่เราจะใช้ใน tutorial นี้
หมายเหตุ: หากคุณใช้แอปของตัวเองติดตามมาด้วย tutorial นี้ ตรวจสอบให้แน่ใจว่าแอปของคุณถูกกำหนดค่าให้ใช้ latest AppSignal Ruby gem เนื่องจากตัวอย่างที่ใช้ใน tutorial นี้สมมติว่านี่เป็นกรณี
Custom Metrics คืออะไร?
นอกจากการวัด error rates, throughput และ performance ของแอปของคุณ คุณอาจสนใจวัด custom data ที่ปรับแต่งเฉพาะสำหรับแอปของคุณเอง ตัวอย่างเช่น คุณอาจสนใจว่ามี visitors กี่คนที่ sign up เข้าแอปของคุณในช่วงเวลาหนึ่ง WebSocket layer ของแอปทำงานอย่างไร และอื่นๆ
สำหรับกรณีที่ปรับแต่งได้เช่นนั้น คุณอาจติดขัดในการหา standard measuring tool ภายใน AppSignal แทนที่จะต้องใช้ custom metric Custom metrics คือ additional metrics ที่คุณกำหนด alongside default ones เพื่อ deeper context เกี่ยวกับว่าแอปของคุณทำงานอย่างไร
ต่อไป มาเรียนรู้วิธีตั้งค่า custom metric แรกของเรา
การตั้งค่า Custom Metrics
คุณสามารถตั้งค่า custom metric สำหรับ use case เกือบใดๆ ภายในแอปพลิเคชันของคุณได้ มาเริ่มด้วยตัวอย่างง่ายๆ เพื่อช่วยให้คุณเข้าใจว่าทุกอย่างเข้ากันอย่างไร
ขั้นตอนแรกคือการกำหนด custom metric ที่จะถูกติดตามบน AppSignal คุณสามารถกำหนด custom metric ได้โดยการใช้ metric types ที่แตกต่างกันที่มีอยู่:
- Gauges
- Counters
- Distributions
The Gauge Custom Metric
ใน AppSignal gauge custom metric มีประโยชน์สำหรับการวัด metrics ที่เพิ่มและลดลงตามเวลา
มาตั้งค่า gauge custom metric เรียบง่ายเพื่อวัดจำนวน posts ทั้งหมดใน Sinatra app ตัวอย่างของเรา:
ในโค้ดที่แสดงข้างต้น เราใช้ module Appsignal::Helpers::Metrics และเรียกเมธอด set_gauge ซึ่งรับสามอาร์กิวเมนต์:
key: ชื่อของ custom metric ในตัวอย่างนี้คือ all_postsvalue- Metric หรือ "สิ่ง" ที่จะวัด ในตัวอย่างที่แสดงข้างต้น นี่คือแค่ total post counttags- Metadata เพิ่มเติมและ optional ที่สามารถเพิ่มให้ custom metric และมีประโยชน์สำหรับการติดฉลาก data ที่วัด อย่างที่คุณต้องการ ตัวอย่างเช่น เราสามารถ tagposts_countmetric ได้ง่ายๆ เพื่อคำนึงถึง environment ดังที่แสดงด้านล่าง:
ยอดเยี่ยม เราเพิ่ม custom gauge metric แรกแล้ว! แต่หากคุณกลับไปที่ AppSignal custom metric ใหม่ของคุณจะไม่มองเห็น แทนที่จะน่าจะเห็น default dashboard ดังที่แสดงด้านล่าง:
ดังนั้นคุณต้องทำอะไรเพื่อให้ custom metric ปรากฏ? คุณต้องเพิ่ม dashboard เริ่มต้นด้วยการสร้าง dashboard ใหม่:
จากนั้นตั้งชื่อ dashboard ใหม่ของคุณด้วย title และ description ที่ descriptive:
กับ custom dashboard ที่เพิ่มแล้ว คุณจะต้องเพิ่ม graph สำหรับ custom metric:
จากนั้นกำหนด graph ใหม่:
นี่คือการแบ่งส่วนของ fields เพื่อตั้งค่า graph ใหม่:
- a. Title - ใส่ descriptive title สำหรับ graph ใหม่
- b. Description - นี้ optional แต่คุณสามารถใส่ description สำหรับ graph ใหม่
- c. Metrics - นี่คือที่คุณกำหนด metric ที่จะวัดและแสดงโดย graph ใหม่ นี่คือชื่อของ custom metric หรือ argument แรกที่กำหนดในเมธอด
set_gauge:all_postsในส่วนนี้ คุณยังสามารถกำหนด tags ได้ (ตัวอย่างเช่น tag environment ก็รวมอยู่ด้วย) - d. Graph display - นี่คือที่คุณเลือกประเภท graph display สำหรับ graph ใหม่
- e. Legend label - คุณสามารถปรับแต่ง label สำหรับ chart legend ที่นี่
- f. Data format - กำหนด data type ที่ใช้สำหรับ graph display คุณสามารถเลือกจากหลายรูปแบบ รวมถึง number, percentage, throughput (ใน requests/minute หรือ hour), duration (ใน milliseconds) หรือ file size (ใน bytes)
เมื่อคุณกำหนด properties ของ graph ใหม่อย่างถูกต้อง คุณควรได้ graph สำหรับ custom metric คล้ายกับที่แสดงด้านล่าง:
ต่อไป มาดู custom metric type ถัดไป: counter
The Counter Custom Metric
Counter custom metric เหมาะสำหรับวัดว่า event เกิดขึ้นกี่ครั้ง โดยใช้แอปพลิเคชันตัวอย่าง เราสามารถใช้ counter metric เพื่อวัดทุกครั้งที่ home (root) page ถูกเยี่ยมชม
เพื่อเริ่มต้น ให้แก้ไข root method ให้รวมโค้ดที่แสดงด้านล่าง:
ที่นี่ เราใช้เมธอด increment_counter ของ AppSignal และส่ง visits_count เป็น argument แรก increment step คือ integer 1 ส่งเป็น argument ที่สอง คุณยังสามารถเพิ่ม tags hash เป็น argument ที่สามได้ แต่เราจะปล่อยไว้เป็นอย่างนั้น (เพราะครอบคลุมในส่วนก่อนหน้า)
ตอนนี้ไปข้างหน้าและปฏิบัติตามขั้นตอนที่ระบุสำหรับ gauge metric type เพิ่ม custom graph สำหรับ counter metric นี้เพื่อให้คุณได้ graph คล้ายกับที่แสดง:
มาเปลี่ยนทิศทางไปที่ distribution custom metric
The Distribution Custom Metric
AppSignal distribution custom metric มีประโยชน์สำหรับการวัดสิ่งใดสิ่งหนึ่งต่อหน่วยเวลา: ตัวอย่างเช่น ใช้กี่วินาทีในการ generate PDF report หรือ background job ใช้เวลานานแค่ไหนในการ execute
โดยใช้แอปพลิเคชันตัวอย่าง มาแก้ไข main file ให้รวมการเรียก open API endpoint แล้วเราจะใช้ custom distribution เพื่อวัดว่า API call ใช้เวลานานเท่าไรใน milliseconds
ตอนนี้ หากเรากลับไปที่ AppSignal เราสามารถดู custom distribution เป็น graph
Tip: คุณสามารถปฏิบัติตามขั้นตอนที่ระบุใน gauge section เพื่อตั้งค่า custom graph visualization
ตอนนี้ที่คุณเรียนรู้วิธีสร้าง custom metrics และ graph visualizations ที่มาด้วยแล้ว คุณอาจสังเกตว่ามันไม่สะดวกมากที่จะย้อนกลับไปที่ AppSignal dashboards เพื่อดูว่ากำลังเกิดอะไรกับแอปของคุณ แทนที่จะเป็นอย่างนั้น จะเป็นประโยชน์มากหากคุณได้รับ notification สำหรับ custom metrics ของคุณ สิ่งนี้ถูกต้องไหม?
มาเรียนรู้วิธีตั้งค่า notifications สำหรับ custom metrics ของคุณต่อไป
Notification Alerts (การแจ้งเตือน)
โดย default ทุกครั้งที่ error หรือ performance event เกิดขึ้น AppSignal จะเปิด incident สำหรับ event นั้นและวางมันใน section ที่เกี่ยวข้อง ตัวอย่างเช่น หากเป็น error คุณจะพบมันใน errors list ในขณะที่ performance incidents จะอยู่ใน performance list
เพิ่มเติม AppSignal ส่ง incident notifications ผ่าน email (default notification channel) คุณยังสามารถตั้งค่า notification channels อื่นๆ ได้ เช่น:
- Discord
- Google Hangouts
- Intercom
- Microsoft Teams
- Slack
- Webhook
และอื่นๆ อีก
แต่ก่อนที่เราจะตั้งค่า notification trigger สำหรับ custom metrics หนึ่งในของเรา สำคัญที่จะต้องรู้จัก notification options ต่างๆ ที่มีให้คุณ
เพื่อเริ่มต้น คุณสามารถตั้งค่า notification สำหรับ:
- Every time - ที่นี่ notification จะถูกส่งทุกครั้งที่ incident เกิดขึ้น
- First deploy - นี้บ่งชี้ว่า notification จะถูกส่งครั้งแรกที่ incident เกิดขึ้นหลัง deployment
- First after close - ที่นี่ notification จะถูกส่งทุกครั้งที่ incident re-occurs หลังจาก previous one ถูก closed
- Never notify - ตามที่ชื่อบ่งชี้ ในกรณีนี้ notification จะไม่ถูกส่งเลย แต่ error หรือ performance incident จะยังคงถูกติดตามบน AppSignal
- Every nth hour or day - กับตัวเลือกนี้ คุณสามารถระบุได้ว่าจะส่ง alerts กี่ครั้งให้คุณภายในหนึ่งชั่วโมงหรือหนึ่งวัน ตัวเลือกนี้ perfect สำหรับการรักษา balance ระหว่างการได้รับการแจ้งเตือนเกี่ยวกับ important events และการมี notifications เยอะเกินไป (ซึ่งอาจ overwhelm คุณหรือทีมของคุณง่ายๆ)
ขอแนะนำอย่างยิ่งให้คุณเจาะลึก AppSignal's notification settings documentation เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเหล่านี้
มา看看วิธีตั้งค่า notification สำหรับ custom metrics หนึ่งที่เราสร้างก่อนหน้านี้ นี่จะเป็นตัวอย่าง trivial แต่จะ illustrate steps ที่คุณต้องผ่านสำหรับ use case ของคุณเอง
การตั้งค่า Notification Alerts สำหรับ Custom Metrics ของคุณ
สำหรับตัวอย่างนี้ เราจะใช้ distribution metric ที่วัด API call duration ก่อนหน้านี้ในโพสต์นี้ สมมติว่าเราอยากได้ email alert ทุกครั้งที่ mean duration เกินจำนวนหนึ่ง (ใน milliseconds)
ขั้นตอนสำหรับการตั้งค่านี้แสดงด้านล่าง:
ขั้นแรก เริ่มต้นด้วยการกด link Triggers ในเมนูด้านซ้าย
ตั้งชื่อ trigger ให้ relevant จากนั้น select measurement ที่ notification นี้ intended for ในตัวอย่างนี้ เราใช้ fetch_books_duration distribution custom metric คุณยังสามารถเพิ่ม tags หากต้องการ
ต่อไป กำหนด comparison operator และ value ที่จะตรวจสอบ ตัวอย่างเช่น สมมติว่าเราอยากได้ alert ทุกครั้งที่ duration เกิน 1600 milliseconds สำหรับนี้ เราจะเลือก comparison operator more than แล้ว value 1600
สุดท้าย คุณจะต้องกำหนด alert warm-up และ cooldown settings ใส่ description สำหรับ alert link ไปยัง dashboard ที่จะรวมใน alert message (หากต้องการ) และสุดท้าย notification method (กับ email เป็น default)
กับสิ่งที่ทำเสร็จแล้ว คุณจะได้รับ notification ทุกครั้งที่ incident เกิดขึ้น matching settings ที่คุณใส่ที่นี่
และนั่นคือทั้งหมด!
สรุป
ในบทความนี้ เราเรียนรู้วิธีตั้งค่า custom metrics สำหรับแอปพลิเคชัน Ruby พร้อม dashboards และ graph visualizations ที่ตรงกันบน AppSignal
Custom metrics functionality ที่ AppSignal เสนอสามารถ fine-tune ได้สำหรับ very powerful applications ลอง deep dive เข้าไปใน custom metrics documentation ของ AppSignal เพื่อค้นพบ possibilities เพิ่มเติม
จนกว่าจะเจอกันครั้งหน้า happy coding!
P.S. หากคุณอยากอ่าน Ruby Magic posts ทันทีที่พวกเขาออก ให้ subscribe Ruby Magic newsletter ของเรา และไม่เคยพลาดโพสต์เดี่ยว!