ELK日志收集分析服务

任务要求

  • 搭建ELK集群

  • 收集日志信息并展示

任务拆解

  • 认识ELK

  • 部署elasticsearch集群并了解其基本概念

  • 安装elasticsearch-head实现图形化操作

  • 安装logstash收集日志

  • 安装kibana日志展示

  • 安装file beat实现轻量级日志收集

学习目标

  • 能够说出ELK的应用场景

  • 能够区分ELK架构中elasticsearch,logstash,kibina三个软件各自的主要功能

  • 能够单机部署elasticsearch

  • 能够部署elasticsearch集群

  • 理解ELK中索引的概念

  • 能够部署logstash

  • 能够使用logstash做日志采集

认识ELK

  • ELK是一套开源的日志分析系统,由elasticsearch+logstash+Kibana组成。

  • 官网说明:Elastic 产品:搜索、分析、日志和安全 | Elastic

  • 首先: 先一句话简单了解E,L,K这三个软件

  • elasticsearch: 分布式搜索引擎

  • logstash: 日志收集与过滤,输出给elasticsearch

  • Kibana: 图形化展示

 ELK 下载地址:下载 Elastic 产品 | Elastic

一、ELK概述

1.1 ELK介绍

        ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

        Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。主要负责将日志索引并存储起来,方便业务方检索查询。

         Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。

数据分为:

   1. 结构化数据 如:mysql数据库里的表等
   2. 半结构化数据 如: xml,yaml,json等
   3. 非结构化数据 如:文档,图片,音频,视频等

logstash可以采集任何格式的数据,当然我们这里主要是讨论采集系统日志,服务日志等日志类型数据。 官方产品介绍:Logstash:收集、解析和转换日志 | Elastic

input插件: 用于导入日志源 (==配置必须==) Input plugins | Logstash Reference [8.2] | Elastic filter插件: 用于过滤(==不是配置必须的==) Filter plugins | Logstash Reference [8.2] | Elastic output插件: 用于导出(==配置必须==) Output plugins | Logstash Reference [8.2] | Elastic

Kibana也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

文档路径: Set up | Kibana Guide [8.2] | Elastic

1.2 ELK架构图

这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。 ​ 此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置LogstashElasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

1.3 Logstash工作原理

Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。

Input:输入数据到logstash。

一些常用的输入为

  • file:从文件系统的文件中读取,类似于tial -f命令

  • syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析

  • redis:从redis service中读取

  • beats:从filebeat中读取

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

  • 一些常用的过滤器为:

  • grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。内置120多个解析语法。

  • mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。

  • drop:丢弃一部分events不进行处理。

  • clone:拷贝 event,这个过程中也可以添加或移除字段。

  • geoip:添加地理信息(为前台kibana图形化展示使用)

  • Outputs:outputs是logstash处理管道的最末端组件。一个event可以在处理过程中经过多重输出,但是一旦所有的outputs都执行结束,这个event也就完成生命周期。

一些常见的outputs为

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

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

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

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

  • 一些常见的codecs:

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

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

1.4 Filebeat工作原理

beats是轻量级的日志收集处理工具,Beats占用资源少

目前Beats包含以下工具:

  • Packetbeat: 网络数据(收集网络流量数据)

  • Metricbeat: 指标 (收集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)

  • Filebeat: 文件(收集日志文件数据)

  • Winlogbeat: windows事件日志(收集 Windows 事件日志数据)

  • Auditbeat:审计数据 (收集审计日志)

  • Heartbeat:运行时间监控 (收集系统运行时的数据)

我们这里主要是收集日志信息, 所以只讨论filebeat。

filebeat可以直接将采集的日志数据传输给ES集群(EFK), 也可以给logstash(5044端口接收)。

Filebeat由两个主要组件组成:prospectorsharvesters。这两个组件协同工作将文件变动发送到指定的输出中。

Harvester(收割机):负责读取单个文件内容。 ​ 每个文件会启动一个Harvester,每个Harvester会逐行读取各个文件,并将文件内容发送到制定输出中。Harvester负责打开和关闭文件,意味在Harvester运行的时候,文件描述符处于打开状态,如果文件在收集中被重命名或者被删除,Filebeat会继续读取此文件。所以在Harvester关闭之前,磁盘不会被释放。默认情况filebeat会保持文件打开的状态,直到达到close_inactive(如果此选项开启,filebeat会在指定时间内将不再更新的文件句柄关闭,时间从harvester读取最后一行的时间开始计时。若文件句柄被关闭后,文件发生变化,则会启动一个新的harvester。关闭文件句柄的时间不取决于文件的修改时间,若此参数配置不当,则可能发生日志不实时的情况,由scan_frequency参数决定,默认10s。Harvester使用内部时间戳来记录文件最后被收集的时间。例如:设置5m,则在Harvester读取文件的最后一行之后,开始倒计时5分钟,若5分钟内文件无变化,则关闭文件句柄。默认5m)。

Prospector(勘测者):负责管理Harvester并找到所有读取源。 Prospector会找到/apps/logs/*目录下的所有info.log文件,并为每个文件启动一个Harvester。Prospector会检查每个文件,看Harvester是否已经启动,是否需要启动,或者文件是否可以忽略。若Harvester关闭,只有在文件大小发生变化的时候Prospector才会执行检查。只能检测本地的文件。

Filebeat如何记录文件状态 将文件状态记录在文件中(默认在/var/lib/filebeat/registry)。此状态可以记住Harvester收集文件的偏移量。若连接不上输出设备,如ES等,filebeat会记录发送前的最后一行,并再可以连接的时候继续发送。Filebeat在运行的时候,Prospector状态会被记录在内存中。Filebeat重启的时候,利用registry记录的状态来进行重建,用来还原到重启之前的状态。每个Prospector会为每个找到的文件记录一个状态,对于每个文件,Filebeat存储唯一标识符以检测文件是否先前被收集。

Filebeat如何保证事件至少被输出一次 Filebeat之所以能保证事件至少被传递到配置的输出一次,没有数据丢失,是因为filebeat将每个事件的传递状态保存在文件中。在未得到输出方确认时,filebeat会尝试一直发送,直到得到回应。若filebeat在传输过程中被关闭,则不会再关闭之前确认所有时事件。任何在filebeat关闭之前为确认的时间,都会在filebeat重启之后重新发送。这可确保至少发送一次,但有可能会重复。可通过设置shutdown_timeout 参数来设置关闭之前的等待事件回应的时间(默认禁用)。

二、ELK环境部署

环境准备:

四台机器(内存建议大于1G,比如1.5G; filebeat服务器可为1G) :

1,静态IP(虚拟机的NAT网络类型)

2,主机名及主机名绑定

IPhostappmem
192.168.30.12vm12elasticsearch2G
192.168.30.13vm13elasticsearch2 + logstash2G
192.168.30.14vm14filebeat2G
192.168.30.15vm15kibana2G

3, 关闭防火墙和selinux

systemctl stop firewalld && systemctl disable firewalld 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

4, 时间同步(使用vmware同步主机的功能)

systemctl restart ntpd 
systemctl enable ntpd

2.1 安装Elasticsearch环境

2.1.1 集群部署主要注意以下几个方面

集群配置参数:

discovery.zen.ping.unicast.hosts,Elasticsearch默认使用Zen Discovery来做节点发现机制,推荐使用unicast来做通信方式,在该配置项中列举出Master节点。

discovery.zen.minimum_master_nodes,该参数表示集群中Master节点可工作Master的最小票数,默认值是1。为了提高集群的可用性,避免脑裂现象。官方推荐设置为(N/2)+1,其中N是具有Master资格的节点的数量。

discovery.zen.ping_timeout,表示节点在发现过程中的等待时间,默认值是30秒,可以根据自身网络环境进行调整,一定程度上提供可用性。

集群节点:

节点类型主要包括Master节点和data节点(client节点和ingest节点不讨论)。通过设置两个配置项node.master和node.data为true或false来决定将一个节点分配为什么类型的节点。

尽量将Master节点和Data节点分开,通常Data节点负载较重,需要考虑单独部署。

内存:

Elasticsearch默认设置的内存是1GB,对于任何一个业务部署来说,这个都太小了。通过指定ES_HEAP_SIZE环境变量,可以修改其堆内存大小,服务进程在启动时候会读取这个变量,并相应的设置堆的大小。建议设置系统内存的一半给Elasticsearch,但是不要超过32GB。

硬盘空间:

Elasticsearch默认将数据存储在/var/lib/elasticsearch路径下,随着数据的增长,一定会出现硬盘空间不够用的情形,大环境建议把分布式存储挂载到/var/lib/elasticsearch目录下以方便扩容。

2.1.2 在ES集群所有节点都安装ES

# 在vm12服务器上安装JDK1.8并配置环境变量
## 将JDK解压到opt目录下
tar xf jdk-8u261-linux-x64.tar.gz -C /opt/ 
​
## 创建软链接连接
ln -s /opt/jdk1.8.0_261/bin/* /usr/local/sbin/ 
​
​
## es的安装,配置
export JAVA_HOME=/opt/jdk1.8.0_261/
rpm -ivh elasticsearch-6.5.2.rpm
​
## 两台或两台以上ES做集群, 以下就是两台ES做集群的配置
# vm12节点 
cat /etc/elasticsearch/elasticsearch.yml | grep -v "#" 
# 可以自定义一个集群名称,不配置的话默认会取名为elasticsearch 
cluster.name: elk-cluster 
# 本机IP或主机名 
node.name: vm12 
# 指定为master节点 
node.master: true  
path.data: /var/lib/elasticsearch 
path.logs: /var/log/elasticsearch 
# 打开注释,并修改为监听所有 
network.host: 0.0.0.0 
# 打开注释,监听端口9200 
http.port: 9200 
# 集群所有节点IP 
discovery.zen.ping.unicast.hosts: ["192.168.30.12", "192.168.30.13"]  
​
​
# vm13节点 
cat /etc/elasticsearch/elasticsearch.yml |grep -v "#" 
​
cluster.name: elk-cluster 
node.name: vm13
​
# 指定为非master节点 
node.master: false  
path.data: /var/lib/elasticsearch 
path.logs: /var/log/elasticsearch 
network.host: 0.0.0.0 
http.port: 9200 
discovery.zen.ping.unicast.hosts: ["192.168.30.12", "192.168.30.13"] 
​
## 启动或重启服务
​
## 两台机子启动服务,启动有点慢和卡,稍等1分钟左右,查看到以下端口则表示启动OK 
systemctl start elasticsearch 
systemctl enable elasticsearch 
​
​
# 查看状态
netstat -ntlup |grep java 
tcp6   0   0 :::9200     :::*      LISTEN   5329/java    
tcp6   0   0 :::9300     :::*      LISTEN   5329/java 
#9200则是数据传输端口 
#9300端口是集群通信端口

浏览器访问http://192.168.30.12:9200/cluster/health?pretty

2.2 安装logstash环境

要求:

已经安装好的Elasticsearch集群环境

2.2.1 安装

# 在需要安装logstash服务器上确认安装JDK 1.8
# 在vm13服务器上安装logstash
rpm -ivh logstash-6.5.2.rpm 
​
# 配置logstash主配置文件
cat /etc/logstash/logstash.yml |grep -v '#' | grep -v '^$'
​
path.data: /var/lib/logstash #运行数据存储路径
http.host: "0.0.0.0"         #打开注释,并改为本机IP(这是用于xpack监控用) 
path.logs: /var/log/logstash #日志存储路径
​
# 生成systemctl控制脚本
/usr/share/logstash/bin/system-install
​
# 编辑控制脚本,使其用root用户启动 
vim /etc/systemd/system/logstash.service

2.2.2 启动测试

cd /usr/share/logstash/bin 
# 使用下面的空输入和空输出启动测试一下 
./logstash -e 'input {stdin {}} output {stdout {}}' 
# 运行后,输入字符将被stdout做为标准输出内容输出

看到上图说明启动正常。

测试能启动成功后,ctrl+c取消,则关闭了

2.2.3 日志采集

采集messages日志,这里以/var/log/messages为例,只定义input输入和output输出,不考虑过滤

vim /etc/logstash/conf.d/messages.conf 
input {
  file {
    path => "/var/log/messages"
    start_position => "beginning"
  }
}
output {
  elasticsearch{
    hosts => ["192.168.30.12:9200"]
    index => "test-%{+YYYY.MM.dd}"
  }
}
# 测试配置文件
./logstash --path.settings /etc/logstash/ -f  /etc/logstash/conf.d/messages.conf -t

# 启动logstash,并设置开机自启
systemctl start logstash.service  
systemctl enable logstash.service 
​
# 查看日志运行情况
tail -f /var/log/logstash/logstash-plain.log

http://192.168.30.12:9200/_cat/indices?v

2.3 安装kibana环境

学习目标

  • 能够部署kibana并连接elasticsearch集群

  • 能够通过kibana查看elasticsearch索引信息

2.3.1 kibana部署

# vm14安装kibana
rpm -ivh kibana-6.5.2-x86_64.rpm 
​
# 配置kibana
cat /etc/kibana/kibana.yml |grep -v '#' |grep -v '^$' 
​
​
server.port: 5601                              #端口                     
server.host: "0.0.0.0"                         #监听所有,允许所有人能访问 
elasticsearch.url: "http://192.168.30.12:9200" #ES集群的路径 
logging.dest: /var/log/kibana.log              #这里加了kibana日志,方便排错与调试
​
​
# 日志要自己建立,并修改owner和group属性 
touch /var/log/kibana.log 
chown kibana.kibana /var/log/kibana.log 
​
# 启动kibana服务
systemctl start kibana && systemctl enable kibana 
​
# 通过浏览器访问 http://kibana服务器IP:5601

2.3.2 kibana汉化

#这里要注意:1,要安装python; 2,rpm版的kibana安装目录为/usr/share/kibana/
cd Kibana_Hanization-master
python main.py /usr/share/kibana/
# 汉化完后需要重启
systemctl stop kibana && systemctl start kibana
​
# 再次通过浏览器访问 http://kibana服务器IP:5601

2.3.3 kibana使用

通过kibana查看集群信息

通过kibana查看logstash收集的日志索引

最后点发现查看

通过kibana做可视化图形

2.4 安装filebeat环境

虽然logstash功能很强大,但由于消耗内存等资源太高,如果在要采集的服务上都安装logstash,这样对应用服务器的压力增加。所以我们要用轻量级的采集工具才更高效,更省资源。

2.4.1 filebeat收集日志直接传输给ES集群

# vm14安装filebeat
rpm -ivh filebeat-6.5.2-x86_64.rpm 
​
# 配置filebeat收集日志
cat /etc/filebeat/filebeat.yml |grep -v '#' |grep -v '^$' 
​
filebeat.inputs:
- type: log
 enabled: true          #改为true
 paths:                 #收集的日志路径
  - /var/log/*.log
filebeat.config.modules:
 path: ${path.config}/modules.d/*.yml
 reload.enabled: false
setup.template.settings:
 index.number_of_shards: 3
setup.kibana:
output.elasticsearch:            #输出给es集群
 hosts: ["192.168.30.12:9200"]   #es集群节点ip
processors:
 - add_host_metadata: ~
 - add_cloud_metadata: ~
 
 
# 启动服务
systemctl start filebeat && systemctl enable filebeat 
​
# 验证
​
# 在kibana上验证

2.3.2 filebeat传输给logstash

#在logstash上要重新配置,开放5044端口给filebeat连接
​
vim /etc/logstash/conf.d/filebeat.conf 
​
input {
  beats {
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["192.168.30.12:9200"]
    index =>  "filebeat2-%{+YYYY.MM.dd}"
  }
  stdout {    #再加一个标准输出到屏幕,方便实验环境调试
  }
}
​
# 重启logstash服务
systemctl restart logstash.service 
​
# 配置filebeat收集日志
cat /etc/filebeat/filebeat.yml |grep -v '#' |grep -v '^$' 
​
filebeat.inputs:
- type: log
 enabled: true 改为true
 paths:
  - /var/log/*.log 收集的日志路径
filebeat.config.modules:
 path: ${path.config}/modules.d/*.yml
 reload.enabled: false
setup.template.settings:
 index.number_of_shards: 3
setup.kibana:
output.logstash: # 这两句非常重要,表示日志输出给logstash
 hosts: ["192.168.30.13:5044"] 
processors:
 - add_host_metadata: ~
 - add_cloud_metadata: ~
​
# 启动服务
systemctl restart filebeat 
​
# 在kibana上验证

三、 Filebeat收集nginx日志

1, 在filebeat这台服务器上安装nginx,启动服务。并使用浏览器访问刷新一下,模拟产生一些相应的日志(==强调==: 我们在这里是模拟的实验环境,一定要搞清楚实际情况下是把filebeat安装到nginx服务器上去收集日志)

yum install nginx -y 
systemctl start nginx
systemctl enable nginx

2, 修改filebeat配置文件,并重启服务

cat /etc/filebeat/filebeat.yml |grep -v '#' |grep -v '^$' 
​
filebeat.inputs:
- type: log
 enabled: true
 paths:
  - /var/log/*.log
  #  只在这里加了一句nginx日志路径(按需求自定义即可)
  - /var/log/nginx/access.log 
filebeat.config.modules:
 path: ${path.config}/modules.d/*.yml
 reload.enabled: false
setup.template.settings:
 index.number_of_shards: 3
setup.kibana:
output.logstash:
 hosts: ["192.168.30.13:5044"]
processors:
 - add_host_metadata: ~
 - add_cloud_metadata: ~
 
 
​
systemctl restart filebeat

3, 验证(在kibana上查询)

练习: 尝试收集httpd,mysql日志

实验中易产生的问题总结:

filebeat配置里没有把output.elasticsearch改成output.logstash

filebeat在收集/var/log/*.log日志时,需要对日志进行数据的改变或增加,才会传。

当/var/log/yum.log增加了日志数据会传输,但不会触发配置里的其它日志传输。(每个日志的传输

是独立的)

filebeat收集的日志没有定义索引名称, 我这个实验是在logstash里定义的。(此例我定义的索引名叫

filebeat2-%{+YYYY.MM.dd})

es-head受资源限制可能会关闭了,你在浏览器上验证可能因为缓存问题,看不到变化的结果。

区分索引名和索引模式(index pattern)名

filebeat日志简单过滤

grep -Ev '#|^$' /etc/filebeat/filebeat.yml
​
filebeat.inputs:
- type: log
 enabled: true
 paths:
  - /var/log/yum.log
  - /var/log/nginx/access.log
 include_lines: ['Installed'] #表示收集的日志里有Installed关键字才会收集
filebeat.config.modules:
 path: ${path.config}/modules.d/*.yml
 reload.enabled: false
setup.template.settings:
 index.number_of_shards: 3
setup.kibana:
output.logstash:
 hosts: ["192.168.30.13:5044"]
processors:
 - add_host_metadata: ~
 - add_cloud_metadata: ~
 
​
systemctl restart filebeat
​
# 测试方法:
# 通过 yum install 和 yum remove 产生日志,检验结果
# 结果为:  yum install 安装可以收集, yum remove 卸载的不能收集
# 其它参数可以自行测试
    exclude_lines
    exclude_files

四、Logstach收集交换机日志

1、交换机配置

本次使用HuaWei设备安装

添加:info-center loghost 192.168.30.13,IP地址是logstash服务器,默认是UDP514端口发送数据

2、logstash配置 

1、关闭rsyslog服务,因为这个会占用514端口

systemctl stop rsyslog && systemctl status rsyslog

2、编辑logstash配置文件,根据监听交换机端口区分不通网络设备型号

vim /etc/logstash/conf.d/switch.conf
​
​
input{
    tcp { port => 5002 
    type => "Cisco"}
    udp { port => 514
    type => "HUAWEI"}
    udp { port => 5002
    type => "Cisco"}
    udp { port => 5003
    type => "H3C"}
}
filter {
    if [type] == "Cisco" {
    grok {
    match => { "message" => "<%{BASE10NUM:syslog_pri}>%{NUMBER:log_sequence}: .%{SYSLOGTIMESTAMP:timestamp}: %%{DATA:facility}-%{POSINT:severity}-%{CISCO_REASON:mnemonic}: %{GREEDYDATA:message}" }
    match => { "message" => "<%{BASE10NUM:syslog_pri}>%{NUMBER:log_sequence}: %{SYSLOGTIMESTAMP:timestamp}: %%{DATA:facility}-%{POSINT:severity}-%{CISCO_REASON:mnemonic}: %{GREEDYDATA:message}" }
    add_field => {"severity_code" => "%{severity}"}
    overwrite => ["message"]
    }
}
    elseif [type] == "H3C" {
    grok {
    match => { "message" => "<%{BASE10NUM:syslog_pri}>%{SYSLOGTIMESTAMP:timestamp} %{YEAR:year} %{DATA:hostname} %%%{DATA:vvmodule}/%{POSINT:severity}/%{DATA:digest}: %{GREEDYDATA:message}" }
    remove_field => [ "year" ]
    add_field => {"severity_code" => "%{severity}"}
    overwrite => ["message"]
    }
}
    elseif [type] == "HUAWEI" {
    grok {
       match => { "message" => "<%{BASE10NUM:syslog_pri}>%{SYSLOGTIMESTAMP:timestamp} %{DATA:hostname} %%%{DATA:ddModuleName}/%{POSINT:severity}/%{DATA:Brief}:%{GREEDYDATA:message}"}
       match => { "message" => "<%{BASE10NUM:syslog_pri}>%{SYSLOGTIMESTAMP:timestamp} %{DATA:hostname} %{DATA:ddModuleName}/%{POSINT:severity}/%{DATA:Brief}:%{GREEDYDATA:message}"}
       remove_field => [ "timestamp" ]
    add_field => {"severity_code" => "%{severity}"}
    overwrite => ["message"]
    }
}
#mutate {
#        gsub => [
#        "severity", "0", "Emergency",
#        "severity", "1", "Alert",
#        "severity", "2", "Critical",
#        "severity", "3", "Error",
#        "severity", "4", "Warning",
#        "severity", "5", "Notice",
#        "severity", "6", "Informational",
#        "severity", "7", "Debug"   
#        ]
#    }
}
output{
    stdout {
#将日志输出到当前终端上显示
       codec => rubydebug
}
#同时也发送到elasticsearch
    elasticsearch {
        index =>
        "syslog-%{+YYYY.MM.dd}"
        hosts => ["192.168.23.12:9200"]
    }
}

3、切换到logstash的bin目录,检测配置文件是否有错。显示OK则表示配置文章没有问题

cd /usr/share/logstash/bin/
./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/switch.conf --config.test_and_exit
# Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
# Configuration OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值