ELK #03

วิธีการติดตั้ง Kibana บน Ubuntu 16.04 ก่อนอื่น Update sudo apt -y update ; sudo apt -y upgrade ติดตั้ง Java JDK sudo apt -y install default-jdk Download และติดตั้ง wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.2-amd64.deb sudo dpkg -i kibana-5.4.2-amd64.deb จากนั้นแก้ไขไฟล์ /etc/kibana/kibana.yml เพิ่มบรรทัดสุดท้าย server.host: “192.168.xxx.yyy” elasticsearch.url: “http://your.elastic.host:9200” จากนั้น Start Service sudo service kibana start เปิด Web Browser ไปที่ http://192.168.xxx.yyy:5601

Read More »

ELK #02

ขั้นตอนการติดตั้ง Logstash บน Ubuntu 16.04 ก่อนอื่น Update sudo apt -y update ; sudo apt -y upgrade ติดตั้ง Java JDK sudo apt -y install default-jdk Download และติดตั้ง wget https://artifacts.elastic.co/downloads/logstash/logstash-5.4.2.deb sudo dpkg -i logstash-5.4.2.deb Start Logstash Service sudo service logstash start ต่อไป สร้าง Configuration ไว้ใน /etc/logstash/conf.d/ เช่น จะสร้าง Pipeline ที่อ่านจาก File /tmp/test.log แล้ว ส่งไปที่ Elasticsearch โดยตรง ให้สร้างไฟล์ /etc/logstash/conf.d/file.conf ดังนี้ input { file { path => “/tmp/test.log” type=> “test” } } output { file { path => “/tmp/output.txt” } } เมื่อลองใช้คำสั่ง echo “$(date): New World” >> /tmp/test.log ก็จะปรากฏไฟล์ /tmp/output.txt ขึ้น ต่อไป ลองเปลี่ยน Output เป็น Elasticsearch โดยการสร้างไฟล์ /etc/logstash/conf.d/es.conf input { file { path => “/tmp/test.log” type=> “test” } } output { elasticsearch { hosts => [“http://your.elastic.host:9200”] } } เมื่อลองใช้คำสั่ง echo “$(date): New World” >> /tmp/test.log ก็จะปรากฏบรรทัดใหม่ใน /tmp/output.txt และ มีการเขียนไปบน Elasticsearch ด้วย ลองเปิด Web Browser แล้วใช้คำสั่งต่อไปนี้ http://your.elastic.host:9200/_cat/indices?v ก็จะได้ผลลัพธ์ประมาณนี้ จากนั้น วิธีที่จะแสดงผลที่เก็บไว้ใน Elasticsearch ให้เปิด URL นี้ http://your.elastic.host:9200/logstash-2017.06.24/_search?q=* ก็จะได้ผลลัพธ์ประมาณนี้ แล้วยังไง ??? รอดูตอนต่อไป

Read More »

ELK #01

ELK = ElasticSearch + LogStash + Kibana วิธีการติดตั้ง ElasticSearch บน Ubuntu 16.04 ก่อนอื่น Update sudo apt -y update ; sudo apt -y upgrade ติดตั้ง Java JDK sudo apt -y install default-jdk Download และติดตั้ง wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.2.deb sudo dpkg -i elasticsearch-5.4.2.deb sudo update-rc.d elasticsearch defaults 95 10 แก้ไขไฟล์ /etc/elasticsearch/elasticsearch.yml โดยเพิ่มบรรทัดสุดท้าย cluster.name: my-cluster-name network.host: [_site_] node.name: ${HOSTNAME} เริ่มทำงาน sudo -i service elasticsearch start ทดสอบการทำงาน โดยใช้คำสั่ง curl -XGET “${HOSTNAME}:9200/?pretty” ดู Log ได้ที่ sudo tail -f /var/log/elasticsearch/my-cluster-name.log

Read More »

Juju #04 – วิธีทำให้ WordPress กระจายงานไปยัง MySQL Slave ด้วย HyperDB

ต่อจาก Juju #03 – วิธีสร้าง Load Balance MySQL เมื่อมี MySQL Server มากกว่า 1 ตัว ซึ่งทำการ Replication กัน (ในตอนนี้ 2 ตัว คือ Master กับ Slave) ซึ่งให้ความสามารถในเรื่อง [1] Data-Security : เมื่อข้อมูลถูก Replicate ไปที่ Slave แล้ว เราสามารถหยุดการทำงานของ Slave เพื่อทำการสำรองข้อมูลได้ โดยไม่กระทบประสิทธิภาพการทำงานของ Master Analytics: ทำการวิเคราะห์ข้อมูลต่างๆได้ที่ Slave โดยไม่กระทบประสิทธิภาพการทำงานของ Master Scale-Out Solutions: เมื่อมี Slaves หลายตัว ทำให้สามารถกระจายงานในด้าน Read เพื่อเพิ่มประสิทธิภาพ โดยการแก้ไขข้อมูล จะทำที่ Master เท่านั้น ในบทความนี้ จะกล่าวถึงวิธีการ Scale-Out Solutions ของ WordPress เท่านั้น โดยใช้ Plugin ชื่อ HyperDB HyperDB [2] เป็น Database Class ที่ใช้แทนที WordPress built-in database functions โดยจะทำให้ WordPress สามารถติดต่อกับ MySQL ได้หลายเครื่อง โดยที่สามารถกำหนดได้ว่าจะ Write ไปยัง Master และ Read จากทั้ง Master และ Slaves อีกทั้งยังสามารถ Failover ได้อีกด้วย วิธีการติดตั้ง HyperDB ที่ WordPress ใช้คำสั่ง wget https://downloads.wordpress.org/plugin/hyperdb.1.2.zip sudo apt-get install unzip sudo unzip hyperdb.1.2.zip ย้ายไฟล์ hyperdb/db-config.php ไปยังที่ Directory เดียวกันกับ wp-config.php (ในที่นี้คื่อ /var/www/) sudo cp hyperdb/db-config.php /var/www ย้ายไฟล์ hyperdb/db.php ไปยังที่ Directory wp-content (ในที่นี้คื่อ /var/www/wp-content) sudo cp hyperdb/db.php /var/www/wp-content/ แก้ไขไฟล์ db-config.php (ในที่นี้คื่อ /var/www/db-config.php) [3] โดยค้นหาคำว่า DB_HOST ซึ่งควรจะปรากฏอยู่แค่ 2 แห่งในไฟล์ ให้ไปที่ชุดที่ 2 ซึ่งมีเนื้อหาประมาณนี้ จากนั้นแก้ไข DB_HOST ให้เป็น DB_SLAVE_1 ต่อไปก็ไปเพิ่ม define(‘DB_SLAVE_1′,’xxx.xxx.xxx.xxx’) ซึ่งไฟล์ wp-config.php หรือไม่ก็ wp-info.php (ในที่นี้อยู่ที่ /var/www/wp-info.php) เมื่อทดสอบใช้งาน พบว่า มี Query มาทั้งที่ master และ slave ในภาวะว่าง ในภาวะมีงานเข้ามา ทดสอบเพิ่มบทความใหม่ ชื่อ “This is my first article” พบว่า ระบบสามารถเขียนไปยัง Master แล้วสามารถส่งต่อไปให้ Slave ได้ ต่อไป เพิ่ม mysql-slave2 เข้าไปใน Juju และสร้าง Relation เป็น master -> Slave เช่นกัน แล้วทำการเพิ่ม DB_SLAVE_2 เข้าไปใน db-config.php และ wp-info.php ก็จะพบว่าข้อมูลได้ Replicate ไปหา Slave2 แล้ว และ เมื่อทำการ

Read More »

วิธีใช้ Google Sites เพื่อแสดงรายงานผลการลงทะเบียนจาก Google Form

ปัจจุบันการสร้างแบบฟอร์มการรับลงทะเบียนออนไลน์สามารถทำได้ง่ายๆโดยใช้ Google Form โดยวันนี้มีโจทย์ว่า ต้องการรับลงทะเบียนผู้ที่จะร่วมเดินทาง กำหนดว่า ต้องการเดินทางกับรถบัสหมายเลขใด (มี 3 คัน) และต้องการแสดงผลทันทีว่า แต่ละคันมีจำนวนคนเท่าไหร่แล้ว และ ใครบ้างที่เดินทางไปในรถบัสคันนั้น วิธีการคือ สร้าง Google Form เพื่อทำระบบรับลงทะเบียนตามปรกติ ในส่วนของการสร้างแบบฟอร์ม ให้คลิกที่ RESPONSES แล้วคลิกที่รูป สี่เหลี่ยมสีเขียว (Google Sheets)  แล้วจัดรูปแบบให้เรียบร้อย เช่นต้องการจะซ่อน Column ใดบ้าง (จะใส่สี ก็ได้นะ) เสร็จแล้ว คลิกที่ปุ่ม Share กำหนดให้ Anyone with Link “Can View” แล้วคลิก Done สร้าง Google Sites และสร้างโครงสร้าง Page ต่างๆตามต้องการ ในตัวอย่างนี้ จะสร้าง Page “รายชื่อ” เพื่อไว้ใช้แสดงผลการลงทะเบียน ว่า รถหมายเลขใด มีจำนวนกี่คนแล้ว และใครบ้าง ให้เลือก Insert > More gadgets แล้วคลิกที่ Public > Include gadget (Iframe) จากนั้น มาใส่ URL กัน ใส่ URL ตามนี้https://spreadsheets.google.com/tq?tqx=out:html&tq=select  L,count(B) group by L  label count(B) ‘จำนวน’&key=XXXXXXXXXXXXXXXXXX เพื่อให้แสดงผลว่า รถบัสหมายเลขใด มีจำนวนคนเท่าไหร่ โดยที่ tq เป็น Query เขียนว่า select L, count(B) group by L label count(B) ‘จำนวน’ คือการแสดงคอลัมน์ L และ นับจำนวนโดยการ count โดยจัดกลุ่มตามคอลัมน์ L นอกจากนั้นยัง label คอลัมน์ count(B) เป็นคำว่า “จำนวน” ผลที่ได้คือ และ key=XXXXXXXXXXX นั้น ให้เอาค่าจาก ต่อไปให้แสดงผลรายชื่อทั้งหมด โดยสามารถแยกรายชื่อแต่ละคัน โดย Insert > Drive > Spreadsheet แล้วเลือก Google Sheet ที่ต้องการ เมื่อดำเนินการเสร็จแล้ว ระบบก็จะสามารถแสดงผลการลงทะเบียนได้อัตโนมัติ  

Read More »