ELK入门

1.什么是ELK?

 

ELK日志采集流程:

  • Filebeat负责从各个数据源采集数据,发送到Logstash

  • Logstash将数据再写入Elasticsearch

  • Elasticsearch对采集的数据创建索引

  • Kinbana对数据以图表形式进行展现

 

2.ELK可以解决那些问题?

  • 统计web日志中的某一时段的IP排行榜,URL、浏览器分布

  • 查询数据可视化展示,无需繁琐的操作即可

  • 整合现有的运维自动化平台可以轻易对接WAF、日志告警系统等

  • 支持目前最流行的机器学习框架,更好的为智能运维而服务

3.日志收集工具

  • rsyslog

  • syslog-ng

  • flume

  • logtash

  • filebeat

(1)Flume

Flume 是Apache旗下使用JRuby来构建,所以依赖Java运行环境。Flume本身最初设计的目的是为了把数据传入HDFS中(并不是为了采集日志而设计,这和Logstash有根本的区别)。

(2)Logstash

Logstash 是一款强大的数据处理工具,它可以实现实时数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。

Logstash整体架构

  • Shipper:日志收集者。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存。

  • Broker:日志Hub,用来连接多个Shipper和多个Indexer。

  • Indexer:日志存储者。负责从Redis接收日志,写入到本地文件。

Logstash架构数据流图

 

Logstash配置文件解析

  • input输入插件:file,stdin,filebeat,redis,ftp等

  • filter过滤插件:grok,date,mutate等

  • output输出插件:标准输出stdout,file,Elasticsearch,redis,ftp等。

点击查看代码
input{
	beats {
		port => 5044
	}
}

filter{
	grok {
		match => { "message" => "%{IP:client} .* \[%{DATA:timestamp}\] \"%{WORD:
		verb} %{URIPATHPARAM:request} .*\/%{GREEDYDATA:httpversion}\" %{NUMBER:
		response} %{NUMBER:duration:int} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
	}
	#04/Jan/2015:05:13:45 +0000
	date{
		match=> [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
		remove_field => [stimestamp]
	}
}

output{
	elasticsearch {
		hosts => "http://localhost:9200"
		index => "logstash-hello2"
	}
	stdout{}
}

hosts:配置Elasticsearch对应的IP地址,端口号默认9200

index:指定存储在Elasticsearch中的数据库名称,logstash是Elasticsearch默认的数据库模板,所以index必须是“logstash-*”的格式。如果指定为其他格式,则需手动在Elasticsearch创建模板。

Logstash支持数据类型

  • bool : debug=>true

  • string : host=>”hostname”

  • number : port => 514

  • array : match=>[“datetime”,”unix”:”ISO8601”]

  • hash : option =>{key1=>”value1”,key2=>”value2”}

 

(3)Filebeat

Filebeat是一个开源的日志文件收集器,主要用于获取日志文件,并把他们发送到Logstash或Elasticsearch中。Filebeat一般安装在需要收集日志的服务器上,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到es或者logstash中存放。

Filebeat日志收集架构

 

Filebeat执行命令:./filebeat -e -c filebeat.yml -d "publish"

4.数据采集通用模型

5.Kibana日志查询

  • 全文本搜索:在搜索框中直接输入搜索文字,可带通配符,比如:abc或 *abc*

  • 按字段搜索:device:“按字段搜索”

  • 按字段组合搜索AND:time:“2021-11-14” AND text:“test”

  • 按字段组合搜索OR:time:“2021-11-14” OR text:“test”

  • 按字段组合搜索NOT:time:“2021-11-14” NOT text:“test”

  • 分组搜索:time:(“2021-11-14” or “2021-11-15”) AND text:“test”

  • 数字比较:num:100,num:>100,num:<100

******************************************************************************************************************************************************

******************************************************************************************************************************************************

 

posted @ 2021-11-14 18:43  BlogMemory  阅读(135)  评论(0编辑  收藏  举报