服务器维护需要log日志,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组件之间的关系图:

53f0f1966f23ffdfaf1ab50fef4853d1.png

二、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。

登录之后界面如下:

09f913c90098b2ea4740be96ebdc5376.png

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

ae0a818f75ee037151e0b10e4682de43.png

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

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页面就可以看到如下日志信息了。

e5a182aa8244221b7b03d321290363de.png

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

如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值