Graylog集群的安装部署如下表所示:
VM | IP | Graylog Server | MongoDB | Elasticsearch |
---|---|---|---|---|
vm1 | 192.168.56.131 | Graylog Server主节点 | MongoDB主节点 | elasticsearch master节点 |
vm2 | 192.168.56.141 | Graylog Server从节点 | MongoDB仲裁节点 | elasticsearch master&data节点 |
vm3 | 192.168.56.142 | Graylog Server从节点 | MongoDB备选主节点 | elasticsearch master&data节点 |
所有节点的配置都一样,如下
# /etc/mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
#replication:
# replSetName: graylog
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
# how the process runs
processManagement:
# fork: true
# pidFilePath: /var/run/mongodb/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
#security:
#operationProfiling:
replication:
replSetName: graylog
在任意节点,利用mongo命令登入mongodb:
rs.initiate()
# 添加主节点
rs.add({_id:0,host:‘192.168.56.131:27017’,priority:2,arbiterOnly:false})
# 添加备用节点
rs.add({_id:1,host:‘192.168.56.142:27017’,priority:1,arbiterOnly:false})
# 添加仲裁节点
rs.add({_id:2,host:‘192.168.56.141:27017’,arbiterOnly:true})
rs.conifg() # 查看节点信息
Note
:Elasticsearch不能使用root用户开启,所以,需要创建一个新的用户和组别,如es.
su es
vim /usr/local/elasticsearch/config/elasticsearch.yml
分别修改以下几个配置项:
cluster.name: graylog
node.name: node-1# node.master=true means this is a candidate master node
node.master: true
# node.data = true means this is a data node
node.data: true
# the ip of node
network.host: 0.0.0.0
# ip:host of all nodes
discovery.zen.ping.unicast.hosts: [“192.168.56.131:9300”,“192.168.56.141:9300”,“192.168.56.142:9300”]
discovery.zen.minimum_master_nodes: 2
其他节点分别修改node.name
,node.master
,node.data
。
一个节点启动后,就会使用Zen Discovery机制去寻找集群中的其他节点,并与之建立连接。集群中会从候选主节点中选举出一个主节点,主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作。Elasticsearch中的主节点的工作量相对较轻,用户的请求可以发往任何一个节点,由该节点负责分发和返回结果,而不需要经过主节点转发。
正常情况下,集群中的所有节点,应该对主节点的选择是一致的,即一个集群中只有一个选举出来的主节点。然而,在某些情况下,比如网络通信出现问题、主节点因为负载过大停止响应等等,就会导致重新选举主节点,此时可能会出现集群中有多个主节点的现象,即节点对集群状态的认知不一致,称之为脑裂现象。为了尽量避免此种情况的出现,可以通过discovery.zen.minimum_master_nodes来设置最少可工作的候选主节点个数,建议设置为(候选主节点数 / 2) + 1, 比如,当有三个候选主节点时,该配置项的值为(3/2)+1=2,也就是保证集群中有半数以上的候选主节点。
候选主节点的设置方法是设置node.mater为true,默认情况下,node.mater和node.data的值都为true,即该节点既可以做候选主节点也可以做数据节点。由于数据节点承载了数据的操作,负载通常都很高,所以随着集群的扩大,建议将二者分离,设置专用的候选主节点。当我们设置node.data为false,就将节点设置为专用的候选主节点了。
node.master = true
node.data = false
数据节点负责数据的存储和相关具体操作,比如CRUD、搜索、聚合。所以,数据节点对机器配置要求比较高,首先需要有足够的磁盘空间来存储数据,其次数据操作对系统CPU、Memory和IO的性能消耗都很大。通常随着集群的扩大,需要增加更多的数据节点来提高可用性。
前面提到默认情况下节点既可以做候选主节点也可以做数据节点,但是数据节点的负载较重,所以需要考虑将二者分离开,设置专用的数据节点,避免因数据节点负载重导致主节点不响应。
node.master = false
node.data = true
参考链接:
https://blog.csdn.net/jiahao1186/article/details/81058022
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
/# If you are running more than one instances of Graylog server you have to select one of these instances as master. The master will perform some periodical tasks that non-master won’t perform.
is_master = true
echo -n your_passwd | sha256sum
for example: echo -n admin1234 | sha256sum
7a96004f5149811c069f40146b08cf058db961 -
sudo vim /etc/graylog/server/server.conf
root_password_sha2 = 7a96004f5149811c069f40146b08cf058db961
sudo apt-get install pwgen
pwgen -N -1 -s 40 1
5JdTcmGgqBUNw2o9YXbuzNx58tmY
sudo vim /etc/graylog/server/server.conf
password_secret = 5JdTcmGgqBUNw2o9YXbuzNx58tmY
sudo vim /etc/graylog/server/server.conf
# 如果没有登录认证信息,则无需添加user:password
mongodb_uri = mongodb://192.168.56.131:27017,192.168.56.141:27017,192.168.56.142:27017/graylog
elasticsearch_hosts = http://192.168.56.131:9200,http://192.168.56.141:9200,http://192.168.56.142:9200
http_bind_address = 0.0.0.0:9000
# 由于外部机器只能通过主机的端口转化进行访问graylog, 所以这里需要设置为主机的IP
http_publish_uri = http://172.16.162.127:9000/
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
如果发现机器重启之后,Graylog没有启动,并在对应的日志文件上没有这次启动的日志,则可能systemd文件有错误
查看systemd启动文件 /usr/lib/systemd/system/graylog-server.service
,是否使用**/bin/bash启动graylog-server,例如:
ExecStart=/bin/bash** /usr/share/graylog-server/bin/graylog-server
Filebeat是本地文件的日志数据采集器,可监控日志目录或特定的日志文件(tail file), 并将它们转发给Elasticsearch或logstash进行索引。
# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enalbed: true
paths:
- /var/log/nginx/error.log
# Exclude lines. A list of regular expressions to match. It drops the lines that are
# matching any regular expression from the list.
exclude_lines: ["^$", "^this"]
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["192.168.56.151:12203"]
启动filebeat
sudo systemctl enable filebeat
sudo systemctl start filebeat
Note
: 大家在测试file beat功能的时候,如果使用vim去编辑你的测试日志文件,这样会在Graylog管理后台看到重复的日志,原因是vim编辑并保存文件之后,文件的inode已经改变了。
利用Nginx(支持http, tcp和UDP数据转发)实现日志web管理访问和日志同步输入的负载均衡。例如:需要4个端口转发配置,分别为:web管理访问端口9000(TCP)
, service_1日志输入端口12201(UDP)
、service_2日志输入端口12202(UDP)
和service_3 filebeat日志输入端口12203(TCP)
。
upstream graylog_servers {
least conn;
server 192.168.56.131:9000;
server 192.168.56.141:9000;
server 192.168.56.142:9000;
}
server {
listen 9000;
proxy_pass graylog_servers;
proxy_timeout 10s;
error_log graylog_servers.log;
}
upstream service_1_logs {
least conn;
server 192.168.56.131:12201;
server 192.168.56.141:12201;
server 192.168.56.142:12201;
}
server {
listen 12201 udp;
proxy_pass service_1_logs ;
proxy_timeout 10s;
error_log service_1_logs .log;
}
upstream service_2_logs {
least conn;
server 192.168.56.131:12202;
server 192.168.56.141:12202;
server 192.168.56.142:12202;
}
server {
listen 12202 udp;
proxy_pass service_2_logs ;
proxy_timeout 10s;
error_log service_2_logs .log;
}
upstream service_3_logs {
least conn;
server 192.168.56.131:12202;
server 192.168.56.141:12202;
server 192.168.56.142:12202;
}
server {
listen 12203;
proxy_pass service_3_logs;
proxy_timeout 10s;
error_log service_3_logs.log;
}
进入Graylog的日志管理界面之后,根据如下信息配置好各个模块的日志输入。
日志输入源 | 方式 | 端口 |
---|---|---|
service_1 | GELF UDP | 12201 |
service_2 | GELF UDP | 12202 |
service_3 | Beats | 12203 |