การใช้งาน Google Drive API ด้วย Google Client Library for Python

ในบทความนี้ จะแนะนำวิธีการเขียน Python เพื่อติดต่อกับ Google Drive API ทาง Google Client Library ซึ่ง จะใช้ REST v2 [1] เนื่องจาก ใน REST v3 ยังหาทางแสดง Progress ไม่ได้ (หากได้แล้วจะมา Update นะ) สิ่งต้องมี Python 2.6 ขึ้นไป PIP Package Management Tool เครื่องต้องต่อ Internet ได้ แน่นอน มี Google Account ขั้นที่ 1: เปิดใช้ Drive API เปิด URL https://console.cloud.google.com แล้วคลิก Select a project จากนั้นคลิกปุ่ม + เพือสร้าง Project ตั้งชื่อ Project แล้วคลิก Save เลือก Project ที่สร้างขึ้น เลือก API Library ที่ต้องการ ในที่นี้คือ Google Drive API แล้วคลิก Enable จากนั้น Create Credentials เลือกชนิดเป็น OAuth Client ID แล้วกรอกข้อมูลดังนี้ สร้าง Consent Screen เลือก Application Type เป็น Web Application, ระบุ Name (จะแสดงตอนขอ Permission) แล้วตั้งค่า URL ทั้ง 2 อันเป็น http://localhost:8080   และ สุดท้าย คลิก Download ก็จะได้ไฟล์ JSON มา ส่งนี้จะเรียกว่า “Client Secret File”  ให้เก็บไฟล์ไว้ใน Directory เดียวกันกับที่ต้องการจะเขียน Python Code โดยสามารถแก้ไขเปลี่ยนชื่อ เช่น ตั้งเป็น client_secret.json ขั้นที่ 2: ติดตั้ง Google Client Library ติดตั้งด้วย pip ตามคำสั่งต่อไปนี้ pip install –upgrade google-api-python-client ขั้นที่ 3: เขียน Code เพื่อติดต่อ Drive API จาก Python Quickstart [1] เป็นการเริ่มต้นที่ดีมาก เราสามารถนำ Code มาเป็นจุดเริ่มต้นได้ โดยตัวอย่างจะทำการติดต่อไปยัง Google Drive แล้ว List รายการของไฟล์ 10 อันดับแรกออกมา ตัวอย่างที่ Google ให้มา จะอ้างอิงไปยัง Credentials Path ไปยัง directory “.credentials” ใน “Home Directory” ของผู้ใช้ แต่ในตัวอย่างที่จะแสดงต่อไปนี้ ได้แก้ไขให้ “Client Secret File” อยู่ที่ directory เดียวกับ python file และเมื่อทำการ Authorization แล้วก็จะได้ “Credential File” มาเก็บไว้ที่เดียวกัน Code ต้นฉบับ สามารถดูได้จาก https://developers.google.com/drive/v2/web/quickstart/python ในที่นี้จะเปลี่ยนเฉพาะส่วนที่ต้องการข้างต้น และ เขียน Comment เพื่ออธิบายเพิ่มเติมเป็นภาษาไทย (ซึ่งไม่สามารถเขียนลงไปใน Python Code ได้) โดยตั้งชื่อไฟล์ว่า listfile.py from __future__

Read More »

Ambari #02 ติดตั้ง Ambari Agent

ต่อจาก Ambari #01: ติดตั้ง Ambari Server ในบทความนี้ จะขอนำเสนอการติดตั้ง Ambari version 2.5.1 จาก HortonWorks ซึ่งจะทำงานกับ Hortonworks Data Platform (HDP)  2.6 โดยติดตั้งบน Ubuntu 16.04 ในส่วนของ “Ambari Agent” [2] ติดตั้ง Ubuntu 16.04 Server 64bit สิ่งที่สำคัญมากคือ FQDN หรือการอ้างชื่อเต็มของ host ดังนั้น ในไฟล์ /etc/hosts บรรทัดแรกต้องเป็น Fully Qualified Domain Name เช่น (ห้ามเป็น localhost เด็ดขาด) และถ้าจะให้ดี ควรมี DNS Record บน Name Server ด้วย 127.0.0.1   ambari02.example.com ambari02 192.168.1.122   ambari02.example.com ambari02 ต้องทดสอบใช้คำสั่ง hostname -f แล้วได้ชื่อ FQDN ถึงจะใช้งานได้ ตั้งค่า Ambari Public Repository sudo su wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.5.1.0/ambari.list apt-key adv –recv-keys –keyserver keyserver.ubuntu.com B9733A7A07513CAD apt-get update -y sudo dpkg –configure -a echo never > /sys/kernel/mm/transparent_hugepage/enabled apt-cache showpkg ambari-server ติดตั้ง Ambari Agent apt-get install -y ambari-agent แก้ไขไฟล์ /etc/ambari-agent/conf/ambari-agent.ini ให้ระบบ hostname ไปยัง ambari server ในที่นี้คือ ambari01.example.com hostname=ambari01.example.com … run_as_user=ambari เนื่องจากเป็นการติดตั้งแบบ non-root จึงต้องทำการแก้ไข visudo ด้วย โดยเพิ่มบรรทัดต่อไปนี้เข้าไป # Ambari Customizable Users ambari ALL=(ALL) NOPASSWD:SETENV: /bin/su hdfs *,/bin/su ambari-qa *,/bin/su ranger *,/bin/su zookeeper *,/bin/su knox *,/bin/su falcon *,/bin/su ams *, /bin/su flume *,/bin/su hbase *,/bin/su spark *,/bin/su accumulo *,/bin/su hive *,/bin/su hcat *,/bin/su kafka *,/bin/su mapred *,/bin/su oozie *,/bin/su sqoop *,/bin/su storm *,/bin/su tez *,/bin/su atlas *,/bin/su yarn *,/bin/su kms *,/bin/su activity_analyzer *,/bin/su livy *,/bin/su zeppelin *,/bin/su infra-solr *,/bin/su logsearch * Start Ambari Agent ambari-agent start

Read More »

Ambari #01: ติดตั้ง Ambari Server

Apache Ambari เป็นเครื่องมือที่ทำให้การจัดการ Hadoop ง่ายขึ้น [1] แต่การติดตั้ง Apache Ambari เองนั้น (จาก Apache Project) ก็มีความยุ่งยากเล็กน้อย เพราะต้อง Build Source เอง จึงมีบริษัท HortonWorks เค้าไปทำตัว Binary มาให้ download และติดตั้งได้ง่ายกว่า Ambari ประกอบด้วย Ambari Server และ Ambari Agent ซึ่ง Server จะเป็นตัวสั่งการให้ติดตั้ง Hadoop Component ต่างๆลงไปบน Agent ในบทความนี้ จะขอนำเสนอการติดตั้ง Ambari version 2.5.1 จาก HortonWorks ซึ่งจะทำงานกับ Hortonworks Data Platform (HDP)  2.6 โดยติดตั้งบน Ubuntu 16.04 ในส่วนของ “Ambari Server” [2] ติดตั้ง Ubuntu 16.04 Server 64bit สิ่งที่สำคัญมากคือ FQDN หรือการอ้างชื่อเต็มของ host ดังนั้น ในไฟล์ /etc/hosts บรรทัดแรกต้องเป็น Fully Qualified Domain Name เช่น (ห้ามเป็น localhost เด็ดขาด) และถ้าจะให้ดี ควรมี DNS Record บน Name Server ด้วย 192.168.1.121   ambari01.example.com ambari01 ต้องทดสอบใช้คำสั่ง hostname -f แล้วได้ชื่อ FQDN ถึงจะใช้งานได้ UPDATE: ในการระบบทดสอบ ซึ่งประกอบด้วยเครื่องไม่เกิน 5 เครื่อง อาจจะใช้ /etc/hosts บันทึก IP Address และ FQDN ของทุกเครื่องใน Cluster และต้องสร้าง /etc/hosts ให้เหมือนกันทุกเครื่องด้วยเช่นกัน แต่หากต้องทำระบบขนาดใหญ่ แนะนำให้ใช้ DNS ซึ่งต้องทำ Reverse DNS ด้วย กล่าวคือ ต้อง nslookup 192.168.1.2 แล้วกลับมาเป็น ambari01.example.com ได้ แต่หากไม่สามารถจัดการ DNS หลักขององค์กรได้ ก็พอจะใช้งาน dnsmasq ช่วยได้ โดยวิธีการติดตั้งและใช้งานมีดังนี้ apt install dnsmasq แก้ไขไฟล์ /etc/dnsmasq.conf เพิ่มบรรทัดต่อไปนี้ interface=eth0 address=/ambari01.example.com/192.168.1.121 ptr-record=121.1.168.192.in-addr.arpa,ambari01.example.com address=/ambari02.example.com/192.168.1.122 ptr-record=122.1.168.192.in-addr.arpa,ambari02.example.com …. address=/ambari99.example.com/192.168.1.219 ptr-record=219.1.168.192.in-addr.arpa,ambari99.example.com จากนั้น ให้แก้ไขไฟล์ /etc/network/interfaces ของทุกเครื่อง ให้ชี้มาที่ IP ของ Ambari Server ในที่นี้คือ 192.168.1.121 ก็จะใช้งานได้อย่างราบรื่น ตั้งค่า Ambari Public Repository sudo su wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.5.1.0/ambari.list apt-key adv –recv-keys –keyserver keyserver.ubuntu.com B9733A7A07513CAD apt-get update -y sudo dpkg –configure -a echo never > /sys/kernel/mm/transparent_hugepage/enabled apt install -y ntp apt-cache showpkg ambari-server ติดตั้ง Ambari Server apt-get install

Read More »

วิธีสร้าง Docker Swarm

หลายคนคงจะได้ใช้งาน Docker มาแล้ว แต่อาจจะลองใช้งานบน 1 Physical Server กล่าวคือ สร้างหลายๆ container อยู่บนเครื่องคอมพิวเตอร์เครื่องเดียว >> ติดตั้ง docker 17.06.0 CE บน Ubuntu Docker Swarm เป็นเครื่องมือที่ติดมากับ Docker รุ่นตั้งแต่ 1.12 เป็นต้นมา (ปัจจุบัน ชื่อรุ่นคือ 17.06.0 CE) ก่อนอื่น มาตรวจสอบว่า เรากำลังใช้ Docker รุ่นไหนด้วยคำสั่ง docker version Docker Swarm ประกอบไปด้วย Master Node และ Worker Node โดยใน 1 Swarm สามารถมีได้ หลาย Master และ หลาย Worker ในตัวอย่างนี้ จะแสดงการเชื่อมต่อ Ubuntu 16.04 ทั้งหมด 4 เครื่อง เข้าไปใน 1 Swarm (ทุกเครื่องสามารถเชื่อมต่อถึงกันได้ และต่อ Internet ได้ และติดตั้ง Docker ไว้เรียบร้อยแล้ว) [Master Node] ใช้คำสั่งต่อไปนี้ เพื่อสร้าง Swarm Master Node บนเครื่องนี้ docker swarm init จะได้ผลดังภาพ ให้ Copy คำสั่ง ตั้งแต่ “docker swarm join –token …..” เป็นต้นไป เพื่อเอาไปสั่งให้ Work Node เข้ามา Join ใน Swarm [Worker Node] นำคำสั่งจาก Master Node ข้างต้น มาใช้ จากนั้น ทำเช่นเดียวกันนี้ กับ Worker Node ที่เหลือ (และหากในอนาคตต้องการเพิ่ม Worker Node อีก ก็เอาคำสั่งนี้ไปใช้) ตัวอย่างการนำไปใช้ (หากสนใจ ลอง git clone https://github.com/nagarindkx/elk ไปดูได้) สร้าง “Stack File” ซึ่งจะคล้ายๆกับการสร้าง Compose File แต่มีรายละเอียดต่างกันเล็กน้อย ใช้คำสั่ง ต่อไปนี้ เพื่อสร้าง Stack ของ Software ให้กระจายไปใน Worker Nodes docker stack deploy -c $(pwd)/elk.yml k1 ผลที่ได้ วิธีดูว่า ตอนนี้มี Stack อะไรอยู่บ้าง ใช้คำสั่ง docker stack ls ผลที่ได้ วิธีดูว่า ตอนนี้มีการไปสร้าง Container ไว้ที่ใดใน Docker Swarm บ้าง ด้วยคำสั่ง (สั่งการได้บน Master Node เท่านั้น) docker service ps k1 ผลที่ได้ ต่อไป อยากจะเพิ่ม Scale ให้บาง Service ใน Stack ใช้คำสั่ง docker service scale k1_elasticsearch=4 ผลที่ได้   ในตัวอย่างนี้ จะสามารถใช้งาน Kibana ซึ่งจากภาพจะเห็นได้ว่า อยู่ที่ Node “docker04” แต่เราสามารถเรียกใช้งานได้ที่ Master Node “docker01” ได้เลย เช่น

Read More »

ELK #04

คราวนี้มาติดตั้งบน Docker บ้าง ถ้าเครื่อง Server เป็น Ubuntu 16.04 ทำตามขั้นตอนนี้เพื่อให้สามารถใช้งาน Docker ได้ วิธีการติดตั้ง Docker บน Ubuntu 16.04 เนื่องจาก Elasticsearch 5.x ใช้ Virtual Memory มากขึ้น ลองใช้คำสั่งนี้ดูค่าปัจจุบัน sysctl vm.max_map_count ค่า Default น่าจะประมาณนี้ vm.max_map_count = 65530 ให้ทำการเพิ่มด้วยคำสั่งนี้ sudo -i sudo echo “vm.max_map_count=262144” >> /etc/sysctl.conf exit จากนั้นให้ทำการ Reboot ติดตั้ง docker image ของ sebp/elk ด้วยคำสั่ง sudo docker pull sebp/elk โดย Default จะได้ Lastest Version ใช้คำสี่งต่อไปนี้ เพื่อ Start ELK ขึ้นมา โดยเปิด port ให้ Kibana: 5601, Elasticsearch: 9200, Logstash: 5044 และทำงานเป็นแบบ Detach หรือ Background นั่นเอง sudo docker run -d -p 5601:5601 -p 9200:9200 -p 5044:5044 -it –name elk sebp/elk หรือถ้าจะใช้ Docker Compose ก็สามารถใช้งานด้วยวิธีการนี้ เริ่มจาก ติดตั้ง Docker Compose ด้วยคำสั่ง sudo -i curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose exit จากนั้น สร้างไฟล์ /path/to/your/config/elk.yml เนื้อหาดังนี้ elk: image: sebp/elk ports: – “5601:5601” – “9200:9200” – “5044:5044” จากนั้นก็ Start sudo /usr/local/bin/docker-compose -f /path/to/your/config/elk.yml up -d elk หากต้องการให้ container ทำการ start ทุกครั้งที่ Reboot ใช้คำสั่ง sudo crontab -e แล้วใส่บรรทัดนี้ต่อท้ายไฟล์ @reboot /usr/local/bin/docker-compose -f /home/mama/elk.yml up -d elk ทดสอบว่า Container ที่กำลังทำงานอยู่มีอะไรบ้าง sudo docker ps วิธีดูว่า มี Container อะไรบ้าง (ทั้งที่ทำงานและไม่ทำงาน) sudo docker ps -a วิธีดูว่าเกิดอะไรขึ้นกับ Container (ในที่นี้ ชื่อ elk) sudo docker logs elk ถึงจุดนี้ ก็สามารถใช้งาน Kibana ทาง web url: http://your.host:5601 ได้แล้ว   Reference: https://elk-docker.readthedocs.io/  

Read More »