千家信息网

如何使用Docker搭建ELK日志系统

发表于:2024-10-08 作者:千家信息网编辑
千家信息网最后更新 2024年10月08日,本篇内容主要讲解"如何使用Docker搭建ELK日志系统",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Docker搭建ELK日志系统"吧!以下安装
千家信息网最后更新 2024年10月08日如何使用Docker搭建ELK日志系统

本篇内容主要讲解"如何使用Docker搭建ELK日志系统",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Docker搭建ELK日志系统"吧!

以下安装都是以 ~/ 目录作为安装根目录。

elasticsearch

下载镜像:

$ sudo docker pull elasticsearch:5.5.0

运行elasticsearch容器:

$ sudo docker run -it -d -p 9200:9200 -p 9300:9300 \-v ~/elasticsearch/data:/usr/share/elasticsearch/data \--name myes elasticsearch:5.5.0

特别注意的是如果使用v6以上版本会出现jdk的错误,我们查看日志

$ docker logs -f myes

查看日志:

openjdk 64-bit server vm warning: option useconcmarksweepgc was deprecated in version 9.0 and will likely be removed in a future release.

网上找到大概的意思是:

jdk9对elasticsearch不太友好(版本太新),必须使用jdk8,本人使用的是jdk8u152(jdk-8u152-windows-x64.exe)。如果使用jdk9,使用elasticsearch-rtf(v5.1.1),会出现下面的错误,请特别注意,elasticsearch6.0的版本则必须使用jdk9,否则官网下载的msi不能安装成功,原因还没有去仔细检查。

所以也是一个很坑爹的问题,所以我干脆直接就安装v5.5.0稳定版本吧。

logstash

下载镜像:

$ sudo docker pull logstash:5.5.0

新建配置文件:

$ mkdir ~/logstash/conf.d && cd logstash/conf.d$ vim logstash.conf

logstash.conf:

input { beats {  port => 5044 # 此端口需要与 filebeat.yml 中的端口相同 } file {  path => "/data/logs"  # start_position => "beginning" }}filter { #grok { # match => { "message" => "%{combinedapachelog}" } #} #date { # match => ["timestamp", "dd/mmm/yyyy:hh:mm:ss z"] #} grok {  patterns_dir => "/etc/logstash/conf.d/patterns"  match => {"message" => "%{timestamp_iso8601:time}\s%{myself:msgid}%{myself:method}%{mydata:data}%{myself:userinfo}\s%{loglevel:level}\s%{myself:thread}%{myself:application}%{myself:ip}"}}date {   #match => [ "time", "yyyy-mm-dd hh:mm:ss,sss" ]   match => [ "time", "iso8601" ]   target => "@timestamp"   timezone => "asia/phnom_penh" }}output { stdout {  codec => rubydebug } elasticsearch {  action => "index"  hosts => ["172.17.10.114:9200"]  index => "%{[fields][indexname]}-%{+yyyy.mm.dd}" }}

运行logstash容器:

$ sudo docker run -it -d -p 5044:5044 \-v ~/logstash/conf.d:/etc/logstash/conf.d \-v ~/logstash/data/logs:/data/logs \--name logstash logstash:5.5.0 \-f /etc/logstash/conf.d/logstash.conf

kibana

下载镜像:

$ sudo docker pull kibana:5.5.0

新建配置文件:

$ mkdir ~/kibana && cd ~/kibana$ vim kibana.yml

kibana.yml:

server.port: 5601server.host: "0.0.0.0"elasticsearch.url: "http://172.17.10.114:9200"

运行kibana容器:

$ sudo docker run -it -d -p 5601:5601 \-v ~/kibana:/etc/kibana \--name kibana kibana:5.5.0

filebeat

filebeat需要部署在需要收集日志的服务器上。

下载镜像:

$ sudo docker pull docker.elastic.co/beats/filebeat:5.5.0

新建配置文件:

filebeat.prospectors:- type: log  paths:   - ~/filebeat/logs # 指定需要收集的日志文件的路径fields:  indexname: xxx # 这里填写项目名称,对应index => "%{[fields][indexname]}-%{+yyyy.mm.dd}"output.logstash: hosts: ["172.17.10.114:5044"]

运行filebeat容器:

$ sudo docker run -it -d \-v ~/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \--name filebeat docker.elastic.co/beats/filebeat:5.5.0

附上一张elk结构流程图:

到此,相信大家对"如何使用Docker搭建ELK日志系统"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0