系统条件
- 4G以上内存
- jdk1.8
- docker
- 开启5601、5044、9200端口
安装流程
1. 拉取elk的docker
sudo docker pull sebp/elk
2. 修改系统配置
vim /etc/sysctl.conf
增加以下一行:vm.max_map_count=262144
sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk
4. 导出ssl证书
filebeat与logstash连通是通过ssl加密的,需要把证书放在filebeat端
查看容器信息:docker ps
记下这个容器id1
2docker cp [containID]:/etc/pki/tls/certs/logstash-beats.crt .
ls
会看到当前目录下已经有了logstash-beats.crt文件
复制SSL证书
在您的ELK服务器上,将您创建的SSL证书复制到客户端服务器(替换客户端服务器的地址和您自己的登录名):1
elk$ scp logstash-forwarder.crt user@client_server_private_address:/tmp
提供您的登录凭据后,确保证书复制成功。客户端服务器和ELK服务器之间的通信是必需的。
现在,在您的客户端服务器上,将ELK服务器的SSL证书复制到适当的位置(/etc/pki/tls/certs):1
2client$ sudo mkdir -p /etc/pki/tls/certs
client$ sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
5. Filebeat安装与配置
配置Filebeat
在客户端服务器上,创建并编辑Filebeat配置文件:
client$ sudo nano /etc/filebeat/filebeat.yml
在Filebeat inputs部分,找到enabledenabled: true
找到paths1
2
3
4paths:
- /var/log/auth.log
- /var/log/syslog
#- /var/log/*.log
在elasticsearch output部分,把这个部分全部注释
在Logstash output部分,取消output.Logstash注释,并修改1
2
3
4output.logstash:
# The Logstash hosts
hosts: ["47.97.165.253:5044"]
bulk_max_size: 1024
打开SSL功能:ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
保存并关闭sudo /usr/share/filebeat/bin/filebeat configtest检查配置语法是否正确
yaml文件用缩进表示层级关系,缩进只能用空格,不能用Tab!缩进空格随便几个,但相同层级元素必须对齐
- 若提示
found a tab character that violate indentation. Exiting.,将该行前面的空格/tab全部删除 - 若提示
did not find expected key. Exiting找到与其同级的元素并使它们对齐
最后sudo /etc/init.d/filebeat start命令启动
测试Filebeat安装
如果您的ELK堆栈设置正确,Filebeat(在您的客户端服务器上)应该将您的日志发送到您的ELK服务器上的Logstash。Logstash应该使用我们之前导入的索引将Filebeat数据加载到Elasticsearch中。
在您的ELK服务器上,通过使用以下命令查询Filebeat索引来验证Elasticsearch确实正在接收数据:
elk$ curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
你应该看到一堆看起来像这样的输出: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
31Sample Output:
...
{
"_index" : "filebeat-2018.07.11",
"_type" : "doc",
"_id" : "AWSHFEbva9oX5PGasIk3",
"_score" : 1.0,
"_source" : {
"message" : "Jul 10 01:23:50 localhost sshd[19069]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=118.212.143.43 user=root",
"@version" : "1",
"@timestamp" : "2018-07-11T02:03:28.924Z",
"prospector" : {
"type" : "log"
},
"input" : {
"type" : "log"
},
"beat" : {
"name" : "VM-16-12-ubuntu",
"hostname" : "VM-16-12-ubuntu",
"version" : "6.3.1"
},
"host" : {
"name" : "VM-16-12-ubuntu"
},
"source" : "/var/log/auth.log",
"offset" : 6450510,
"tags" : [ "beats_input_codec_plain_applied" ]
}
}
...
如果您的输出总共显示0个点击(hits),则Elasticsearch不会在您搜索的索引下加载任何日志,您应该检查设置是否存在错误。如果您收到了预期的输出,请继续下一步。
若显示0hits,在客户端机器上查询filebeat是否传数据出去sudo /usr/share/filebeat/bin/filebeat -e -d '*'
6. 自定义配置logstash
docker内的logstash默认会解析syslog与nginx,当需要解析其他格式日志或者修改其他配置时,需要手动配置
进入docker命令行:docker exec -it elk /bin/bash
找到配置文件cd /etc/logstash/conf.d/
可以在该目录下修改、删除、增加配置文件
最后重启logstash/etc/init.d/logstash restart
7. 使用kibana
现在你可以打开ip:5601 查看收集的数据