使用docker 部署graylog集群
graylog 相比elk 有比较简单的方面,使用简单,配置简单,可视化工具是一体化的,比较方便
搭建使用docker,多主机部分,结合docker-compose 进行管理
具体docker 配置文件参考 http://docs.graylog.org/en/latest/pages/installation/docker.html
参考架构图
部署说明
mongodb 是复制集,对于es 是1master多data node
graylog 使用master node 模型(容器部署使用网络模型是host,因为要求多节点的时候rest——api 地址必须是可以互通的)
es 配置
- master
cluster.name: grayloges_cluster
node.name: node-master
node.master: true
node.data: true
http.port: 9200
network.host: 0.0.0.0
network.publish_host: masterip
discovery.zen.ping.unicast.hosts: ["masterip"]
http.cors.enabled: true
http.cors.allow-origin: "*"
- data node
cluster.name: grayloges_cluster
node.name: node-data
node.master: false
node.data: true
http.port: 9200
network.host: 0.0.0.0
network.publish_host: data-ip
discovery.zen.ping.unicast.hosts: ["masterip"]
http.cors.enabled: true
http.cors.allow-origin: "*"
graylog 配置
- master
主要是
is_master = true
- node
is_master = false
- 公共部分
mongodb_uri 使用复制集连接方式
elasticsearch_hosts 指定多个es 节点地址
启动
使用的是容器
配置文件通过挂在模式进行的
比如:
graylog:
volumes:
- ./graylog-data:/usr/share/graylog/data/journal
- ./config/graylog.conf:/usr/share/graylog/data/config/graylog.conf
es:
volumes:
- ./es:/usr/share/elasticsearch/data
- ./config/elasticsearch-data92.yml:/usr/share/elasticsearch/config/elasticsearch.yml
运行效果
常见问题解决
- NodePingThread - Did not find meta info of this node. Re-registering
节点之间时间必须同步,后者机器负载比较高,加大 stale_master_timeout 时间
或者调整jvm 参数
- 集群的话,必须存在一个master 而且只能有一个
- 使用docker 进行部署,因为有一个要求节点之间网络必须是可通信的,但是默认没有多docker 主机网络打通
解决方法: network:host 或者overlay 打通多主机网络,或者主机路由
参考资料
http://docs.graylog.org/en/2.4/pages/configuration/multinode_setup.html#configure-multinode
http://docs.graylog.org/en/latest/pages/configuration/server.conf.html