写点什么

使用 docker 安装 elk 环境

作者:小黄鸡1992
  • 2021 年 12 月 03 日
  • 本文字数:3503 字

    阅读完需:约 11 分钟

使用docker安装elk环境

一.安装 elasticsearch

用过传统方式安装 elasticsearch 的小伙伴都知道,有非常多的坑需要填。经常抛出莫名的异常,所以本篇楼主将自己安装单机 elasticsearch 过程记录下来,帮助小伙伴闭坑。


注意:kibana,es,es 插件版本要相同

1.拉取镜像

docker pull elasticsearch:7.10.1
复制代码

2.新建文件夹

同上文所述相同,需要在宿主机上挂载配置文件与数据文件。

mkdir -p /usr/local/elasticsearch/configmkdir -p /usr/local/elasticsearch/data
复制代码

3.修改配置文件

在中间价的安装中很多个性化设置需要自行修改。这里进入上文新建好的文件夹中。新增 elasticsearch.yml 文件。

cd /usr/local/elasticsearch/config/vi elasticsearch.yml
复制代码

elasticsearch.yml 配置如下

network.host: 0.0.0.0   network.bind_host: 0.0.0.0  #外网可访问
http.cors.enabled: truehttp.cors.allow-origin: "*"xpack.security.enabled: true # 这条配置表示开启xpack认证机制 spring boot连接使用xpack.security.transport.ssl.enabled: true
复制代码


xpack.security 配置后,elasticsearch 需要账号密码使用,建议安排上。如果使用 springboot 查询,那一定要设置,否者会报错!

4.启动

docker run -p 9200:9200 --name elasticsearch \-e  "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms1g -Xmx2g" \-v /usr/local/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \-v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch:7.10.1
复制代码

参数解释:


-p 9200:9200 :指定端口号--name elasticsearch \ :指定容器名称-e "discovery.type=single-node" \ :单机模式-e ES_JAVA_OPTS="-Xms1g -Xmx2g" \ :指定内存-v /usr/local/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ :指定 config 在宿主机位置-v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \ :指定数据在宿主机位置-v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ :指定插件在宿主机位置-d elasticsearch:7.10.1 :指定镜像

5.初始化密码

此项仅在上文 xpack 配置的情况下才需要执行,首先进入容器命令行,然后直行初始化命令:



执行

docker exec -it 容器id /bin/bashbin/elasticsearch-setup-passwords interactive
复制代码

然后依次输入密码(需要输入很多很多次,别挣扎了,输入吧!)

6.验证

访问 ip:9200,如果上文开启了 xpack.security,需要输入账号密码。账号/密码:elastic/上文设置的密码。如果出现以下页面,则代表成功。

7.安装插件

1.安装

下载地址:github.com/medcl/elast… 主要需要选择与 es 相同版本,放于上文配置 plugins 路径,然后新建 ik 文件夹,将解压后的文件全部放于 ik 文件夹中。


重启 docker 容器

docker restart 556b198b7616
复制代码

2.验证

重启后,请通过查询验证分词器是否生效。

GET _analyze?pretty  {    "analyzer": "ik_max_word",    "text": "我吃西红柿"  }
复制代码

如果出现以下结果,则证明安装生效。

二.安装 Logstash

1.下载镜像

老生常谈,没啥好说的。

docker pull logstash:7.5.1
复制代码

2.新建挂载文件

此处不详谈,如果有疑问可以参考上文 redis 安装,有具体解释。

mkdir -p /usr/local/logstash/conf.dmkdir -p /usr/local/logstash/configmkdir -p /usr/local/logstash/logs
复制代码

3.赋权

chmod -777 /usr/local/logstash
复制代码

4.挂载配置文件

1.挂载配置文件


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

http.host: "0.0.0.0"xpack.monitoring.enabled: truexpack.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/*.confpath.logs: /usr/share/logstash/logs
复制代码


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

2.挂载日志收集文件

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

3.log_to_es.conf 配置

如果想具体了解配置含义,后续楼主会开展 elk 专栏,请持续关注楼主。

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 /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
复制代码

参数详解:


  • -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 可以看到是否连接成功。

三.kibana 搭建

1.下载镜像

docker pull kibana:7.10.1
复制代码

注意:需要与 elasitcsearch 版本相同

2.启动

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.xx.xx:9200 -p 5601:5601 -d kibana:7.10.1
复制代码

参数解释


  • docker run

  • --name kibana -e :指定容器名称

  • ELASTICSEARCH_HOSTS=192.168.xx.xx:9200:指定 es 地址

  • -p 5601:5601 :指定端口号

  • -d kibana:7.10.1:指定镜像名称

3.更改配置文件 设置 xpack

因为上文中,我们的 es 配置了 xpack,所以在连接时候也要设置 xpack,此时需要进入 docker 容器修改配置文件。

1.进入容器

docker exec -it 容器id /bin/bash
复制代码

2.修改配置文件

cd configvi kibana.yml
复制代码

kibana.yml 配置

i18n.locale: "zh-CN"server.port: 5601server.host: 0.0.0.0elasticsearch.username: "elastic" #es中配置elasticsearch.password: "xxxx"    #es中配置xpack.reporting.encryptionKey: "a_random_string"xpack.security.encryptionKey: "something_at_least_32_characters"
复制代码

配置修改完之后需要重启 docker 容器。

4.验证

访问 ip:5601,输入 es 中配置的 xpack 账号密码即可,如:elastic/123456.。





发布于: 3 小时前阅读数: 5
用户头像

小黄鸡1992

关注

小黄鸡加油 2021.07.13 加入

一位技术落地与应用的博主,带你从入门,了解和使用各项顶流开源项目。

评论

发布
暂无评论
使用docker安装elk环境