Graylog: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| (не показано 11 промежуточных версий этого же участника) | |||
| Строка 2: | Строка 2: | ||
[[Категория:Graylog]] |
[[Категория:Graylog]] |
||
=Устновка Graylog2 на CentOS 6.3= |
=Устновка Graylog2 на CentOS 6.3= |
||
| + | |||
| + | <BR> |
||
| + | |||
| + | Полностью устарело - используйте RPM |
||
| + | |||
Добавлю epel репозиторий. |
Добавлю epel репозиторий. |
||
| Строка 103: | Строка 108: | ||
chkconfig elasticsearch on |
chkconfig elasticsearch on |
||
</PRE> |
</PRE> |
||
| + | Подробнее на русском я читал тут: http://habrahabr.ru/post/122531/ |
||
| − | |||
==Graylog2.rpm== |
==Graylog2.rpm== |
||
Сборка как обычно, спек конфиг и инит ниже: |
Сборка как обычно, спек конфиг и инит ниже: |
||
| + | ==SPEC== |
||
<PRE> |
<PRE> |
||
%define real_name graylog2-server |
%define real_name graylog2-server |
||
| Строка 176: | Строка 182: | ||
* Fri May 11 2012 Holger Manthey <holger.manthey@bertelsmann.de> |
* Fri May 11 2012 Holger Manthey <holger.manthey@bertelsmann.de> |
||
- inital version |
- inital version |
||
| + | </PRE> |
||
| + | ==init script== |
||
| + | <PRE> |
||
| + | 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 $? |
||
| + | </PRE> |
||
| + | |||
| + | |||
| + | ==www-интерфейс== |
||
| + | Доставилд мне массу гиммороя при установке и я до сих пор не доконца понимаю смысл делать так как он сделан. но это детали. |
||
| + | <BR> |
||
| + | |||
| + | <PRE> |
||
| + | wget https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.6.tar.gz |
||
| + | </PRE> |
||
| + | Распаковать в /usr/local/graylog2-web-interface, добавить юзера graylog |
||
| + | <PRE> |
||
| + | |||
| + | bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) |
||
| + | </PRE> |
||
| + | rvm это утилита для работы с руби. Ставится довольно необычно. |
||
| + | После чего поставить |
||
| + | <PRE> |
||
| + | 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 |
||
| + | </PRE> |
||
| + | |||
| + | И обновить руби |
||
| + | <PRE>rvm install ruby-1.9.2-p320</PRE> |
||
| + | |||
| + | |||
| + | <BR> |
||
| + | Устанавливаем gem bundle (у меня в системе не было , но возможно есть дистрибутивы которым это не надо. предположительно - gentoo) |
||
| + | <PRE> |
||
| + | rvm use 1.9.2 |
||
| + | cd /usr/local/graylog2-web-interface |
||
| + | gem install bundler |
||
| + | bundle install |
||
| + | </PRE> |
||
| + | |||
| + | |||
| + | интерфейс конфиггурится отдельно. Насколько я понимаю graylog2 хранит настройки в монго а вебморда их оттуда просто считывает потому достаточно указать монго. У меня авторизации как таковой нет. |
||
| + | |||
| + | <PRE> |
||
| + | # mongoid.yml |
||
| + | production: |
||
| + | host: localhost |
||
| + | port: 27017 |
||
| + | username: |
||
| + | password: |
||
| + | database: graylog2 |
||
| + | </PRE> |
||
| + | |||
| + | Устанавливаем passenger-standalone (и заодно nginx) При установке будет сообщение о списке пакетов которые нужны - вроде gcc-c++ и openssl-devel. <B>Это ВАЖНО!</B> |
||
| + | |||
| + | <PRE> |
||
| + | gem install passenger |
||
| + | gem install file-tail |
||
| + | cd /urs/local/graylog2-web-interface |
||
| + | mkdir tmp log |
||
| + | chmod -R 777 tmp log |
||
| + | </PRE> |
||
| + | |||
| + | Стратовый скрипт я честно нашел в инете, писать самому было лень |
||
| + | <PRE> |
||
| + | #!/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 |
||
</PRE> |
</PRE> |
||
Текущая версия на 17:42, 26 марта 2014
Устновка 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