Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

 
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

1、下载mongodb,可以通过下面2中方法安装。

(1)官网下载yum源后直接安装或下载tar包进行安装。http://www.mongodb.org/ 

(2)通过EPEL(企业linux额外软件包)安装。http://fedoraproject.org/wiki/EPEL 

方便起见,这里选择用yum源直接安装。

<1>在*.repo中加入

-------------------------------------------------------------------------------------

[10gen]

name=10gen Repository

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686

gpgcheck=0

-------------------------------------------------------------------------------------

<2>yum install mongo-10gen-server

2、启动、配置mongodb

<1>vi /etc/mongod.conf

-------------------------------------------------------------------------------------

port 27017#运行端口27017

auth true #开启认证

nohttpinterface false

-------------------------------------------------------------------------------------

<2>/etc/init.d/mongod start

<3>mongo

    >use graylog2

>db.addUser("login","passwd")#graylog2库的usergraylog2这个usermongo相连

>db.auth("login","passwd")#打开认证

>db.system.users.find()#查看存在的用户

>exit

<4>/etc/init.d/mongod restart#mongodb默认是开机自启动的

ps aux grep mongo查看是否存在进程;

tail -f /var/log/mongo/mongod.log跟踪mongodb信息。

3、下载graylog2-server(需要JAVA环境)

为方便起见,我们使用系统自带的openjdk

<1>yum, install java-1.6.0-openjdk

<2>tar zxvf graylog2-server-0.9.5p1.tar.gz -C /opt

<3>cd /opt; ln -s graylog2-server-0.9.5p1 graylog2

<4>cd graylog2; cp graylog2.conf.example /etc/graylog2.conf

4、配置、启动graylog2-server,连接mongodb

<1>vi /etc/graylog2.conf

-------------------------------------------------------------------------------------------

On which port (UDP) should we listen for Syslog messages? (Standard: 514)

syslog_listen_port 514

syslog_protocol udp

MongoDB Configuration

mongodb_useauth true

mongodb_user = login

mongodb_password passwd

mongodb_host localhost

#mongodb_replica_set localhost:27017,localhost:27018,localhost:27019

mongodb_database graylog2

mongodb_port 27017

-------------------------------------------------------------------------------------------

<2>cd /opt/graylog2/bin

<3>./graylog2ctl start

(注:其log日志就存在当前目录下的nohup.out中。后面会修改并放入/var/log/下,这样便于日志管理,排错)

<4>./graylog2ctl stop

<5>vi /etc/init.d/graylog2-server(仿照graylog2ctl写此脚本)

-------------------------------------------------------------------------------------------

#!/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

 

start() {

    echo "Starting graylog2-server ..."

    $NOHUP java -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

-------------------------------------------------------------------------------------------

<6>chmod +x /etc/init.d/graylog2-server

<7>chkconfig --add graylog2-server

<8>chkconfig graylog2-server on

<9>/etc/init.d/graylog2-server start

此时,日志就存在了/var/log/graylog2.log

    用“ps aux grep graylog2”查看是否存在java -jar ../graylog2-server.jar这个进程。

    cat /var/log/graylog2.log查看是否有错误信息。(这里首先要注意主机的域名解析问题,再然后是可能会报错,说514端口没有权限,可以先暂时不管它,后面会处理这个问题)

当然在mongodb中用db.messages.find()命令查看graylog2库的messages表,这时应该已经插入了这个关于514端口没有权限的错误日志信息。

5、下载、配置graylog2-web-interface需要的RUBY环境

<1>先卸载旧版本的ruby(它不支持graylog2

yum erase/remove ruby ruby-libs ruby-mode ruby-rdoc ruby-irb ruby-ri ruby-docs

<2>yum install gcc gcc-c++ openssl-devel zlib-devel autoconf readline-devel curl-devel expat-devel gettext-devel

<3>下载新的rubyhttp://www.ruby-lang.org/en/downloads/ 

tar jxvf ruby-1.9.2-p0.tar.bz2

<4>cd ruby-1.9.2-p0

<5>./configure -enable-shared -enable-pthread -prefix=/usr

<6>make

<7>make install

注:Ruby1.9.2以上包含了rubygems

<8>ruby -v 查看到rybu版本号1.9.2p0

<9>gem -v 查看到1.3.7

<8><9>两步的测试结果,说明ruby安装成功。

<10>gem update 

<11>gem install rake

6、下载、配置graylog2-web-interface

<1>tar zxvf graylog2-web-interface-0.9.5p2.tar.gz -C /opt

<2>cd /opt; ln -s graylog2-web-interface-0.9.5p2 graylog2-web-interface;

useradd -m graylog;chown -R graylog /opt/graylog2-web-interface-0.9.5p2

<3>cd graylog2-web-interface

<4>gem install bundler

<5>bundle install

<6>Edit all ./config/*.yml。这里可以先只编辑mongoid.yml

vi /opt/graylog2-web-interface/config/mongoid.yml

--------------------------------------------------------------------------------------------

production:

  host: localhost#注意从此行起,前面不能顶格,有2个空格

  port: 27017

  database: graylog2

  username: login

  password: passwd

--------------------------------------------------------------------------------------------

<7>RAILS_ENV=production script/rails server

访问http://127.0.0.1:3000测试,若出现页面让你创建第一个用户,则成功。

<8>Ctrl C,结束它。

<9>gem install passenger        #下载后,用passenger管理控制graylog2-web

<10>gem install file-tail

<11>chmod -R 777 tmp log

<12>passenger start

Passenger自动下载、配置、组建好一切所需要的东西后,按Ctrl C,结束它。

<13> vi /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. 

USER=graylog

APP_DIR=/opt/graylog2-web-interface

ADDR=127.0.0.1

PORT=3000

ENVIRONMENT=production

#LOG_FILE=/var/log/graylog2-web-interface.log

 

CMD_START="cd $APP_DIR; passenger start -d \

                    -a $ADDR \

                    -p $PORT \

                    -e $ENVIRONMENT \

                    --user $USER"

CMD_STOP="cd $APP_DIR; passenger stop -p $PORT"

CMD_STATUS="cd $APP_DIR; 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                                                                                              

-------------------------------------------------------------------------------------------

<14>chmod +x /etc/init.d/graylog2-web-interface 

<15>chkconfig --add graylog2-web-interface 

<16>chkconfig graylog2-web-interface on

<17>/etc/init.d/graylog2-web-interface start

访问http://127.0.0.1:3000,看!出现页面让你创建第一个用户!搞定!
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

在这里你先创建你的first user(我的是adminadminpasswd,记得填个Email),然后就可以用刚创建的user进入web界面了。
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

7、用ryslog代替本机syslog,使graylog2正常开启、运行

此时,你的graylog2服务器还没有真正搭建好,日志并不能被收集进mongodb中存储,并通过graylog2-web页面显示出来。你会发现web上会一直报告错误说你的graylog2 server好像没有运行,通过个log信息可以知道是原因是graylog2server)对514端口没有权限。这个也就是我们之前遗留下来的问题。

解决办法如下:

<1>yum install rsyslog

<2>vi /etc/sysconfig/rsyslog

----------------------------------------------------------------------------------------

SYSLOGD_OPTIONS="-m -r10514"

----------------------------------------------------------------------------------------

<3> vi /etc/rsyslog.conf

----------------------------------------------------------------------------------------

*.*                 @127.0.0.1:514

----------------------------------------------------------------------------------------

<4>/etc/init.d/syslog stop

<5>chkconfig  syslog off

<6>/etc/init.d/rsyslog start

<7>chkconfig  rsyslog on

<8>netstat -anltpue grep 514

可以看见

udp     0.0.0.0:10514    0.0.0.0:*       124239    4766/rsyslogd

<9>/etc/init.d/graylog2-server restart

<10>netstat -anltpue grep 514

可以看见有

udp     0.0.0.0:10514    0.0.0.0:*       124239    4766/rsyslogd

udp     :::514           :::*           111125    957/java 

然后,你就可以测试你的graylog2是否正常运行了。Web界面有了messages数据,查看mongodb中的graylog2库也有了messages表的数据。Graylog2正常运行。

8、增加远程客户机

    我们来为这台graylog2中央日志服务器增加客户机:

<1>vi /etc/syslog.conf

----------------------------------------------------------------------------------------------

*.*                          @graylog2's IP

----------------------------------------------------------------------------------------------

<2>/etc/init.d/syslog restart

好了,大功告成!可以用logger命令进行测试,并在graylog2 web界面中查看、管理远程log日志了。
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

9、下载、配置graylog2虚拟主机、启动apache

<1>yum install httpd -y

<2>vi /etc/httpd/conf/httpd.conf 

-------------------------------------------------------------------------------------------

NameVirtualHost *:80

 

<VirtualHost *:80>

ServerName log.example.com

ServerAlias graylog2.example.com

    ProxyPreserveHost On

    ProxyPass        http://127.0.0.1:3000/

    ProxyPassReverse http://127.0.0.1:3000/

 

    CustomLog /var/log/httpd/graylog2.example.com-access_log common

</VirtualHost>

-------------------------------------------------------------------------------------------

<3> service httpd configtest

显示“Syntax OK”证明配置正确。

<4>/etc/init.d/httpd start

Finally,通过web页面访问log.example.com或者graylog2.example.com进入graylog2日志管理系统。

 

10、web界面

<1>通过Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理选项中的Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理设置(这里设置为1,即1min),可调整、查看最近N(这里为1mingraylog2mongodb)接收到的日志信息(即messages)数量为多少Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理,提示信息Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

<2>通过Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理选项创建一个组【这里创建的组名为(rsyslog】后,你还可以将主机加入组,便于分类、管理。
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

当然,还有更多的功能等待你去发现,最后,再送上2张截图,祝你好运:)
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理
Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理

## 什么是graylog Graylog 是一个简单易用、功能较全面的日志管理工具,相比 ELK 组合, 优点: - 部署维护简单 - 查询语法简单易懂(对比ES的语法…) - 内置简单的告警 - 可以将搜索结果导出为 json - 提供简单的聚合统计功能 - UI 比较友好 - 当然, 拓展性上比 ELK 差很多。 整套依赖: - Graylog 提供 graylog 对外接口 - Elasticsearch 日志文件的持久化存储和检索 - MongoDB 只是存储一些 Graylog 的配置 ## 安装 > 可以是裸机安装,也可以是docker安装,这里用docker安装 环境要求: - centos7.4 - cpu2个 内存2G 参考: https://hub.docker.com/r/graylog2/graylog/ ### 环境准备 ``` mkdir /root/graylog && cd /root/graylog //挂载目录 mkdir -p mongo_data graylog_journal es_data //配置文件目录 mkdir -p ./graylog/config cd ./graylog/config wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.0/config/graylog.conf wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.0/config/log4j2.xml //提前准备镜像 docker pull mongo:3 docker pull graylog/graylog:3.0 docker pull elasticsearch:5.6.9 ``` ### docker-compose.yml ``` version: '2' services: # MongoDB: https://hub.docker.com/_/mongo/ mongo: image: mongo:3 volumes: - ./mongo_data:/data/db - /etc/localtime:/etc/localtime # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docker.html elasticsearch: image: elasticsearch:5.6.9 volumes: - ./es_data:/usr/share/elasticsearch/data - /etc/localtime:/etc/localtime environment: - http.host=0.0.0.0 - transport.host=localhost - network.host=0.0.0.0 # Disable X-Pack security: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/security-settings.html#general-security-settings - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 mem_limit: 1g # Graylog: https://hub.docker.com/r/graylog/graylog/ graylog: image: graylog/graylog:3.0 volumes: - ./graylog_journal:/usr/share/graylog/data/journal - ./graylog/config:/usr/share/graylog/data/config - /etc/localtime:/etc/localtime environment: # CHANGE ME! - GRAYLOG_PASSWORD_SECRET=somepasswordpepper # Password: admin - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # 这里需要修改为要暴露的机器的地址 - GRAYLOG_HTTP_EXTERNAL_URI=http://10.121.60.2:9000/ links: - mongo - elasticsearch ports: # Graylog web interface and REST API - 9000:9000 # Syslog TCP - 514:514 # Syslog UDP - 514:514/udp # GELF TCP - 12201:12201 # GELF UDP - 12201:12201/udp # GELF HTTP - 12202:12202 ``` ### 启动 `docker-compose -f docker-compose.yml up -d` 通过http://10.121.60.2:9000/访问web,admin/admin ### 修改配置 - email相关(告警需要) ``` transport_email_enabled = true transport_email_hostname = smtp.163.com transport_email_port = 994 transport_email_use_auth = true transport_email_use_tls = true transport_email_use_ssl = true transport_email_auth_username = 17191093767@163.com transport_email_auth_password = zhim123456 transport_email_subject_prefix = [graylog] transport_email_from_email = 17191093767@163.com transport_email_web_interface_url = http://10.121.60.2:9000 ``` ## 使用 ### 配置添加Inputs > Graylog 节点能够接受数据的类型称之为input,常见的有GELF TCP, GELF UDP, GELF HTTP. 说明:GELF TCP, GELF UDP可以使用同一个端口,HTTP需要另起端口,原因不解释。 - 添加三个input,过程略,tcp,udp端口使用默认的12201,http端口使用12202。 - 验证 ``` // udp echo -n '{ "version": "1.1", "host": "example.org", "short_message": "A short message info with udp", "level": 1, "_some_info": "foo", "_tag": "test11" }' | nc -w10 -u 10.121.60.2 12201 // tcp echo -n -e '{ "version": "1.1", "host": "example.org", "short_message": "A short message with tcp", "level": 1, "_some_info": "foo" }'"\0" | nc -w10 10.121.60.2 12201 //http curl -X POST -H 'Content-Type: application/json' -d '{ "version": "1.1", "host": "example.org", "short_message": "A short message with http", "level": 5, "_some_info": "foo" }' 'http://10.121.60.2:12202/gelf' ``` ### docker 日志添加到graylog ``` docker run --log-driver=gelf \ --log-opt gelf-address=udp://10.121.60.2:12201 \ --log-opt tag=test1 \ -v /etc/localtime:/etc/localtime \ -it nginx /bin/bash ``` docker-compose.yaml ``` services: mongo: logging: driver: "gelf" options: gelf-address: "udp://10.121.60.2:12201" tag: mongo volumes: - /etc/localtime:/etc/localtime ``` ### java日志直接发送到graylog > 使用logback ``` 10.121.60.2 12201 <!--An example of overwriting the short message pattern--> %ex{short}%.100m <!-- Use HTML output of the full message. Yes, any layout can be used (please don't actually do this)--> %d{MM-dd HH:mm:ss.SSS} [%thread] %-5level \(%F:%L\) - %msg %n true true true true requestId:long <!--Facility is not officially supported in GELF anymore, but you can use staticFields to do the same thing--> tag business-server ``` ## 系统使用 功能菜单说明 - search 日志查询面板 ![](assets/2018-07-10-11-52-07.png) - streams 将日志对象按照filed定义为stream,默认的stream为all messages ![](assets/2018-07-10-11-52-22.png) - alerts 告警相关,选择一个stream对象定义告警条件和通知方式,当stream里面的日志满足条件时候告警并通知 ![](assets/2018-07-10-11-52-35.png) - dashboards 图形面板 ![](assets/2018-07-10-11-52-53.png) - source 告警所在主机 ![](assets/2018-07-10-11-53-37.png) - system 系统配置 ![](assets/2018-07-10-11-53-52.png) ### 查询条件 [官方说明文档](http://docs.graylog.org/en/3.0/pages/queries.html) > 关键字不分大小写 - 单个关键字查询 `ssh` - 多关键字查询,含有ssh or login `ssh login` - 含有某个字符串查询 `ssh login` - 同时含有多个关键字查询 `opening index" AND db` - 根据字段值查询 `tag:couchdb.peer0.org1.ygsoft.com` - 含有多个tag的查询,某条记录只要其中一个字段满足即可 ``` tag: (orderer.ygsoft.com couchdb.peer0.org1.ygsoft.com) or tag: orderer.ygsoft.com couchdb.peer0.org1.ygsoft.com ``` - 含有完全匹配字段 `tag:"ssh login"` - 含有某个字段的记录: `_exists_:tag` - 不含有某个字段的记录: `NOT _exists_:tag` - AND OR `"ssh login" AND source:example.org` `("ssh login" AND (source:example.org OR source:another.example.org)) OR _exists_:always_find_me` - NOT ``` "ssh login" AND NOT source:example.org NOT example.org ``` 注意: AND, OR, and NOT 只能大写. - 通配符 ? 表示单个字符 星号表示0个和多个字符 ``` source:*.org source:exam?le.org source:exam?le.* ``` 注意:默认首字母不能使用通配符,因为这样会使用大量的内存;强行开启修改配置文件`allow_leading_wildcard_searches = true` - 当某关键字不确认顺序的时候使用~ ``` ssh logni~ source:exmaple.org~ 结果可以匹配 ssh login and example.org ``` - 以下字符在使用的时候必须用反斜杠转义 ``` && || : \ / + - ! ( ) { } [ ] ^ " ~ * ? Example: resource:\/posts\/45326 ``` ### 查询条件可以保存下来 使用 save search criteria 按钮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值