elk

Elasticsearch:

是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash:

主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana:

可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Beats:

Packetbeat(搜集网络流量数据)

Metricbeat(搜集系统指标数据)

Filebeat(搜集文件数据,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。)

Winlogbeat(搜集 Windows 事件日志数据)

Heartbeat(运行时间监控)

工作流程:

1. logstash收集、过滤 → Elasticsearch存储建索引 → Kibana展示
2. filebeat收集 → 需要过滤使用logstash → Elasticsearch→ Kibana展示

一般都是在需要收集日志的所有服务上部署filebeat,用于监控并收集日志,将需要过滤的日志发送给logstash,过滤后写入Elasticsearch,不需要过滤的直接写入Elasticsearch存储,Elasticsearch对这些数据创建索引,最后由Kibana对其进行各种分析并以图表的形式展示。

blockchain

应用一:

将Logstash部署在各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。 Logstash消耗系统资源比较大,运行时占用CPU和内存资源较高。另外,由于没有消息队列缓存,可能存在数据丢失的风险。

blockchain

应用二:

引入了消息队列机制(常见的有Kafka、Redis等)

blockchain

应用三:

集群、海量数据的业务,将前端Logstash替换成filebeat

blockchain

简单使用配置:

Elasticsearch配置:

cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "10.11.21.132"]
http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true

Logstash配置:

input {
    beats {
        port => 5044
    }
}
#filter {
#
#}
output {
    if [fields][service] == "ace-evaluate"{
        elasticsearch {
           hosts => ["127.0.0.1:9200"]
           index => "ace-evaluate-%{+YYYY.MM.dd}"
        }
    }
    if [fields][service] == "ace-gate"{
        elasticsearch {
           hosts => ["127.0.0.1:9200"]
           index => "ace-gate-%{+YYYY.MM.dd}"
        }
    }
}
事件处理有三个阶段:

inputs → filters → outputs。是一个接收,处理,转发日志的工具。

1.Input:输入数据到logstash。

常用的输入:

file:从文件系统的文件中读取
redis:从redis service中读取
beats:从filebeat中读取

2.Filters:数据中间处理,对数据进行操作。

grok:解析任意文本数据,将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。
mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。

3.Outputs:

常见的outputs为:

elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。

file:将event数据保存到文件中。

graphite:将event数据发送到图形化组件中,一个很流行的开源存储图形化展示的组件。

Codecs:codecs 是基于数据流的过滤器,它可以作为input,output的一部分配置。Codecs可以分割发送过来已经被序列化的数据。

常见的codecs:

json:使用json格式对数据进行编码/解码。

multiline:将汇多个事件中数据汇总为一个单一的行。比如:java异常信息和堆栈信息。

filedbeat配置:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - E:/logs/ace-evaluate
  fields:
     service: ace-evaluate
  multiline.pattern: ^\[
  multiline.negate: true
  multiline.match: after
  multiline.timeout: 10s
  multiline.max_lines: 10000
  
- type: log
  enabled: true
  paths:
    - E:/logs/ace-admin
  fields:
     service: ace-admin
  multiline.pattern: ^\[
  multiline.negate: true
  multiline.match: after
  multiline.timeout: 10s
  multiline.max_lines: 10000
     
output.logstash:
  hosts: ["localhost:5044"]
  
output.elasticsearch:           
  hosts: ["127.0.0.1:9200"]    
  indices:                      #自定义索引
   #- index: "monlog-%{+yyyy-MM-dd}"   #旧的索引默认是带日期的,如果要修改默认的模式,需要在下面template进行配置
    - index: "ace-evaluate"                   #设定索引monlog
      when.contains:                    #开始区分
        type: "ace-evaluate"                #如果type为monlog,就默认生成monlog的索引
    - index: "ace-admin"
      when.contains:
    	type: "ace-admin"

setup.template:           #索引的默认模式修改
 name: 'infinity-log'    #定义为单纯的姓名,如果你要定义其他的模式,例如时间,那就是:infinity-log-%{+yyyy-MM-dd}
 pattern: 'infinity-log'
 enabled: true  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值