zoukankan      html  css  js  c++  java
  • 基于Docker快速搭建ELK【华为云技术分享】

    【摘要】 本文基于自建的Docker平台速搭建一套完整的ELK系统,相关的镜像直接从Docker Hub上获取,可以快速实现日志的采集和分析检索。

    准备镜像

    l 获取ES镜像:docker pull elasticsearch:latest

    l 获取kibana镜像:docker pull kibana:latest

    l 获取logstash镜像:docker pull logstash:latest

    启动Elasticsearch

    官方镜像里面ES的配置文件保存在/usr/share/elasticsearch/config,如果有需要可以将该目录映射到宿主机上;数据文件目录/usr/share/elasticsearch/data,这里我们把数据目录映射出来;容器默认对外提供9200端口,用作API交互。

    1 docker run --name elasticsearch 
    2 -v "$PWD/esdata":/usr/share/elasticsearch/data 
    3 -p 9200:9200 
    4 -d elasticsearch

    容器启动以后可以调用一把验证一下:

    image.png

    启动Kibana

    Kibana作为ES操作的UI,需要跟ES容器通信,所以这里要将ES的容器link一下,对外提供5601端口做页面交互。

    1 docker run --name kibana 
    2 --link elasticsearch:elasticsearch 
    3 -p 5601:5601 
    4 -d kibana

    容器启动后用浏览器访问5601端口,可以看到kibana页面,首次访问的时候可能会提示没有建立默认索引,这里需要在管理页面上创建一个默认索引。默认索引通常叫做logstash-*,如下图所示创建一个默认索引。

    image.png

    启动Logstash

    Logstash主要作用是收集日志,这个组件有很多插件,可以支持大部分日志集成方式,如tcp、udp、jdbc、文件、队列等,他的配置非常简单,启动方式也很简单,这里以nginx的访问日志为例,我们配置logstash读取nginx的access.log,然后把日志转发到Elasticsearch

    首先编译一个logstash配置文件logstash.conf,内容如下:

     1 input{
     2 
     3       file{
     4 
     5             path=>"/tmp/nginx/logs/access.log"
     6 
     7       }
     8 
     9 }output{
    10 
    11       stdout{     } #日志输出到控制台
    12 
    13      
    14 
    15       #输出到es
    16 
    17       elasticsearch{
    18 
    19             hosts=>"100.100.x.231"
    20 
    21       }
    22 
    23 }

    启动容器,这里我们把nginx的日志放在/tmp/nginx/logs/access.log,为了让容器能读到这个日志,需要把日志目录映射到容器里面。

    docker run –it –rm -v /tmp/nginx/logs/access.log:/tmp/nginx/logs/access.log -f /config-dir/logstash.conf

    接下来我们可以全流程测试一下日志收集展示的过程。首先在nginx里面造点访问日志,比如直接curl调nginx服务端口,或者直接往access.log里面写数据也行。这时候再logstash容器我们可以看到如下日志输出:

    image.png

    再往后,打开Kibana页面就可以看到实时写入的日志数据了:

    image.png

    总结

    Docker容器使ELK搭建变得非常便捷,通过ELK可以快速分析检索日志,发现问题,ELK的几个核心贡献者成立了一家公司叫Elastic,目前跟我司也有一些合作,在开源的基础上该公司也发布了一些商业产品,名为X-Pack,提供了机器学习、图算法以及安全技术上的诸多加强,有兴趣的同学可以自行了解。

    image.png

    HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

    欢迎报名参会

  • 相关阅读:
    Ubuntu 16.09下iptables通过raw表实现日志输出和调试
    CentOS 6.9永久设置静态路由表以及路由表常用设置
    Linux下添加静态路由表设置网关出现SIOCADDRT: Network is unreachable的问题分析
    Linux下使用ISC DHCP可以实现动态推送静态路由表
    Linux下使用ping出现destination is unreachable的问题可能性
    树莓派(Debian)系统开启iptables的raw表实现日志输出
    MySQL时间戳与日期互转
    树莓派(Debian)系统设置了静态IP之后还会获取动态IP的问题解决(scope global secondary eth0)
    Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)
    OpenWrt包管理软件opkg的使用(极路由)
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/12016038.html
Copyright © 2011-2022 走看看