Graylog

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

Устновка Graylog2 на CentOS 6.3


Полностью устарело - используйте RPM


Добавлю epel репозиторий. У меня он локальный

/etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6
baseurl=http://172.16.250.1/cobbler/repo_mirror/epel/x86_64
failovermethod=priority
enabled=1

или из сети

rpm -i http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm

Установить mongodb

yum -y install  mongodb.x86_64  mongodb-devel.x86_64 mongodb-server.x86_64

Ява и прочее необходимое барахло

yum -y install lsb gcc make java-1.6.0-openjdk curl-devel zlib-devel openssl-devel 


Секрктничать с монго смысла пока не вижу, на всякий случай привожу как это сделать

Устанавливаем mongodb-server

# yum -y install mongodb mongodb-server

Создаем пользователя:

# mongo
MongoDB shell version: 1.8.2
connecting to: test

> use admin
switched to db admin

> db.addUser('admin', 'Password')
{
        "user" : "admin",
        "readOnly" : false,
        "pwd" : "Password"
}

> db.auth('admin', 'Password')
1

> use graylog2
switched to db graylog2

> db.addUser('grayloguser', 'Password')
{
        "user" : "grayloguser",
        "readOnly" : false,
        "pwd" : "Password"
}

> db.auth('grayloguser', 'Password')
1

> exit
bye

Делаем Mongodb более безопастной

/etc/mongodb.conf
auth = true

Перестартуем Mongodb

# service mongod restart

Добавляем в автозагрузку

# chkconfig mongod on
# chkconfig --list | grep mongod
mongod          0:off   1:off   2:on    3:on    4:on    5:on    6:off



rvm remove 1.9.2 
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr

Устанавливаем Elasticsearch

Я решил собрать РПМку. на сайте подробная инструкция.https://github.com/tavisto/elasticsearch-rpms У меня (я делал по шагам_ все собралось сразу и без проблем.

rpm -ivh elasticsearch-0.19.0-1.el6.x86_64.rpm 
/etc/init.d/elasticsearch  start
chkconfig elasticsearch on

Подробнее на русском я читал тут: http://habrahabr.ru/post/122531/

Graylog2.rpm

Сборка как обычно, спек конфиг и инит ниже:

SPEC

%define real_name 	graylog2-server
%define version		0.9.6
%define vers		096
%define prefix		/opt/%{real_name}/%{version}


Name:           %{real_name}-%{vers}
Summary:        Graylog2 is an log management solution that stores your logs in ElasticSearch.
Version:        %{version}
Release:        1
AutoReqProv:    on
License:        BSD
Group:          Applications/Searchengines
URL:            http://www.graylog2.org
#Source:         https://github.com/downloads/Graylog2/graylog2-server/%{real_name}-%{version}.tar.gz
Source:         %{real_name}-%{version}.tar.gz
Source1:        graylogd2
Source2:        graylog2.conf
Buildarch:      noarch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%if 0%{?suse_version} >= 1100
BuildRequires:  -post-build-checks
%endif


%description
Graylog2 is an open source log management solution that stores your logs in ElasticSearch. It consists of a server written in Java that accepts your syslog messages via TCP, UDP or AMQP and stores it in the database. The second part is a web interface that allows you to manage the log messages from your web browser.


%prep
%setup -q -n %{real_name}-%{version}


%build


%install
%{__mkdir_p} %{buildroot}%{prefix}
%{__mkdir_p} %{buildroot}%{_sysconfdir}/rc.d/init.d
%{__install} -m 755 %{SOURCE1} %{buildroot}%{_sysconfdir}/rc.d/init.d/graylogd2
%{__install} -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/graylog2.conf

%{__cp} -av ./* %{buildroot}%{prefix}/

%post
cd %{prefix}/..
%{__ln_s} -f %{version} 0.9.latest


%clean
%{__rm} -rf %{buildroot}


%files
%defattr(-,root,root)
%dir %{prefix}
%{prefix}
%{_sysconfdir}/rc.d/init.d/graylogd2

%config(noreplace) %{_sysconfdir}/graylog2.conf

%changelog
* Mon Sep 24 2012 Max Mazur <sirmax123@gmail.com>
 - Added init script, moved from DBA --> /opt, added config

* Fri May 11 2012 Holger Manthey <holger.manthey@bertelsmann.de>
- inital version

init script

 cat graylogd2 
#!/bin/bash
#
# graylog2-server - This script starts and stops the graylog2-server daemon
#
# chkconfig:   - 85 15
# description: graylog2 is a syslog implementation that stores logs in MongoDB

### BEGIN INIT INFO
# Provides: 
# Required-Start:      $network
# Required-Stop:       $network
# Default-Stop:	       0 1 2 6
# Short-Description:   Start/stop the graylog2-server daemon
# Description:	       A syslog implementation that stores logs in MongoDB
### END INIT INFO



# Source function library.
. /etc/init.d/functions

# Check networking
. /etc/sysconfig/network
[[ $NETWORKING == no ]] && exit 0

prog="graylog2-server"
version="0.9.6"
vers="096"
prefix="/opt/${prog}/${version}/"
jar="${prefix}/$prog.jar"
lockfile="/var/lock/$prog"
logfile="/var/log/graylog2.log"
pidfile="/var/run/$prog.pid"

JAVA_BIN="/usr/bin/java"

unset pid

gl2_run() {
  # Disable csh style history expansion for safety
  set +H
    daemon "( $JAVA_BIN -jar \"$jar\" >\"$logfile\" 2>&1 & echo \"\$!\" >\"$pidfile\" )"
    pid=$(<"$pidfile")
  sleep 1
    if kill -0 "$pid" >/dev/null 2>&1
    then
	return 0
    else
	return 1
    fi
}

gl2_status() {
    [[ -f $pidfile ]] && pid=$(<"$pidfile")
    [[ -z $pid ]] && return 1
    if kill -0 "$pid" >/dev/null 2>&1
    then
	return 0
    else
	return 1
    fi
}

status() {
    if gl2_status
    then
	echo $"$prog (pid $pid) is running..."
	return 0
    else
	if [[ -f $lockfile ]]
	then
	    echo $"$prog dead but subsys locked"
	    return 2
	fi
	echo $"$prog is stopped"
	return 3
    fi
}

start() {
  [[ -r $jar ]] || exit 5
    gl2_run >/dev/null 2>&1
    if [[ $? -eq 0 ]]
    then
	retval=0
	touch "$lockfile"
	success
    else
	retval=1
	failure
    fi

    echo $"Starting $prog: "
  return "$retval"
}

stop() {
    killproc -p "$pidfile"
    if [[ $? -eq 0 ]]
    then
	retval=0
	rm -f "$lockfile"
    success
    else
	retval=1
    failure
    fi

  echo $"Stopping $prog: "
  return "$retval"
}

restart() {
  stop
  start
}

reload() {
  restart
}

force_reload() {
  restart
}

case "$1" in
  start)
      gl2_status && exit 0
      $1
      ;;
  stop)
      gl2_status || exit 0
      $1
      ;;
  restart)
      $1
      ;;
  reload)
      gl2_status || exit 7
      $1
      ;;
  force-reload)
      force_reload
      ;;
  status)
      $1
      ;;
  condrestart|try-restart)
      gl2_status || exit 0
      restart
      ;;
  *)
   echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
   exit 2
esac
exit $?


www-интерфейс

Доставилд мне массу гиммороя при установке и я до сих пор не доконца понимаю смысл делать так как он сделан. но это детали.

 wget https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.6.tar.gz

Распаковать в /usr/local/graylog2-web-interface, добавить юзера graylog


bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

rvm это утилита для работы с руби. Ставится довольно необычно. После чего поставить

yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel

И обновить руби

rvm install ruby-1.9.2-p320



Устанавливаем gem bundle (у меня в системе не было , но возможно есть дистрибутивы которым это не надо. предположительно - gentoo)

rvm use 1.9.2
cd /usr/local/graylog2-web-interface
gem install bundler
bundle install


интерфейс конфиггурится отдельно. Насколько я понимаю graylog2 хранит настройки в монго а вебморда их оттуда просто считывает потому достаточно указать монго. У меня авторизации как таковой нет.

# mongoid.yml
production:
 host: localhost
 port: 27017
 username: 
 password: 
 database: graylog2

Устанавливаем passenger-standalone (и заодно nginx) При установке будет сообщение о списке пакетов которые нужны - вроде gcc-c++ и openssl-devel. Это ВАЖНО!

gem install passenger
gem install file-tail
cd /urs/local/graylog2-web-interface
mkdir tmp log
chmod -R 777 tmp log

Стратовый скрипт я честно нашел в инете, писать самому было лень

#!/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=/usr/local/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"
    exit 3
    ;;
esac