开源实时日志分析ELK平台部署

原创 2017年08月01日 16:21:35

ELK版本:5.5.0
下载:https://www.elastic.co/cn/downloads
这里只介绍环境的搭建,至于简介什么,以后慢慢来吧.

环境:
Ubuntu
JDK 1.8
Linux用户:mungo
首先,ELK工作的原理图:
这里写图片描述
即:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

ElasticSearch

配置文件
在elasticsearch的config目录下elasticsearch.yml

# Use a descriptive name for your cluster:
#
cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /home/mungo/elk/data
#
# Path to log files:
#
path.logs: /home/mungo/elk/logs
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
# 这里配置的ip为本机的ip
#
network.host: 10.81.12.46
#
# Set a custom port for HTTP:
#
http.port: 9200

然后到elasticsearch的bin目录下,通过elasticsearch脚本即可启动.

./elasticsearch

这里写图片描述
这里写图片描述
通过输出可以看到,elasticsearch发布到了配置文件定义的9200端口.通过上面配置的ip即可访问.

http://10.81.12.46:9200/
这里写图片描述
通过http://10.81.12.46:9200/_cluster/health可以查看当前elasticsearch服务器的运行状态.比如:

{
  "cluster_name": "my-application",
  "status": "yellow",
  "timed_out": false,
  "number_of_nodes": 1,
  "number_of_data_nodes": 1,
  "active_primary_shards": 5,
  "active_shards": 5,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 5,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 50
}

其中:status一共有3个状态:green表示所有主分片及备份分片都分配好了,集群100%健康。yellow表示所有主分片都分配好了,但至少有一个备份分片未分配。数据没有丢失,搜索结果时完整的。但高可用性会缺失,存在丢失数据风险,以黄色表示警告。red表示至少有一个主分片未分配,并且这个主分片的所有分片都丢失了。数据已经丢失了,搜索结果不完整,并且往这个分片索引数据会发生异常。

  • number_of_nodes和number_of_data_nodes,分别是节点数和数据节点数。
  • active_primary_shards,集群中所有index的主分片数量的总和。
  • active_shards,集群中所有index的分片数量的总和,包括备份分片.

Kibana

配置文件
在kibana的config目录下kibana.yml

# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "localhost"
# The URL of the Elasticsearch instance to use for all your queries.
# 这里配置的Elasticsearch的链接地址
elasticsearch.url: "http://10.81.12.46:9200"
# Kibana uses an index in Elasticsearch to store saved searches, visualizations and
# dashboards. Kibana creates a new index if the index doesn't already exist.
kibana.index: ".kibana"

然后通过kibana的bin目录下的kibana启动.

./kibana

这里写图片描述
这里写图片描述
通过配置文件可知,kibana监听的是5601端口.所以通过链接
http://localhost:5601启动.
这里写图片描述
看到这个问题,意思是logstash没有把日志写入到elasticsearch。因为logstash目前还未配置.下面开始配置logstash.如果有配置日志写入,就检查logstash与elasticsearch之间的通讯是否有问题。

Unable to fetch mapping. Do you have indices matching the pattern?

还有就是左侧的菜单可能会有些许不一直,因为我的版本里有先安装了x-pack插件.具体怎么使用如以后会做说明.

Logstash

Logstash 项目诞生于 2009 年 8 月 2 日。其作者是世界著名的运维工程师乔丹西塞(JordanSissel)。LogStash架构专为收集、分析和存储日志所设计。
Logstash的功能如下:
这里写图片描述
从上图可以看出,Logstash其实就是一个收集器,使用时需要为它指定Input和Output(Input和Output可以为多个)。比如若把Java代码中Log4j的日志输出到ElasticSearch中,Input就是Log4j,而Output就是ElasticSearch。若通过tcp的读取网络数据到ElasticSearch中,Input就是tcp监听的端口(可以配合 nc 命令导入数据,在启动 logstash 进程后,在另一个终端运行nc ip 监听端口 < olddata即可导入数据:),而Output就是ElasticSearch。
配置文件
配置两个输入,分别是Log4j日志输入和tcp数据输入.输出到ElasticSearch.
配置文件位置可以随意的,这里我放到logstash下的config目录下,取名为logstash_to_es.conf.

# For detail structure of this file
# Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
input {
  # For detail config for log4j as input, 
  # See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
  log4j {
    mode => "server"
    host => "10.81.12.46"
    port => 4567
  }
  tcp {
    port => 8888
    mode => "server"
    ssl_enable => false
  }
}
filter {
  #Only matched data are send to output.
}
output {
  # For detail config for elasticsearch as output, 
  # See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
  elasticsearch {
    action => "index"          #The operation on ES
    hosts  => "10.81.12.46:9200"   #ElasticSearch host, can be array.
    index  => "logstash-%{type}-%{+YYYY.MM.dd}"         #The index to write data to.
  }
}

logstash启动需要通过-f参数指明配置文件:
这里写图片描述

关于logstash使用可以通过如下命令查看.

./logstash --help

根据以上配置,通过下面命令启动logstash.

./logstash -f ../config/logstash_to_es.conf 

这里写图片描述
同过输出可以看出,配置input的4567和8888端口都被监听了.
通过nc命令将一个日志文件导入到elasticsearch

nc 127.0.0.1 8888 < log.log 

然后在kibana中就可以创建一个Index了.
这里写图片描述
然后在Discover菜单中就可以看到日志的内容了.就可以对日志内容进行查找了.
这里写图片描述
Log4j通过logstash写入elasticsearch
在log4j.properties配置文件中增加一项配置,将Log4j的日志输出到SocketAppender:

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

注意:这里的端口号需要跟Logstash监听的端口号一致,这里是4567。
这里写图片描述
可以看到,工程的日志已经输入到es了,如果设置的时间间隔够短,就很趋近于实时分析了。

至此,ELK平台部署和基本的测试就完成。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ELK搭建(5.1版本)

Linux版本Centos 6.5 (64位)ELK版本Elasticsearch 5.1

在CentOS上安装ELK 5时遇到的一些坑

安装ELK的Linux环境是CentOS 7,使用的JDK版本是1.8.0_144 安装使用的ELK版本是5.5.1 首先安装elasticsearch 5.5.1,从官网下载elasticsea...

ELK 日志监控平台环境搭建及使用说明

1. ELK概述ELK,也就是Elasticsearch、Logstash、Kibana三者的结合,是一套开源的分布式日志管理方案.Elasticsearch:负责日志存储、检索和分析LogStash...

开源实时日志分析ELK平台部署【入门篇】

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog...
  • bk_guo
  • bk_guo
  • 2017-06-23 09:47
  • 3854

ELK实时日志分析平台环境部署--完整记录

http://www.cnblogs.com/kevingrace/p/5919021.html

Elk实时日志分析平台5.0版本源码安装配置

最近有朋友老说用RPM安装ELK教程不适用,不通用;很多生产环境不联网,操作系统版本也不同;叫我弄个源码安装的教程。所以就整理一个ELK5.0版本源码安装过程,水平有限,凑合着看!! 一、配置JA...

ELK & ElasticSearch 5.1 基础概念及配置文件详解

配置文件 基本概念 接近实时NRT 集群cluster 索引index 文档document 映射mapping 类型type 分片shards 副本replicas 数据恢复recovery 数据源...

ELK实时日志分析平台环境部署

在日常运维工作中,对于系统和业务日志的处理尤为重要。今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ 一、概...

几个开源日志分析系统介绍

几个开源日志分析系统检索
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)