zoukankan      html  css  js  c++  java
  • ELK 搭建

    ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
    Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
    Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
    Kibana: web化接口用作查寻和可视化日志;

    5601 kibana
    5044 Logstash
    9200 es

    操作0,分别搭建

    解决 x-pack 问题(安全的)
    echo "network.host: 0.0.0.0
    xpack:
    ml.enabled: false
    monitoring.enabled: false
    security.enabled: false
    watcher.enabled: false
    " >>elasticsearch.yml

    分别 pull 镜像

    docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3
    docker pull docker.elastic.co/logstash/logstash:6.4.3
    docker pull docker.elastic.co/kibana/kibana:6.4.3

    创建文件

    运行

    docker run --rm -it -p 9200:9200 -p 9300:9300 -v "$PWD"/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml docker.elastic.co/elasticsearch/elasticsearch:6.4.3
    docker run --rm -it -v "$PWD"/logstash/pipeline/:/usr/share/logstash/pipeline/ -v "$PWD"/logstash/config/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:6.4.3 # 在输入中:输入的日志文件使用/usr/share/logstash/pipeline/logs/test.log,只需将日志文件放入pipeline/logs/下,或者手动映射进容器即可。另外输入文件路径支持模糊匹配。在过滤器中定义了去掉消息中的换号符号,以及定义了消息格式。这里的消息格式自定义方法参阅:https://www.elastic.co/guide/en/logstash/6.4/filter-plugins.html
    docker run --rm -it -p 5601:5601 -v "$PWD"/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:6.4.3

    创建文件

    echo "config:
    reload:
    automatic: true
    interval: 3s
    xpack:
    management.enabled: false
    monitoring.enabled: false
    "> logstash/config/logstash.yml

    echo "- pipeline.id: test
    path.config: "/usr/share/logstash/pipeline/logstash-test.conf"
    "> logstash/config/pipelines.yml

    echo "input {
    file {
    path => ["/usr/share/logstash/pipeline/logs/test.log"]
    start_position => "beginning"
    }
    }

    filter {
    mutate {
    gsub => ["message", " ", ""]
    }
    dissect {
    mapping => {"message" => "%{date} %{+date} [%{task} %{+task}] [%{type}] %{class} - %{info}"}
    }
    }

    output {
    elasticsearch { hosts => ["127.0.0.1:9200"] }
    stdout { codec => rubydebug }
    } "> logstash/pipeline/logstash-test.conf.yml

    mkdir -p kibana/config
    echo "server.host: "0.0.0.0"
    elasticsearch.url: http://127.0.0.1:9200
    xpack:
    apm.ui.enabled: false
    graph.enabled: false
    ml.enabled: false
    monitoring.enabled: false
    reporting.enabled: false
    security.enabled: false
    grokdebugger.enabled: false
    searchprofiler.enabled: false
    ">kibana/config/kibana.yml

    问题

    启动es报错

    操作1,现成版

    下载镜像

    运行容器
    docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -e ES_MIN_MEM=128m -e ES_MAX_MEM=1024m -it --name elk sebp/elk

    运行成功

    进入交互模式

    FAQ

    1. [2019-04-08T10:39:19,982][ERROR][o.e.b.Bootstrap ] [bh2HKsP] node validation exception
      [1] bootstrap checks failed
      [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
      [2019-04-08T10:39:20,005][INFO ][o.e.n.Node ] [bh2HKsP] stopping ...
      [2019-04-08T10:39:20,059][INFO ][o.e.n.Node ] [bh2HKsP] stopped
      [2019-04-08T10:39:20,059][INFO ][o.e.n.Node ] [bh2HKsP] closing ...
      [2019-04-08T10:39:20,077][INFO ][o.e.n.Node ] [bh2HKsP] closed

    解决:调整参数即可

    1. sysctl: setting key "vm.max_map_count": Read-only file system
      解决:https://blog.csdn.net/Gamer_gyt/article/details/52960941

    修改宿主机本身的配置文件,然后重新启动镜像,也能解决问题,退出容器,返回到宿主机
    修改vm.max_map_count 可以通过命令行修改,但是在机器重启时会失效,所以通过修改配置文件来解决问题
    命令行修改办法:

    sudo sysctl -w vm.max_map_count=655360

    并用以下命令查看是否修改成功

    sysctl -a | grep “vm.max_map_count”

    修改配置文件:

    sudo vim /etc/sysctl.conf

    加入:

    vm.max_map_count=262144

    保存即可

    接下来解决

    max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    这个问题

    sudo vim /etc/security/limits.conf

    加入以下两行:

    redhat hard nofile 65536
    redhat soft nofile 65536
    1
    2
    redhat这里为用户名

    然后重启启动elasticsearch即可

    参考

    【原生推荐】在 CentOS7 安装 ELK
    http://www.cnblogs.com/cheesebar/p/9126171.html
    【docker 推荐】基于Docker的ELK日志平台搭建
    https://www.cnblogs.com/devinzhang/p/6962404.html

    【docker 推荐,10分钟搭建 ok】使用Docker安装ELK系列(超简单)
    https://www.cnblogs.com/hackyo/p/9951684.html

    【9.5分,拿来即用】Docker ElK安装部署使用教程
    https://www.cnblogs.com/soar1688/p/6849183.html

    Go!!!
  • 相关阅读:
    rabbitmq 公平分发和消息接收确认(转载)
    rabbitmq 配置多个消费者(转载)
    Spring整合rabbitmq(转载)
    rabbitmq 一些属性
    rabbitmq 持久化 事务 发送确认模式
    TCP中的长连接和短连接(转载)
    rabbitmq 概念
    ZooKeeper介绍(转载)
    npm install 安装依赖报错解决
    ubuntu下安装node.js教程
  • 原文地址:https://www.cnblogs.com/shliujing/p/ELK-da-jian.html
Copyright © 2011-2022 走看看