แสดงข้อมูล Memory CPU Disk ด้วย C# EP.3

แล้วก็มาถึง EP สุดท้ายของซีรีส์นี้ นั่นก็คือการดึงข้อมูลการใช้งานพื้นที่บน Disk ก่อนจะไปหาพื้นที่ disk เราต้องไปหา drive กันก่อนว่ามี drive อะไรบ้าง จากนั้นจึงไปหาข้อมูล disk ของ drive นั้นๆ โดยเราจะใช้ class DriveInfo สำหรับดึงข้อมูล drive ต่างๆ ออกมา ดังโค้ดตัวอย่าง โดยเราสามารถดึงข้อมูล drive ต่างๆ ได้ผ่านเมทธอด GetDrives() และเข้าถึงชื่อ drive ได้ผ่าน property Name เมื่อมาถึงขั้นตอนนี้ เราก็สามารถเข้าถึงข้อมูลพื้นที่ disk และการใช้งานของแต่ละ drive ได้ไม่ยากแล้ว ผ่าน property ต่างๆ ของ object DriveInfo เราไปดูตัวอย่างโค้ดกันเลย จากตัวอย่าง เราต้องตรวจสอบเพิ่มเติมว่า Drive ที่เราต้องการอยู่ในสถานะพร้อมใช้งานอยู่หรือไม่ผ่าน IsReady ก่อนที่จะเรียกใช้งานเมทธอดอื่น เพื่อให้การแสดงผลข้อมูลอยู่ในรูปแบบที่เข้าใจง่าย … Read more

แสดงข้อมูล Memory CPU Disk ด้วย C# EP.2

สำหรับ EP นี้เราก็มาถึงวิธีการดึงข้อมูลการใช้งาน CPU กัน เพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มกันเลย สำหรับการดึงข้อมูลนั้น เราก็สามารถใช้งาน object PerformanceCounter ได้เหมือนเดิม โดยจะต้องระบุ parameter ที่จำเป็นดังนี้ และเมื่อทดลองเรียกใช้งาน จะปรากฏผลดังภาพ จะเห็นว่าผลลัพธ์ออกมาเป็น 0 เนื่องจากค่าที่ได้ จะเป็นค่าที่เกิดจากการเปรียบเทียบกับค่าก่อนหน้า การเรียกใช้งานครั้งแรกจึงแสดงผลเป็น 0 เสมอ เราจึงจำเป็นต้องหน่วงเวลาไว้ประมาณหนึ่ง จากนั้นจึงเรียกใช้งานอีกครั้งจึงจะได้ค่าที่ตรงตามความเป็นจริง ดังตัวอย่างต่อไปนี้ จากตัวอย่าง หลังเรียกใช้งานครั้งแรก จะหน่วงเวลาไว้ 1 วินาที จึงเรียกใช้งานอีกครั้ง ซึ่งเทคนิคนี้ เอกสารของทาง Microsoft ก็ได้ระบุเอาไว้ ดังนี้ If the calculated value of a counter depends on two counter reads, the first read operation returns … Read more

แสดงข้อมูล Memory CPU Disk ด้วย C# EP.1

ในช่วงที่ผ่านมาผู้เขียนได้รับมอบหมายให้พัฒนาเครื่องมือสำหรับมอนิเตอร์การใช้งานทรัพยากรต่างๆ บน Server ที่ให้บริการลูกค้า ทั้งในส่วน Memory CPU และ Disk โดยโจทย์คือพัฒนา Service ขึ้นมาตัวนึงด้วยเครื่องมือที่เราใช้งานกันอยู่แล้วคือ Visual Studio.NET ด้วยภาษ C# สำหรับอ่านทรัพยากรต่างๆ บน Server แล้วจึงเขียนค่าเหล่านั้นลงไฟล์ จากนั้นจะมีเครื่องมืออีกตัวเข้ามาอ่านไฟล์ดังกล่าวแล้วนำไปแสดงผลเป็นกราฟในรูปแบบที่ต้องการต่อไป เริ่มต้นเรามาดูวิธีการดึงข้อมูลหน่วยความจำ Available (คงเหลือ) กันก่อน ซึ่งโชคดีที่ .NET มี object ตัวนึงที่ชื่อ PerformanceCounter ที่จะคอยเก็บข้อมูลต่างๆ ของ Server และเราสามารถดึงค่าต่างๆ มาใช้งานได้โดยการระบุ parameter ที่เราต้องการ อย่างเช่นในกรณีของหน่วยความจำ จะต้องระบุ parameter 2 ตัว คือ “Memory”, “Available MBytes” ดังโค้ดตัวอย่าง โดยเราจะดึงข้อมูลออกมาผ่านเมทธอด NextValue() อย่างเช่น เมื่อทดลองรันโค้ดดังกล่าว โดยผู้เขียนได้ทดลองสร้างโปรเจ็คแบบ Console Application … Read more

ฉันโดนแฮ๊กหรือเปล่า !?!?!

หลายท่านอาจจะเคยได้รับ email หน้าตาประมาณนี้ ข้อเท็จจริงคือ เราสามารถปลอมเป็นใคร ส่ง email ออกไปให้ใครก็ได้ Truth … แล้ว จะรู้ได้อย่างไร !?! ต้องดูสิ่งที่เรียกว่า Header … โดยทำตามวิธีการต่อไปนี้ 1. คลิกที่ View Full Header จะได้ผลประมาณนี้ จากภาพ จะเห็นว่า ส่งจาก (ดูจาก ล่าง ขึ้น บน) Received: from [154.117.164.59] (unknown [154.117.164.59])     by mailscan.in.psu.ac.th (Postfix) with ESMTP id 69F2B150768     for <kanakorn.h@psu.ac.th>; Thu, 5 Mar 2020 13:24:42 +0700 (ICT) แล้วจึงส่งเข้าระบบ PSU Email Received: from mailscan.in.psu.ac.th … Read more

ELK #09 Anomaly Detection (Case Study)

ระบบ PSU Email ให้บริการผู้ใช้ของมหาวิทยาลัยสงขลานครินทร์ ซึ่งมีการใช้งานจากทั่วโลก ทั้งระบบประกอบขึ้นจากคอมพิวเตอร์หลายเครื่อง การจะตรวจสอบ Log เมื่อเกิด Incident ขึ้น อาจจะต้องใช้ระยะเวลานาน และเป็นการยากพอสมควรที่จะเชื่อมโยงความสัมพันธ์ของเหตุการณ์ และสรุปออกมาเป็นรายงานได้ จึงเริ่มใช้ ELK สำหรับรวบรวม Log ของทั้งระบบไว้ที่ส่วนกลาง และพัฒนาต่อยอดเพื่อการตรวจจับความผิดปรกติต่าง ๆ ได้ ในบทความนี้ จะนำเสนอวิธีการใช้ ELK เพื่อตรวจจับ การ Login ที่ผิดปรกติบน PSU Email โดยจะสนใจ ผู้ใช้ที่มีการ Login จากนอกประเทศเป็นหลัก การส่ง Log จาก Server เข้า ELK ที่เครื่อง Server แต่ละเครื่อง กำหนดให้ส่ง Log จาก /etc/rsyslog.d/50-default.conf เข้าไปที่ your.logstash.server:port ตามที่กำหนดไว้ การสร้าง Logstash Filter ที่ … Read more