Graylog 安装篇

简介

Graylog 是一个开源的日志聚合、管理工具。与 ELK 类似,但相对易用,当然,其日志分析功能和一些功能也就弱于 ELK 了。

GraylogELK 相比,ELK 一些被人诟病的问题都支持了,例如 可以处理多行日志,支持原始日志格式的采集,并能添加字段。并且它支持自己开发的日志采集脚本,自由度就上来了。

主机环境

查看是否已经设置的命令

1
sysctl -p

如果出现 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 安装,需要安装的有 MongoDBElasticsearchGraylog

本章使用 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

启动容器

  1. 启动的命令中 ES_JAVA_OPTS 根据实际情况设置 jvm 内存大小
  2. 映射出来的 data 路径需要给与 777 权限
  3. 安装完后通过访问 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: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:3.3
container_name: graylog
environment:
# 配置项需以GRAYLOG_开头,并且是全大写的
# 密码加密盐值,不能小于16个字符
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
# 用户名配置项,默认为admin
- GRAYLOG_ROOT_USERNAME=admin
# 此处的密码是经过SHA2算法加密后的密码,默认为admin
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
# 这里需要填一个可以在外部访问的地址,我这里填的是宿主机的地址,否则无法通过浏览器访问
- GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.1.122:9000/
# 配置Elasticsearch连接地址,多节点使用逗号分隔
- GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.1.122:9201
# 配置MongoDB连接地址,多节点使用逗号分隔
- GRAYLOG_MONGODB_URI=mongodb://192.168.1.122:27017/graylog
# 配置时区
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
ports:
# Graylog web interface and REST API
- 9000:9000
# Syslog TCP
- 1514:1514
# Syslog UDP
- 1514:1514/udp
# GELF TCP
- 12201:12201
# GELF UDP
- 12201:12201/udp

其中 GRAYLOG_ROOT_PASSWORD_SHA2 是密码,上面配置文件里的是 admin,可以通过以下命令自制

1
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

生成GRAYLOG_ROOT_PASSWORD_SHA2

通过 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: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:3.3
container_name: graylog
environment:
# 配置项需以GRAYLOG_开头,并且是全大写的
# 密码加密盐值,不能小于16个字符
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
# 用户名配置项,默认为admin
- GRAYLOG_ROOT_USERNAME=admin
# 此处的密码是经过SHA2算法加密后的密码,默认为admin
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
# 这里需要填一个可以在外部访问的地址,我这里填的是宿主机的地址,否则无法通过浏览器访问
- GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.1.122:9000/
# 配置Elasticsearch连接地址,多节点使用逗号分隔
- GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.1.122:9200
# 配置MongoDB连接地址,多节点使用逗号分隔
- GRAYLOG_MONGODB_URI=mongodb://192.168.1.122:27017/graylog
# 配置时区
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
ports:
# Graylog web interface and REST API
- 9000:9000
# Syslog TCP
- 1514:1514
# Syslog UDP
- 1514:1514/udp
# GELF TCP
- 12201:12201
# GELF UDP
- 12201:12201/udp

配置文件自行在上面的安装方式中找,更新了 es01 为 es-master, es02 为 es-data01。