部署 Graylog 日志系统
Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集、检索、可视化 Dashboard。
Graylog 架构如下图所示:
- Graylog 负责接收来自各种设备和应用的日志,并为用户提供 Web 访问接口。
- Elasticsearch 用于索引和保存 Graylog 接收到的日志。
- MongoDB 负责保存 Graylog 自身的配置信息。
- 与 ELK 一样,Graylog 的部署方案很灵活,快速搭建一个 all-in-one 的环境对于学习很有益处;
- 部署一个高可用高伸缩性的集群对于生成环境也是必要的。
部署 Graylog
Graylog 及其相关组件都将以容器的方式部署。
MongoDB
docker run --name graylog-mongo -d mongo:3
Elasticsearch
docker run --name graylog-elasticsearch -d elasticsearch:2 elasticsearch -Des.cluster.name="graylog"
Graylog
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.23:9000/api"
-e GRAYLOG_PASSWORD_SECRET=somepasswordpepper
-e GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
-d graylog2/server
- --link 参数让 Graylog 容器能够用主机名 mongo 和 elasticsearch 访问 MongoDB 和 Elasticsearch 的服务。
- -p 9000:9000 映射 Graylog 的 Web 服务端口 9000。
- -p 12201:12201/udp 映射 Graylog 接收日志数据的 UDP 端口 12201。
- GRAYLOG_WEB_ENDPOINT_URI 指定 Graylog 的 Web 访问 URI,请注意这里需要使用 Docker Host 的外部 IP(在实验环境中为 10.12.31.23)。
- GRAYLOG_ROOT_PASSWORD_SHA2 指定 Graylog 管理员用户密码的哈希值,在这个例子中密码为 admin。可以通过如下命令生成自己的密码哈希,比如:
- echo -n yourpassword | shasum -a 256
容器启动后,在 Web 浏览器中访问 http://10.12.31.23:9000
用户名/密码 = admin/admin
登录后显示 Getting Started 页面。
配置 Graylog
目前 Graylog 还没法接收任何日志,我们需要配置一个 Input,点击顶部菜单 System -> Inputs。
Graylog 支持多种 Input 类型,与 Graylog 对接的 Docker logging driver 是 gelf,因此这里我们需要运行一个 GELF UDP 类型的 Input。
在 Node 列表中选择 Graylog 容器。
Title 命名为 docker GELF input。
其他保持默认值,其中 port 12201 即为前面启动容器时映射到 Host 的端口,用于接收日志数据。
Input 成功运行
----------------------------------------------------------------引用来自------------------------------------------------------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587995&idx=1&sn=11a00029fb78078c0269ba5a050b1964&chksm=8d308202ba470b14759be3467260a0ba9102c1f7ea28ff3ae95f878877cdd9b14108076b3a7c&scene=21#wechat_redirect