先看看推荐!国外程序员整理的系统管理员资源大全中,国外程序员整理的日志聚合工具的列表:
日志管理工具:收集,解析,可视化
Elasticsearch – 一个基于Lucene的文档存储,主要用于日志索引、存储和分析。
Fluentd – 日志收集和发出
Flume -分布式日志收集和聚合系统
Graylog2 -具有报警选项的可插入日志和事件分析服务器
Heka -流处理系统,可用于日志聚合
Kibana – 可视化日志和时间戳数据
Logstash -管理事件和日志的工具
Octopussy -日志管理解决方案(可视化/报警/报告)
一、Graylog介绍
Graylog是强大的日志管理、分析工具。它基于 Elasticsearch, Java和MongoDB。
Graylog可以收集监控多种不同应用的日志。但是为了示范说明,我只收集syslog。并且,我将会把用到的组件全部安装到一个单独的服务器上。对于大型、生产系统你可以把组件分开安装在不同的服务器上,这样可以提高效率。
Graylog有4个基本组件:
Graylog Server:这个服务负责接收和处理日志/消息,并且和其他组件沟通。
Elasticsearch:存储所有的日志,它的性能依赖内存和硬盘IO。
MongoDB:存储元数据,负载不高。
Web接口:用户接口。
下面是Graylog组件之间的关系图:
二、Docker部署Graylog
首先提供一个docker-compose.yml文件
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
#- /graylog/config:/usr/share/graylog/data/config
environment:
GRAYLOG_PASSWORD_SECRET: somepasswordpepper
GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
GRAYLOG_WEB_ENDPOINT_URI: http://10.106.201.11:9000/api/
depends_on:
- mongo
- elasticsearch
ports:
- "9000:9000"
- "12201/udp:12201/udp"
- "12202/udp:12202/udp"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
#- /graylog/config:/usr/share/graylog/data/config
environment:
GRAYLOG_PASSWORD_SECRET:somepasswordpepper
GRAYLOG_ROOT_PASSWORD_SHA2:8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
GRAYLOG_WEB_ENDPOINT_URI:http://10.106.201.11:9000/api/
depends_on:
-mongo
-elasticsearch
ports:
-"9000:9000"
-"12201/udp:12201/udp"
-"12202/udp:12202/udp"
注意,这里的12201和12202是用来提供给客户端打日志的端口,所以后面设置了多少个INPUT,这里就需要开启多少个端口。
启动graylog
$ docker-compose -p panop up -d
Creating panop_mongo_1
Creating panop_elasticsearch_1
Creating panop_graylog_1
1
2
3
4
$docker-compose-ppanopup-d
Creatingpanop_mongo_1
Creatingpanop_elasticsearch_1
Creatingpanop_graylog_1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cacb9c4a58fb graylog2/server:2.1.0-3 "/docker-entrypoint.s" 5 minutes ago Up 5 minutes 0.0.0.0:12201->12201/udp, 0.0.0.0:12202->12202/udp, 0.0.0.0:9000->9000/tcp, 12900/tcp panop_graylog_1
4003904aaa40 elasticsearch:2 "/docker-entrypoint.s" 5 minutes ago Up 5 minutes 9200/tcp, 9300/tcp panop_elasticsearch_1
4a6276d52bd4 mongo:3 "/entrypoint.sh mongo" 5 minutes ago Up 5 minutes 27017/tcp panop_mongo_1
1
2
3
4
5
$dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
cacb9c4a58fbgraylog2/server:2.1.0-3"/docker-entrypoint.s"5minutesagoUp5minutes0.0.0.0:12201->12201/udp,0.0.0.0:12202->12202/udp,0.0.0.0:9000->9000/tcp,12900/tcppanop_graylog_1
4003904aaa40elasticsearch:2"/docker-entrypoint.s"5minutesagoUp5minutes9200/tcp,9300/tcppanop_elasticsearch_1
4a6276d52bd4mongo:3"/entrypoint.sh mongo"5minutesagoUp5minutes27017/tcppanop_mongo_1
当graylog启动完成后,我们需要把配置文件复制出来,放到宿主机中,然后再通过挂在的方式挂在到容器中,这样就可以修改配置文件了。
$ docker exec -ti root_graylog_1 bash
root@e76f6e178420:/usr/share/graylog# pwd
/usr/share/graylog
root@e76f6e178420:/usr/share/graylog# ls data/config/
graylog.conf log4j2.xml node-id
1
2
3
4
5
$dockerexec-tiroot_graylog_1bash
root@e76f6e178420:/usr/share/graylog# pwd
/usr/share/graylog
root@e76f6e178420:/usr/share/graylog# ls data/config/
graylog.conflog4j2.xmlnode-id
就是把这三个文件复制出来,然后放到本地/data/config目录下。
$ ls /data/config
graylog.conf log4j2.xml node-id
1
2
$ls/data/config
graylog.conf log4j2.xml node-id
然后把docker-compose文件中的graylog挂载的注释去掉,然后重新docker-compose up -d操作。
#- /graylog/config:/usr/share/graylog/data/config
1
#- /graylog/config:/usr/share/graylog/data/config
三、时区和高亮显示
修改graylog.conf配置文件的默认时区(UTC)为(Asia/Shanghai)
root_timezone = Asia/Shanghai
1
root_timezone=Asia/Shanghai
搜索高亮显示
allow_highlighting = true
1
allow_highlighting=true
四、登录Graylog Web
访问:http://10.106.201.11:9000,默认用户名密码admin/admin。
登录之后界面如下:
添加要接收的其他服务器syslog日志:System->Inputs->Syslog UDP->Launch new input。
在弹出的窗口上输入如下信息:
Title: udp
Port: 12202
Bind address: 0.0.0.0(要收集的其他服务器ip地址)
如果你需要收集多个服务器的日志,重复上面步骤。
五、接收日志配置
现在,我们的Graylog服务器已经做好了接收其他服务器发来日志的准备。下面我们还需要配置其他服务器,让这些服务器给Graylog服务器发送日志。
配置其他服务器给Graylog服务器发送syslog,创建rsyslog配置文件90-graylog.conf:
$ sudo vim /etc/rsyslog.d/90-graylog.conf
1
$sudovim/etc/rsyslog.d/90-graylog.conf
添加如下代码,把graylog_server_IP替换为Graylog服务器ip地址:
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @graylog_server_IP:12202;GRAYLOGRFC5424
1
2
$templateGRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.*@graylog_server_IP:12202;GRAYLOGRFC5424
重启rsyslog服务使生效:
$ sudo systemctl restart rsyslog
1
$sudosystemctlrestartrsyslog
配置完成之后,回到Graylog Web,点击Sources,查看是否有新添加rsyslog。
然后登陆一下此服务器产生一些登陆日志,然后回到Graylog,在search页面就可以看到如下日志信息了。
可以看到graylog的日志信息跟/var/log/secure日志信息是一样的。
[root@testpanoplog-hzba-1 ~]# tail -n 5 /var/log/secure
Jan 3 14:12:30 testpanoplog-hzba-1 sshd[13090]: Accepted password for root from 10.0.8.134 port 30542 ssh2
Jan 3 14:12:30 testpanoplog-hzba-1 sshd[13090]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 3 14:12:30 testpanoplog-hzba-1 sshd[13090]: pam_lastlog(sshd:session): unable to open /var/log/lastlog: No such file or directory
Jan 3 14:12:30 testpanoplog-hzba-1 sshd[13094]: lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
Jan 3 14:12:30 testpanoplog-hzba-1 sshd[13094]: lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
1
2
3
4
5
6
[root@testpanoplog-hzba-1~]# tail -n 5 /var/log/secure
Jan314:12:30testpanoplog-hzba-1sshd[13090]:Acceptedpasswordforrootfrom10.0.8.134port30542ssh2
Jan314:12:30testpanoplog-hzba-1sshd[13090]:pam_unix(sshd:session):sessionopenedforuserrootby(uid=0)
Jan314:12:30testpanoplog-hzba-1sshd[13090]:pam_lastlog(sshd:session):unabletoopen/var/log/lastlog:Nosuchfileordirectory
Jan314:12:30testpanoplog-hzba-1sshd[13094]:lastlog_openseek:Couldn'tstat/var/log/lastlog:Nosuchfileordirectory
Jan314:12:30testpanoplog-hzba-1sshd[13094]:lastlog_openseek:Couldn'tstat/var/log/lastlog:Nosuchfileordirectory
如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。