ELK搭建实时日志分析平台

1 篇文章 0 订阅
1 篇文章 0 订阅

话不多说 至于关于ELK的相关知识可以自行百度,这里只说如何搭建。阐述自己搭建的过程,有什么问题可以留言一起探讨。

ELK平台搭建

系统环境

System: CentOS Linux release 7.6.1810

ElasticSearch: elasticsearch-2.1.0

Logstash: logstash-2.1.1

Kibana: kibana-7.8.0

Java: jdk-8u212-linux-x64

注:我已经将压缩包传到百度网盘 链接: https://pan.baidu.com/s/1a6-EV9rD060B5g8jvEEYcg 提取码: mqvm 请自行下载

如果想自己下载 下载地址为:https://www.elastic.co/cn/downloads/  如下图:

1.首先配置ElasticSearch

上传elasticsearch-2.1.0.tar.gz到指定的目录下,执行tar -zxvf elasticsearch-2.1.0.tar.gz 进行解压,跳转到elasticsearch-2.1.0目录下面

安装Head插件(Optional):

./bin/plugin install mobz/elasticsearch-head

编辑es配置文件:vi config/elasticsearch.yml

修改以下配置项:

cluster.name=es_cluster

node.name=node0

path.data=/tmp/elasticsearch/data

path.logs=/tmp/elasticsearch/logs #当前hostname或IP,我这里是centos2

network.host=centos2

network.port=9200

配置完成之后,可以启动ES,但是在启动ES之前需要重新创建一个用户,并将此用户的权限赋予es文件件目录。(es不能用root用户启动,必须是非root用户)

[root@localhost /]# useradd elkuser
#elasticsearch 只能用非 root 启动
[root@localhost /]#  chown -R elkuser.elkuser ES目录

启动es:./bin/elasticsearch

可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。

使用ctrl+C停止。当然,也可以使用后台进程的方式启动ES:

./bin/elasticsearch &

然后可以打开页面localhost:9200,将会看到以下内容:

返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。

刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。现在也可以使用它打开localhost:9200/_plugin/head页面来查看ES集群状态

Logstash

 

Logstash作为一个日志收集器,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java代码中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。

配置Logstash:

tar -zxvf logstash-2.1.1.tar.gz

cd logstash-2.1.1

编写配置文件(名字和位置可以随意,这里我放在config目录下,取名为log4j_to_es.conf):

mkdir config

vi config/log4j_to_es.conf

输入以下内容:

input {
    log4j {
        host => "127.0.0.1"
        port => 4560
    }
}

output {
    stdout {
      codec => rubydebug
    }
    elasticsearch{
        hosts => ["localhost:9200"]
        index => "log4j-%{+YYYY.MM.dd}"
        document_type => "log4j_type"
    }
}

 

使用agent来启动它(使用-f指定配置文件):

./bin/logstash agent -f config/log4j_to_es.conf


到这里,我们已经可以使用Logstash来收集日志并保存到ES中了,下面来看看项目代码

Java项目

pom.xml,很简单,只用到了Log4j库:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

log4j.properties,将Log4j的日志输出到SocketAppender,因为官网是这么说的:

log4j.rootLogger=INFO,console

# for package com.demo.elk, log would be sent to socket appender.
log4j.logger.com.demo.elk=DEBUG, socket

# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4560
log4j.appender.socket.RemoteHost=127.0.0.1
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000

# appender console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n

 注意:这里的端口号需要跟Logstash监听的端口号一致,这里是4567。

 

public class Application {
  private static final Logger LOGGER = Logger.getLogger(Application.class);
  public static void main(String[] args) throws Exception {
    for (int i = 0; i < 10; i++) {
      LOGGER.info("Info log [" + i + "].");
      Thread.sleep(500L);
    } 
  }
}

用Head插件查看ES状态和内容

运行Application.java,先看看console的输出(当然,这个输出只是为了做验证,不输出到console也可以的):

再来看看ES的head页面:

切换到Browser标签:

到此,logstatsh和es整合已经成功。

Kibana

配置Kibana:

tar -zxvf kibana-4.3.0-linux-x86.tar.gz

cd kibana-4.3.0-linux-x86

vi config/kibana.yml

 

修改以下几项(由于是单机版的,因此host的值也可以使用localhost来代替,这里仅仅作为演示):

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://127.0.0.1:9200"

kibana.index: “.kibana”

启动kibana:

./bin/kibana

用浏览器打开该地址:

 

为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入之前配置的Index名字applog,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段:

 

点击Create后,可以看到左侧增加了配置的Index名字 

接下来切换到Discover标签上,注意右上角是查询的时间范围,如果没有查找到数据,那么你就可能需要调整这个时间范围了,这里我选择Today:

 接下来就能看到ES中的数据了:

执行搜索看看呢:

 

点击右边的保存按钮,保存该查询为search_all_logs。接下来去Visualize页面,点击新建一个柱状图(Vertical Bar Chart),然后选择刚刚保存的查询search_all_logs,之后,Kibana将生成类似于下图的柱状图(只有10条日志,而且是在同一时间段的,比较丑,但足可以说明问题了:)  ):

 

你可以在左边设置图形的各项参数,点击Apply Changes按钮,右边的图形将被更新。同理,其他类型的图形都可以实时更新。

点击右边的保存,保存此图,命名为search_all_logs_visual。接下来切换到Dashboard页面:

 

单击新建按钮,选择刚刚保存的search_all_logs_visual图形,面板上将展示该图:

 

如果有较多数据,我们可以根据业务需求和关注点在Dashboard页面添加多个图表:柱形图,折线图,地图,饼图等等。当然,我们可以设置更新频率,让图表自动更新:

 

如果设置的时间间隔够短,就很趋近于实时分析了。

到这里,ELK平台部署和基本的测试已完成。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值