เราสามารถดู log ของ app ที่ deploy บน Heroku ด้วยคำสั่ง

$ heroku logs

แต่หากมีการ deploy application บน Heroku ไว้หลายตัว และต้องการระบุ log ของ application ที่ต้องการ สามารถใช้คำสั่ง

$ heroku logs --app <ชื่อ application>

รูปแบบของการแสดงผล log จะมีรูปแบบดังนี้

  • timestamp source[dyno]: message
  • timestamp : เวลาที่บันทึกข้อมูล
  • source : ข้อมูลสำหรับ dynos application (เช่น web dynos, background workers, cron) และข้อมูลสำหรับ system component (เช่น HTTP router, dyno manager)
  • dyno : ชื่อของ dyno หรือ component ที่ใช้ระบุในรายการ log ยกตัวอย่างเช่น Heroku HTTP router ก็จะระบุเป็น router
  • message : เก็บ/ระบุรายละเอียด ของรายการ log ซึ่ง generate จาก dynos และจะเก็บข้อมูล และแสดงผลเป็นข้อความได้ที่ 10,000 bytes


Continue reading

เว็บนี้เคยนำเสนอเรื่อง Logstash, Kinana, ElasticSearch ไปบ้างแล้ว ซึ่งอธิบายรายละเอียดในส่วนของการติดตั้งไว้อย่างดี ครั้งนี้จะมาแนะนำการใช้งานผ่าน Container กันบ้าง Logstash เป็นเครื่องมือที่ได้รับความนิยมมากขึ้น เพราะไม่เพียงแค่มีความสามารถในการดึง log จากไฟล์ filter log และการเชื่อมต่อกับ syslog-ng ได้ แต่ยังสามารถเชื่อมต่อกับ ElasticSearch ทำให้การเก็บ log บนฐานข้อมูลมีประสิทธิภาพมากขึ้น การจัดการ log ทำได้ง่ายผ่าน LogStash ได้ง่าย

สำหรับ Kibana เป็นโครงการ Visualized ข้อมูลที่มีอยู่ใน ElasticSearch ทำให้เราสามารถสร้างการประมวลผลข้อมูลจาก log ธรรมดาจาก ElasticSearch ให้กลายเป็น Grap ที่ดูเข้าใจได้ง่าย และที่สำคัญคือสามารถเขียน config เพื่อใช้ในการวิเคราะห์ข้อมูลได้ด้วย

ครั้งนี้เราจะมาใช้งาน Logstash, Kibana และ ElasticSearch ผ่าน Docker Container มีนักพัฒนาหลายรายประยุกต์ Container กับบริการเหล่านี้ แต่มี Docker Image อยู่ชุดหนึ่งเป็นจุดเริ่มต้นได้ง่ายคือ pblittle/docker-logstash ทำออกมาได้ดี และมีเอกสารอ้างอิงที่เข้าใจได้ง่าย ใน image ชุดนี้ได้รวมเอา service ทั้งหมดรวมเข้าไว้เป็นก้อนเดียว แต่การเรียกใช้งานไม่จำเป็นต้องเรียก service ภายในตัวเองทั้งหมด แต่สามารถเรียกใช้ service ภายนอกเข้ามาร่วมได้ด้วย สำหรับ logstash config สามารถ link จาก url ภายนอกได้ซึ่งทำให้ง่ายในการจัดการมากขึ้น ลองดูตัวอย่าง


Continue reading

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

@app.route('/home/<name>')
def home(name):
    return 'Hello, %s' % name

@app.route('/error')
def error():
    return hello_world

ดูโค้ดที่เพิ่มเข้าไปผ่าน git diff hello.py ก็ได้
Continue reading

IT Bakery จัดอบรม สร้าง Centralized Log ด้วยตัวคุณเอง หลักสูตรการติดตั้งระบบจัดเก็บข้อมูลการจราจรทางคอมพิวเตอร์เพื่อให้ ผู้ดูแลระบบคอมพิวเตอร์ของหน่วยงานที่เข้าอบรมมีความเข้าใจระบบจัดเก็บ ข้อมูลการจราจรทางคอมพิวเตอร์ (Log File) และสามารถจัดเก็บข้อมูลดังกล่าวได้อย่างถูกต้อง ตาม พรบฯ ว่าด้วยการกระทำความผิดทางคอมพิวเตอร์ พ.ศ.2550

รายละเอียดเพิ่มเติม www.itbakery.net/training

สถานที่อบรม
ห้องอบรม ดีคอม กรุ๊ป เลขที่ 50 ซอยงามดูพลี ถนนพระราม 4 เขตสาทร กรุงเทพ
10120 (DCOMPUTER)

วันและเวลาในการอบรม
ครั้งที่ 8 วันเสาร์ที่ 13 และ วันอาทิตย์ที่ 14 ธันวาคม 9.00 น. -17.00 น.
ระยะเวลาในการอบรม : 2 วันเต็ม

หลักสูตรการอบรม วันที่ 1

  1. ทำความเข้าใจในรายละเอียดของ พรบ.ฯ ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์
  2. อธิบายระบบในภาพรวมที่ต้องดำเนินการติดตั้ง
  3. แนะนำระบบปฎิบัติการลินุกซ์
  4. ติดตั้งระบบปฎิบัติการลินุกซ์
  5. ทำความเข้าใจกับระบบ linux file system
  6. การใช้งานระบบปฎิบัติการลินุกซ์เบื้องต้น และคำสั่งที่จำเป็นต่อการใช้งานในฐานะผู้ดูแลระบบ
  7. ติดตั้งและปรับแต่งระบบ time server
  8. ติดตั้งและปรับแต่งระบบยืนยันตัวบุคคล (authentication server)
  9. การบริหารจัดการผู้ใช้งานในระบบ

หลักสูตรการอบรม วันที่ 2

  1. การติดตั้งและปรับแต่งระบบ proxy server
  2. การติดตั้งระบบ Centralized log server โดยใช้โปรแกรม syslog-ng
  3. การจัดส่ง log file ไปเก็บยังเครื่อง centralized log server
  4. การจัดเก็บ log file ของ internet traffic แยกตาม protocol โดยใช้ iptables
  5. แนะนำเบื้องต้นเกี่ยวกับการจัดเก็บ log file บนระบบปฎิบัติการ windows
  6. การบริหารจัดการข้อมูล log file ในระบบ
  7. การบีบอัดข้อมูล
  8. การทำ log file encryption เพื่อรักษาความปลอดภัยของข้อมูล
  9. การทำ hashing เพื่อตรวจสอบความถูกต้องของข้อมูล
  10. การทำ log rotate เพื่อบริหารจัดการข้อมูลให้จัดเก็บได้ครบ 90 วันตาม พรบฯ
  11. วิธีปฎิบัติเมื่อพนักงานเจ้าหน้าที่เรียกขอข้อมูลการจราจรทางคอมพิวเตอร์

จากที่ได้อ่านมาใน เรื่องของ พรบ. คอมพิวเตอร์ที่เพิ่งจะมีผลบังคับใช้ไป ผมเองกำลังคิดอยู่ถึงข้อหนึ่งในการบังคับใช้คือ ผู้ให้บริการการเข้าถึง Internet ทุกระดับต้องเก็บ Log ซึ่งคำว่า ผู้ให้บริการ ในความหมายที่ระบุตาม พรบ. ตามที่ตีความได้ น่าจะหมายถึง
1. ระดับ ISP
2. ระดับองค์กร ที่มีการแชร์อินเทอร์เน็ตใช้ในองค์กร
3. ลงไปจนถึงผู้ให้บริการในระดับบ้าน
คิดว่าหลายๆคนคงนึกไม่ถึงว่าใน พรบ. นั้น เราเองจะถูกระบุให้เป็นผู้บริการอินเทอร์เน็ตด้วย เช่นตัวผมเองก็โดนแล้ว เพราะติด Wireless rounter ไว้ใช้กับคอมในบ้านสองตัว

สิ่งแรกที่ผมต้องทำกับเจ้า Rounter นั้นคือ Lock Mac address ก่อน ให้คนอื่นใช้ไม่ได้ เดี๋ยวใครเข้ามาใช้แล้วไปทำไม่ดีล่ะผมจะซวยเอา

ทีนี้ ถัดมาคือ เรื่องของการเก็บ Log เป็นอันว่า ผมต้องเก็บ Log แล้วเหรอเนี่ย ถ้าไม่เก็บจะมีผลอะไรไม๊ ไม่ต้องพูดถึงเรื่องจะมีใครมาจับหรือเปล่านะ เอาว่าถูกต้องหรือไม่ก่อนก็พอ ซึ่งในความเป็นจริงแล้ว ผมคิดว่าแทบจะเป็นไปไม่ได้เลย ที่ผู้ให้บริการระดับย่อย เช่น ผู้ใช้ตามบ้าน หรือบริษัทขนาดเล็กในระดับ SME จะมีความสามารถในการเก็บ Log ดังนั้นกลุ่มผู้ให้บริการระดับนี้อาจต้องหาทางออกในการป้องกันตัวเองด้วยวิธีอื่น ซึ่งก็ไม่รู้ว่าจะเป็นไปได้หรือเปล่า แต่จากข้อกำหนดใน พรบ. แล้วคือ ถ้าไม่เก็บ Log ก็ถือว่าผิดแล้ว ไม่ต้องรอให้ใครมากระทำความผิดผ่านเครือข่ายของเราแต่อย่างใด

ก็ ถ้าพูดกันตามจริงแล้ว ผู้ออก พรบ. ฉบับนี้ (ถ้าเข้าใจไม่ผิดก็ กระทรวงไอซีทีนี่เอง) ควรจะมีทางออกให้กับผู้ที่โดนผลบังคับใช้ไว้ด้วย เพราะถ้าบังคับแล้วไม่มีการแนะนำแบบนี้ เหมือนถูกจับมาปล่อยกลางทะเลก็ไม่ปาน

คือที่บ่นมานี่ แค่จะบอกว่า มันกว้างไปไม๊

อ่อ ท่านใดมี Solution ง่ายๆในการเก็บ Log ให้ผู้ใช้ตามบ้านเช่นผม ก็ วานกระซิบกันมั่งนาครับ

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

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

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

กลับมาที่ IPV6 ตามหัวเรื่อง ตามความเข้าใจของผมนั้น IP ปัจจุบันที่เราใช้กันอยู่ จะเป็น IPV4 ซึ่งเลขมันไม่พอที่จะรองรับอุปกรณ์ทุกชิ้นที่เชื่อมต่อกันอินเทอร์เน็ต ดังนั้นเลขมันก็เลยต้องสุ่ม แต่ถ้าหากว่าเป็น IPV6 แล้ว ชุดตัวเลขมันจะเยอะมาก โดยที่จะสามารถใช้ได้โดยไม่ซ้ำกัน คล้าย Mac Address (ถ้าผมเข้าใจไม่ผิดนะ)

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

อันนี้เป็นความสงสัยส่วนตัว ผมเข้าใจถูกรึเปล่า ใครมีคำตอบวานด้วยครับ