#Monitoring

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

ระบบเฝ้าระวังที่ยิงถี่เกิน จนล้มอุปกรณ์ทั้งฟาร์มเอง
ลูปเฝ้าระวังทุก 30 วินาทีที่สั่งกู้อุปกรณ์ทุกตัวที่ ping ไม่ผ่าน ฟังดูเหมือนของดี จนวันที่อุปกรณ์ตัวเดียวค้างแล้วโดนกระแทกซ้ำจนล้มทั้งบัส บทความนี้ไล่ตั้งแต่ตัดสมมติฐานฮาร์ดแวร์ ทำตัวจับว่าใครแตะอุปกรณ์บ้าง ไปจนถึงค่าที่แก้แล้วหาย

NVR ร้องไม่หยุด แต่ตอนดิสก์พังจริงกลับเงียบสนิท
เสียงที่ NVR ร้องทั้งวันไม่ใช่ videoloss อย่างที่ทุกคนคิด มันคือ ipconflict จากกล้องที่เป็น DHCP แล้ว IP ชนกันเอง พอมีคนรำคาญแล้วไปปิดเสียงยกเครื่อง วันที่ดิสก์สองลูกพังพร้อมกันเลยไม่มีเสียงเตือนสักแอะ บทความนี้แก้ที่ policy ทีละ event ด้วย ISAPI

ไม่มีมิเตอร์ kWh แต่อยากรู้ค่าไฟรายวัน คิดจากกระแสที่วัดได้
บันทึกการแปลงค่ากระแสจากหัววัด CT ให้กลายเป็นหน่วยไฟและค่าไฟรายวันแบบแยกช่วงเวลา ตั้งแต่สูตรกำลังไฟสามเฟส จังหวะการอ่านที่เป็นส่วนหนึ่งของสูตร การข้ามช่วงไฟดับ ไปจนถึงการแยกช่วง peak กับ off-peak ด้วยเลขคณิตบน epoch และตารางสรุปรายวันที่ทำให้หน้าเว็บเร็วขึ้นเจ็ดเท่า

อ่านค่าจากอุปกรณ์ Modbus ที่ไม่รู้ว่าเป็นตัวอะไร พิสูจน์ก่อนตีความ
บันทึกการไล่หาอุปกรณ์บนบัส RS485 ที่ไม่มีเอกสาร ตั้งแต่กวาด baud กับ address ทีละชุด ไปจนถึงการพิสูจน์ว่า register ตัวไหนมีค่าจริงตัวไหนตาย และบทเรียนว่าการเดาชนิดอุปกรณ์จากรูปแบบตัวเลขอย่างเดียวทำให้ตีความผิดได้ยาวเป็นเดือน

อ่านจากฐานสำรอง ต้องมีป้ายบอกว่าข้อมูลเก่ากี่นาที
replication บอกว่าตามหลัง 0 วินาทีได้ทั้งที่ข้อมูลค้างอยู่เมื่อวาน เพราะสองสัญญาณนี้วัดคนละเรื่องกัน — วิธีตั้งตัวเฝ้าที่เทียบทั้ง Seconds_Behind_Master และความสดของข้อมูลธุรกิจ พร้อมจับคนที่แอบเขียนลง slave และตัวเฝ้าที่เฝ้าตัวเฝ้าอีกชั้น

บริการยังรันอยู่ แต่ตายไปแล้ว — systemd restart ช่วยไม่ได้
เน็ตหลุดยาว DNS ใช้ไม่ได้ เดมอนที่ถือ session กับ API ภายนอกวนล็อกอินไม่สำเร็จ 194 รอบ แล้วค้างกลางขั้นตอน ไม่ exit ระบบเลยไม่ restart ให้ — ว่าด้วยการเลิกวัดว่า process ยังอยู่ไหม แล้วหันมาวัดความสดของข้อมูลแทน

แจ้งเตือนถี่เกินเท่ากับไม่ได้แจ้ง จูนบอทให้คนอ่านจริง
วันเดียว 28 เหตุการณ์กลายเป็น 56 ข้อความ และ 57 เปอร์เซ็นต์ของทั้งหมดเป็นการเตือนซ้ำทุก 30 นาที บทความนี้ว่าด้วยการแยกชั้นผู้รับ การรวมรอบที่ซ้อนกัน สถานะที่รอดจากการรีสตาร์ต และเหตุผลที่ห้ามใส่ keepalive กับ session ของแอปแชต

นิวทรัลพ่วงข้ามหม้อแปลง ทำไมบาลานซ์เฟสอย่างเดียวไม่จบ
บันทึกเคสหม้อแปลงสองลูกที่นิวทรัลพ่วงถึงกัน บวกบ้านพักที่แอบเกาะสายเมนฝั่งหนึ่ง ทำให้เฟส A ค้าง 30-40 A แม้วันหยุด พร้อมกับดักการอ่านมิเตอร์ที่ตีความผิดได้ถึง 200 A ถ้าไม่ยืนยัน CT ratio ก่อน และลำดับการแก้ที่ห้ามสลับขั้นตอน

สายเมนละลายเป็นจุด ๆ วินิจฉัยฟีดเดอร์เกินพิกัดจากรอบทำงานจริง
บันทึกการวินิจฉัยสายเมน 95 ตร.มม. ที่ฉนวนละลายเป็นจุด ๆ ทั้งที่ระบบดูเหมือนใช้งานได้ปกติ ไล่จาก nameplate เครื่องซัก-อบ 6 เครื่อง 234.7 kW ไปจนถึงแบบจำลองกระแสรายนาที ที่อธิบายว่าทำไมโหลด 482 A บนสายที่รับได้ 180 A ยังไม่ทำให้ระบบล่มให้เห็น

ฟีดข่าวค้างสามวันทั้งที่งานรันครบ เพราะฟีดไม่ได้เรียงตามวันที่
หน้าแรกของเว็บข่าวค้างอยู่ที่ข่าววันเดิมสามวันติด ทั้งที่งานตามเวลารันครบ แปลครบ และรายงานผ่านทุกขั้น ต้นเหตุคือฟีด RSS เรียงตามความเกี่ยวข้องไม่ใช่วันที่ การเรียง pubDate แบบสตริงกลายเป็นเรียงตามชื่อวันในสัปดาห์ และการขอข่าวมาน้อยเกินไปจนด่านกรองตีตกหมดตั้งแต่ยังไม่ทันได้ดู

พอร์ต CDP ยังตอบ แต่สั่งงานไม่ได้ เพราะ Chrome อัปเดตทับตัวเอง
เครื่องเดียวรันงานอัตโนมัติหลายตัวที่ต้องใช้เบราว์เซอร์จริง แล้วเจอสองเรื่องพร้อมกัน — งานแย่งแท็บกันเองจนได้ผลของคนอื่น และ Chrome อัปเดตไฟล์ทับตัวเองขณะโปรเซสยังรัน ทำให้พอร์ตยังตอบแต่สั่ง Runtime.evaluate ไม่ได้ บทความนี้คือวิธีแยกงาน วิธีตรวจให้เจอ และตัวซ่อมที่ทำงานเอง

ไฟดับ 25 ชั่วโมง แล้วงานตามเวลาที่พลาดไปหายไปเลย
เครื่องที่รันงานอัตโนมัติดับสามรอบในสามวัน รอบยาวสุด 25 ชั่วโมง พอกลับมาถึงรู้ว่างานที่ตั้งด้วย Task Scheduler ตรง ๆ หายไปทั้งรอบไม่รันชดเชย ส่วนงานที่ผ่านตัวสั่งงานซึ่งเทียบเวลาเองไล่ตามครบทุกตัว บทความนี้คือค่าที่ต้องเปิด สิ่งที่ห้ามทำตอนกู้ และกับดักที่ทำให้อ่านสถานะผิด

แยกลิงก์พังออกจาก ISP ล่ม ก่อนสั่งรีสตาร์ตอะไรบนเครื่อง
watchdog ที่เขียนกันทั่วไปคือ ping ไม่ผ่านแล้ว restart NetworkManager ซึ่งผิดครึ่งหนึ่งของเวลา เพราะเน็ตไม่ออกอาจแปลว่า ISP ล่ม ไม่ใช่การ์ดพัง บทความนี้แยกสามสถานะออกจากกันด้วย nmcli แล้วไต่บันไดจากเบาไปหนักถึงขั้น PCI remove และ rescan โดยไม่รีบูตเครื่อง

คุมสวิตช์ทั้งไซต์จากนอกวง ด้วย cloud connector proxy ของ UniFi
เครื่องทำงานอยู่คนละที่กับไซต์ ไม่มี VPN ไม่เปิดพอร์ตเข้ามา แต่ยังต้องแก้ VLAN รายพอร์ต จอง fixed IP และไล่หาสายเสื่อมได้ บทความนี้เล่าว่า connector proxy ของ Site Manager ยิงต่อไปถึง API ตัวเก่าได้ทั้งอ่านและเขียน โดยไม่ต้องขอ CSRF และวินัยที่ต้องมีเวลาถือคีย์ที่ทำได้ขนาดนี้

ใช้ NVR เป็นประตูเข้าหากล้องที่ยิงตรงไม่ถึง ด้วย ISAPI และ SDK
กล้องอยู่หลังขาที่สองของ NVR ยิงตรงไม่ถึงเลยสักตัว บทความนี้ไล่ว่า ISAPI ของ NVR ทำอะไรได้จริงบ้าง ใช้ได้ 26 จาก 38 endpoint ที่ลอง ดึงภาพนิ่งกับ RTSP ของกล้องวงปิดผ่าน NVR ค้นว่าช่องไหนบันทึกล่าสุดเมื่อไหร่ และตอนที่ ISAPI จนแต้มก็ลงไปเรียก HCNetSDK ผ่าน ctypes เพื่ออ่าน log ของเครื่อง

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

backup รันสำเร็จทุกคืน แต่ของนอกเครื่องไม่มีเลย 3 สัปดาห์
cron รันครบทุกคืน ไฟล์ในเครื่องครบทุกวัน log เขียนว่าเสร็จ แต่ของบนที่เก็บนอกเครื่องไม่ขยับมา 3 สัปดาห์ และชุด 8 คืนแรกหายถาวรไปแล้วเพราะ rotate ในเครื่องกินไปก่อน บทความนี้คือการชำแหละว่ารูสองรูอะไรทำให้เงียบได้นานขนาดนั้น

ออดิตกล้อง CCTV ในวงเองด้วย ISAPI กับ ffprobe RTSP ไม่ผ่าน NVR
หน้าจอ NVR บอกแค่ว่ากล้องออนไลน์ ไม่ได้บอกว่ารุ่นอะไร firmware ค้างปีไหน หรือสตรีมจริงเป็นความละเอียดเท่าไหร่ บทความนี้เขียนสคริปต์ยิง ISAPI deviceInfo ตรงเข้ากล้องทีละตัว แล้วใช้ ffprobe ดึงค่าจากสตรีม RTSP จริง เพื่อทำ inventory กับ health check ระบบกล้องที่เราดูแลอยู่

วางแผนช่อง WiFi 2.4GHz ไม่ให้ทับกัน 1/6/11 พร้อมทำ heatmap หลายชั้น
อาคารห้าชั้น ชั้นละเจ็ดจุด ต้องวางช่อง 2.4GHz ให้ไม่ทับกันทั้งแนวราบและแนวตั้ง บทความนี้ลงรายละเอียดหลัก 1/6/11 ตารางแผนช่องต่อชั้น ค่า Tx power กับ RSSI threshold ที่ตั้งจริง แล้วเขียนสคริปต์ Python วางป้ายช่องลงผังชั้นด้วย PIL ก่อนเดินวัดทำ heatmap

สำรวจสวิตช์และ AP ด้วย SNMP walk ดึงตาราง MAC ต่อพอร์ตมาทำ inventory
ไม่มี controller ไม่มี NMS ก็ทำ inventory ชั้น 2 เองได้ เขียน SNMP walk ด้วย pysnmp asyncio ดึง sysDescr, ifTable และตาราง bridge FDB แล้วแปลง OID index กลับเป็น MAC เพื่อรู้ว่าอุปกรณ์ตัวไหนเสียบพอร์ตไหนของสวิตช์ตัวไหน

เขียนแอปมอนิเตอร์ ping จอเดียวด้วย C++ ImGui กับ DirectX 11
แอปเล็กๆ ที่ ping อุปกรณ์ทั้งวงพร้อมกันแล้วสรุปลงจอเดียว ยิง ICMP ตรงผ่าน iphlpapi ไม่เรียก ping.exe แยกหนึ่ง thread ต่อหนึ่ง host คุยกับ UI ด้วย std::atomic วาดด้วย Dear ImGui บน DirectX 11 แล้ว build ด้วย CMake กับสคริปต์ PowerShell ตัวเดียวจบ

อ่าน uptime อุปกรณ์ที่ไม่มี SNMP/SSH/API ด้วย TCP timestamp
กล้อง IP เครื่องคุมประตู และอุปกรณ์ฝังตัวจำนวนมากไม่มีทั้ง SNMP SSH และ API ให้ถาม uptime แต่ถ้ามันตอบ TCP timestamp มาด้วย เราอ่านเวลาบูตของมันได้จากนอกบ้านโดยไม่ต้อง login เลยสักครั้ง

MariaDB ที่ยังใช้ค่า default — buffer pool 128M บนเครื่อง RAM 55 GB
เครื่อง 16 core RAM 55 GB SSD แต่ MariaDB ยังใช้ buffer pool 128 MB ตามค่าติดตั้ง ผลคืออ่านดิสก์ไป 50 ล้านครั้งใน 5 วัน ค่าก่อนหลังทั้งชุด กับดักชื่อ service กับ path config บน DirectAdmin/Debian วิธี rollback และ MyISAM อีก 500 ตารางที่รอแปลง

query เดียวค้าง 54 นาที ทำเว็บล่ม 504 ทั้งเว็บ เพราะ MyISAM lock
ตารางเดียวขนาด 30 MB ทำให้เว็บทั้งระบบขึ้น 504 ทุกหน้า ทั้งที่ RAM ยังว่าง 9.5 GB — ไล่จาก information_schema.PROCESSLIST จนเจอ SELECT ตัวเดียวที่ค้าง 54 นาทีบนตาราง MyISAM แล้วลามเป็น metadata lock ทั้งเซิร์ฟเวอร์ พร้อมวิธีแก้เฉพาะหน้าและวิธีกันไม่ให้เกิดซ้ำ

อนุมานจังหวะ defrost ห้องเย็นจากความชันอุณหภูมิ ไม่ง้อเซนเซอร์ความชื้น
ห้องเย็นรีดน้ำวุ้นเส้นไม่มีเซนเซอร์ความชื้นสักตัว แต่ frost ที่เกาะคอยล์ทำให้ความชันการลดอุณหภูมิ (dT/dt) ราบลงเสมอ บทความนี้ใช้สมการ lumped-capacitance กับ time-constant τ จับ frost แล้วสั่ง defrost แบบ demand ด้วย Python จริง พร้อมคำนวณ COP ของ R404A และน้ำที่รีดออกต่อรอบ

เล่นกล้อง AI reCamera + gimbal: cross-compile RISC-V + CAN + Node-RED
reCamera คือกล้อง AI บนชิป RISC-V ที่วางอยู่บนแกน brushless สองแกน สั่งหมุนผ่าน CAN bus ได้ละเอียดระดับ 0.01 องศา บทความนี้ไล่ตั้งแต่ cross-compile ภาษา C สำหรับ riscv64 musl, scp ขึ้น device, โครงสร้าง CAN frame ที่คุมมอเตอร์, อ่าน encoder 15-bit กลับมา, การหาศูนย์มอเตอร์ด้วยกระแส, ไปจนถึง Node-RED dashboard + PID + auto-track และไฟล์ STP พิมพ์เคส 3D

เกณฑ์ราคากลาง CCTV ภาครัฐ MDES 2564 กับการออกแบบ BOM Hikvision PoE
อ่านเกณฑ์ราคากลางและคุณลักษณะพื้นฐานของระบบกล้องวงจรปิดภาครัฐ ฉบับ มิ.ย. 2564 ของ MDES ให้ครบก่อนตั้งงบ แล้วออกแบบ BOM Hikvision IP/PoE ให้ผ่านทั้งสเปกขั้นต่ำ เพดานราคากลาง กฎเก็บภาพย้อนหลัง 30 วัน และเงื่อนไขต้องแข่งได้อย่างน้อย 3 ยี่ห้อ

อ่านมิเตอร์ 3 เฟส DTSU666 ด้วย Raspberry Pi ผ่าน Modbus RS485
บันทึกการต่อ DTSU666 Smart Power Sensor เข้ากับ Raspberry Pi ผ่าน RS485 อ่านค่าไฟ 3 เฟสจากหลายมิเตอร์ด้วย Modbus RTU decode float 32-bit ให้ถูก แล้วเก็บลง SQLite/MySQL ก่อนส่งออก MQTT กับ REST API พร้อมบั๊กค่าติดลบที่ผมเจอเอง

อ่าน Modbus RTU ผ่าน gateway RS485 ให้ไม่ได้ค่าผี — บทเรียนจากงานจริง
ต่อมิเตอร์/เซนเซอร์ Modbus RTU หลายตัวบนบัส RS485 ผ่าน serial-to-Ethernet gateway แล้วเจอค่าผี ค่าเพี้ยน หรืออุปกรณ์ที่ไม่มีอยู่จริงโผล่มา — เพราะ transparent gateway คือ RTU-over-TCP ที่ต้องประกอบเฟรม+CRC เอง และต้อง validate ทุก reply บทความนี้สรุปกฎที่ได้จากการทำจริง

ลูกค้าเช็คเมลแล้วโดน firewall แบนยกออฟฟิศ — แก้ด้วย auto-whitelist จาก login
พฤติกรรมลูกค้าเมลจริงหน้าตาเหมือน bot เป๊ะ — เครื่องในออฟฟิศยิงรหัสเก่ารัวๆ จนโดน CSF แบนทั้งวง บทความนี้เล่าระบบ auto-whitelist ที่เกาะเหตุการณ์ login สำเร็จ + GeoIP ไทย แล้ว temp allow 24 ชั่วโมง พร้อมกับดัก 5 ข้อที่เจ็บมาแล้ว

Redis แยกต่อ user บน shared hosting — และบั๊ก maxmemory ที่ทำเว็บค้าง
ออกแบบ Redis หนึ่ง instance ต่อหนึ่ง user บน shared hosting ด้วย systemd template + cgroup — และบทเรียนบั๊ก maxmemory ที่ตั้งเกินเพดาน cgroup แล้วทำเว็บ WooCommerce ค้างเป็นพักๆ พร้อมกฎ 80% และ guard script กันเกิดซ้ำ

วาง Telegram Bot เฝ้า DA Server แบบ blast radius เล็ก
คู่มือวาง Telegram bot เป็น control surface เบาๆ สำหรับเฝ้า DirectAdmin server — read-only commands บวก block/unblock IP เท่านั้น ไม่เปิด port ไม่เพิ่ม service และจำกัด blast radius ด้วย least-privilege ทุกชั้น