近来各个项目都顺利完成,通过了自动化运维。想把各个系统的日志统一管理起来,记得之前有朋友推荐过,后来因为时间原因一直没有上线。这两天简单研究了一下,想通过最简单直接的方法来完成而且可以快速部署完成。
现将整个过程重要步骤做一个MARK。
环境:centos7 + docker1.13.1 +ELK最新版本:7.3.0 Filebeat 7.3.-1
一、服务端安装docker就不多讲了,网上很多:
[root@docker605 data]# sudo yum install -y docker-ce
[root@docker605 data]# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7f2769b/1.13.1
Built: Mon Aug 5 15:09:42 2019
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7f2769b/1.13.1
Built: Mon Aug 5 15:09:42 2019
OS/Arch: linux/amd64
Experimental: false
二、出于不想发太多时间在这个日志系统上面,想快速部署ELK,那么就使用ELK for docker
安装并启动ELK,选择对应的版本,这里我们选择使用收藏星级较多的版本,应该比较热门,后来被验证是正确的(这个是最新版本的)
sudo docker search elk*
sudo docker pull sebp/elk
三、启动前做一些简要的配置更改 【这里摘录了网友的一些信息】
[root@docker605 data]# vi /etc/sysctl.conf
在尾行添加以下内容 vm.max_map_count=262144
四、运行启动镜像
运行ELK镜像
[root@docker605 data]# sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elksebp/elk
[root@docker605 data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa6b327e0df6 sebp/elk "/usr/local/bin/st..." 20 hours ago Up 20 hours 0.0.0.0:5044->5044/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp elk
d2048141bda2 portainer/portainer "/portainer" 4 months ago Up 21 hours 0.0.0.0:9000->9000/tcp myportainer
[root@docker605 data]#
这里也可以看到它的状态,
五、查看Kibana是否可以启动了: https://elk:5601 <最好使用IP地址登录>
六、客户端安装filebeat或系统环境相对应代理;上面只是算简单看到了庐山真面目,那接下来在客户端就要配置日志传输通道
1>.首先建议将上面命名的镜像做DNS解析,这里用的是elk那么我就将它解析成我的内网docker物理机真实IP,这样才可以正常访问,如果不做这个处理会很麻烦。
2>.配置filebeat文件,这里客户端环境是LINUX Centos7:注意:Filebeat 6.0后,enabled默认为关闭,如红圈外,必须要修改成true
安装filebeat在要监控日志的系统上面安装:
参考不同系统上面安装:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html
rpm:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
sudo rpm -vi filebeat-7.3.1-x86_64.rpm
deb:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-amd64.deb
sudo dpkg -i filebeat-7.3.1-amd64.deb
linux:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-linux-x86_64.tar.gz
tar xzvf filebeat-7.3.1-linux-x86_64.tar.gz
修改linux客户端日志系统下的filebeat.yml文件:
cd /etc/filebeat
vi filebeat.yml
如果你直接将日志发送到Elasticsearc,请编辑此行Elasticsearc output
如果你直接将日志发送到Logstash,请编辑此行Logstash output
只能使用一行输出,其它的注掉即可
3>.启动filebeat客户端传输日志:
[root@zabbix609 data]# /etc/init.d/filebeat start
Starting filebeat (via systemctl): [ 确定 ]
4>.接下进入docker容器elk里面,修改yml文件:
[root@docker605 data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa6b327e0df6 sebp/elk "/usr/local/bin/st..." 20 hours ago Up 11 minutes 0.0.0.0:5044->5044/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp elk
d2048141bda2 portainer/portainer "/portainer" 4 months ago Up 22 hours 0.0.0.0:9000->9000/tcp myportainer
[root@docker605 data]# docker exec -it aa6b327e0df6 /bin/bash
root@aa6b327e0df6:/#
root@aa6b327e0df6:/# cd /etc/init.d/
root@aa6b327e0df6:/etc/init.d# ls
cron elasticsearch hwclock.sh kibana logstash procps ssh syslog-ng x11-c
root@aa6b327e0df6:/etc/init.d# cd /etc/logstash/conf.d/
root@aa6b327e0df6:/etc/logstash/conf.d# ls
02-beats-input.conf 11-nginx.conf logstash.conf
10-syslog.conf 30-output.conf
root@aa6b327e0df6:/etc/logstash/conf.d# vi 02-beats-input.conf
我这里不用到证书,所以注释掉
注意:sebp/elk docker是自建立了一个证书logstash.crt,默认使用*通配配符,如果你使用证书,filebeat.yml使用的服务器地址必须使用域名,不能使用IP地址,否则会报错,这个坑是我踩后得出来的心得,说见官网文档说明即可。
七、这里回到Kibana7.3.0,稍等片刻在ES里面index management可以看到
再到Kibana里面设置索引标识以便在Kibana里面查看:
八、完成,可以看到下面产生了客户端传输过来的日志了。
九、额外讲讲收集windows客户端的日志
https://www.elastic.co/cn/downloads/beats/filebeat 安装文件地址
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-getting-started.html
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html 这个是官方的安装说明
***************************在windows下安装filebeat****************************