Modernine TV
ชื่อผู้แจ้ง : ชื้อผู้แจ้งข่าว admin     สถานีฯ admin      เวลาที่แจ้งข่าว แจ้งวันที่ : 26 กรกฎาคม 2560 เวลา 20:01:46      ถูกเปิดอ่านแล้ว 194 ครั้ง  194 / 0 ครั้ง   ลดขนาดตัวอักษร ลดขนาดตัวอักษร 
ประเภท : [ บทความ ]      Raspberry Pi      Raspberry Pi      Raspberry Pi
ชื่อเรื่อง : Auto reboot ด้วย Watchdog เมื่อ Raspberry Pi เกิดอาการ Hang


ทำบทความเก็บไว้ทบทวนความจำตัวเอง คร่าบบบ

      หากเราใช้งาน Raspberry Pi ในระบบ Automation ออกแบบให้เครื่อง Raspi ทำงานต่อเนื่องเป็นเวลานานๆ หรือมีการประมวลผลหนักๆ จนทำให้ Raspi ค้าง(HANG)หยุดการทำงานไปเฉยๆ เราไม่สามารถเข้าไปตรวจสอบการทำงานได้ ไม่สามารถรีบูตเครื่องได้ และเครื่องหยุดการประมวลผลไปโดยที่เราไม่รู้ตัว

     เรามาใช้ Watchdog เพื่อเฝ้าดูการทำงานของเครื่องแทนเรา โดย Raspberry Pi มีระบบ Broadcom BCM2835 SoC ที่มาพร้อมกับ Wardware-Based Watchdog Timer ทำให้เราสามารถใช้งาน Watchdog Timer ในฝั่ง Hardware จะทำนับถอยหลังจากค่าที่เรากำหนดไว้ จนมีค่าเป็น 0 มันจะสั่งให้ Raspberry Pi Reboot ทันที ซึ่งโดยถ้าระบบทำงานเป็นปกติ ค่าตัวแปรจะถูกอัพเดตให้มีค่าสูงไว้ตลอด แต่ถ้ามีการนับถอยหลังจนได้ค่าเป็น 0 แปลว่าเกิดการหยุดทำงานไปแล้วนั่นเอง





@ อันดับแรก ต้องมีการติดตั้ง chkconfig ก่อน
sudo apt-get install chkconfig




@ เปิดไฟล์ /etc/modules
sudo nano /etc/modules

ยังไม่มีข้อความ ดังนี้..
bcm2708_wdog





@ โหลด watchdog kernel module
sudo modprobe bcm2708_wdog

@ คำสั่งใส่ข้อความ bcm2708_wdog เข้าไปใน /etc/module
@ ซึ่งเป็นโมดูล watchdog kernel ที่จะโหลดทุกครั้งที่ Boot เครื่อง
echo "bcm2708_wdog" | sudo tee -a /etc/modules

จะมีการแสดงผล คือ...
bcm2708_wdog





@ เปิดไฟล์ /etc/modules
sudo nano /etc/modules

จะมีข้อความ เพิ่มเข้ามา...
bcm2708_wdog





@ ทำการอัพเดต ก่อน
sudo apt-get update

@ ติตดั้ง watchdog
sudo apt-get install watchdog





@ Configure the watchdog daemon เปิดไฟล์ /etc/watchdog.conf ขึ้นมาแก้ไข 
sudo nano /etc/watchdog.conf

@ โดยเอาเครื่องหมาย # ออกจากหน้าบรรทัดเหล่านี้ เพื่อให้โปรแกรมอ่านค่า parameter

max-load-1 = 24

watchdog-device = /dev/watchdog





@ แก้ไขไฟล์ /boot/config.txt ทำการ Activate the watchdog เมื่อทำการบูต
sudo nano /boot/config.txt


เพิ่มข้อความนี้เข้าไปในบรรทัดสุดท้าย

# activating the hardware watchdog
dtparam=watchdog=on





@ แก้ไข systemd unit at /lib/systemd/system/watchdog.service
sudo nano /lib/systemd/system/watchdog.service


เพิ่มข้อความ เข้าไปใน [Install] section :

[Install]
WantedBy=multi-user.target


System ต้องการ [Install] -Section สำหรับเป็น Unit ที่จะรู้ว่ามันควรจะ Enable/Disable ( เปิด / ปิด ) เซอร์วิสการใช้งาน





@ จากนั้นก็ Enable the service :
sudo systemctl enable watchdog.service


@ และ Start  Watchdog.service
sudo systemctl start watchdog.service


@ ทำการ Start  Watchdog
sudo /etc/init.d/watchdog start





@ คำสั่ง เปิดการทำงาน update-rc.d watchdog
sudo update-rc.d watchdog enable


@ ตั้งให้ Watchdog เริ่มทำงานทุกครั้งที่ Boot ระบบ
sudo update-rc.d watchdog defaults


@ Re Boot ระบบ
sudo reboot





ขั้นตอนการตรวจสอบการทำงานของ Watchdog

@ ตรวจสอบ watchdog syslog
sudo systemctl list-units | grep -i watchdog





@ จากนั้นทำการตรวจสอบ devices โดยเรียก watchdog จาก /dev :
ls -al /dev/watchdog*





@ ตรวจดู /etc/default/watchdog
ls -al /etc/default/watchdog





@ ตรวจดู systemctl status watchdog
sudo systemctl status watchdog

หรือ
sudo service watchdog status





sudo chkconfig --add watchdog




@ ตรวจดู systemctl status watchdog
sudo service watchdog status


@ Watchdog.service เริ่มการทำงานไปแล้ว เมื่อ Fri 2017-07-28 07:35:41 UTC; 1min 27s

o watchdog.service - watchdog daemon
   Loaded: loaded (/lib/systemd/system/watchdog.service; enabled)
   Active: active (running) since Fri 2017-07-28 07:35:41 UTC; 1min 27s ago...




คลิกที่รูปเพื่อดูรูปใหญ่

@ ตรวจดูประวัติ Syslog ของ Watchdog
sudo grep watchdog /var/log/syslog | tail -f





@ ตรวจสอบ systemctl list-units 
sudo systemctl list-units | grep -i watchdog





@ ตรวจสอบ /dev/watchdog
ls -l /dev/watch*




จัดทำโดย คณะเจ้าหน้าที่บริษัท อสมท จำกัด ( มหาชน ) ผู้มีโอกาสเข้าร่วมอบรมเทคโนโลยีดิจิตอล ณ ประเทศญี่ปุ่น