Docker部署ELK

使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境

如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker

有了Docker环境后,就可以使用Docker安装部署ES和Kibana了

一、安装部署ES

1、下载ealastic search

docker pull elasticsearch:7.6.2

2、配置

mkdir -p /docker/elasticsearch/config

mkdir -p /docker/elasticsearch/data

echo "http.host: 0.0.0.0" >/docker/elasticsearch/config/elasticsearch.yml

chmod -R 777 /mydata/elasticsearch/

3、启动ES

注意:下边这个启动es的命令,一定要设置占用的内存,不设置的话,es一启动就把虚拟机的整个内存耗尽了,会死机!!!

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \

-e "discovery.type=single-node" \

-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \

-v/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \

-v /docker/elasticsearch/data:/usr/share/elasticsearch/data \

-v /docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \

-d elasticsearch:7.6.2

设置开机启动ES

docker update elasticsearch --restart=always

4、测试

浏览器输入:http://192.168.xx.xx:9200,看到以下页面说明ES部署成功

二、安装部署Kibana

1.拉取Kibana
例如:首先需要把Kibana从DockerHub上拉取下来:统一版本7.6.2

#拉取Kibana
docker pull kibana:7.6.2

2.配置

mkdir -p /docker/kibana

 3.在 docker/kibana 下编写配置文件 kibana.yml

将如下内容写到kibana.yml中,然后保存退出::wq

server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://自己的elasticsearch的IP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN


4.启动kibana容器:

#运行kibana 注意IP一定不要写错
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己的elasticsearch的IP:9200 -p 5601:5601
-v /docker/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
 -d kibana:7.6.2


5.最后访问页面
http://自己的IP地址:5601

 三、安装部署logstash 并向es导入数据

1.下载镜像

docker pull logstash:7.6.2

2.新建挂载文件

mkdir -p /docker/logstash/conf.d
mkdir -p /docker/logstash/config
mkdir -p /docker/logstash/logs


3.赋权

chmod -777 /usr/local/logstash


4.挂载配置文件
        1.挂载配置文件

将logstash.yml放入/docker/logstash/config/中,在容器启动后,使用的就是该文件配置。

logstash.yml:

http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://192.168.xx.xx:9200"  #es地址
xpack.monitoring.elasticsearch.username: "elastic"  #es xpack账号密码
xpack.monitoring.elasticsearch.password: "xxxx"     #es xpack账号密码
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs


注意 http.host: "0.0.0.0" 而不是指定ip

        2.挂载日志收集文件

将log_to_es.conf放入/docker/logstash/conf.d/,在收集日志时,使用的就是该配置。

        3.log_to_es.conf配置
log_to_es.conf:



input{
        tcp {
                mode => "server"
                host => "0.0.0.0"
                port => 5000
                codec => json_lines
                type=> "datalog"
        }
        tcp {
                mode => "server"
                host => "0.0.0.0"
                port => 4999
                codec => json_lines
                type=> "loginlog"
 
        }
}
filter{
            if[type] == "loginlog"{
                grok {
                    match => {"message" => "|%{GREEDYDATA:loginMsg}|%{GREEDYDATA:timeFormat}|%{GREEDYDATA:userName}"}
                }
                if([message] =~  "^(?!.*?登录系统).*$") {
                    ### 丢弃
                    drop{}
                   }
                }
            if[type] == "datalog"{    
                grok {
                    match => {"message" => "|%{DATA:userName}|%{GREEDYDATA:operationName}|%{DATA:timeFormat}|%{DATA:ip}|%{DATA:systemType}|%{GREEDYDATA:logType}|%{GREEDYDATA:method}|%{GREEDYDATA:input}"}
                }    
            }
            ruby {
                code => "event['time'] = event['@timestamp']"
            }
            mutate
            {
                add_field => ["time", "%{@timestamp}"]
            }                 
}
output{
       
                if[type] == "datalog"{
                    elasticsearch{
                        hosts=>["192.168.xx.xx:9200"]
                        user => "elastic"
                        password => "xxxx"
                        index => "xxxx-%{+YYYY.MM.dd}"
                            }
                        }
                if[type] == "loginlog"{
                    elasticsearch{
                        hosts=>["192.168.xx.xx:9200"]
                        user => "elastic"
                        password => "xxxx"
                        index => "xxxx-%{+YYYY.MM.dd}"
                            }                    
                        }
}


        5.启动


docker run -p 5044:5044 -p 5000:5000-p 4999:4999--name=logstash \
  --restart=always --privileged=true\
  -e ES_JAVA_OPTS="-Xms1g -Xmx2g" \
  -v /docker/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
  -v /docker/logstash/conf.d:/usr/share/logstash/config/conf.d \
  -v /docker/logstash/logs:/usr/share/logstash/logs  -v /docker/logstash/mysql:/mysql  \
  -d logstash:7.6.2


参数详解:

-p 5044:5044 -p 5000:5000-p 4999:4999 :映射的端口号 这里与上文log_to_es.conf input中一定要相同!!!!额外价格一个5044 为logstash地址
--name=logstash:容器名称
--restart=always --privileged=true:启动配置
-e ES_JAVA_OPTS="-Xms1g -Xmx2g":指定内存
-v /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:配置文件挂载
-v /usr/local/logstash/conf.d:/usr/share/logstash/config/conf.d:日志收集配置挂载位置
-v /usr/local/logstash/logs:/usr/share/logstash/logs:日志挂载位置
-d logstash:7.5.1:指定镜像


        6.验证
访问kibana可以看到是否连接成功。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值