• ES系列二、Mac 通过docker搭建ELK日志收集系统


    一、ELK简介

    • Elasticsearch:用于存储收集到的日志信息;
    • Logstash:用于监控,过滤,收集日志,SpringBoot应用整合了Logstash以后会把日志发送给LogstashLogstash再把日志转发给Elasticsearch
    • Kibana:通过Web端的可视化界面来查看日志。

    二、解决docker拉取镜像慢的问题

      前提是我们的mac安装好了docker,并且可以正常启动关闭。但是当我们对镜像进行拉取的时候,会发现速度非常的慢,停在下面这个界面很久也不动。

      解决方法:我们可以进入阿里云的官网,登陆之后搜索docker,如下图

     

      在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将 https://nt1wiw3g.mirror.aliyuncs.com加到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。如下图:

    然后你拉取镜像的速度就会和我一样飞快啦!兄弟们,起飞!

     

    三、Mac下Docker安装ELK环境

    1、mac安装elk, elasticsearch、logstash、kibana版本要一致。我这里都使用 6.8.0版本。因为版本7改动太大,没深入研究,坑有点多。

    # 查看是否安装了elk
    docker images
    # 清理之前的版本
    docker rmi $(docker images -aq)
    # 安装 elk 6.8.0 版本
    docker pull elasticsearch:6.8.0
    docker pull kibana:6.8.0
    docker pull logstash:6.8.0
    # 查看是否下载成功
    docker images

    2、查看已拉取的 ElasticSearch:

    • 操作命令 : docker image ls elasticsearch
    • 操作示例:
      localhost:~ gs$ docker image ls elasticsearch
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      elasticsearch       6.8.0               d0b291d7093b        14 months ago       895MB 
        

    3、开始搭建

      第一步:创建3个文件夹,用于存放Elasticsearch数据、Logstash的插件和Logstash的配置文件,由于Kibana主要是用于把logstash收集到的日志进行可视化分析,故本例不做更多配置。xxxxxxx为本机下的用户。

    mkdir -p /Users/xxxxxxx/elk/elasticsearch/data
    mkdir -p /Users/xxxxxxx/elk/elasticsearch/plugins
    mkdir -p /Users/xxxxxxx/elk/logstash
    

      另外可以再创建一个文件夹,用于存放docker-compose.yml文件

    mkdir -p /Users/xxxxxxx/elk/docker
    

      第二步:在/Users/xxxxxxx/elk/logstash目录下创建logstash的配置文件logstash.conf

    input {
      tcp {
        mode => "server"
        host => "0.0.0.0"
        port => 4560
        codec => json_lines
      }
    }
    output {
      elasticsearch {
        hosts => "es:9200"
        index => "springboot-logstash-%{+YYYY.MM.dd}"
      }
    }
    

      第三步:在/Users/xxxxxxx/elk/docker创建docker-compose.yml文件

    version: '3'
    services:
      elasticsearch:
        image: elasticsearch:6.8.0
        container_name: elasticsearch
        environment:
          - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
          - "discovery.type=single-node" #以单一节点模式启动
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
        volumes:
          - /Users/xxxxxxx/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
          - /Users/xxxxxxx/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
        ports:
          - 9200:9200
          - 9300:9300
      kibana:
        image: kibana:6.8.0
        container_name: kibana
        links:
          - elasticsearch:es #可以用es这个域名访问elasticsearch服务
        depends_on:
          - elasticsearch #kibana在elasticsearch启动之后再启动
        environment:
          - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
        ports:
          - 5601:5601
      logstash:
        image: logstash:6.8.0
        container_name: logstash
        volumes:
          - /Users/xxxxxxx/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
        depends_on:
          - elasticsearch #kibana在elasticsearch启动之后再启动
        links:
          - elasticsearch:es #可以用es这个域名访问elasticsearch服务
        ports:
          - 4560:4560
    

      第四步:在docker-compose.yml文件目录下启动elk

    docker-compose up -d
    

      示例:

    localhost:docker gs$ /Users/gs/elk/docker/docker-compose.yml 
    -bash: /Users/gs/elk/docker/docker-compose.yml: Permission denied
    localhost:docker gs$ docker-compose up -d
    elasticsearch is up-to-date
    kibana is up-to-date
    logstash is up-to-date
    

        第五步:访问 localhost:9200  localhost:5601 能够正常,说明整个elk环境已搭建完成。至此,整个ELK环境已经能够搭建完成。

    四、docker 安装head插件

      安装elasticsearch head插件监控管理
      安装命令:docker pull mobz/elasticsearch-head:5
      启动命令:docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 

      网页打开elasticsearch-head页面,填入ES地址,一般会出现不上的状态,这是跨域拒绝访问问题。

      解决方案:进入elasticsearch容器内部,修改elasticsearch.yml,增加跨域的配置(需要重启es才能生效)

           输入命令:docker ps      获得容器id
           进入容器:docker exec -it (容器id) bash

           修改配置:vi config/elasticsearch.yml

       添加内容:

    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

      重启es,head插件正常生效。

      示例:

    localhost:~ gs$ docker ps
    CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                            NAMES
    50f552d6ea3a        mobz/elasticsearch-head:5   "/bin/sh -c 'grunt s…"   10 minutes ago      Up 10 minutes       0.0.0.0:9100->9100/tcp                           hardcore_kepler
    27093a50ff74        kibana:6.8.0                "/usr/local/bin/kiba…"   5 hours ago         Up 10 minutes       0.0.0.0:5601->5601/tcp                           kibana
    6b42e98a52ff        logstash:6.8.0              "/usr/local/bin/dock…"   5 hours ago         Up 10 minutes       5044/tcp, 0.0.0.0:4560->4560/tcp, 9600/tcp       logstash
    64085c37858a        elasticsearch:6.8.0         "/usr/local/bin/dock…"   5 hours ago         Up 10 minutes       0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch
    localhost:~ gs$ docker exec -it 64085c37858a bash
    [root@64085c37858a elasticsearch]# vi config/elasticsearch.yml
    [root@64085c37858a elasticsearch]# 
    

      

     

    参考文献:https://blog.csdn.net/kouxinsu8594/article/details/107129482

  • 相关阅读:
    retain和copy的区别 #import @class 的区别
    UImageview加边框 加阴影
    iOS中有两种支持机制:Notification和KVO(KeyValue Observing)
    Windows上编译,学习Objectivec
    CAAnimation动画
    ObjectiveC 熟记小概念
    cocos2d工具大全
    cocos2d 0.99.5版本屏幕默认是横屏,怎么修改为竖屏呢?
    ObjectiveC 的 self 和 super 详解
    ObjectiveC 的属性与合成方法使用详解
  • 原文地址:https://www.cnblogs.com/gshao/p/13446961.html
Copyright © 2020-2023  润新知