用Docker+ELK集中处理日志

原创 2017年08月27日 18:34:41
## 需求

手头有几个服务器的日志需要处理,数据量也不是很大,但是又不想在每个服务器上都装一套ELK,毕竟这货还是挺笨重的。

另外,ELK这堆东西依赖也挺多,而且还是用JAVA的,我才不想为了装这个把系统搞得乱七八糟,所以必须跑在docker里。当然,也不可能在每台服务器上都装个docker,毕竟这货也不是省油的灯。

于是有这样的方案。

Docker

以两个服务器为例,docker装在A服务器上,在其中跑ELK,两台服务器的日志都汇总到这个跑ELK的docker container里。

image

其本思路就是把docker里的ELK作为一个独立日志服务器来用。

首先,docker里的ELK container绑定一个Filebeat的5044端口到A服务器上,这样只有所有日志源都通过Filebeat往这里推送即可。

注意,这个端口可以用默认的 -p 5044:5044 ,但是Kibana的端口不建议这样干,最好还是绑定到localhost,类似: -p 127.0.0.1:5601:5601 ,最后通过https返向代理到本地端口,当然最好再加上用户权限控制。这样比较安全。

另外,因为两个服务器之前通过internet通讯,所以安全性是一个需要处理的问题,Filebeat通讯需要加上证书加密。

证书

先来生成一套自己的证书。

sudo openssl req -subj '/CN=elk.yourdomain.com/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout tls/logstash-beats.key -out tls/logstash-beats.crt

其中elk.yourdomain.com换成你自己的一个域名,指向A服务器。

ELK端

docker的安装配置就不说了,ELK用的是现成的 sebp/elk ,直接:

docker pull sebp/elk

即可安装。

不过默认配置是不够用的,还是需要自己加点配置,所以写了个简单的Dockerfile来用用:

FROM sebp/elk
MAINTAINER raptor<raptor.zh@gmail.com>
ADD tls/logstash-beats.crt /etc/pki/tls/certs/
ADD tls/logstash-beats.key /etc/pki/tls/private/

这里略去了一些我自己定义的配置项目,只保留与本文有关的部分,就是更换了两个证书文件。这就是为了解决前面所说的安全性问题。

构建成功这个Dockerfile以后就可以启动它:

docker run -d -p 5044:5044 -p 127.0.0.1:5601:5601 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -v /var/data/elk:/var/lib/elasticsearch --name=elk myelk

除了前面说过的端口号问题,这里还增加了一个volume绑定,以免重启container以后ES的数据丢失。

日志端

接下来在A、B两个服务器上配置日志源。

首先当然是安装一个Filebeat(仅以debian系为例),文档里提供了下载方式安装:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.2-amd64.deb
sudo dpkg -i filebeat-5.5.2-amd64.deb

其实用增加源的方式更方便一些,比如以后需要升级的时候:

echo "deb https://artifacts.elastic.co/beats/apt stable main" | sudo tee -a /etc/apt/sources.list.d/beats.list
sudo apt-get update
sudo apt-get install filebeat

如果报错说apt不支持https,则需要安装一下:

sudo apt-get install apt-transport-https

如果报错说key不对,则需要加一下:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

然后需要把crt证书复制一份过来,放到如 /etc/pki/tls/certs/ 下。

最后配置一下Filebeat,配置文件在: /etc/filebeat/filebeat.yml

filebeat:
  prospectors:
    -
      paths:
        - /var/log/nginx/access.log
      input_type: log
      document_type: nginx-access
      scan_frequency: 10s
      harvester_buffer_size: 16384
      max_bytes: 10485760
  registry_file: /var/lib/filebeat/registry
output:
  logstash:
    hosts: ["elk.yourdomain.com:5044"]
    worker: 1
    bulk_max_size: 2048
    compression_level: 3
    index: filebeat
    tls:
      certificate_authorities: ["/etc/pki/tls/certs/logstash-beats.crt"]
shipper:
logging:
  files:
    rotateeverybytes: 10485760

然后重启filebeat:

service filebeat restart

重启后,本机的nginx/access.log就会被filebeat自动地发送到elk.yourdomain.com:5044去。

如不成功,请自行查阅系统日志进行分析,通常都是因为证书配置不对导致。

更多的日志源服务器也都可以这样配置,只要它们能通过域名访问到运行ELK container的A服务器。因为证书是绑定域名的,所以只能通过域名访问,包括A服务器自己。如果A服务器不能通过域名访问自己(比如解析出来的是外网地址,而路由器不支持的话),可以用 /etc/hosts 把域名解析到127.0.0.1。

Docker实战(九):Docker安装ELK环境

Docker安装ELK环境
  • birdben
  • birdben
  • 2015年12月24日 04:19
  • 10683

使用Docker快速部署ELK环境(最新5.5.1版本)

本文介绍了如何使用Docker快速部署一个ELK日志采集和分析环境。
  • gongxsh00
  • gongxsh00
  • 2017年08月09日 16:42
  • 4372

单机docker部署elk测试环境

my docker-machine ip:  ✘ ⚙ xiezhenjia@xiezhenjiadeMac-mini  ~/go/src/h12.me/kafka/tools/kafpro ...
  • strangerLove
  • strangerLove
  • 2016年01月27日 17:32
  • 2443

Docker实战(十一):Docker安装ELK环境(二)

Docker安装ELK环境(二)
  • birdben
  • birdben
  • 2016年01月08日 06:40
  • 4393

ELK Stack 之X-Pack安装使用详解

一、准备工作 在安装X-Pack之前,确保Elasticsearch6.x、Kiban6hz.x、Logstash6.x相关软件已经安装。 安装方法可参考: http://blog.csdn.n...
  • guyan0319
  • guyan0319
  • 2017年12月21日 14:35
  • 332

ELK6.1搭建--安装和配置

ELK简介Elasticsearch Elasticsearch是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。它被用作全文检索、结构化搜索、分析以及这三个功...
  • h952520296
  • h952520296
  • 2017年12月22日 15:33
  • 2562

ELK实践

ES启动 docker run –name myes -d -p 9200:9200 -p 9300:9300 elasticsearch kibana启动 docker run –name my...
  • evane1890
  • evane1890
  • 2017年11月14日 14:24
  • 566

使用Docker和Rancher运行你自己的ELK环境。

Rancher实验室的各种内部环境每天都会生成大量的日志。因为我们要依赖这些环境执行越来越多的测试,所以把不同环境的日志集中管理起来起来就显得十分必要了。本次给大家带来的是如何使用Rancher来构建...
  • u011350440
  • u011350440
  • 2015年09月19日 22:36
  • 3040

sebp/elkx 的安装

sebp/elkx 是一个自带X-Pack的镜像,目前最新版本为6.0 作者地址:https://hub.docker.com/r/sebp/elkx/ 为了使用这个镜像,我研究了许多天,根据作者...
  • qq_39284787
  • qq_39284787
  • 2017年12月22日 15:54
  • 143

docker系列-06.docker搭建ELK,集成filebeat客户端配置使用(二)

接上一篇docker系列-06.docker搭建ELK(一)。 本篇将就filebeat远程将日志文件中的内容远程写入elk服务器中的logstash配置和使用做详细说明。 **1.在客户端中搭建...
  • Sukiyou_xixi
  • Sukiyou_xixi
  • 2017年12月18日 11:52
  • 226
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Docker+ELK集中处理日志
举报原因:
原因补充:

(最多只允许输入30个字)