Docker:部署Graylog日志收集服务器

日志管理工具:收集,解析,可视化

  • 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部署Graylog

Docker部署Graylog2

首先提供一个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"

注意,这里的12201和12202是用来提供给客户端打日志的端口,所以后面设置了多少个INPUT,这里就需要开启多少个端口。

启动graylog

$ docker-compose -p panop up -d
Creating panop_mongo_1
Creating panop_elasticsearch_1
Creating panop_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

当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

就是把这三个文件复制出来,然后放到本地/data/config目录下。

$ ls /data/config
graylog.conf log4j2.xml node-id

然后把docker-compose文件中的graylog挂载的注释去掉,然后重新docker-compose up -d操作。

#- /graylog/config:/usr/share/graylog/data/config

三、时区和高亮显示

修改graylog.conf配置文件的默认时区(UTC)为(Asia/Shanghai)

root_timezone = Asia/Shanghai

搜索高亮显示

allow_highlighting = true

四、登录Graylog Web

访问:http://10.106.201.11:9000,默认用户名密码admin/admin。

登录之后界面如下:

Docker:部署Graylog日志收集服务器

添加要接收的其他服务器syslog日志:System->Inputs->Syslog UDP->Launch new input。

Docker:部署Graylog日志收集服务器

在弹出的窗口上输入如下信息:

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

添加如下代码,把graylog_server_IP替换为Graylog服务器ip地址:

$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @graylog_server_IP:12202;GRAYLOGRFC5424

重启rsyslog服务使生效:

$ sudo systemctl restart rsyslog

配置完成之后,回到Graylog Web,点击Sources,查看是否有新添加rsyslog。

然后登陆一下此服务器产生一些登陆日志,然后回到Graylog,在search页面就可以看到如下日志信息了。

Docker:部署Graylog日志收集服务器

可以看到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

Graylog——日志聚合工具中的后起之秀



版权及转载说明

本站原创、转载文章欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区

本站转载文章版权归原作者所有,如发现本站文章涉嫌侵权请点击「联系我们」反馈,本站将立即给予删除

转载请注明:文章转载自:全分享社区 「http://www.aweb.cc

本文转载自:http://www.ywnds.com/?p=7705

本文标题:Docker:部署Graylog日志收集服务器

本文地址:http://www.aweb.cc/article/detail/id/634.html

浅谈服务治理与微服务 <<上一篇