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

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

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


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

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

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

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

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

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

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

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

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

โปรดทราบว่าคุณยังสามารถเพิ่มแดชบอร์ดสำหรับตัววัดที่วัดหรือวัดโดยอัตโนมัติอื่นๆ ได้ หากคุณได้ตั้งค่า AppSignal เป็นเครื่องมือตรวจสอบประสิทธิภาพ (APM) สำหรับ Node.js หรือ APM ของ Ruby (บน Rails) หรือ Elixir APM
สรุป
เราได้เรียนรู้วิธีใช้เซิร์ฟเวอร์สแตนด์อโลนของ AppSignal เพื่อดูเครื่องและรหัสดาวเทียมของคุณ ด้วยเซิร์ฟเวอร์ StatsD ในตัว คุณสามารถบันทึกข้อมูลประสิทธิภาพและเครื่องมือตามต้องการได้ทุกกระบวนการ
ตรวจสอบลิงก์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ตัวแทนแบบสแตนด์อโลน:
- ข้อมูลอ้างอิง StatsD
- วิธีการส่งเมตริกที่กำหนดเอง
- การสร้างแดชบอร์ดใน AppSignal
- การระบุและการแก้ไขปัญหาของ Kafka ตัวแทนแบบสแตนด์อโลน
โทมัส เฟอร์นันเดซ
Tomas ผู้เขียนรับเชิญของเราใช้เวลา 10 ปีทำงานที่ IBM โดยเขาทำทุกอย่างเพียงเล็กน้อย ไม่ว่าจะเป็นการพัฒนา การให้บริการ การดูแลฐานข้อมูล และวิศวกรรมระบบคลาวด์ ตอนนี้เขาเป็นที่ปรึกษาอิสระและเป็นนักเขียนด้านเทคนิค
บทความทั้งหมดโดยโทมัส เฟอร์นันเดซ