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

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

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

AppSignal APM สำหรับ Node.js และ Ruby APM และ Elixir APM จะติดตั้งแอปของคุณโดยอัตโนมัติ แต่ AppSignal จะไม่ดูกระบวนการผ่านดาวเทียมเหล่านี้ตามค่าเริ่มต้น หากต้องการขยายการตรวจสอบทุกที่และรวมข้อมูลทั้งหมดไว้ในแอปเดียว คุณสามารถติดตั้งตัวแทนแบบสแตนด์อโลนของ AppSignal ได้

ตัวแทนแบบสแตนด์อโลนของ AppSignal

เอเจนต์แบบสแตนด์อโลนนั้นใช้ซอฟต์แวร์เดียวกันกับที่เรามักจะใช้แอปพลิเคชัน Ruby, Elixir หรือ JavaScript ซอฟต์แวร์นี้ยังสามารถทำงานได้ในโหมดสแตนด์อโลน

เอเจนต์แบบสแตนด์อโลนสามารถใช้เพื่อตรวจสอบ:

  • โครงสร้างพื้นฐาน :เครื่องที่เป็นส่วนหนึ่งของระบบของเราแต่ไม่ได้รันโค้ดแอปพลิเคชัน
  • งานพื้นหลัง :เช่นงาน cron เข้มข้นหรือสคริปต์ประมวลผลข้อมูลที่ทำงานเป็นเวลานาน หากงานพื้นหลังเหล่านี้เขียนด้วยภาษาที่รองรับ (Ruby, Elixir หรือ Node.js) คุณสามารถใช้การผสานรวมมาตรฐานได้
  • ภาษาเพิ่มเติม :โปรแกรมที่เขียนด้วยภาษาอื่นนอกเหนือจากภาษาที่รองรับ

ตัวอย่างเช่น ด้วยเอเจนต์แบบสแตนด์อโลน เราสามารถติดตามโมเดลแมชชีนเลิร์นนิงที่เขียนด้วย Python สคริปต์สำรองเครื่องมือ ติดตามโบรกเกอร์ Kafka หรือรวบรวมตัววัดโฮสต์ในเว็บฟาร์มของเรา คุณสามารถดูข้อมูลทั้งหมดนี้ได้บน AppSignal เพื่อเสริมการวัดที่คุณมีอยู่แล้วสำหรับแอปพลิเคชันหลักของคุณ

มันทำงานอย่างไร

เอเจนต์จัดส่งเป็นแพ็คเกจ deb หรือ rpm และไม่มีการพึ่งพาภาษาใดๆ มันทำงานในระบบที่ใช้ Debian/Ubuntu หรือ Red Hat สำหรับคำแนะนำในการติดตั้งโดยละเอียด โปรดดูเอกสารประกอบของตัวแทน

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

StatsD คืออะไร?

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

ข้อความ StatsD มีลักษณะดังนี้:

โดยที่ 01 เป็นสตริงใดๆ และ 19 คือตัวเลข ค่าประเภทจะกำหนดวิธีการประมวลผลตัวเลข

เราสนับสนุนตัวชี้วัดสามประเภท:

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

ประเภทเมตริกที่ไม่รองรับอื่นๆ จะถูกเพิกเฉย

การส่งข้อมูลไปยัง StatsD

เอเจนต์แบบสแตนด์อโลนรับฟังแพ็กเก็ต UDP บนพอร์ต 8125 เราสามารถส่งสตริงที่จัดรูปแบบ StatsD จากบรรทัดคำสั่งโดยใช้ netcat:

 

เนื่องจากเราใช้ UDP เราจึงไม่ต้องรอการตอบกลับ

Socat ยังใช้งานได้:

 

ทำให้ง่ายต่อการกำหนดงานแบทช์หรืองาน cron ตัวอย่างเช่น บรรทัดต่อไปนี้ใช้เกจเพื่อบันทึกจำนวนข้อมูลที่งานสำรองข้อมูลสร้างขึ้น:

 

เราไม่ได้จำกัดอยู่เพียงจำนวนเต็ม StatsD ยังใช้งานได้กับตัวเลขทศนิยม:

 

คุณสามารถเพิ่มแท็กให้กับการวัดของคุณได้ เซิร์ฟเวอร์ StatsD รองรับแท็กเสริมที่ท้ายข้อความ:

เราสามารถใช้หลายแท็กในข้อความเดียวกันและกำหนดค่าสำหรับการกรองในภายหลัง:

 

เราจะมาเรียนรู้วิธีดูข้อมูลใน AppSignal กันสักหน่อย

ภาษาที่ใช้เป็นเครื่องมือ

เซิร์ฟเวอร์ StatsD เข้ากันได้กับทุกภาษาที่สามารถส่งแพ็คเก็ต UDP มาดูตัวอย่างกัน

Python เป็นภาษายอดนิยมสำหรับการขุดข้อมูลและการเรียนรู้ของเครื่อง เราสามารถเพิ่มเครื่องมือวัดลงในแอปพลิเคชัน Python โดยใช้บิวด์อิน 46 ห้องสมุด:

 

เราสามารถบรรลุผลลัพธ์ที่คล้ายกันใน Java ด้วย 58 ห้องสมุด:

 

PHP เป็นอีกตัวอย่างหนึ่งของภาษาที่ได้รับความนิยมอย่างไม่น่าเชื่อ เราสามารถส่งแพ็กเก็ต UDP ด้วย 61 :

 

ไคลเอนต์ StatsD

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

การดูข้อมูลโฮสต์ใน AppSignal

ตัวชี้วัดโฮสต์ แดชบอร์ดแสดงการใช้ทรัพยากรของเครื่องของคุณ:

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

AppSignal เพิ่มรายการสำหรับทุกเครื่องที่ใช้งานตัวแทนแบบสแตนด์อโลน

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

แดชบอร์ดแสดงโหลดและค่าเฉลี่ย CPU ของดิสก์ เครือข่าย หน่วยความจำ และการใช้งานสวอป:

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

การสร้างแดชบอร์ด

AppSignal จะไม่สร้างแดชบอร์ดสำหรับค่า StatsD ที่คุณส่งโดยอัตโนมัติ คุณจะต้องสร้างแดชบอร์ดแบบกำหนดเองสำหรับสิ่งนี้

ขั้นแรก คลิก เพิ่มแดชบอร์ด ใต้เมนูแดชบอร์ด:

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

ตั้งชื่อให้กับแดชบอร์ด:

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

คลิกเพิ่มกราฟ ปุ่มแสดงเครื่องมือสร้างกราฟ:

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

ตั้งชื่อกราฟ แล้วคลิก เพิ่มเมตริก :

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

เลือกเมตริกที่คุณสนใจจากเมนู

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

เลือกใช้แท็กเพื่อกรอง:

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

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

ข้อมูลระยะเวลาจะดูดีขึ้นเมื่อใช้กราฟพื้นที่ เนื่องจากค่าเฉลี่ยและเปอร์เซ็นไทล์จะแสดงได้ชัดเจนยิ่งขึ้น

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

กราฟเส้นใช้งานได้ดีกับตัวนับและเกจ

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

เมื่อคุณพอใจกับผลลัพธ์แล้ว ให้คลิก สร้างกราฟ .

ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

โปรดทราบว่าคุณยังสามารถเพิ่มแดชบอร์ดสำหรับตัววัดที่วัดหรือวัดโดยอัตโนมัติอื่นๆ ได้ หากคุณได้ตั้งค่า AppSignal เป็นเครื่องมือตรวจสอบประสิทธิภาพ (APM) สำหรับ Node.js หรือ APM ของ Ruby (บน Rails) หรือ Elixir APM

สรุป

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

ตรวจสอบลิงก์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ตัวแทนแบบสแตนด์อโลน:

  • ข้อมูลอ้างอิง StatsD
  • วิธีการส่งเมตริกที่กำหนดเอง
  • การสร้างแดชบอร์ดใน AppSignal
  • การระบุและการแก้ไขปัญหาของ Kafka ตัวแทนแบบสแตนด์อโลน
ยกระดับการมองเห็นโครงสร้างพื้นฐาน:การตรวจสอบระบบใดๆ ด้วย StatsD และตัวแทนแบบสแตนด์อโลนของ AppSignal

โทมัส เฟอร์นันเดซ

Tomas ผู้เขียนรับเชิญของเราใช้เวลา 10 ปีทำงานที่ IBM โดยเขาทำทุกอย่างเพียงเล็กน้อย ไม่ว่าจะเป็นการพัฒนา การให้บริการ การดูแลฐานข้อมูล และวิศวกรรมระบบคลาวด์ ตอนนี้เขาเป็นที่ปรึกษาอิสระและเป็นนักเขียนด้านเทคนิค

บทความทั้งหมดโดยโทมัส เฟอร์นันเดซ