知识

ELK:(ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成),Elasticsearch用于存储日志信息,Logstash用于收集日志,Kibana用于图形化展示。 本文我们使用docker-compose搭建ELK日志分析系统。

您当前位置>主页 > 知识 > 软件开发 >

传说中的ELK日志分析系统,手把手教你

发表时间:2020-04-28 15:23

文章来源:admin

浏览次数:

ELK:(ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成),Elasticsearch用于存储日志信息,Logstash用于收集日志,Kibana用于图形化展示。

传说中的ELK日志分析系统,手把手教你

 

本文我们使用docker-compose搭建ELK日志分析系统。
需要先在linux上安装好docker和docker-compose。不会的童鞋可以参考我的文章:
linux(centos7)安装docker
linux(centos7)安装docker-compose

准备工作

  • linux Elasticsearch 默认使用 mmapfs目录来存储其索引。操作系统对mmap计数的限制可能太低,这可能会导致内存不足异常。在Linux上,可以通过运行以下命令来增加限制.
sysctl -w vm.max_map_count=262144

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
</dependency>
  • mysql-connector-java-5.1.40.jar获取,pom.xml.
  • 创建数据挂载路径
mkdir -p /usr/local/kiki/elk # 创建ELK Docker Compose文件存储路径

mkdir -p /usr/local/kiki/elasticsearch/data # 创建Elasticsearch数据挂载路径

mkdir -p /usr/local/kiki/elasticsearch/plugins # 创建Elasticsearch插件挂载路径

mkdir -p /usr/local/kiki/logstash # 创建Logstash配置文件存储路径
  • 在/usr/local/kiki/logstash 路径下创建logstash-kiki.conf配置文件:

input {
  tcp {
    type => "log"
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
input {
  jdbc {
    jdbc_connection_string => "jdbc:mysql://192.168.3.2:3306/www_misa_com"
    jdbc_user => "www_misa_com"
    jdbc_password => "bCtEsES6JxWGEcXW"
    jdbc_driver_library => "/usr/share/logstash/jar/mysql-connector-java-5.1.40.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "5000"
    statement=> "select * from news"
    schedule => "* * * * *"
    type => "jdbc"
  }
}
output {
   if [type] == "log"{
      elasticsearch {
        hosts => "es:9200"
        index => "kiki-logstash-%{+YYYY.MM.dd}"
      }
   }
   if [type] == "jdbc"{
      elasticsearch {
        hosts => "es:9200"
        index => "misa-logstash"
        document_type => "%{type}"
        document_id => "%{id}"
      }
   }
   stdout {
        codec => json_lines
  }
}
 

logstash-kiki.conf定义了logstash的input和output。

  • 在/usr/local/kiki/elk下创建docker-compose.yml文件,内容如下:

version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.4.1
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #集群名称为elasticsearch
      - "discovery.type=single-node" #单节点启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #jvm内存分配为512MB
    volumes:
      - /usr/local/kiki/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /usr/local/kiki/elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - my-bridge  
  kibana:
    image: kibana:6.4.1
    container_name: kibana
    links:
      - elasticsearch:es #配置elasticsearch域名为es
    depends_on:
      - elasticsearch
    environment:
      - "elasticsearch.hosts=http://es:9200" #因为上面配置了域名,所以这里可以简写为http://es:9200
    ports:
      - 5601:5601
    networks:
      - my-bridge
  logstash:
    image: logstash:6.4.1
    container_name: logstash
    volumes:
      - /usr/local/kiki/logstash/logstash-kiki.conf:/usr/share/logstash/pipeline/logstash.conf
      - /usr/local/kiki/lib:/usr/share/logstash/jar
    depends_on:
      - elasticsearch
    links:
      - elasticsearch:es
    ports:
      - 4560:4560
    networks:
      - my-bridge
networks:
  my-bridge:
    driver: bridge
 
  • 实际操作如图:
传说中的ELK日志分析系统,手把手教你

 

以上准备 工作就完成了,是不是很简单。下面我们来试验一下。

启动ELK

  • 切换到/usr/local/kiki/elk 目录下,使用docker-compose up 命令启动。第一次执行会自动下载3个镜像。
传说中的ELK日志分析系统,手把手教你

 

  • 使用docker-compose ps查看启动状态
传说中的ELK日志分析系统,手把手教你

 

发现elasticsearch没有启动,这是因为elasticsearch的data目录权限不够,执行下面命令

chmod 774 /usr/local/kiki/elasticsearch/data/
  • 再次执行docker-compose up -d,再次查看 docker-compose ps
传说中的ELK日志分析系统,手把手教你

 

3个容器均已启动。

  • logstash-kiki.conf配置文件中用到了json_lines来处理json类型的日志数据。所以我们需要为logstash安装json_lines插件。

进入到logstash 容器中:

docker exec -it logstash /bin/bash

进入容器的 /bin/ 目录,执行

logstash-plugin install logstash-codec-json_lines
传说中的ELK日志分析系统,手把手教你

 

安装过程很慢,中间报错是因为断网了,再次执行下命令静静等待就行,安装完成后输入exit退出,或者按Ctrl+Q+P 退出。

效果展示

  • 访问http://192.168.85.128:5601/ ,192.168.85.128是我虚拟机IP,结果如下:
传说中的ELK日志分析系统,手把手教你

 

这样,我们就搭建好了ELK日志分析系统,下一篇文章我们介绍,SpringBoot项目如何接入ELK日志分析系统。

相关项目查看更多