一、介绍
1、Elasticsearch:基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
2、Logstash:Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、存储,后来它的收集数据功能慢,被Beat取代。
3、Kibana:基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。
4、Beats:elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。
二、安装和配置
本文搭建环境为:win7、jkd1.8
在官方(https://www.elastic.co/cn/downloads/)分别下载Elasticsearch、Logstash、Kibana、FileBeats(文件采集器),本文使用的版本均为win64-7.5.0,win7不能使用高版本,因为Kibana是采用node.js开发的,node.js高版本对win7不兼容。
1、Elasticsearch
(1)下载解压,打开其解压目录下的/bin,运行elasticsearch.bat脚本查看控制台出现以下警告(JDK 8 不适用于 Elasticsearch高版本),目前没有影响可以忽略,也可以按提示配置MaxDirectMemorySize参数或按提示安装 Java 11,我这里选择忽略
(2)Elasticsearch启动完成之后,在浏览器访问默认地址http://localhost:9200/,出现JSON格式的信息,表示启动成功。由于ES官方并没有为ES提供界面管理工具,仅仅是提供了后台的服务,可以下载elasticsearch-head客户端工具(脱节,不详说)
(3)Elasticsearch配置,打开其压缩目录下的/config/elasticsearch.yml,在其可以配置集群等,我这里只打开了访问地址和端口号
2、Logstash
(1)编写配置文件(新建logstash-himdcs.conf,我这里保存在其解压目录下的config目录),Logstash的运行需要指定配置文件。
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "\s*%{TIMESTAMP_ISO8601:time}\s*\[%{DATA:thread}\]\s*%{LOGLEVEL:loglevel}\s*(?<class>([\S+]*))\s*%{GREEDYDATA:msg}"}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "himdcs-log-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
stdout { codec => rubydebug }
}
#日志格式
2021-05-20 10:01:01.235 [http-nio-8101-exec-3] ERROR com.hierway.user.controller.RoleController - 这是错误日志
grok正则表达式:
match => { "message" => "\s*%{TIMESTAMP_ISO8601:time}\s*\[%{DATA:thread}\]\s*%{LOGLEVEL:loglevel}\s*(?<class>([\S+]*))\s*%{GREEDYDATA:msg}"}
(2)新建运行脚本(我这里保存在其解压目录,也可以cmd输入命令运行),脚本内容如下,脚本指定了刚刚编写的配置文件。
脚本内容:./bin/logstash.bat -f ./config/logstash-himdcs.conf
(3)运行控制台无报错,则表示运行成功
3、FileBeats
(1)新建配置文件,filebeat的运行也需要指定配置文件,我这里新建了个文件夹保存运行脚本和配置文件
配置文件内容如下
filebeat.inputs:
- type: log
enabled: true
# 需要监听的日志
paths:
- e:\logs\himdcs\*.log
#索引分片数
setup.template.settings:
index.number_of_shards: 1
#输出到logstash
output.logstash:
hosts: ["localhost:5044"]
(2)新建运行脚本,内容:…\filebeat -e -c filebeat-himdcs.yml
(3)踩坑:filebeat每次运行时在其根目录下生成data数据文件,里面注册了连接的信息,每次重新启动filebeat的时候要把data文件夹删除,否则会连接不到logstash或者es。
4、Kibana
(1)修改kibana配置文件,解压目录下的\config\kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use.
# 端口号
server.port: 5601
# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
# 允许访问的ip,0.0.0.0表示允许任何ip访问
server.host: "localhost"
# 服务名称
server.name: "kibana"
# The URLs of the Elasticsearch instances to use for all your queries.
# ES服务地址
elasticsearch.hosts: ["http://localhost:9200"]
#设置为中文
# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English - en , by default , Chinese - zh-CN .
i18n.locale: "zh-CN"
(2)启动kibana,运行其解压目录下的/bin/kibana.bat,控制台无报错信息则启动成功。访问http://localhost:5601/,出现图形化界面
(3)kibana创建图形化展示监听到的日志。首先创建kibana的索引模式,步骤如下
(4)kibana垂直条形图,步骤如下
(5)kibana饼图,步骤如下(步骤和上面的条形图差不多,这里详细介绍)
(6)图表
(7)仪表盘