Logstash语法常用案例解析(一)

摘要

简述logstash的常用插件,以及简单的使用案例

一:基础运行

建议使用supervisor来管理ELK中的各个组件,方便同一管理

安装 https://www.aolens.cn/?p=809      有讲解

提供一个常用的配置:

[program:logstash]
command=/opt/logstash/bin/logstash -f /opt/logstash/conf/index.conf
numprocs=1 ;开几个进程
dirrectory=/opt/logstash
user=root ;用户
stdout_logfile=/opt/logstash/logs/logstash.log
stdout_logfile_maxbytes=1MB ;每个日志大小
stdout_logfile_backups=10 ;保留10个日志文件
stderr_logfile=/opt/logstash/logs/logstash_err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10

运行参数:

启动logstash服务(常用supervisor守护进程)

./bin/logstash -f /etc/logstash/conf.d/*  -t             #检查配置文件是否ok

./bin/logstash -f  conf.d/nginx.conf -w 5 -l /var/log/logstash/

二:配置语法

1,区域:(section)

Logstash用{}来定义区域。可以在区域中定义多个插件区域,插件区域内可以定义键值对

eg:

input {             # 输入数据
       file {
        path=["/var/log/messages","/var/log/*.log"]
          type="system"
          start_position="beginning"
       }
    }
filter{      # 数据过滤处理
    if[type]=="system"{
    grok{
        match=["message",%{COMBINEDAPACHELOG}]
    }
    }
}
output{      # 数据处理输出
  stdout{
    codec=rubydebug
  }
}

2,数据类型:

string——普通字符串

name => "Hello world"

name => ‘It\‘s a beautiful day‘

array——数组可以是单个或者多个字符串值。

path => [ "/var/log/messages", "/var/log/*.log" ]

path => "/data/mysql/mysql.log"

hash——键值对,注意多个键值对用空格分隔,而不是逗号。

match => {

"field1" => "value1"

"field2" => "value2"

... }

Codec——用来表示数据编码。用于input和output段。便于数据的处理。

codec => "json"

number——必须是有效的数值,浮点数或者整数。

port => 33

boolean——布尔值必须是TRUE或者false。

ssl_enable => true

bytes——指定字节单位。默认是byte。

my_bytes => "1113" # 1113 bytes

my_bytes => "10MiB" # 10485760 bytes

my_bytes => "100kib" # 102400 bytes  Binary (Ki,Mi,Gi,Ti,Pi,Ei,Zi,Yi) 单位1024

my_bytes => "180 mb" # 180000000 bytes  SI (k,M,G,T,P,E,Z,Y) 单位基于1000

password——一个单独的字符串。

my_password => "password"

path——代表有效的操作系统路径。

my_path => "/tmp/logstash"

 3:字段引用

Logstash配置中要使用字段的值,只需要把字段的名字写在中括号[]里。只要是input输入的值,都可以引用

eg:

[geoip][location][-1]

    4,条件判断

表达式支持的操作符

==(等于),!=(不等),<(小于),>(大于),<=(小等),>=(大等)

=~(匹配正则),!~(不匹配正则)

in(包含),not in(不包含)

and(与),or(或),nand(与非),xor(非或)

()(复合表达式),!()(取反复合表达式结果)

    三:常用插件

1,插件管理

./bin/plugin -h

install

uninstall

update

list

eg:

bin/plugin install logstash-output-webhdfs

bin/plugin update logstash-input-tcp

2,常用插件 input,output,filter,codec

2.1 Input插件

stdin:标准输入,常用于测试,

input {
    stdin {
        type = "string"
        tags = ["add"]
        codec="plain"
    }
}

file:从文件系统中读取文件,类似linux下的tail -f。 最常用

input {
    file {
        path = ["/var/log/*.log","/var/log/message"]     # logstash只支持文件的绝对路径
        type = "system"       # type记录文件类型,定义的变量为全局变量,其他插件都可以调用
        start_position = "beginning"
    }
}

redis:从redis服务器读取,同时使用redis channel和redis list。

input{
    redis{    
        data_type="list"    
        key="logstash-nginx"    
        host="192.168.1.250"    
        port=6379    
        db=1    
        threads=5
        }} 将源数据写入redis
output{
    redis{    
        host="192.168.1.250"
        port=6379    
        db=1    
        data_type="list"    
        key="logstash-nginx"
        }}

TCP/UDP: 输入

#nc127.0.0.18888 /var/log/nginx/access.json       # 可以是json文件直接传值
 
#echo‘{"name":"liuziping","age":"18"}‘ |nc127.0.0.18888
 
input {
    tcp {
        port = 8888               # 定义tcp监听端口
        codec="json"               # 规定传入的数据为json格式,k/v结构方便分析
        mode = "server"
    }
}

syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。

input {
    syslog {
        port = "514"
    }
}

beats: 通过Filebeat发送事件。

2.2:Output 插件

stdout:标准输出

output {
    stdout {
        codec = rubydebug
        workers = 2
    }
}

file :保存成文件

output {
    file {
        path = "/path/to/%{+yyyy/MM/dd/HH}/%{host}.log.gz"
        message_format = "%{message}"
        gzip = true
    }
}

elasticsearch:保存进elasticsearch ,也是最为重要的

output {
    elasticsearch {
        hosts => ["192.168.0.2:9200"]      # 或者cluster => “ClusterName“
        index => "logstash-%{type}-%{+YYYY.MM.dd}"     #索引名,统一格式,方便kibana导入,会讲统一类型的日志,全部导入 这里的type=input中的type值
        document_type => "nginx"
        workers => 1                          #启动一个进程
        flush_size => 20000              # 攒够20000 条数据一次性发给ES,默认500条
        idle_flush_time => 10          # 如果10s内没攒够 20000 条也发一次给ES,默认1s
        template_overwrite => true
    }
}

redis:保存到redis中在input插件中已讲解

TCP:输出TCP

output { 
    tcp {
     host = "192.168.0.2"
      port = 8888
      codec = json_lines
      } 
    }

Email:发送邮件

exec:调用命令执行

时间: 2024-10-10 08:07:22

Logstash语法常用案例解析(一)的相关文章

Logstash语法常用案例解析(二)

摘要 此篇主要讲Filter插件,已经对nginx 日志的各种处理实例 接着上篇继续说插件 1,Filter插件 Grok:正则捕获 Date:时间处理 Mutate:数据修改 Geoip:查询归类 JSON:编解码 Grok:解析和结构化任何文本. http://grokdebug.herokuapp.com/patterns#        匹配规则,注意空格,如果空格不匹配也会报错 http://grokdebug.herokuapp.com/                       

最全面 Nginx 入门教程 + 常用配置解析

转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx

SQL Server 连接问题案例解析(1)

SQL Server 连接问题案例解析(1) 转载自:http://blogs.msdn.com/b/apgcdsd/archive/2015/04/27/sql.aspx?CommentPosted=true#commentmessage Microsoft Network Monitor(Netmon)是由微软发布的一款网络协议数据分析工具,利用Netmon可以捕获网络数据并进行查看和分析. 在处理SQL Server 的连接问题时,Netmon常常会起到关键的作用.在本篇博文中,我将为大家

《高性能SQL调优精要与案例解析》一书谈主流关系库SQL调优(SQL TUNING或SQL优化)核心机制之——索引(index)

继<高性能SQL调优精要与案例解析>一书谈SQL调优(SQL TUNING或SQL优化),我们今天就谈谈各主流关系库中,占据SQL调优技术和工作半壁江山的.最重要的核心机制之一——索引(index).我们知道,<高性能SQL调优精要与案例解析>一书中也再三强调索引对SQL调优的重要性,可是上篇文章中也谈到,只看案例和解决问题的具体方法,而不掌握SQL调优的基础知识,是没有用的,我们必须做到知其然,更要知其所以然,才能做到融会贯通,活学活用,进而将SQL调优技术掌握到炉火纯青的地步.

【java设计模式】(6)---迭代器模式(案例解析)

设计模式之迭代器模式 一.java迭代器介绍 1.迭代器接口 在jdk中,与迭代器相关的接口有两个:Iterator 与 Iterable. Iterator:迭代器,Iterator及其子类通常是迭代器本身的结构与方法:迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的.只要拿到 这个对象,使用迭代器就可以遍历这个对象的内部. Iterable:可迭代的,那些想用到迭代器功能的其它类,如AbstractList HashM

JAVASE02-Unit012: Unit07: XML语法 、 XML解析

Unit07: XML语法 . XML解析 emplist.xml <?xml version="1.0" encoding="UTF-8"?> <list> <emp id="1"> <name>张三</name> <age>34</age> <gender>男</gender> <salary>3000</salary

SPSS-相关性和回归分析(一元线性方程)案例解析

任何事物和人都不是以个体存在的,它们都被复杂的关系链所围绕着,具有一定的相关性,也会具备一定的因果关系,(比如:父母和子女,不仅具备相关性,而且还具备因果关系,因为有了父亲和母亲,才有了儿子或女儿),但不是所有相关联的事物都具备因果关系. 下面用SPSS采用回归-线性分析的方式来分析一下:居民总储蓄 和 "居民总消费"情况是否具备相关性,如果具备相关性,那相关关系的密切程度为多少. 下面以"居民总储蓄"和"居民总消费"的调查样本做统计分析,数据如

《Web渗透技术及实战案例解析》pdf

下载地址:网盘下载 内容简介 编辑 本书从Web渗透的专业角度,结合网络安全中的实际案例,图文并茂地再现Web渗透的精彩过程.本书共分7章,由浅入深地介绍和分析了目前网络流行的Web渗透攻击方法和手段,并结合作者多年的网络安全实践经验给出了相对应的安全防范措施,对一些经典案例还给出了经验总结和技巧,通过阅读本书可以快速掌握目前Web渗透的主流技术.本书最大的特色就是实用和实战性强,思维灵活.内容主要包括Web渗透必备技术.Google黑客技术.文件上传渗透技术.SQL注入.高级渗透技术.0day

Oracle存储过程function语法及案例

create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN number IS v_me number; v_mb number; begin if para = 'me' then select nvl(sum(nvl(me, 0)), 0) / 10000 into v_me from sx03_gl_accass t where t.ccode like (c