ELK安装以及配置

ELK安装以及配置

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

关于这三者的具体介绍可以移步官方网站查看详情,此文介绍如何安装ELK

一、部署环境

  • CentOS-6.x
  • Java-1.8
  • ELK-7.4.0
  • 系统部署如下图

二、ELK安装 - 使用yum方式

ps:此方式安装请使用centos6以上版本

  1. 下载并安装公共签名密钥

    1
    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  2. /etc/yum.repos.d/目录新建elastic.repo文件并添加以下内容

    1
    2
    3
    4
    5
    6
    7
    8
    [elastic-7.x]
    name=Elastic repository for 7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
  3. 执行yum命令,安装elasticsearch、logstash、kibana、filebeat

    1
    2
    3
    4
    sudo yum install elasticsearch
    sudo yum install logstash
    sudo yum install kibana
    sudo yum install filebeat
  4. 其他安装方式(详见官方文档)

三、安装 kafka(QuickStart

  1. 下载安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 版本更新换代,最新版本见官网
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz

    # 解压
    tar -xzf kafka_2.12-2.3.0.tgz
    cd kafka_2.12-2.3.0

    # 配置[vim config/server.properties](该配置不能是0.0.0.0或127.0.0.1或localhost,需为具体地址)
    ############################# Socket Server Settings #############################
    listeners=PLAINTEXT://192.168.0.102:9092
  2. 启动、停止服务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # kafka需要依赖Zookeeper,所以必须先启动一个zookeeper服务。
    # 如果你没有安装ZK,那么kafka自带了一个,你只需要执行以下命令启动一个ZK实例
    bin/zookeeper-server-start.sh config/zookeeper.properties

    # 如果你有自己的ZK的话,那么你需要修改`config/server.properties`文件中如下内容
    ############################# Zookeeper #############################
    zookeeper.connect=localhost:2181

    # 以下命令守护进程方式启动kafka
    bin/kafka-server-start.sh -daemon config/server.properties

    # 停止kafka
    bin/kafka-server-stop.sh
  3. 版本(kafka_2.12-2.3.0)需要jdk-1.8,所以如果本地jdk版本小于1.8,启动会出现如下错误

    1
    Unsupported major.minor version 52.0
  4. 如果你不想(能)更换默认的jdk版本,那么你只需要下载另一个jdk,然后修改启动配置文件
    此时要修改文件bin/kafka-run-class.sh并添加上JAVA_HOME=your_path_here

    1
    2
    3
    4
    5
    6
    7
    # Which java to use
    if [ -z "$JAVA_HOME" ]; then
    JAVA="java"
    else
    JAVA_HOME="/usr/local/java/jdk1.8.0_191-x64" #此处换成另一个jdk路径
    JAVA="$JAVA_HOME/bin/java"
    fi

四、配置\启动 Filebeat

  1. 配置。众所周知,filebeat需要配置一个input跟output,编辑文件/etc/filebeat/filebeat.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #=========================== Filebeat inputs =============================
    filebeat.inputs:
    - type: log
    enabled: true
    paths:
    - /usr/logs/test/*.log
    fields:
    topic: test-log

    - type: log
    enabled: true
    paths:
    - /opt/tomcat/logs/catalina.out
    fields:
    topic: tomcat-log

    #================================ Outputs =====================================
    #----------------------------- Kafka output --------------------------------
    output.kafka:
    hosts: ["192.168.0.102:9092"] # kafka listeners address
    topic: '%{[fields][topic]}'
  2. 启动

    1
    service filebeat start

五、配置\启动 Logstash

  1. 众所周知,配置logstash是最麻烦的,我们先说它的启动方式。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 虽然同样是用yum方式安装的,但是logstash并没有被安装成一个服务。
    # 我目前也不知道为什么,可能是因为它的启动方式有关?
    # 所以这里我只能到它的安装目录去启动
    cd /usr/share/logstash

    # Logstash启动方式有两种,个人建议使用B方式,把不同的日志处理放在不同配置里
    # A. 单文件启动方式
    bin/logstash -f /etc/logstash/conf.d/logstash.conf --path.settings /etc/logstash/

    # B. 多配置文件的启动
    bin/logstash -f /etc/logstash/conf.d/ --path.settings /etc/logstash/

    # logstash的停止没有提供相关的命令,目前发现只能 kill -9
    # 所以logstash配置文件自动加载这个功能我觉得还是开启比较方便,省了很多事
    vim /etc/logstash/logstash.yml

    # 如下配置,配置文件就会每隔5秒重新加载,这样修改了配置文件就不用重启logstash了
    # ------------ Pipeline Configuration Settings --------------
    config.reload.automatic: true
    config.reload.interval: 5s
  2. 配置,同样logstash也是有input跟output的配置项,同时还有个filter用来过滤日志

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    # 新建一个配置文件,如 test-log.conf 用来处理 filebeat 中的 test-log
    vim /etc/logstash/conf.d/test-log.conf

    # test-log.conf 中配置内容如下:
    input {
    kafka {
    bootstrap_servers => "192.168.0.102:9092"
    client_id => "logstash-test-log"
    topics => ["test-log"]
    type => "test-log"
    }
    }

    filter {
    if [type] == "test-log" {
    grok {
    match => {"message" => "\"message\":\"(?<message>.*?[^\\])\""}
    overwrite => ["message"]
    }
    grok {
    match => ["message", "%{TIMESTAMP_ISO8601:logdate}"]
    }
    date {
    match => ["logdate", "ISO8601"]
    target => "@timestamp"
    }
    mutate {
    remove_field => ["@version", "logdate"]
    }
    }
    }

    output {
    if [type] == "test-log" {
    elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "test-log-%{+YYYY.MM.dd}"
    #user => "${ES_USER}"
    #password => "${ES_PWD}"
    }
    }
    }
  3. 同理,可以创建tomcat-log.conf来处理tomcat的日志信息

  4. 使用if [type] == "test-log" 可以很好的区分不同的日志,针对不同的日志使用不同的处理方式,或输出到不同的index里

  5. Logstash最佳实践

六、启动 Elasticsearch

1
service elasticsearch start

七、配置\启动 Kibana

  1. 配置
1
2
3
4
5
6
7
8
9
vim /etc/kibana/kibana.yml

# 配置kibana的访问地址跟端口号,以及elasticsearch的访问地址
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://localhost:9200"]

# 可选配置,kibana日志输出
#logging.dest: /tmp/kibana.log
  1. 启动
    1
    service kibana start

八、如何使用日志处理工具

  1. 访问 Kibana
    1
    http://localhost:5601
  2. 创建 Index Pattern
    1
    访问kibana >>> Management >>> Index Patterns >>> Create Index Pattern
  3. 查询日志
    1
    访问kibana >>> Discover >>> Search
作者

Trainoo

发布于

2019-10-25

更新于

2020-06-02

许可协议