Karn Tirasoontorn

June 8, 2021

ติดตั้ง Sentry เพื่อรายงาน Error

Programmer A: โอ๊ย! เว็บมี ​Error และพังไปอีกแล้ว
Programmer B: อ้าว แล้วมันพังเพราะอะไรหละ
Programmer A: งั้นเดี่ยวขอไปตรวจดู log ก่อนนะ
... ผ่านไป 5 นาที
Programmer A: รู้แล้วว่าเกิดจากอะไร ...

จากบทสนทนาข้างต้น การตรวจสอบดู Error ที่เกิดขึ้นจากอะไรดูยุ่งยากพอสมควร ยิ่งถ้าเราปล่อยออก production การรับรู้ Error ที่เกิดขึ้นก็ต้องรวดเร็วทันใจ ดังนั้นการเลือกใช้เครื่องมือที่ตอบโจทย์จึงเป็นเรื่องสำคัญ

Sentry เองมีบริการทั้งบน cloud และสามารถติดตั้งบน host ของเราเองได้ (onpremise) วันนี้เราจะมาติดตั้ง Sentry ในแบบ onpremise บน DigitalOcean กัน ซึ่งแบบ onpremise จะติดตั้งอยู่โดยใช้ docker สำหรับ droplet ที่ผมใช้ก็จะมีสเปคดังนี้
  • Shared CPU ขนาด 1vCPU
  • SSD ขนาด 60 GB
  • RAM ขนาด 3 GB
  • OS เป็น Ubuntu 18.04.3 (LTS)

ซึ่งเทียบกับสเปคขั้นต่ำที่ทาง Sentry แนะนำมันก็จะต่ำไปพอสมควร 

แต่หลังจากที่ติดตั้ง และใช้งานดูแล้วมันทำงานได้ดีทีเดียว

เริ่มติดตั้ง
  • โคลน repo ลงมาไว้ในเครื่องและกำหนดโฟลเดอร์ให้เป็น sentry

$ git clone https://github.com/getsentry/onpremise.git sentry

  • เข้าไปที่โฟลเดอร์ sentry และคำสั่ง ./install.sh

  • ด้วยความที่สเปคเครื่องเราต่ำกว่าขั้นต่ำ จะทำให้เราไม่สามารถติดตั้งได้ ซึ่งเราสามารถเข้าไปแก้ไขข้อมูลขั้นต่ำที่ตัวติดตั้งตรวจสอบได้ โดยเข้าไปที่ install/check-minimum-requirements.sh และแก้ไขค่า MIN_RAM และ MIN_CPU ให้เหมาะสมกับ droplet ที่เราใช้

echo "${_group}Checking minimum requirements ..."

MIN_DOCKER_VERSION='19.03.6'
MIN_COMPOSE_VERSION='1.24.1'
MIN_RAM_HARD=3000 # MB
MIN_RAM_SOFT=6000 # MB
MIN_CPU_HARD=1
MIN_CPU_SOFT=3

  • รันคำสั่ง ./install.sh อีกครั้ง จากนั้นตัวติดตั้งก็ทำให้เราหมดทุกอย่าง ไม่ว่าจะเป็นการสร้างไฟล์ config พื้นฐาน ดาว์นโหลด docker image ต่างๆ มาติดตั้งจนเสร็จ และสุดท้ายก็จะให้เรากำหนด admin account สำหรับการเข้าสู่ระบบ

  • ก่อนที่เราจะรันระบบ ให้เราเข้าตรวจสอบ config ในไฟล์ sentry/config.yml และ sentry/sentry.conf.py เพื่อกำหนดค่าต่างๆ ที่จำเป็นไม่ว่าเป็นเรื่องการส่งอีเมล์ การเข้าถึงเว็บ การเชื่อมต่อกับ redis และอื่นๆ อีกมาก ซึ่งสามารถดูรายละเอียดได้จากที่นี่

  • รันคำสั่ง docker-compose up -d และลองเข้าหน้าเว็บดูผ่านเลขไอพีแอดเดรส
  • แต่ถ้าอยากจะเข้าผ่านโดเมน ให้เรากำหนดค่าผ่าน reverse proxy อย่างเช่น nginx ซึ่งเราสามารถเข้าไปดูตัวอย่างได้ในไฟล์ nginx/nginx.conf
  • จากนั้นก็ลองสร้างโปรเจค และทดลองใช้งานจริงดู

References:

<script type='text/javascript' src='https://storage.ko-fi.com/cdn/widget/Widget_2.js'></script><script type='text/javascript'>kofiwidget2.init('Support Me on Ko-fi', '#f542e6', 'Z8Z12J9KQ');kofiwidget2.draw();</script>