Docker下搭建ELK

    技术2022-07-11  89

    整理了一下使用Docker来快速搭建一套ELK日志分析系统的方法。

    1. 部署elk

    github上有人整理了一套使用docker compose来部署elk的配置,可直接下载使用。

    git clone https://github.com/deviantony/docker-elk.git

     

    当前是基于7.7.1版(docker-elk目录下.env文件中定义,可修改)。

    可以调整一下相应的配置,不设置可以直接也可以跳过这一步。

    修改docker-compose,设置es密码等,

    vim docker-compose.yml # 在elasticsearch部分设置环境变量,将jvm堆内存增大到了1g,设置es elastic用户的密码 environment: ES_JAVA_OPTS: "-Xmx1g -Xms1g" ELASTIC_PASSWORD: Passw0rd # 新增监听端口号8010 udp,不使用udp搜集数据可以不开启 ports: - "8010:8010/udp" # 将jvm内存也增大一点 environment: LS_JAVA_OPTS: "-Xmx512m -Xms512m" # 在volumes部分增加es数据目录的挂载,对es数据持久化,避免容器销毁数据丢失 volumes: - /mnt/elk/esdata:/usr/share/elasticsearch/data

    注意:因为es容器内部是以elasticsearch用户启动进程的,所以在做持久化数据目录挂载的时候,需要将目录权限进行设置,否则会因为没有访问权限而启动失败。elasticsearch的uid是1000,可以建一个uid为1000的用户,然后将目录所有者赋予该用户。

     

    修改es配置文件,将xpack从trial改为basic,禁用付费功能(测试环境可以不用修改)

    vim elasticsearch/config/elasticsearch.yml #xpack.license.self_generated.type: trial xpack.license.self_generated.type: basic

     

    修改logstash的pipeline配置

    ## vim logstash/pipeline/logstash.conf input { ## 使用redis搜集数据 redis { id => "RedisLog" batch_count => 1 data_type => "list" key => "kg:basic:log" host => "127.0.0.1" port => 6379 password => "1q2w3e4r" db => 6 threads => "5" type => "kglog" } ## 使用UDP收集数据 udp { id => "UdpLog" port => 8010 type => "udplog" codec => json } } ## 添加到elasticsearch或者在磁盘中打印,磁盘打印可以方便测试数据是否收集成功,上线后删除即可 output { if[type] == "kglog"{ elasticsearch { hosts => "elasticsearch:9200" user => "elastic" password => "changeme" index => "kg-log" } } if[type] == "udplog"{ elasticsearch { hosts => "elasticsearch:9200" user => "elastic" password => "changeme" index => "udp-log" } } file { path => "/var/tmp/udp.log" } }

     

    配置调整后,使用 docker-compose up -d 即可启动es,logstash,kibana三个容器。第一次启动需要下载所有镜像,会比较慢,启动完后,访问 elk所在服务器IP:5601即可进入kibana页面。

    2. 调测

    使用nc(netcat)测试udp协议与端口连通性,来判断数据是否搜集成功

    $ echo "nc-test" | nc -u 106.14.145.99 8010 # ip换成自己的服务器地址即可,请注意务必在服务器安全组访问规则中开启8010 UDP # 查看logstash中的数据收集情况 $ docker-compose exec logstash bash $ tail -f /var/tmp/udp.log # 没有此文件或没有日志则没有收集成功,排查端口和安全规则

    3. 使用Kibana

    检查索引是否启用

     

    添加Kibana索引

    然后就可以愉快地玩耍了

    3. 总结

    本文整理了基于Docker来搭建ELK框架的整个过程,供参考。

     

    Processed: 0.011, SQL: 9