服务器规划
服务器host11 | 服务器host12 | 服务器host13 |
---|---|---|
elasticsearch(master,data,client) | elasticsearch(master,data,client) | elasticsearch(master,data,client) |
kibana | ||
logstash | logstash | logstash |
filebeat | filebeat | filebeat |
在三台服务器上均执行以下命令关闭selinux:
代码语言:javascript复制setenforce 0
sed -i -e 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
在三台服务器上均安装java:
代码语言:javascript复制yum install -y java
在三台服务器上均安装elasticsearch的rpm包:
代码语言:javascript复制yum install -y https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm
在三台服务器上修改elasticsearch的配置文件:
代码语言:javascript复制cp -r /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
cat << EOF > /etc/elasticsearch/elasticsearch.yml
cluster.name: DemoESCluster
# 注意不同节点的node.name要设置得不一样
node.name: demo-es-node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.211.55.11", "10.211.55.12", "10.211.55.13"]
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 2
EOF
在三台服务器上启动elasticsearch:
代码语言:javascript复制systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
netstat -tunlp| grep java
在任意服务器上检查集群中的节点列表:
代码语言:javascript复制yum install -y jq
curl --silent -XGET 'http://localhost:9200/_cluster/state?pretty'|jq '.nodes'
在上述命令的输出里可以看到集群的相关信息,同时 nodes 字段里面包含了每个节点的详细信息,这样一个基本的elasticsearch集群就部署好了。
安装 Kibana
接下来我们需要安装一个 Kibana 来帮助可视化管理 Elasticsearch,在host12上安装kibana:
代码语言:javascript复制yum install -y https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-x86_64.rpm
修改kibana的配置文件:
代码语言:javascript复制cp -r /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
cat << EOF > /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
EOF
注意这里配置的elasticsearch.url
为本机的es实例,这样其实还是存在单点故障的,官方建议在本机部署一个Elasticsearch 协调(Coordinating only node) 的节点,这里配置成协调节点的地址。
启动kibana:
代码语言:javascript复制systemctl daemon-reload
systemctl enable kibana
systemctl start kibana
配置认证需要升级License,我这里是在内网使用,就不进行这个配置了。如果须要配置访问认证可参考这里。
另外还可以启用SSL,可参考这里进行配置。
为了避免单点故障,kibana可部署多个,然后由nginx作反向代理,实现对kibana服务的负载均衡访问。
安装logstash
在每台服务器上安装logstash:
代码语言:javascript复制yum install -y https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm
修改logstash的配置文件:
代码语言:javascript复制cp -r /etc/logstash/logstash.yml /etc/logstash/logstash.yml.bak
cat << EOF > /etc/logstash/logstash.yml
path.data: /var/lib/logstash
path.logs: /var/log/logstash
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.url: ["http://10.211.55.11:9200", "http://10.211.55.12:9200", "http://10.211.55.13:9200"]
EOF
cp -r /etc/logstash/conf.d/beat-elasticsearch.conf /etc/logstash/conf.d/beat-elasticsearch.conf.bak
cat << EOF > /etc/logstash/conf.d/beat-elasticsearch.conf
input {
beats {
port => 5044
ssl => false
}
}
filter {
}
output {
elasticsearch {
hosts => ["10.211.55.11:9200","10.211.55.12:9200","10.211.55.13:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{ YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
EOF
为了从原始日志中解析出一些有意义的field字段,可以启用一些filter,可用的filter列表在这里。
启动logstash:
代码语言:javascript复制systemctl daemon-reload
systemctl enable logstash
systemctl start logstash
安装filebeat
在每台服务器上安装filebeat:
代码语言:javascript复制yum install -y https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-x86_64.rpm
修改每台服务器上的filebeat配置文件:
代码语言:javascript复制# 这里根据在采集的日志路径,编写合适的inputs规则
cp -r /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak
cat << EOF > /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
output.logstash:
hosts: ["10.211.55.11:5044", "10.211.55.12:5044", "10.211.55.13:5044"]
ssl.enabled: false
index: 'var_log'
EOF
filebeat配置文件选项比较多,完整的参考可查看这里。
在每台服务器上启动filebeat:
代码语言:javascript复制systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat
其它安全设置
为保证数据安全,filebeat与logstash、filebeat与elasticsearch、logstash与elasticsearch、kibana与elasticsearch之间的通讯及kibana自身均能启用SSL加密,具体启用办法就是在配置文件中配一配SSL证书就可以了,这个比较简单,不再赘述。
kibana登录认证需要升级License,这一点比较不爽,如果考虑成本,还是在前置机nginx上配个HTTP Basic认证处理好了。
部署测试
至此一个较完整的ELFK日志采集系统就搭建好了,用浏览器访问http://192.168.10.2:5601/
,在kibana的界面上简单设置下就可以查看到抓取的日志了:
添加索引项