美文网首页
Logstash__基础知识

Logstash__基础知识

作者: 互联网中的一个咸鱼 | 来源:发表于2019-11-23 17:48 被阅读0次

摘自

1、安装

建议直接从ela官网安装
安装链接
这里我用的是yum安装

下载并安装公共密钥:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

例如,将以下内容添加到/etc/yum.repos.d/目录中的带.repo后缀的文件中logstash.repo

[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装

sudo yum install logstash

2、使用简单的logstash示例

进入logstash容器,默认是logstash用户,如何进入root用户?

exec进入容器并切换用户的命令

docker exec -it --user root logstash bash

在终端中,像下面这样运行命令来启动 Logstash 进程:

# logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
结果
{
       "message" => "Hello World",
      "@version" => "1",
    "@timestamp" => "2014-08-07T10:30:59.937Z",
          "host" => "raochenlindeMacBook-Air.local",
}
  • message: 存储的真实信息
  • timestamp 时间戳 代表事件发生的时间
  • host: 标记事件发生在哪里

解释

Logstash 就像管道符一样!

你输入(就像命令行的 cat )数据,然后处理过滤(就像 awk 或者 uniq 之类)数据,最后输出(就像 tee )到其他地方。

当然实际上,Logstash 是用不同的线程来实现这些的。如果你运行 top 命令然后按下 H 键,你就可以看到下面这样的输出:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                          
21401 root      16   0 1249m 303m  10m S 18.6  0.2 866:25.46 |worker                           
21467 root      15   0 1249m 303m  10m S  3.7  0.2 129:25.59 >elasticsearch.                   
21468 root      15   0 1249m 303m  10m S  3.7  0.2 128:53.39 >elasticsearch.                   
21400 root      15   0 1249m 303m  10m S  2.7  0.2 108:35.80 <file                             
21403 root      15   0 1249m 303m  10m S  1.3  0.2  49:31.89 >output                           
21470 root      15   0 1249m 303m  10m S  1.0  0.2  56:24.24 >elasticsearch.

小贴士:logstash 很温馨的给每个线程都取了名字,输入的叫xx,过滤的叫|xx

数据在线程之间以 事件 的形式流传。不要叫,因为 logstash 可以处理多行事件

小贴士:每个 logstash 过滤插件,都会有四个方法叫 add_tag, remove_tag, add_fieldremove_field。它们在插件过滤匹配成功时生效。

remove_field是使用频次最多的

logstash长期运行

完成上一节的初次运行后,你肯定会发现一点:一旦你按下 Ctrl+C,停下标准输入输出,logstash 进程也就随之停止了。作为一个肯定要长期运行的程序,应该怎么处理呢?

这里介绍的是以守护进程方式运行
对于需要长期后台运行的大量程序(注意大量,如果就一个进程,还是学习一下怎么写 init 脚本吧),推荐大家使用一款 daemontools 工具。

daemontools 是一个软件名称,不过配置略复杂。所以这里我其实是用其名称来指代整个同类产品,包括但不限于 python 实现的 supervisord,perl 实现的 ubic,ruby 实现的 god 等。

安装

yum -y install python-setuptools
easy_install supervisor
supervisord -v  # 默认安装最新版本

生成默认的配置文件

echo_supervisord_conf > /etc/supervisord.conf

继续编写配置文件

[program:elkpro_1]
environment=LS_HEAP_SIZE=5000m
#directory=/usr/share/logstash/bin/logstash
command=logstash -f /usr/share/logstash/pipeline/logstash.conf
# 这是要启动的程序

启动程序

supervisord -c /etc/supervisord.conf

查看程序启动的情况

supervisorctl

logstash 会以 supervisord 子进程的身份运行,你还可以使用 supervisorctl 命令,单独控制一系列 logstash 子进程中某一个进程的启停操作:

supervisorctl stop elkpro_1

logstash的配置语法

区段

Logstash 用 {} 来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。示例如下:

input {
    stdin {}
    syslog {}
}
数据类型

Logstash 支持少量的数据值类型:

  • bool
debug => true
  • string
host => "hostname"
  • number
port => 514
  • array
match => ["datetime", "UNIX", "ISO8601"]
  • hash
options => {
    key1 => "value1",
    key2 => "value2"
}

注意:如果你用的版本低于 1.2.0,哈希的语法跟数组是一样的,像下面这样写:

match => [ "field1", "pattern1", "field2", "pattern2" ]

字段引用

字段是 Logstash::Event 对象的属性。我们之前提过事件就像一个哈希一样,所以你可以想象字段就像一个键值对。

小贴士:我们叫它字段,因为 Elasticsearch 里是这么叫的。

如果你想在 Logstash 配置中使用字段的值,只需要把字段的名字写在中括号 [] 里就行了,这就叫字段引用。

对于 嵌套字段(也就是多维哈希表,或者叫哈希的哈希),每层的字段名都写在 [] 里就可以了。比如,你可以从 geoip 里这样获取 longitude 值(是的,这是个笨办法,实际上有单独的字段专门存这个数据的):

[geoip][location][0]

条件判断(condition)

表达式支持下面这些操作符:

  • equality, etc: ==, !=, <, >, <=, >=
  • regexp: =~, !~
  • inclusion: in, not in
  • boolean: and, or, nand, xor
  • unary: !()
    通常来说,你都会在表达式里用到字段引用。比如:
if "_grokparsefailure" not in [tags] {
} else if [status] !~ /^2\d\d/ and [url] == "/noc.gif" {
} else {
}

命令行参数

  • -e
    意即执行。我们在 "Hello World" 的时候已经用过这个参数了。事实上你可以不写任何具体配置,直接运行 bin/logstash -e '' 达到相同效果。这个参数的默认值是下面这样:
input {
    stdin { }
}
output {
    stdout { }
}
  • --config 或 -f
    意即文件。真实运用中,我们会写很长的配置,甚至可能超过 shell 所能支持的 1024 个字符长度。所以我们必把配置固化到文件里,然后通过 bin/logstash -f agent.conf 这样的形式来运行。

  • --configtest 或 -t
    意即测试。用来测试 Logstash 读取到的配置文件语法是否能正常解析

  • --log 或 -l
    意即日志。Logstash 默认输出日志到标准错误。生产环境下你可以通过 bin/logstash -l logs/logstash.log 命令来统一存储日志。

  • --filterworkers 或 -w
    意即工作线程。Logstash 会运行多个线程。你可以用 bin/logstash -w 5 这样的方式强制 Logstash 为过滤插件运行 5 个线程。

相关文章

  • Logstash__基础知识

    摘自 1、安装 建议直接从ela官网安装安装链接这里我用的是yum安装 下载并安装公共密钥: 例如,将以下内容添加...

  • 音频基础知识02

     音频基础知识 01  音频基础知识 02  音频基础知识 03  音频基础知识 04 人类收集声音的历史   为...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • C语言回顾

    基础知识 控制流 基础知识补充 其他主题

  • PHP面试知识脉络(更新中)

    PHP基础知识Javascript、jQuery、ajax基础知识Linux基础知识MySQL数据库的基础与优化程...

  • p2p理财基础知识

    p2p理财基础知识 p2p理财基础知识 p2p理财基础知识

  • 学习Vue框架之前,要有JavaScript的知识储备

    前端三剑客知识储备(有关前端的专题) ☑ HTML基础知识 ☑ CSS基础知识 ☑ JavaScript5基础知识...

  • angular笔记

    第一部分、基础知识--------------------------基础知识------------------...

  • 【学习】其他框架

    Zookeeper Zookeeper基础知识Zookeeper综合知识 HDFS HDFS基础知识 NoSQl ...

网友评论

      本文标题:Logstash__基础知识

      本文链接:https://www.haomeiwen.com/subject/ilocwctx.html