docker(10、日志管理4)5、Graylog 日志系统(1、部署Graylog日志系统,2、Graylog管理日志)

42 篇文章 0 订阅

部署Graylog日志系统

Graylog 是与 ELK 可以相提并论的一款几种式日志管理方案,支持数据收集、检索、可视化Dashboard。

将实践用Graylog来管理Docker日志

Graylog 架构

Graylog 架构如下图所示:

Graylog 负责接收来自各种设备和应用的日志,并未用户提供Web访问接口。
Elasticsearch 用于索引和保存 Graylog接收到的日志
MongoDB 负责保存 Graylog自身的配置信息
与ELK一样,Graylog的部署方案很灵活,快速搭建一个 all-in-one 的环境对于学习很有好处。部署一个高可用的伸缩性集群对于生产环境也是必要的。 

部署 Graylog
Graylog 及其相关组件都将以容器的方式部署

[root@localhost ~]# docker run --name graylog-mongo -d mongo:3

部署Elasticsearch

[root@localhost ~]# docker run --name graylog-elasticsearch -d elasticsearch:2 elasticsearch -Des.cluster.name="graylog"

部署Graylog

注意:-e GRAYLOG_WEB_ENDPOINT_URI="http://10.12.31.211:9000/api"中的IP是host外部ip

docker run --link graylog-mongo:mongo \
    --link graylog-elasticsearch:elasticsearch \
    -p 9000:9000 \
    -p 12201:12201/udp \
    -e GRAYLOG_WEB_ENDPOINT_URI="http://10.12.31.211:9000/api" \
    -e GRAYLOG_PASSWORD_SECRET=somepasswordpepper \
    -e GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 \
    -d graylog2/server

--link graylog-elasticsearch:elasticsearch
    让Graylog容器能够用主机名 mongo和Elasticsearch 访问 MongoDB 和 Elasticsearch的服务 
-p 9000:9000
    映射Graylog的Web服务器端口9000 
-p 12201:12201/udp
    映射Graylog接收日志数据的UDP 12201 端口
-e GRAYLOG_WEB_ENDPOINT_URI="http://10.12.31.211:9000/api"
    指定Graylog的Web访问URI,请注意这里需要使用docker host 的外部IP
-e GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 \
    指定Graylog管理员密码的哈希值,这里用的密码是admin,可以使用命令生产自己的密码哈希“echo -n yourpassword | shasum -a 256”

容器启动后,在 Web 浏览器中访问 http://[Docker Host IP]:9000

用户名/密码 = admin/admin

登录后显示 Getting Started 页面。

配置 Graylog

目前 Graylog 还没法接收任何日志,我们需要配置一个 Input,点击顶部菜单 System -> Inputs

Graylog支持多种 Input 类型,与Graylog对接的 Docker logging driver 是 gelf,因此这里我们需要运行一个 GRLF UDP 类型的Input

在弹出的对话框中操作:1、node选择Graylog容器;2、Title命名为 docker GELF input ,然后点击save

配置完成后如下图所示

 Graylog管理日志

首先运行测试容器,设置logging driver为gelf,并设置接收日志的地址,还有添加tag以区分不同容器的日志

 

docker run -d \
           --log-driver=gelf \
           --log-opt gelf-address=udp://localhost:12201 \
           --log-opt tag="log-test-container-A" \
           busybox sh -c 'while true; do echo "This is a log message from container A"; sleep 10; done;'
docker run -d \
           --log-driver=gelf \
           --log-opt gelf-address=udp://localhost:12201 \
           --log-opt tag="log-test-container-B" \
           busybox sh -c 'while true; do echo "This is a log message from container B"; sleep 10; done;'

--log-driver=gelf 告诉 Docker 使用 GELF 的 logging driver。

--log-opt gelf-address=localhost:12201 将容器日志发送到 Graylog 的日志接收端口。

--log-opt tag="log-test-container-A" 和 --log-opt tag="log-test-container-B" 在日志中添加一个可选的 tag,用于区分不同的容器

容器启动后,点击Graylog顶部菜单的 Search,就能够查询到容器的日志了

与 Kibana 一样, Graylog也提供了强大的查询功能,比如输入关键字 container B 就能搜到匹配的日志条目

与前面ELK一样,这里我们只是简单的将日志导入到Graylog。实际上Graylog也可以对日志进行归类汇总、分析聚合、创建Dashboard等。

上面实验日志中频繁报错,看老师博客中回复是Elasticsearch没起来,实际上是起来的,访问9200也是有返回值的,估计是版本更新导致,暂且条跳过,上图是老师的实验截图

2019-05-13 15:27:15,299 WARN : org.graylog2.migrations.V20161130141500_DefaultStreamRecalcIndexRanges - Interrupted or timed out waiting for Elasticsearch cluster, checking again.
2019-05-13 15:27:44,882 ERROR: org.graylog2.indexer.cluster.Cluster - Couldn't read cluster health for indices [graylog_*] (Could not connect to http://127.0.0.1:9200)
2019-05-13 15:27:44,882 INFO : org.graylog2.periodical.IndexerClusterCheckerThread - Indexer not fully initialized yet. Skipping periodic cluster check.

Docker 日志管理小结

本章介绍了Docker 日志管理的方案,我们由docker logs 引出了 Docker logging driver,进而学习了ELK日志处理 stack。通过fluentd logging driver,我们很容易的将fluentd接入到日志管理方案中。最后我们还实践了与 ELK同等量级的Graylog。

与容器监控一样,容器日志管理也是一个百花齐放,告诉迭代的技术领域。没有最好的,只有最合适的。

不同企业有不同的部署规模,有自己的管理流程,有个字的业务目标。运维团队有不同的技术背景、人员结构和工作方式。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值