如何使用docker部署与配置ELK(elasticsearch+logstash+kibana)

准备资源

#安装docker
yum install -y docker
#下载镜像,本地上传加载亦可
docker pull elasticsearch:7.8.0
docker pull logstash:7.8.0
docker pull kibana:7.8.0
#创建专用网络
docker network create elk

ES部署

#配置执久化层
mkdir /root/data/es
chmod 777 /root/data/es
#启动
docker run -d --name es -p 9200:9200 -p 9300:9300 --network elk --network-alias es -e discovery.type=single-node -v /root/data/es:/usr/share/elasticsearch/data --privileged elasticsearch:7.8.0

 部署kibana

#配置文件创建/root/kibana.yml
cat <kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://es:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
eof
docker run -d -p 5601:5601 --name kibana --network elk --network-alias kibana -v /root/kibana.yml:/usr/share/kibana/config/kibana.yml --privileged kibana:7.8.0

部署logstash

采集日志,它支持多种类型的采集与输出,见如下说明:

#1.采集目录的数据
    input {
        file {
            type => "my_type"                          #类型
            path => "/root/data/1.txt"                 #路径
            discover_interval => 10                    #多久检测一次是否有新数据
            start_position => "beginning"              #采集位置(开始位置)
            codec => json {                            #数据格式(json格式,可以不选)
               charset => "UTF-8"
            }         
        }
    }

    #2.采集kafka里面的数据
    input {
        kafka {
            codec => "plain"                                             #格式为空,默认
            group_id => "group01"                                        #组id
            auto_offset_reset => "earliest"                              #采集的起始偏移量
            topics  => ["testxp"]                                        #采集的topic
            bootstrap_servers => ["mini1:9092,mini2:9092,mini3:9092"]    #kafka服务地址
        }
    }

   #3.标准控制台输入
    input{
        stdin{}
    } 

#1.标准控制台输出
    output{
        stdout {}
    }
#2.存储到kafka中
    output {
       kafka {
          topic_id => "accesslog"
          bootstrap_servers => ["mini1:9092,mini2:9092,mini3:9092"]
       }
    }

# 3.存储到elasticsearch中
    output {
       elasticsearch {
         index => "game-%{+YYYY.MM.dd}"                         索引名称
         hosts => ["mini1:9200","mini2:9200","mini3:9200"]      集群地址
       }
    }

#执行方式
    :表示logstash的根目录
    :  bin/logstash -f  配置文件路径

本次测试,使用本地目录这种最常见的方式

#配置logstash.conf
cat <logstash.conf
input {
        file{
                path => "/logs/*"
                type => "own"
                start_position => "beginning"
                stat_interval => "2"
                codec => "plain"
        }
}
output {
        if [type] == "own" {
                elasticsearch {
                        hosts => ["es:9200"]
                        index => "log-%{+YYYY.MM.dd}"
                }
        }
}
eof
#将logstash容器里的/logs目录下所有的日志文件采集,写入到es中。
#创建用于测试日志文件的目录logs,并将这个目录映射到logstash中。
mkdir logs
chmod 777 logs
#启动
docker run -d --name logstash --network elk --network-alias logstash -v /root/logstash.conf:/usr/share/logstash/config/logstash.conf -v /root/logs:/logs --privileged logstash:7.8.0 logstash -f /usr/share/logstash/config/logstash.conf

测试日志

cd /root/logs
while true; do echo "hello - `date "+%F %T"`" >> log-01; sleep 1; done;

登录kibana,发现,创建索引,查看日志

如何使用docker部署与配置ELK(elasticsearch+logstash+kibana)_第1张图片

 如何使用docker部署与配置ELK(elasticsearch+logstash+kibana)_第2张图片

我们使用JSON的方式,这种方式方便日志解悉

input {
        file{
                path => "/logs/*"
                type => "own"
                start_position => "beginning"
                stat_interval => "2"
                codec => "json"
        }
}
output {
        if [type] == "own" {
                elasticsearch {
                        hosts => ["es:9200"]
                        index => "log-json-%{+YYYY.MM.dd}"
                }
        }
}

写入一条数据

echo '{"name":"marvelhonor","event":"helloworld","amount":100,"memory":2000}' >> log-json-01

登录kibana,发现,创建索引log-json*,查看日志

如何使用docker部署与配置ELK(elasticsearch+logstash+kibana)_第3张图片

如何使用docker部署与配置ELK(elasticsearch+logstash+kibana)_第4张图片

 

你可能感兴趣的:(IT运维,Linux,K8S,docker,elasticsearch,elk,logstash,kibana)