fileBeat和Elk整合的问题

来源:互联网 发布:软件授权许可协议 编辑:程序博客网 时间:2024/06/06 14:11

ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成,可以对日志进行集中的管理和分析。
filebeat是用于传输docker各个容器的日志给elk,以便进行分析。
这里,为了部署方便,我们采用docker hub中给我们提供的镜像

sebp/elkprima/filebeat

filebeat简单配置

output:  logstash:    enabled: true    hosts:      - elk:5044    tls:      certificate_authorities:        - /etc/pki/tls/certs/logstash-beats.crt    timeout: 15filebeat:  prospectors:    -      paths:        - /var/log/syslog        - /var/log/auth.log      document_type: syslog    -      paths:        - "/var/log/nginx/*.log"      document_type: nginx-access

这里,把elk:5044/etc/pki/tls/certs/logstash-beats.crt改成对应的配置。
证书可以从sebp/elk/etc/pki/tls/certs/logstash-beats.crt这里路径导出。

但是,这里存在一个连不上的问题,请参考官方解释:
elk-docker

简单来讲,就是只有符合匹配上*这样的域名才能进行通过x509验证。(如:elk,sss,xxx,但是elk.com等就不行)。
解决方案:

自定义域名

针对于自定义的域名,必须重新生成证书文件。

$ cd /etc/pki/tls$ sudo openssl req -x509 -batch -nodes -subj "/CN=elk/" \    -days 3650 -newkey rsa:2048 \    -keyout private/logstash-beats.key -out certs/logstash-beats.crt

As another example, when running a non-predefined number of containers concurrently in a cluster with hostnames directly under the .mydomain.com domain (e.g. elk1.mydomain.com, elk2.mydomain.com, etc.; not elk1.subdomain.mydomain.com, elk2.othersubdomain.mydomain.com etc.), you could create a certificate assigned to the wildcard hostname *.example.com by using the following command (all other parameters are identical to the ones in the previous example).

使用IP

对于使用IP而不使用域名的连接,也必须重新生成文件。
请注意,它生成证书文件的步骤和自定义域名不同。
https://github.com/elastic/logstash-forwarder/issues/221#issuecomment-48390920

修改系统hosts文件

使用原来的证书文件,直接在/etc/hosts中设置好host:ip映射(host必须为elk或是其他的single-part,因为证书文件就是针对于“*”进行签名的)。

因为docker每次重启都会重建hosts文件,使用add-host参数也会有点问题,修改系统hosts文件不是很推荐。
综上所述,使用自定义域名比较省心。

1 0