前言:
Graylog是强大的日志管理、分析工具。它基于 Elasticsearch, Java和MongoDB。
Graylog可以收集监控多种不同应用的日志。但是为了示范说明,我只收集syslog。并且,我将会把用到的组件全部安装到一个单独的服务器上。对于大型、生产系统你可以把组件分开安装在不同的服务器上,这样可以提高效率。
Graylog有4个基本组件:
Graylog Server:这个服务负责接收和处理日志/消息,并且和其他组件沟通。
Elasticsearch:存储所有的日志,它的性能依赖内存和硬盘IO。
MongoDB:存储元数据,负载不高。
Web接口:用户接口。
准备工作:
关闭防火墙
修改主机名
生成密码hash数值
yum install perl-Digest-SHA
echo -n yourpassword | shasum -a 256
1.下载docker
yum install -y docker
2.启动docker并设置开机自启动
systemctl start docker
systemctl enable docker
3.书写docker yaml文件(yaml路的格式希望大家注意这里我书写的格式有点乱所以需要各位调整下,这里有个坑那就是这里的端口映射不能为12202/udp:12202/udp而是12202:12202/udp否则会报错无效的端口)
version: '2'
services:
mongo:
image: "mongo:3"
volumes:
- /graylog/data/mongo:/data/db
elasticsearch:
image: "elasticsearch:2"
command: "elasticsearch -Des.cluster.name='graylog'"
volumes:
- /graylog/data/elasticsearch:/usr/share/elasticsearch/data
graylog:
image: graylog2/server:2.1.0-3
volumes:
- /graylog/data/journal:/usr/share/graylog/data/journal
#- /data/config:/usr/share/graylog/data/config
environment:
GRAYLOG_PASSWORD_SECRET: somepasswordpepper
GRAYLOG_ROOT_PASSWORD_SHA2: 849d02457735e6998ff829d6432b0ceb024ee9e7171abaa5ecb282361227c9ad
GRAYLOG_WEB_ENDPOINT_URI: http://192.168.159.130:9000/api/
depends_on:
- mongo
- elasticsearch
ports:
- "9000:9000"
- "12201:12201/udp"
- "12202:12202/udp"
4.启动docker的yaml文件
docker-compose up -d
这里没有下载docker-compose命令的小伙伴们可以在官方网站中下载此命令,网站如下所示
https://docs.docker.com/compose/install/#install-compose
上面有详细的步骤
5.启动完成之后,接下来就需要修改下gray-server的配置文件这时候就需要挂载修改了
6.这里先要进入gray-server容器中
docker exec -it root_graylog_1 /bin/bash
找到 graylog.conf 文件所在位置
7.这里我使用find找到graylog.conf的位置
find / -name graylog.conf
找到位置
/usr/share/graylog/data/config
8.退出容器
9.使用docker cp 命令将/usr/share/graylog/data/config下的所有文件复制到宿主机中
docker cp root_graylog_1:/usr/share/graylog/data/config /data/config(/data/config要提前创建)
这里复制的是config的整个文件夹
10.剩下的就是移动位置的事了
cd /data/config/config
发现了3个文件
mv * ../
然后cd ..
rm -rf config
这样就保证了在/data/config/下有3个文件了
11.然后把docker-compose文件中的graylog挂载的注释去掉,然后重新docker-compose up -d操作。
#/graylog/config:/usr/share/graylog/data/config
12.这时候就要修改graylog.conf配置文件了
修改graylog.conf配置文件的默认时区(UTC)为(Asia/Shanghai)
root_timezone = Asia/Shanghai
搜索高亮显示(这里默认是true的)
allow_highlighting = true
13.登陆graylog web页面
访问:http://servers_ip:9000,用户名密码admin/xxxxx
14.登录之后界面如下:
15.添加要接收的其他服务器syslog日志:System->Inputs->Syslog UDP->Launch new input。
在弹出的窗口上输入如下信息:
Title: udp
Port: 12202
Bind address: 0.0.0.0(要收集的其他服务器ip地址)
如果你需要收集多个服务器的日志,重复上面步骤。
16.现在,我们的Graylog服务器已经做好了接收其他服务器发来日志的准备。下面我们还需要配置其他服务器,让这些服务器给Graylog服务器发送日志。
配置其他服务器给Graylog服务器发送syslog,创建rsyslog配置文件90-graylog.conf:
vim /etc/rsyslog.d/90-graylog.conf
17.添加如下代码,把graylog_server_IP替换为Graylog服务器ip地址:
template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @graylog_server_IP:12202;GRAYLOGRFC5424
18.重启rsyslog服务使生效:
systemctl restart rsyslog
配置完成之后,回到Graylog Web,点击Sources,查看是否有新添加rsyslog。
然后登陆一下此服务器产生一些登陆日志,然后回到Graylog,在search页面就可以看到如下日志信息了