Sentry Logging cho Rails
Bài đăng này đã không được cập nhật trong 9 năm
Sentry là gì?
Sentry là một nền tảng logging sự kiện chủ yếu tập trung vào việc nắm bắt và tổng hợp các exception. Sentry ban đầu được hình tại Disqus vào đầu năm 2010 để giải quyết logging exception trong một ứng dụng Django. Kể từ đó nó đã phát triển để hỗ trợ nhiều ngôn ngữ phổ biến và nền tảng, bao gồm cả Python, PHP, Java, Ruby, Node.js, và thậm chí JavaScript.
Raven là gì?
Raven là client dùng để gửi các dữ liệu logging tới server Sentry
Tại sao nên sử dụng Sentry?
Bạn đã từng gặp khó khăn với việc debug cũng như theo dõi log các exception trong các file production.log, staging.log, ... Việc tìm kiếm các dòng log cũng rất khó khăn và mất nhiều thời gian. thường thì sẽ là:
ssh clouduser@123.231.414
cd current
cat log/production.log | grep bug1
Mà chưa chắc đã tìm thấy dòng lỗi bạn cần tìm Và hãy tưởng tượng rằng bạn phải maintain hàng chục server thì sẽ phải kiểm tra log ra sao mỗi khi xảy ra lỗi.
Sentry đem lại cho bạn: *Khả năng thông báo lỗi ngay lập tức và chi tiết thông qua notification mail *Tổng hợp và quản lý các lỗi của nhiều server *Có thể tích hợp với nhiều ngôn ngữ và nền tảng
Cài đặt
Tham khảo tại Sentry Docs
Yêu cầu
Unix-based system
python 2.7
python-setuptools, python-pip, python-dev, libxslt1-dev, libxml2-dev, libz-dev, libffi-dev, libssl-dev
Database: MySQL hoặc PostgreSQL
Redis
Nginx
Cài đặt môi trường
pip install -U virtualenv
virtualenv /www/sentry/
source /www/sentry/bin/activate
Cài đặt Sentry
# install sentry
pip install -U sentry
# or install sentry and its postgresql dependencies
pip install -U sentry[postgres]
# or if you choose, mysql
pip install -U sentry[mysql]
hoặc có thể cài đặt từ source https://github.com/getsentry/sentry
python setup.py develop
Khởi tạo cấu hình
Bây giờ, cần khởi tạo cấu hình mặc định cho Sentry
sentry init
Cấu hình mặc định sẽ được đặt ở ~/.sentry/sentry.conf.py Tuy nhiên cũng có thể tùy chỉnh như sau
sentry init /etc/sentry.conf.py
Bạn cần tùy chỉnh lại các gía trị cho phù hợp với hệ thống của bạn
# ~/.sentry/sentry.conf.py
# for more information on DATABASES, see the Django configuration at:
# https://docs.djangoproject.com/en/1.6/ref/databases/
DATABASES = {
'default': {
# We suggest PostgreSQL for optimal performance
'ENGINE': 'django.db.backends.postgresql_psycopg2',
# Alternatively you can use MySQL
'ENGINE': 'django.db.backends.mysql',
'NAME': 'sentry',
'USER': 'postgres',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
# No trailing slash!
SENTRY_URL_PREFIX = 'http://sentry.example.com'
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000
SENTRY_WEB_OPTIONS = {
'workers': 3, # the number of gunicorn workers
'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'}, # detect HTTPS mode from X-Forwarded-Proto header
}
SENTRY_REDIS_OPTIONS = {
'hosts': {
0: {
'host': '127.0.0.1',
'port': 6379,
}
}
}
Cách cài đặt Redis bạn có thể xem qua ở http://redis.io/topics/quickstart
Cấu hình cho outbound email
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = ''
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_USE_TLS = False
Migration
# If you're using Postgres, and kept the database ``NAME`` as ``sentry``
createdb -E utf-8 sentry
# alternatively if you're using MySQL, ensure you've created the database:
mysql -e 'create database sentry'
Tạo schema
sentry --config=/etc/sentry.conf.py upgrade
Tiếp theo tạo 1 user mới và mặc định là superuser
sentry --config=/etc/sentry.conf.py createuser
Khởi động Sentry
sentry --config=/etc/sentry.conf.py celery worker -B
Tích hợp với hệ thống Ruby on Rails
# GemFile
gem "sentry-raven"
Chạy bundle
để cài đặt gem
Cấu hình Raven Sau khi khởi động Sentry server, bạn có thể vào và tạo project của mình để sentry quản lý. Sentry sẽ cung cấp SENTRY_DSN cũng như cách config cho từng hệ thống
# Set your SENTRY_DSN environment variable.
export SENTRY_DSN=http://public:secret@example.com/project-id
# Or you can configure the client in the code (not recommended - keep your DSN secret!)
# config/initialize/raven.rb
require 'raven'
Raven.configure do |config|
config.dsn = 'http://public:secret@example.com/project-id'
end
Chạy thử test Raven có hoạt động hay không
rake raven:test
Vậy là đã hoàn thành setup Raven - Sentry với hệ thống Ruby on Rails. Bên cạnh RoR, Sentry hỗ trợ rất nhiều platform, bạn có thể tìm hiểu ở https://github.com/getsentry/sentry
All rights reserved