美文网首页
ELK安装笔记

ELK安装笔记

作者: 榷奕 | 来源:发表于2020-02-17 17:59 被阅读0次

    1. Elasticsearch安装

    下载elasticsearch7.6.0的docker镜像:
    docker停止启动重启的时候不用复制,只要输入几个字母就行了。

    docker pull elasticsearch:7.6.0
    

    修改虚拟内存区域大小,否则会因为过小而无法启动:

    #切换到root用户
    #执行命令:
    sysctl -w vm.max_map_count=262144
    # 使之立即生效
    sysctl -p
    #查看结果:
    sysctl -a|grep vm.max_map_count
    
    #显示:
    vm.max_map_count = 262144
    
    #上述方法修改之后,如果重启虚拟机将失效,所以:
    #解决办法:
    #在   /etc/sysctl.conf文件最后添加一行
    vm.max_map_count=262144
    #即可永久修改
    

    使用docker命令启动:

      docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
      -e "discovery.type=single-node" \
      -e "cluster.name=elasticsearch" \
      -v /root/hospital-test-0703/yang/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
      -v /root/hospital-test-0703/yang/mydata/elasticsearch/data:/usr/share/elasticsearch/data \
      -d elasticsearch:7.6.0
    

    启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动。
    (以及这里面有一个重坑,如果把之前docker装的elasticsearch删掉了,然后重装,一定要把挂载目录里面的东西清理干净,不然换一个版本适配不了。)

    这里面有好几点要注意的,首先是
    mkdir -p xxxx/xxxx/xxxx来创建一系列目录
    然后是/开头就是绝对目录,而docker -v必须要用绝对目录

    chmod 777 /mydata/elasticsearch/data/
    

    ll可以看权限等级)

    • 安装中文分词器IKAnalyzer,并重新启动:
      planA:
    #进入容器
    docker exec -it elasticsearch /bin/bash
    #此命令需要在容器中运行
    elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip
    docker restart elasticsearch
    

    plabB:
    由于在容器里面运行install实在太慢了,没法跑啊,于是自己去github上面下载了zip,解压之后拖到了plugin文件夹里面。

    • elasticsearch没提供界面管理,所以要自己安装一个。
      planA:
      最好的planA+是直接chrome商店下载一个。
      https://github.com/mobz/elasticsearch-head下载这个网页里面项目,然后解压完了之后找到elasticsearch-head-master\elasticsearch-head-master\crx也就是找到crx这个文件夹,里面有个es-head.crx,这个就是扩展程序,不过不能直接这样拖进去,要把这个文件的后缀改成rar,解压出来。

    然后解压出来的这个文件夹就能变成插件安装上去。

    planB:
    (这么装出来,有数据不显示的问题)

    #拉取镜像
    docker pull mobz/elasticsearch-head:5
    #运行容器
    docker run -d --name es-head -p 9100:9100 mobz/elasticsearch-head:5
    

    浏览器打开: http://39.100.144.125:9100

    尝试连接elaseticsearch会发现无法连接上,由于是前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置,如下

    修改docker中elasticsearch的elasticsearch.yml文件

    docker exec -it elasticsearch /bin/bash
    vim config/elasticsearch.yml
    

    在最下面添加2行

    #kua yu
    http.cors.enabled: true 
    http.cors.allow-origin: "*"
    

    退出并重启服务

    exit
    docker restart elasticsearch
    

    2. kibana安装

    • 下载kibana6.4.0的docker镜像:
    docker pull kibana:7.6.0
    
    • 使用docker命令启动:
      docker run --name kibana -p 5601:5601 \
      --link elasticsearch:es \
      -e "elasticsearch.hosts=http://es:9200" \
      -d kibana:7.6.0
    

    Kibana设置中文:

    #进入kibana容器
    docker exec -it kibana  /bin/bash.
    #打开yml
    vi /usr/share/kibana/config/kibana.yml
    

    然后exit退出docker容器

    在末尾加上一行
    i18n.locale: zh-CN


    3. FireBeats安装

    #拉镜像
    docker pull docker.elastic.co/beats/filebeat:7.6.0
    

    然后在运行docker容器之前,先整一个yml。先创建好目录,然后vim yml编辑一个yml。

    #创建一个目录,这次用的是yang/mydata/filebeat/filebeat.yml
    vim filebeat.yml
    

    (这个yml是个大坑!!!enable是一个坑,multi是一个坑)

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/gateway.log
      tags: ["gateway"]
    
      multiline.pattern: '^\['
      multiline.negate: true
      multiline.match: "after"
    
    
    #-------------------------- Elasticsearch output ------------------------------
    #output.elasticsearch:
    #  hosts: ["39.100.144.125:9200"]
    
    #-------------------------- Logstash ------------------------------------------
    output.logstash:
      hosts: ["39.100.144.125:5044"]
    

    yml编辑完了之后,在下面注意几个位置,都映射过去,这里似乎这几个文件夹都不要什么权限的。

    #跑镜像
    docker run -d --name=filebeat \
    -v /root/hospital-test-0703/yang/mydata/logs:/var/log \
    -v /root/hospital-test-0703/yang/mydata/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
    -v /root/hospital-test-0703/yang/mydata/filebeat/registry/:/usr/share/filebeat/data/registry/ docker.elastic.co/beats/filebeat:7.6.0
    

    4. logstash 安装

    #拉镜像
    docker.elastic.co/logstash/logstash:7.6.0
    

    建立这样的目录
    /root/hospital-test-0703/yang/mydata/logstash/conf.d/logstash.conf
    /root/hospital-test-0703/yang/mydata/logstash/logstash.yml
    第一个conf是重点,说实话第二个yml有没有用我还不确定。
    第一个conf内容

    input {
      beats {
        port => 5044
        codec => json
        }
    }
    
    filter {
      mutate {
        split => {"message" => "|"}
      }
    }
    
    output {
      #输出到面板
      stdout { codec => rubydebug }
    }
    

    第二个yml内容

    path.config: /usr/share/logstash/conf.d/*.conf
    path.logs: /var/log/logstash
    

    两个文件都建好了之后,跑镜像

    docker run -d -it -p 5044:5044 --name logstash  \
    -v /root/hospital-test-0703/yang/mydata/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml   \
    -v /root/hospital-test-0703/yang/mydata/logstash/conf.d/:/usr/share/logstash/conf.d/  \
    docker.elastic.co/logstash/logstash:7.6.0
    

    跑起来logstash之后,让filebeat往这里面输入日志,然后进入docker镜像去看日志输出。

     docker logs -ft logstash
    

    5. docker的安装经验

    ELK有一个大问题,就是这些东西要保持版本的高度一致。所以如果不清楚自己拉的是哪个版本就很麻烦。

    docker inspect elasticsearch
    

    也试过使用这个命令来看一下版本,结果标签上面写的就是latest,没查到版本。

    相关文章

      网友评论

          本文标题:ELK安装笔记

          本文链接:https://www.haomeiwen.com/subject/wmhifhtx.html