Bài này mình chỉ ghi nhận lại những bước mình đã làm, các câu lệnh đã dùng cùng những tùy chỉnh trong quá trình cài đặt thử nghiệm Graylog 1.0.x (Nâng cấp từ Graylog2). Mình sẽ dành thời gian chỉn chu bài viết hơn cũng như đánh giá hiệu quả, chia sẻ kinh nghiệm về sử dụng Graylog để quản lý, phân tích Log cho các ứng dụng Web sau thời gian thử nghiệm Graylog thực tế.
Graylog là một trong những Open Source Log Management được nhiều người biết đến (Bên cạnh LogStash của Elastic Co và các SaaS như Loggly, Papertrail). Bạn có thể sử dụng Graylog để xây dựng một hệ thống quản lý Log tập trung: Log của ứng dụng Web, Log của Web Server, Log của SSH, Log của Hệ thống (Syslog)…
Môi trường
- CentOS 6.6
- Graylog 1.0.x
- ElasticSearch 1.5 trở lên
- MongoDB 2.0 trở lên
Tìm tất cả các tập tin có tên nginx.conf bắt đầu từ thư mục root
find / -name nginx.conf
Stop Rails Application đang chạy (Nginx and Phusion Passenger)
Remove các dòng liên quan đến App XYZ trong File cấu hình nginx.conf, restart service nginx (Phusion Passenger sẽ tự stop app đó, không cần cấu hình gì thêm).
Stop Postgresql
/etc/init.d/postgresql-9.4 stop
Stop Redis
/etc/init.d/redis_6379 stop
Clear Cronjob
crontab -e
Cập nhật lại Logrotate
vi /etc/logrotate.conf
Cài đặt Errbit (Ứng dụng quản lý các Exception)
git clone https://github.com/errbit/errbit.git
bundle install
RAILS_ENV=production bundle exec rake errbit:bootstrap
vi .env.default
vi config/initializers/action_mailer.rb
Cài đặt Elasticsearch
Graylog sử dụng ElasticSearch để thực hiện Full-Text-Search
Tham khảo đường dẫn - https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-4-on-centos-7
- Kiểm tra ElasticSearch đã cài đặt thành công và đã được chạy hay chưa?
curl localhost:9200/_nodes/process?pretty
Cài đặt MongoDB
Tham khảo đường dẫn - http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/
Khởi động dịch vụ MongoDB
service mongod start
chkconfig mongod on
Cài đặt Graylog
Graylog có cung cấp Image đã cài đặt và cấu hình sẵn Graylog-Server cũng như Graylog-Web-Interface dành cho các distribution như Ubuntu, CentOS và Docker… nhưng việc restore Image lên VPS của Linode là thuộc phạm vi của một bài viết khác, với lại, mình thấy cài đặt thủ công sẽ thú vị hơn, chủ động hơn… do đó, mình chọn cách làm này.
Cài đặt Graylog-Server
Làm theo hướng dẫn tại http://docs.graylog.org/en/latest/pages/installation.html#manual-setup-graylog-server-on-linux
Khởi động Graylog-Server
./graylogctl start
Đọc Log của Graylog để Debug khi gặp lỗi
tail -f /opt/graylog-1.0.2/log
Cài đặt Graylog-Web-Interface
Làm theo hướng dẫn tại http://docs.graylog.org/en/latest/pages/installation.html#manual-setup-graylog-web-interface-on-linux
Khởi động Graylog-Web-Interface
nohup /opt/graylog-web-interface-1.0.2/bin/graylog-web-interface &
Cấu hình Graylog và ElasticSearch
Cấu hình Graylog và ElasticSearch, tham khảo tại http://docs.graylog.org/en/latest/pages/configuring_es.html
Increase File Open Limit của CentOS 6.6 theo khuyến nghị của GrayLog - Tham khảo tại http://pro.benjaminste.in/post/318453669/increase-the-number-of-file-descriptors-on-centos
Kiểm tra Health Status của ElasticSearch Cluster:
curl -XGET 'http://localhost:9200/_cluster/health/twitter?level=shards'
Nếu là Red thì Graylog-Server sẽ không thể Start được, còn cách để chuyển Health Status từ Red về Yellow hay Green thì mình sẽ tìm hiểu thêm.
Cấu hình Firewall
Hệ thống của mình sử dụng Iptables nên mình sẽ mở các cổng 12201, 12301, 12302 (UDP) để các ứng dụng có thể gửi Log về Server, Mở cổng 9000 (TCP) để mình có thể truy cập vào Graylog bằng Web Interface.
Lưu và phục hồi lại cấu hình Iptables:
iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables
service iptables restart
Có thể thay thế Graylog + Mongodb + Elasticsearch bằng Logstash + Elasticsearch + Kibana 4 + Logstash Forwarder
Tìm hiểu về Log Data Mining - Log Analysis - Dù có sử dụng Log Management thì nếu không lưu ý cách khai thác các dữ liệu đã log một cách hiệu quả thì cũng như thật lãng phí, tốn tài nguyên của hệ thống.
Cập nhật tình hình là mình phải gỡ Graylog-Server ra vì nó ngốn quá nhiều tài nguyên của Hệ thống quá. Process Graylog-Server hay bị ngắt giữa chừng. Log ghi nhận nhiều nhưng mình chưa biết cách khai thác nên chưa thấy được sự hữu ích.
Cập nhật thêm - Tháng 6/2016 - về sau mình có cài thêm ELK Stack (ElasticSearch - Logstash - Kibana) cho ứng dụng của mình và cảm nhận có phần chủ quan là mình thích ELK hơn so với Graylog.