จุดกำเนิดของ HHVM คือ HipHop PHP Compiler (HPHPc) ระบบอันเลื่องชื่อของ Facebook ที่คอมไพล์โค้ดภาษา PHP ออกมาเป็น Executable Binary จนทำให้ทุกอย่างทำงานเร็วมากและกิน Resource น้อยกว่าทั่วไปมาก (ก็มันเป็น Native นี่นา) จึงถูกใช้บนเว็บ facebook.com มาช้านานและช่วยประหยัดค่าใช้จ่ายของบริษัทไปได้เยอะมาก

แต่แล้ว HPHPc ถึงจะเทพปานนั้น แต่ก็มีปัญหาอยู่มากมาย หลักๆเลยคือไม่สนับสนุนภาษา PHP เต็มรูปแบบ บางคำสั่งก็ได้ บางคำสั่งก็ไม่ได้ รวมถึงคำสั่งที่ใช้บ่อยในการเขียน Advance PHP Programming ในยุคหลังอย่าง create_function, eval ก็ใช้งานไม่ได้เช่นกัน ผนวกกับปัญหาอีกมากมายก่ายกอง เช่นกิน Resource ในการคอมไพล์มาก ดีบั๊กยาก บลาๆๆๆ จนส่งผลให้ท้ายที่สุด Facebook ก็ประกาศเซย์กู้ดบายกับเจ้า HPHPc ไป

แล้ว Facebook ก็หายไปแว้บนึง โผล่มาอีกทีกับความเท่สุดบรรยาย ด้วยการเปิดตัว HHVM (HipHop Virtual Machine) ที่ทำตัวเป็น Interpreter ทำงานแทน PHP Interpreter เช่นพวก php5-fpm เลยโดยสมบูรณ์ ทำหน้าที่รับโค้ดเข้ามา แล้วแปลงเป็น Bytecode (HHBC) ก่อนจะแปลงเป็น Binary เพื่อรันแบบ Native อีกทีหนึ่งด้วย JIT ผลคือไม่ต้องมานั่งคอมไพล์ก่อนรันเพราะมันคอมไพล์แบบ Runtime ให้ แถมยังคงซึ่งประสิทธิภาพที่เหนือกว่า PHP ทั่วไปอย่างมหาศาล จากการที่มันเป็น Native และ I/O Non Blocking ล่าสุดประสิทธิภาพของมันแซง HPHPc ไปเป็นที่เรียบร้อยแล้วตั้งแต่ปีก่อน


Continue reading

zabbix ตั้งแต่ version 2.x เป็นต้นไปจะมี daemon ใหม่ของ zabbix ที่มีชื่อว่า zabbix java gateway ซึ่งถูกเขียนโดยภาษา java ซึ่งเจ้า zabbix java gateway นั้นจะเป็นตัวกลางค่อยคุยระหว่าง zabbix-server และ Application Java บนเครื่อง Agent โดยใช้ JMX management API ในการคุย และเครื่อง Agent ต้องมีการใส่ Option -Dcom.sun.management.jmxremote ที่ Application Java เพื่อเปิดให้สามารถ remote มา monitor ที่ JMX ได้ โดยมีขั้นตอนต่างๆ ดังนี้

ติดตั้ง zabbix java gateway ที่เครื่อง host zabbix server โดยสามารถติดตั้งผ่าน package manager หรือ download source มาก็ได้ (ในตัวอย่างจะใช้ package manager ในการติดตั้ง)

sudo apt-get update && sudo apt-get install zabbix-java-gateway

ตั้งค่า zabbix java gateway ที่ไฟล์ config zabbix server

sudo vi /etc/zabbix/zabbix_server.conf


Continue reading

Template ใน zabbix สร้างขึ้นมาเพื่อให้สามารถ Assign items, triggers, graphs และอื่นๆ ให้กับหลายๆ host ในทีเดียวหากมีเป้าหมายการ monitor เป็นเป้าหมายเดียวกัน เช่น monitor host ที่เป็น Web Server สัก 200 host โดย Assign ด้วย Template เดียวกัน เป็นต้น โดยการสร้าง Template นั้นให้เข้าไปหน้า Web UI ของ zabbix server => Configuration => Templates => คลิ๊กที่ Create Templates จะขึ้นหน้าให้ใส่ค่าต่างดังนี้

  • Template name: ตั้งชื่อ Template
  • Visible name: ชื่อที่จะโชว์ที่หน้าแรก
  • Group in group: เลือก group Templates
  • Host/templates in: เลือกเครื่อง host ที่จะใช้ template นี้


Continue reading

โดยปกติ icinga สามารถ monitor service ที่เป็นแบบ public บน windows ได้อยู่แล้วเช่น Web Server (http,https), file server (ftp), mail (smtp,pop3,imap) เป็นต้น หรือ service ที่มีการเปิด port listening ไว้ก็จะสามารถ monitor ได้ทั้งหมด แต่ถ้าหากเป็น service ที่เป็น private เช่น ถ้าต้องการเช็ค service explorer นั้นทำงานอยู่รึเปล่านั้น จะไม่สามารถใช้ service แบบ public มา monitor ได้ ดังนั้นต้องติดตั้ง agent บนเครื่อง windows และคุยผ่าน agent แทน โดย icinga สามารถที่จะ monitor private service เครื่องที่เป็น windows ได้ผ่าน plugin check_in ของโปรแกรม Nagios บน icinga server และ plugin check_in ก็จะไปคุยกับ agent ที่ติดตั้งบน windows ชื่อว่า NSClient++ ซึ่งจะรองรับเฉพาะ windows ที่เป็น 64 bit หรือเป้าหมายจริงๆ นั้นเขาจะทำมาเพื่อใช้ monitor ใน windows server เสียมากกว่ามา monitor windows ที่เป็น desktop โดยจะสามารถ monitor ดังนี้

  • Memory usage
  • CPU load
  • Disk usage
  • Service states
  • Running processes
  • อื่นๆ


Continue reading

ครั้งที่แล้วได้อธิบายถึงการใช้งาน Zabbix มา Monitor Web Page ไปแล้ว แต่ถ้าหากเราจะ Monitor ใน web ที่ต้องทำการ Login เข้าไปล่ะ จะทำยังไง? ในบทความนี้ก็จะอธิบายการใช้ Web Monitoring มา Monitor หน้า Web ที่ต้องทำการ Login เข้าไปก่อน ซึ่งผมจะยกตัวอย่างโดยใช้เจ้า Web UI ของ Zabbix เอง โดยจะทดลอง 4 Step คือ Monitor ที่หน้า Login ก่อน จากนั้นก็ Loin เข้าไปหา String “Profile” และจากนั้นก็สั่ง Logout ออกมา โอเคทีนี้เรามาดูวิธีการเลยดีกว่าอันดับแรกให้เข้าไปหน้า Web UI ของ zabbix URL:http://x.x.x.x/zabbix แล้ว Login เข้าไปด้วยสิทธิ์ admin => Configuration => Hosts => คลิ๊กที่ Web ของ Host Zabbix server

คลิ๊กที่ Create scenario


Continue reading

Halite คือตัวจัดการ Salt Master ผ่านหน้า Web interface โดยติดตั้งบน host salt master ทำให้สำหรับคนที่ไม่ถนัดการใช้ command สามารถ config salt master ได้ง่ายขึ้น แต่ Halite นั้นยังอยู่ในช่วง Develop ซึ่งเป็น version pre-alpha และ support salt ตั้งแต่ version 2014.1.0 ขึ้นไป ลักษณะการทำงานจะเป็นแบบใน Diagram ด้านล่างนี้

Continue reading

สวัสดีครับเรามาเรียนรู้วิธีการ Monitor เครื่อง Client ด้วย icinga กัน วิธีการ Monitor เครื่อง Client โดย icinga นั้นทำได้อยู่ 2 วิธี วิธีแรก Monitor ด้วย Service ที่ให้บริการบนเครื่อง Client เช่น Service HTTP, HTTPS, FTP, SMTP, POP3, IMAP เป็นต้น และอีกวิธีหนึ่งคือ Monitor ด้วยการติดตั้ง NRPE agent บนเครื่อง Client โดยเจ้า NRPE agent นี้สามารถที่จะ Monitor ได้ละเอียดกว่าวิธีแรกคือสามารถที่จะดูขนาดของ storage, ดูการใช้งาน CPU, RAM และสามารถ Monitor อื่นๆ ได้อีกมากมาย

โดยในตัวอย่างจะมี 3 เครื่อง คือ 1)เครื่อง icinga Server (icinga) 2)เครื่อง web server (agentweb) และ 3)เครื่อง agent NRPE (agentnrpe)
ขั้นตอนการ Monitor Service HTTP เครื่อง agentweb ให้ไป config ที่เครื่อง icinga ก่อน (ในตัวอย่างตั้งชื่อ file agentweb.cfg)


Continue reading

ก่อนที่จะอธิบายการทำ Git Fileserver Backend บน Salt Master จะอธิบายความหมายต่างๆ ที่ควรรู้ก่อนน่ะครับ Salt Master คือ Service ของ Salt ที่ติดตั้งอยู่บนเครื่อง Server เพื่อเป็นตัวควบคุม Client หรือเรียกว่า Salt Minion เช่น เราสามารถสั่งติดตั้ง Package bind9 และสั่ง start service bind9 ให้อัตโนมัติจากเครื่อง Salt Master ได้เลย โดยการสั่งงานผ่าน SLS Formula หรือ Script ซึ่งอยู่ใน File server ของเครื่อง Salt Master ซึ่งโดยปกติ salt file server path จะอยู่ที่ directory /srv/salt/ ของ host salt master ซึ่งเราสามารถเปลี่ยนให้ไปเรียกที่ git repository ได้ หมายความว่าเราสามารถเรียก Script SLS Formula จาก repository ที่อยู่ใน git server ได้ git server ถ้าอธิบายแบบง่ายๆ ก็คือ การทำ version control ให้กับ code ที่เราเขียนขึ้น สามารถอ่านเพิ่มเติมได้ที่ Link นี้ครับ ซึ่ง git server นี้จะเป็น git server ที่ติดตั้งขึ้นมาเองก็ได้ หรือจะใช้เป็นบริการฟรีอย่างเช่นเว็ปไซด์ github.com ซึ่งเป็นเว็บไซต์ที่ให้บริการเสมือน git server เป็นบริการฟรีแบบมีเงื่อนไขคือ คุณสามารถใช้งานได้ฟรี แต่โปรเจ็กที่สร้างขึ้นจะต้องเป็นแบบ public เท่านั้น คือ คนอื่นสามารถเข้าไปดูโค้ด ดูดโค้ด ท่านได้ ถ้าไม่อยากให้ชาวบ้านเห็นโปรเจ็กของท่าน ก็ต้องเสียตังใช้บริการ เพื่อสร้างโปรเจ็กแบบ private หรือ git server ที่ให้บริการฟรีอีกเว็ปไซด์ก็คือ bitbucket.com
Continue reading

สวัสดีครับมาดูการ Fork และ Pull Request ใน Github กันครับ ซึ่งความหมายของ Fork ในภาษาอังกฤษแปลว่าการแตกสาขา ใน GitHup ก็จะหมายถึงการ copy repository ที่มีอยู่แล้วนำมาพัฒนาต่อยอดไป ส่วนใหญ่ก็จะ Fork จาก repository ที่ share public ไว้ หรือใน repository ที่เรามี permission ก็จะสามารถ Fork repository นั้นมาได้ ส่วนการ Pull Request คือการบอกถึงการเปลี่ยนแปลงใน repository ของเรากับ repository อื่น คนอื่นสามารถมา comment, review การเปลี่ยนแปลงนั้น, modification หรือแม้แต่สามารถ push และ commit ถ้าจำเป็น
Continue reading

zabbix สามารถ monitor website ต่างๆ ตามที่เรากำหนดได้ ซึ่งตอนติดตั้ง zabbix server ต้องกำหนดให้ support cURL(libcurl) ด้วยจึงจะสามารถใช้งานในส่วนนี้ได้โดยสามารถดูวิธีการติดตั้ง libcurl เพิ่มเติมได้ที่ Link นี้ zabbix สามารถ monitor ได้ทั้ง HTTP และ HTTPS web monitoring จะแบ่งเป็น 2 ส่วนคือ web scenario และ step โดย web scenario จะประกอบด้วย HTTP request หรือเรียกว่า steps ใน steps สามารถบอกถึงค่า download speed per second, response time, response code และค่าอื่นๆ และ zabbix monitoring ยังสามารถตรวจสอบ HTML page นั้นมี string ที่เราต้องการอยู่หรือไม่ เรามาเริ่มการ config zabbix web monitoring กันเลย ในตัวอย่างผมจะกำหนดให้มี zabbix server 1 host และ zabbix agent 1 host ซึ่งติดตั้ง web server ไว้รายละเอียดต่างๆ ของแต่ล่ะ host ดังนี้
Continue reading