zoukankan      html  css  js  c++  java
  • Docker 部署 elk + filebeat

    Docker 部署 elk + filebeat

    kibana 开源的分析与可视化平台
    logstash 日志收集工具 logstash-forwarder(原名lubmberjack)
    elasticsearch 查询  + filebeat 日志收集

    ELK 是由三部分组成的一套日志分析系统,

     Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,

                              索引副本机制,restful风格接口,多数据源,自动搜索负载等。

    Logstash:动态数据收集管道,Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

    Kibana:可视化视图,将elasticsearh所收集的data通过视图展现。kibana 是一个开源和免费的工具,它可以为 Logstash 和 
                  ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    Docker至少得分配3GB的内存;

    Elasticsearch至少需要单独2G的内存;


    环境:

    • docker 版本 :19.03.5
    • 主机地址:192.168.1.220

    vm.max_map_count至少需要262144,修改vm.max_map_count 参数

    # 临时修改
    [root@docker-01 ~]# sysctl -w vm.max_map_count=262144
    vm.max_map_count = 262144
    永久修改
    [root@docker-01 ~]# vim /etc/sysctl.conf
    vm.max_map_count=262144

    2、下载elk镜像

    [root@docker-01 ~]# docker pull sebp/elk

    3、运行elk服务

    [root@docker-01 ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd --name elk sebp/elk
    a008628736052e01fcfc44b5e494b46496d7f0b015163257435cc368728256f8
    端口之间关系
    
    5601 (Kibana web interface).              前台界面
    
    9200 (Elasticsearch JSON interface)   搜索.
    
    5044 (Logstash Beats interface, receives logs from Beats such as Filebea   日志传输

    4、修改logstash关闭ssl

    # 1、进入elk容器
    [root@docker-01 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                              NAMES
    a00862873605        sebp/elk            "/usr/local/bin/star…"   2 minutes ago       Up 2 minutes        0.0.0.0:5044->5044/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp   elk
    [root@docker-01 ~]# docker exec -it a00862873605 /bin/bash
    # 2、修改配置文件 改为如下
    root@a00862873605:/# vi /etc/logstash/conf.d/02-beats-input.conf
    input {
      beats {
        port => 5044
      }
    }

    5、重启elk

    [root@docker-01 ~]# docker restart elk
    elk

    二、部署filebeat(本地安装)

    • filebeat压缩包
    • 下载地址:https://pan.baidu.com/s/1fx12E7N_O2a6CHIBmQV6Ig
    • 密码:osxk

    1、安装filebeat

    [root@docker-01 ~]# rpm -ivh filebeat-6.5.4-x86_64.rpm
    警告:filebeat-6.5.4-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:filebeat-6.5.4-1                 ################################# [100%]

    2、修改配置文件

    [root@docker-01 etc]# cd /etc/filebeat/
    [root@docker-01 filebeat]# ls
    fields.yml  filebeat.reference.yml  filebeat.yml  modules.d
    [root@docker-01 filebeat]# cp filebeat.yml filebeat.yml.bak
    [root@docker-01 filebeat]# echo 0 > filebeat.yml
    [root@docker-01 filebeat]# vi filebeat.yml
    filebeat.prospectors:
    - type: log
      enabled: true
      paths:
        - /docker/service/zs/java/javalog/*.log
      tags: ["java"]
    
    - type: log
      enabled: true
      paths:
        - /docker/service/zs/nginx/log/*.log
      tags: ["nginx"]
    
    - type: log
      enabled: true
      paths:
        - /docker/service/zs/redis/log/*.log
      tags: ["redis"]
    
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    setup.template.settings:
      index.number_of_shards: 3
    
    setup.kibana:
      host: "192.168.1.220:5601"
    
    output.logstash:
      hosts: ["192.168.1.220:5044"]
    [root@docker-01 ~]# systemctl restart filebeat
    filebeat.prospectors:
    # 指定收集的日志路径
    - type: log
      enabled: true
      paths:
    # 指定路径
        - /docker/service/zs/java/javalog/*.log
      tags: ["java"]
    
    # 指定收集的日志路径
    - type: log
      enabled: true
      paths:
    # 指定路径
        - /docker/service/zs/nginx/log/*.log
    # 自定义名称
      tags: ["nginx"]
    
    # 指定收集的日志路径
    - type: log
      enabled: true
      paths:
    # 指定路径
        - /docker/service/zs/redis/log/*.log
    # 自定义名称
      tags: ["redis"]
    
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    setup.template.settings:
      index.number_of_shards: 3
    
    # 指定kibana主机地址
    setup.kibana:
      host: "192.168.1.220:5601"
    
    # 指定logstash地址
    output.logstash:
      hosts: ["192.168.1.220:5044"]

    三、kibana管理

    浏览器端访问:192.168.1.220:5601

    1、Management --> index patterns -- > create index pattern

     

     测试:
    测试传递一条信息

    [root@docker-01 ~]# docker exec -it a00862873605 /bin/bash
    root@a00862873605:/# /opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }'
    Sending Logstash logs to /opt/logstash/logs which is now configured via log4j2.properties
    [2020-02-29T09:29:27,910][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
    [2020-02-29T09:29:28,181][FATAL][logstash.runner          ] Logstash could not be started because there is already another instance using the configured data directory.  If you wish to run multiple instances, you must change the "path.data" setting.
    [2020-02-29T09:29:28,238][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

    报错

    如果看到这样的报错信息 Logstash could not be started because there is already another instance using the configured data directory.  
                If you wish to run multiple instances, you must change the "path.data" setting. 

    解决:请执行命令:service logstash stop 然后在执行就可以了。

    root@a00862873605:/# service logstash stop
    Killing logstash (pid 285) with SIGTERM
    Waiting for logstash (pid 285) to die...
    Waiting for logstash (pid 285) to die...
    Waiting for logstash (pid 285) to die...
    Waiting for logstash (pid 285) to die...
    Waiting for logstash (pid 285) to die...
    logstash stop failed; still running.

    3.输入测试信息 :this is a  test 

    打开浏览器,输入:http://192.168.1.220:9200/_search?pretty 如图,就会看到我们刚刚输入的日志内容

  • 相关阅读:
    SCRUM 12.21
    SCRUM 12.20
    SCRUM 12.19
    SCRUM 12.18
    M2阶段团队个人贡献分
    Bug列表
    M2事后分析
    hots团队项目终审报告
    M2阶段测试报告
    Beta版本发布报告
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12383873.html
Copyright © 2011-2022 走看看