Статьи

Как: установить graylog2 на CentOS 5 с RVM + Passenger

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 установить

  1. установить mongodb из EPEL ням репо

    # yum install mongodb mongodb-server
    # mkdir /var/lib/mongodb
    # chown -R mongodb:mongodb /var/lib/mongodb/
  2. включить mongod для запуска при загрузке

    # chkconfig mongod on
  3. запустить mongod (файл журнала: /var/log/mongodb/mongodb.log)

    # service mongod start
  4. запустите 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

  1. Загрузите последнюю версию архива Graylog2-сервера: https://github.com/Graylog2/graylog2-server/downloads

  2. Установите на / opt / graylog2-сервер:

    # cd /opt
    # tar xfvz ~/graylog2-server-0.9.5p1.tar.gz
    # ln -s /opt/graylog2-server-0.9.5p1 /opt/graylog2-server
  3. настроить /etc/graylog2.conf

    # cp graylog2.conf.example /etc/graylog2.conf
     
    edit /etc/graylog2.conf, set monogdb_user, mongodb_password
  4. создать /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
  5. создать /etc/logrotate.d/graylog2-server

    /var/log/graylog2.log {
           daily
           rotate 90
           copytruncate
           delaycompress
           compress
           notifempty
           missingok
    }
  6. зарегистрировать Graylog2-серверный скрипт инициализации

    # chmod +x /etc/init.d/graylog2-server
    # chkconfig --add graylog2-server
    # chkconfig graylog2-server on
  7. запустить серый журнал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

  1. Установите RVM и подготовьте новую среду Ruby 1.9.2

    # bash < <(curl -B http://rvm.beginrescueend.com/install/rvm)
    # rvm install 1.9.2
  2. создать пользователя ‘graylog’

    # adduser -m graylog
  3. загрузить последнюю версию 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
  4. Установите гемы, необходимые для запуска graylog2 с помощью Bundler в среде ruby ​​1.9.2

    # rvm use 1.9.2
    # cd /opt/graylog2-web-interface
    # gem install bundler
    # bundle install
  5. Настроить graylog2-web-интерфейс
    • Отредактируйте различные конфигурационные файлы в / opt / graylog2-web-interface в соответствии с вашей средой:
      • email.yml
      • general.yml
      • mongoid.yml (убедитесь, что используете пользователя / передайте настройку ранее)
  6. Запустить 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) после создания первого пользователя.

  7. Установить и настроить пассажирский автономный

    # 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, чтобы выйти.

  8. Создать /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
  9. Создать /etc/logrotate.d/graylog2-web-interface

    /opt/graylog2-web-interface/log/*log
           size=256M
           rotate 90
           copytruncate
           delaycompress
           compress
           notifempty
           missingok
    }
  10. Зарегистрировать сервис graylog2-web-интерфейса

    # chmod +x /etc/init.d/graylog2-web-interface
    # chkconfig --add graylog2-web-interface
    # chkconfig graylog2-web-interface on
  11. Запустить graylog2-web-интерфейс

    # service graylog2-web-interface start
  12. Настройте apache для пересылки запросов пассажиру
    1. Создайте /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
    1. Перезапустите 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/