简介
Graylog 是一个开源的日志聚合、管理工具。与 ELK 类似,但相对易用,当然,其日志分析功能和一些功能也就弱于 ELK 了。
Graylog 跟 ELK 相比,ELK 一些被人诟病的问题都支持了,例如 可以处理多行日志,支持原始日志格式的采集,并能添加字段。并且它支持自己开发的日志采集脚本,自由度就上来了。
主机环境
查看是否已经设置的命令
如果出现 vm.max_map_count = 262144 跳过此步,没有则继续下面的步骤
1 2
| cp /etc/sysctl.conf /etc/sysctl.conf.bak echo vm.max_map_count=262144 >> /etc/sysctl.conf
|
再执行 sysctl -p 查看是否已经拥有
各组件自行安装
Graylog 本身提供了一体化的安装,但考虑到可能会给其他应用使用,所以我就分开安装,在本章用 Dokcer 安装,需要安装的有 MongoDB、Elasticsearch、Graylog。
本章使用 elasticsearch:6.8.9 和 graylog:3.3。
安装 MongoDB
1 2 3
| docker pull mongo docker run --name mongo -p 27017:27017 -v /home/docker/mongo/data:/data/db -d mongo
|
安装 elasticsearch
这个直接安装一个集群,方便后面直接挪进生产环境,资源不足的本地可以装单机。
这里就装两个,一个主节点,一个数据节点,如果后面需要增加,就按照数据节点的继续增加即可。
主节点 192.168.1.122:9201
配置文件 /home/docker/elasticsearch/conf/es01.yml
1 2 3 4 5 6 7 8 9 10 11
| cluster.name: es_cluster node.name: node-master node.master: true node.data: true http.port: 9201 transport.tcp.port: 9301 network.host: 0.0.0.0 network.publish_host: 192.168.1.122 discovery.zen.ping.unicast.hosts: ["192.168.1.122:9301", "192.168.1.122:9302"] http.cors.enabled: true http.cors.allow-origin: "*"
|
数据节点 192.168.1.122:9202
配置文件 /home/docker/elasticsearch/conf/es02.yml
1 2 3 4 5 6 7 8 9 10 11
| cluster.name: es_cluster node.name: node-data node.master: false node.data: true http.port: 9202 transport.tcp.port: 9302 network.host: 0.0.0.0 network.publish_host: 192.168.1.122 discovery.zen.ping.unicast.hosts: ["192.168.1.122:9301","192.168.1.122:9302"] http.cors.enabled: true http.cors.allow-origin: "*"
|
ES 配置文件可参考这篇,带中文介绍
https://www.cnblogs.com/DreamDrive/p/6035771.html
启动容器
- 启动的命令中
ES_JAVA_OPTS 根据实际情况设置 jvm 内存大小
- 映射出来的 data 路径需要给与 777 权限
- 安装完后通过访问 http://192.168.1.122:9200/_cat/nodes?pretty 查看成功与否
1 2 3 4 5 6 7 8
| docker pull elasticsearch:6.8.9
docker run --name es01 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9201:9201 -p 9301:9301 -v /home/docker/elasticsearch/conf/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/docker/elasticsearch/data/es01:/usr/share/elasticsearch/data -d elasticsearch:6.8.9
docker run --name es02 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9202:9202 -p 9302:9302 -v /home/docker/elasticsearch/conf/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/docker/elasticsearch/data/es02:/usr/share/elasticsearch/data -d elasticsearch:6.8.9
|
安装 Graylog
1 2
| docker pull graylog/graylog:3.3
|
这里用 docker-compose 来安装
配置文件 docker-compose.yml
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 28 29 30 31 32 33
| version: '2' services: graylog: image: graylog/graylog:3.3 container_name: graylog environment: - GRAYLOG_PASSWORD_SECRET=somepasswordpepper - GRAYLOG_ROOT_USERNAME=admin - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 - GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.1.122:9000/ - GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.1.122:9201 - GRAYLOG_MONGODB_URI=mongodb://192.168.1.122:27017/graylog - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai ports: - 9000:9000 - 1514:1514 - 1514:1514/udp - 12201:12201 - 12201:12201/udp
|
其中 GRAYLOG_ROOT_PASSWORD_SHA2 是密码,上面配置文件里的是 admin,可以通过以下命令自制
1
| echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
|

通过 docker-compose 一次性安装
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| version: '2' services: mongodb: image: mongo container_name: mongo ports: - 27017:27017 volumes: - /home/docker/mongo/data:/data/db es01: image: elasticsearch:6.8.9 container_name: es-master environment: - "ES_JAVA_OPTS=-Xms256m -Xmx256m" ports: - 9200:9200 - 9300:9300 volumes: - /home/docker/es/conf/master.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /home/docker/es/data/master:/usr/share/elasticsearch/data es02: image: elasticsearch:6.8.9 container_name: es-data01 environment: - "ES_JAVA_OPTS=-Xms256m -Xmx256m" ports: - 9201:9201 - 9301:9301 volumes: - /home/docker/es/conf/data01.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /home/docker/es/data/data01:/usr/share/elasticsearch/data graylog: image: graylog/graylog:3.3 container_name: graylog environment: - GRAYLOG_PASSWORD_SECRET=somepasswordpepper - GRAYLOG_ROOT_USERNAME=admin - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 - GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.1.122:9000/ - GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.1.122:9200 - GRAYLOG_MONGODB_URI=mongodb://192.168.1.122:27017/graylog - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai ports: - 9000:9000 - 1514:1514 - 1514:1514/udp - 12201:12201 - 12201:12201/udp
|
配置文件自行在上面的安装方式中找,更新了 es01 为 es-master, es02 为 es-data01。