一. 简介
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. 配置
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 } 64View Code
问题1. could not find java; set JAVA_HOME or ensure java is in PATH
解决方案:
安装最新版Java kit
配置系统变量
注:不要加bin
三. 配置
3.1. 数据录入到elasticsearch
使用C#
CreateTime = jsonLogMessage.Time.ToUniversalTime().ToString("O"), // 需要转换,否则ES不能识别为Date类型
或者转换为毫秒数
加入示例代码
3.2. 配置数据源
选择时间字段
3.3. 配置字段
设置日期字符串的格式
配置枚举
截取字符串
3.4. 各种图表的配置
1. 图表
2. 面板
3.5. 查询界面
1. 查询条件
2. 禁用某个条件
3. 查看日志上下文
可以查看当前日志发生时间前后的日志
TODO:过期的数据删除策略
四. 快速搭建一个日志中心(未完待续)
架构
数据传入到Redis
附录:
Kibana使用说明: https://www.elastic.co/guide/cn/kibana/current/introduction.html
https://www.cnblogs.com/landanjun/p/10791339.html