Kong

当机立断,非黑即白,不要后悔

Enjoy programming and build awesome stuff.
Silence makes big money.
Life's most persistent and urgent question is, "What are you doing for others?"


Elk日志分析系统搭建(基于docker容器)

ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK协议栈。

Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

1、Docker安装

  • 安装基础组件
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 安装docker shell yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce
  • 加速docker
    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://tzc8ht4r.mirror.aliyuncs.com"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
    
  • 开机启动docker
    systemctl enable docker
    

    2、Elasticsearch安装

  • 下载Elasticsearch7.17.3的docker镜像:
    docker pull elasticsearch:7.17.3
    
  • 修改虚拟内存区域大小,否则会因为过小而无法启动:
     sysctl -w vm.max_map_count=262144
    
  • 使用如下命令启动Elasticsearch服务,内存小的服务器可以通过ES_JAVA_OPTS来设置占用内存大小:
    docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
    -e "discovery.type=single-node" \
    -e "cluster.name=elasticsearch" \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
    -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
    -d elasticsearch:7.17.3
    
  • 启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动即可;
    chmod 777 /mydata/elasticsearch/data/ -R
    

    安装中文分词器IKAnalyzer,注意下载与Elasticsearch对应的版本,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

下载完成后解压到Elasticsearch的/mydata/elasticsearch/plugins目录下;

重新启动服务:

docker restart elasticsearch

开启防火墙:

firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload

访问会返回版本信息:http://192.168.2.133:9200

{
  "name" : "2b344c3c693e",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Km7MwTZqQKKMI5k5B1z49w",
  "version" : {
    "number" : "7.17.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "5ad023604c8d7416c9eb6c0eadb62b14e766caff",
    "build_date" : "2022-04-19T08:11:19.070913226Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

3、Logstash安装

  • 下载Logstash7.17.3的docker镜像:
    docker pull logstash:7.17.3
    

    修改Logstash的配置文件logstash.conf中output节点下的Elasticsearch连接地址为es:9200,配置文件地址:

    https://github.com/macrozheng/mall/blob/master/document/elk/logstash.conf

    output {
    elasticsearch {
      hosts => "es:9200"
      index => "mall-%{type}-%{+YYYY.MM.dd}"
    }
    }
    
  • 创建/mydata/logstash目录,并将Logstash的配置文件logstash.conf拷贝到该目录;

mkdir /mydata/logstash

使用如下命令启动Logstash服务;

docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.17.3
  • 进入容器内部,安装json_lines插件。

logstash-plugin install logstash-codec-json_lines

4、 Kibana安装

  • 下载Kibana7.17.3的docker镜像:
    docker pull kibana:7.17.3
    

    使用如下命令启动Kibana服务:

    docker run --name kibana -p 5601:5601 \
    --link elasticsearch:es \
    -e "elasticsearch.hosts=http://es:9200" \
    -d kibana:7.17.3
    

    开启防火墙:

    firewall-cmd --zone=public --add-port=5601/tcp --permanent
    firewall-cmd --reload
    

    访问地址进行测试:http://192.168.2.133:5601 在这里插入图片描述

你需要做的第一件事是将一些数据输入 Kibana 中进行处理。 选择部署并运行 Elasticsearch 后,你可以首次登录 Kibana。 要探索 Kibana,你可以使用 Kibana 示例数据或你自己的数据。 如果选择后者,则 Kibana 提供了多种方法来提取数据。 例如,如果你使用 Beats(专用于 Elastic 的数据采集代理),则只需选择 Beats 应该从哪个系统收集数据,然后让 Beats 连续为你收集数据。 在这里插入图片描述

最近的文章

工作流技术选型分析

1. 名词解释#1.1. BPMBusiness Process Management,业务流程管理,“通过建模、自动化、管理和优化流程,打破跨部门跨系统业务过程依赖,提高业务效率和效果”。1.2. BPMNBusiness Process Modeling Notation,业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram);讨论BPMN的各种的用途,包括以何种精度来影响一个流程图中的模型;BPMN作为一个标准的价值,以及BPMN...…

继续阅读
更早的文章

手写rpc框架

手写RPC框架一、内容概览 RPC的概念及运作流程 RPC协议及RPC框架的概念 Netty的基本使用 Java序列化及反序列化 Zookeeper注册中心的基本使用 自定义注解实现特殊业务逻辑 Java的动态代理 自定义Spring Boot Starter 二、RPC基础知识2.1 RPCRemote Procedure Call(RPC):远程过程调用。借助网络通信实现想通用...…

继续阅读