Graylog2 — это централизованный инструмент управления журналами с открытым исходным кодом. Думайте об этом как о самостоятельной версии loggly.com или, возможно, о более простой альтернативе Splunk. Журналы хранятся в базе данных MongoDB.
Я не буду вдаваться в подробности, поэтому, если вы хотите больше информации, проверьте graylog2.org
Graylog2 состоит из двух компонентов: graylog2-server , Java-процесс, который получает журналы и записывает их в базу данных MongoDB. graylog2-web-интерфейс , приложение Ruby on Rails, которое кажется наиболее счастливым с современными версиями Ruby и Rails. Однако CentOS 5 поставляется со старой версией Ruby (1.8.x), которая не очень хорошо играла со всеми драгоценными камнями, которые хотел graylog2.
Если сервер будет выделен только для запуска graylog2, мы могли бы перезаписать установленный Ruby более новой версией. Однако на сервере, на котором мы хотели его установить, уже работало сложное приложение Rails под mod_passenger, которое мы не хотели рисковать.
Я решил посмотреть, позволит ли RVM — Ruby Version Manager — настроить отдельную среду Ruby только для graylog2 и не мешать другим приложениям Ruby на машине. Я также хотел настроить отдельный экземпляр Passenger-standalone для graylog2, а затем настроить apache для прослушивания на порту 80 и пересылки запросов с помощью mod_proxy.
Все сработало даже лучше, чем я ожидал. В мире Ruby с такими быстрыми изменениями может быть сложно собрать совместимый набор гемов для нескольких приложений, работающих на одном компьютере. RVM работал так хорошо, что в будущем я рассмотрю возможность его использования для создания изолированных сред ruby для других приложений. Я люблю RVM!
Вот как я все это собрал:
Обзор:
- Установите graylog2-сервер в / opt / graylog2-server
- Установите graylog2-web-интерфейс в / opt / graylog2-web-interface
- Graylog2-веб-интерфейс работает как непривилегированный пользователь ‘Graylog’
- RVM установлен для обеспечения среды Ruby 1.9.2 и Rails 3.x для веб-интерфейса graylog2
- Автономный пассажир, установленный в среде Ruby 1.9.2, с веб-интерфейсом graylog2 на http://127.0.0.1:3001
- Apache прослушивает tcp / 80 и пересылает его в автономный режим с помощью mod_proxy
MongoDB установить
- установить mongodb из EPEL ням репо
# yum install mongodb mongodb-server # mkdir /var/lib/mongodb # chown -R mongodb:mongodb /var/lib/mongodb/
- включить mongod для запуска при загрузке
# chkconfig mongod on
- запустить mongod (файл журнала: /var/log/mongodb/mongodb.log)
# service mongod start
- запустите mongo, создайте пользователя-администратора в коллекции admin и пользователя graylog в новой коллекции graylog2
# mongo use admin db.addUser('admin', 'admin-mongo-passwd') db.auth('admin', 'admin-mongo-passwd') use graylog2 db.addUser('grayloguser', 'grayloguser-mongo-passwd')
Graylog2-сервер установить
на основе: https://github.com/Graylog2/graylog2-server/wiki/Install
- Загрузите последнюю версию архива Graylog2-сервера: https://github.com/Graylog2/graylog2-server/downloads
- Установите на / opt / graylog2-сервер:
# cd /opt # tar xfvz ~/graylog2-server-0.9.5p1.tar.gz # ln -s /opt/graylog2-server-0.9.5p1 /opt/graylog2-server
- настроить /etc/graylog2.conf
# cp graylog2.conf.example /etc/graylog2.conf edit /etc/graylog2.conf, set monogdb_user, mongodb_password
- создать /etc/init.d/graylog2-server
#!/bin/sh # # graylog2-server: graylog2 message collector # # chkconfig: - 98 02 # description: This daemon listens for syslog and GELF messages and stores them in mongodb # CMD=$1 NOHUP=`which nohup` JAVA_HOME=/usr/java/latest JAVA_CMD=$JAVA_HOME/bin/java GRAYLOG2_SERVER_HOME=/opt/graylog2-server start() { echo "Starting graylog2-server ..." $NOHUP $JAVA_CMD -jar $GRAYLOG2_SERVER_HOME/graylog2-server.jar > /var/log/graylog2.log 2>&1 & } stop() { PID=`cat /tmp/graylog2.pid` echo "Stopping graylog2-server ($PID) ..." kill $PID } restart() { echo "Restarting graylog2-server ..." stop start } case "$CMD" in start) start ;; stop) stop ;; restart) restart ;; *) echo "Usage $0 {start|stop|restart}" RETVAL=1 esac
- создать /etc/logrotate.d/graylog2-server
/var/log/graylog2.log { daily rotate 90 copytruncate delaycompress compress notifempty missingok }
- зарегистрировать Graylog2-серверный скрипт инициализации
# chmod +x /etc/init.d/graylog2-server # chkconfig --add graylog2-server # chkconfig graylog2-server on
- запустить серый журнал2-сервер
# service graylog2-server start # ps aux | grep graylog2 root 23197 2.3 0.1 1196204 18428 pts/0 Sl 12:37 0:00 java -jar ../graylog2-server.jar
Установка серого-веб-интерфейса
на основе: https://github.com/Graylog2/graylog2-web-interface/wiki
- Установите RVM и подготовьте новую среду Ruby 1.9.2
# bash < <(curl -B http://rvm.beginrescueend.com/install/rvm) # rvm install 1.9.2
- создать пользователя ‘graylog’
# adduser -m graylog
- загрузить последнюю версию tar-архива с серым логом: https://github.com/Graylog2/graylog2-web-interface/downloads
# mkdir /opt # cd /opt # tar xfvz ~/graylog2-web-interface-0.9.5.tar.gz # ln -s /opt/graylog2-web-interface-0.9.5 /opt/graylog2-web-interface # chown -R graylog /opt/graylog2-web-interface-0.9.5
- Установите гемы, необходимые для запуска graylog2 с помощью Bundler в среде ruby 1.9.2
# rvm use 1.9.2 # cd /opt/graylog2-web-interface # gem install bundler # bundle install
- Настроить graylog2-web-интерфейс
- Отредактируйте различные конфигурационные файлы в / opt / graylog2-web-interface в соответствии с вашей средой:
- email.yml
- general.yml
- mongoid.yml (убедитесь, что используете пользователя / передайте настройку ранее)
- Отредактируйте различные конфигурационные файлы в / opt / graylog2-web-interface в соответствии с вашей средой:
- Запустить graylog2-web-интерфейс, создать первого пользователя
# rvm use 1.9.2 # cd /opt/graylog2-web-interface # RAILS_ENV=production script/rails server
Подключитесь к http://127.0.0.1:3000. Если все работает, graylog2 попросит вас создать первого пользователя. Отключите graylog2 (ctrl-C) после создания первого пользователя.
- Установить и настроить пассажирский автономный
# yum -y install curl-devel # rvm use 1.9.2 # gem install passenger # gem install file-tail # cd /opt/graylog2-web-interface # mkdir tmp log # chmod -R 777 tmp log # passenger start
Пассажир должен скачать, скомпилировать и собрать все, что ему нужно. Если пассажир пытается удовлетворить запросы, нажмите Ctrl-C, чтобы выйти.
- Создать /etc/init.d/graylog2-web-interface
#!/bin/bash # # graylog2-web-interface: graylog2 web interface # # chkconfig: - 98 02 # description: Starts graylog2-web-interface using passenger-standalone. \ # Uses RVM to use switch to a specific ruby version. # # config USER=graylog APP_DIR=/opt/graylog2-web-interface RVM_RUBY=1.9.2 ADDR=127.0.0.1 PORT=3000 ENVIRONMENT=production LOG_FILE=/var/log/graylog2-web-interface.log # -- CMD_START="cd $APP_DIR; rvm use $RVM_RUBY; passenger start -d \ -a $ADDR \ -p $PORT \ -e $ENVIRONMENT \ --user $USER" CMD_STOP="cd $APP_DIR; rvm use $RVM_RUBY; passenger stop -p $PORT" CMD_STATUS="cd $APP_DIR; rvm use $RVM_RUBY; passenger status -p $PORT" . /lib/lsb/init-functions case "$1" in start) echo "Starting graylog2-web-interface" su - $USER -c "$CMD_START" ;; stop) echo "Stopping graylog2-web-interface" su - $USER -c "$CMD_STOP" ;; status) su - $USER -c "$CMD_STATUS" ;; *) echo "Usage: $0 start|stop|status" >&2 exit 3 ;; esac
- Создать /etc/logrotate.d/graylog2-web-interface
/opt/graylog2-web-interface/log/*log size=256M rotate 90 copytruncate delaycompress compress notifempty missingok }
- Зарегистрировать сервис graylog2-web-интерфейса
# chmod +x /etc/init.d/graylog2-web-interface # chkconfig --add graylog2-web-interface # chkconfig graylog2-web-interface on
- Запустить graylog2-web-интерфейс
# service graylog2-web-interface start
- Настройте apache для пересылки запросов пассажиру
- Создайте /etc/httpd/conf.d/graylog2.conf
NameVirtualHost *:80 ServerName log.mydomain.com ServerAlias graylog2.mydomain.com ProxyPreserveHost On ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ CustomLog /var/log/httpd/log.mydomain.com-access_log common
- Перезапустите Apache
# service httpd configtest # service httpd restart
Сценарии запуска для запуска нескольких автономных экземпляров Passenger:
Если вам нужен метод для настройки нескольких Passenger-автономных приложений Rails, проверьте эти сценарии. Они очень хорошо сделаны: http://moeffju.net/blog/passenger-standalone-initscript
Альтернативы Apache
rippleAdder опубликовал пример конфигурации в списке рассылки graylog2 для запуска graylog2-web-интерфейса с другими веб-серверами, кроме Apache, а именно с unicorn и nginx. Скорее всего, они будут быстрее, чем apache, хотя я еще не сравнивал веб-серверы с graylog2. Вы можете найти его пример конфигурации здесь.
Источник: http://joemiller.me/2011/04/13/howto-install-graylog2-on-centos-5-with-rvm-passenger/