ELK实战笔记

 

一. 简介

Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、*、Github 等都基于它来构建自己的搜索引擎。

在elasticsearch中,所有节点的数据是均等的。

Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

二. 安装

windows下安装的docker

1. elasticsearch

#下载elasticsearch镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.0.0 # 创建并运行elasticsearch容器

# 5601是kibana的默认端口,9200是es的默认端口,discovery.type指定单节点模式

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.0.0

注:也可以使用elasticsearch的9200端口,直接post数据

2. kibana

(windows版本可行)

# 创建并运行kibana

docker pull docker.elastic.co/kibana/kibana:7.0.0

# -e ELASTICSEARCH_URL指定es的地址,--network指定使用es的网络,可以借用es开放的5601端口 docker run -it -d -e ELASTICSEARCH_URL=http://localhost:9200 --name kibana -p 5601:5601kibana:tag

https://www.elastic.co/cn/products/kibana

注:笔者安装后总是有问题,干脆就弄一个windows版本的,就好了

https://www.elastic.co/cn/downloads/kibana

下载完后,直接运行  bin\kibana.bat 即可

3. Logstash (windows版本为例)

https://www.elastic.co/cn/downloads/logstash

启动脚本示例:

logstash -f logstash.conf

3.1. 配置

ELK实战笔记
  1 input {
  2 
  3 redis {
  4 
  5 type => "JasonLog"
  6 
  7 host => "10.10.14.54"
  8 
  9 # password => '123456'
 10 
 11 port => "6379"
 12 
 13 db => "0"
 14 
 15 data_type => "list"
 16 
 17 key => "ExceptionLog"
 18 
 19 }
 20 
 21 }
 22 
 23 # 过滤
 24 
 25 filter {
 26 
 27 mutate {
 28 
 29 gsub => [
 30 
 31 # replace all forward slashes with underscore
 32 
 33 #"message", "\\\"", "\"",
 34 
 35 "message", "\\\"", "\""
 36 
 37 ]
 38 
 39 }
 40 
 41 date {
 42 
 43 match => ["CreateTime", "yyyy-MM-dd HH:mm:ss.SSS"] #这里是如果createtime跟后面的格式匹配上了就会去替换,替换什么呢?target默认指的就是@timestamp,所以就是以client_time的时间更新@timestamp的时间
 44 
 45 }
 46 
 47 }
 48 
 49 output {
 50 
 51 if [type] == "JasonLog" {
 52 
 53 elasticsearch {
 54 
 55 hosts => ["http://10.8.100.88:9200"]
 56 
 57 index => "jason_log"
 58 
 59 }
 60 
 61 }
 62 
 63 }
 64 
View Code

 

问题1. could not find java; set JAVA_HOME or ensure java is in PATH

解决方案:

安装最新版Java kit

配置系统变量

ELK实战笔记

注:不要加bin

 

三. 配置

3.1. 数据录入到elasticsearch

使用C#

CreateTime = jsonLogMessage.Time.ToUniversalTime().ToString("O"), // 需要转换,否则ES不能识别为Date类型

或者转换为毫秒数

加入示例代码

3.2. 配置数据源

ELK实战笔记

选择时间字段

ELK实战笔记

3.3. 配置字段

设置日期字符串的格式

ELK实战笔记

配置枚举

ELK实战笔记

截取字符串

ELK实战笔记

3.4. 各种图表的配置

1. 图表

ELK实战笔记

2. 面板

ELK实战笔记

3.5. 查询界面

1. 查询条件

ELK实战笔记

2. 禁用某个条件

ELK实战笔记

3. 查看日志上下文

ELK实战笔记

可以查看当前日志发生时间前后的日志

ELK实战笔记

TODO:过期的数据删除策略

四. 快速搭建一个日志中心(未完待续)

架构

ELK实战笔记

数据传入到Redis

ELK实战笔记

附录:

Kibana使用说明: https://www.elastic.co/guide/cn/kibana/current/introduction.html

https://www.cnblogs.com/landanjun/p/10791339.html

上一篇:Elastic开源协议改了,用户怎么办?


下一篇:BTSearch 用go+elasticsearch语言实现的磁力搜索网站