• logstash


    装logstash(使用yum安装)

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

    添加此文件和内容

    vim /etc/yum.repos.d/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

    3.安装logstash

    yum install -y logstash

    4.程序启动文件位置

    /usr/share/logstash/bin/logstash

    5.建立软连接到环境变量位置,方便日后使用

    ln -s /usr/share/logstash/bin/logstash /usr/local/bin/logstash
    

      

    1.创建文件夹 推荐这种方式安装

    mkdir /usr/local/logstash
    cd /usr/local/logstash

    2.下载包 https://www.elastic.co/cn/downloads/past-releases 包下载地址 下载logstash-oss版本

    wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.7.0.tar.gz

    3.解压

    tar -zxvf logstash-oss-7.7.0.tar.gz

    4.配置环境变量

    vim /etc/profile source /etc/profile
    export PATH=$PATH:/usr/local/logstash/logstash-7.7.0/bin

    5.修改配置文件

    vim /usr/local/logstash/logstash-7.7.0/config/logstash.yml
    node.name # 节点名称 方便识别
    path.data # 持久化存储数据的文件夹,默认是logstash home目录下的data
    path.config # 设定pipeline配置文件目录
    path.log # 设定pipeline日志文件目录
    pipeline.workers # 设定pipeline的线程数
    pipeline.batch.size/delay # 设定批量处理数据的数目和延迟
    queue.type # 设定队列类型默认是memory 改成queue.type:persisted
    queue.max_dytes # 队列总容量 默认是1024mb 改成queue.max_dytes:4096mb

    6.简单使用

    执行如下命令,进行快速测试(标准输入–> 标准输出)
    logstash -e 'input {stdin{}} output {stdout{}}'

    7.logstash常用参数

    -e :指定logstash的配置信息,可以用于快速测试;
    -f :指定logstash的配置文件;可以用于生产环境;
    
    logstash 多实例运行方式
    logstash --path.setting instance1 # instance1是cp /usr/local/logstash/logstash-7.7.0/config /usr/local/logstash/logstash-7.7.0/instance1 打开instance1/logstash.yml 修改node.name和path.data和path.config 保证不一样
    logstash --path.setting instance2
    不同的instance中修改longstash.yml,自定义path.data 确保其不同即可

    8.一个实例多个配置文件

    logstash -f /usr/local/logstash/config/conf -r  # /usr/local/logstash/config/conf:是放置配置文件的路径,启动时候制定路径就可以
    我们可以把多个配置文件放到/usr/local/logstash/config/conf路径中
    cp ck-logstash.conf /usr/local/logstash/config/conf
    cp ck-logstash_yun.conf /usr/local/logstash/config/conf

    pipeline配置语法

    1.数据类型

    boolean
        - isFailed => true
    数值型
        - port => 33
    字符串
        - name => "hello world"
    数组
        path => ["/root", "/home"]
    哈希
        match => {
        'field1' => "value1"
        'field2' => "value2"
        }
    注释
        # this is a comment # 表示注释
    

    2.在配置中引用logstash event的属性

    直接应用
        if[request]   # 使用[]
    字符串sprintf方式
        "request is %{request}"  # 使用 %{}
    

    3.if

    if true{
    .....
    }else if true{
    .....
    }else{
    .....
    }
    

    4.表达式  

    ==, !=, <, >, <=, >=  # 比较
    =~, !~,  # 正则是否匹配
    in, not in  #  包含或者不包含
    and, or , nand, xor, !  # 布尔操作符
    {}  # 分组操作符
    

    5.imput plugin

    input 插件是指定数据输入源,-个pileline可以有多个input插件
    stdin   # 标准标准输入,就是在命令行上输入
        Codec # 类型为codec
        type # 类型为string,自定义改事情类型,可用于后续判断
        tags  # 类型为array,自定义该事件tag,可用于后续判断
        add_field  # 类型为hash,为该事件添加字段
    file
        path  # 类型是数组,指明读取文件的路径基于glob匹配 path => ["/var/log/**/*.log"]
        exclue  # 类型为数组排除不行监听的文件规则,基于glob匹配语法 exclue => "*.gz"
        sincedb_path  # 类型为字符串,记录sincedb文件路径
        start_postion  # 类型为字符串,beginning or end,是否从头读取文件beginning:从头开始读  end:当前开启的时候开始读
            start_position => "beginning"  # 从头读取,记录会存在sincedb中: 下次启动也以前读过的数据不会在重复读取
            可以删除sincedb文件 让重启的时候从头开始读取
                find / -name .sincedb_*  查找  然后删除查找出来的文件
                    /usr/local/logstash/logstash-7.7.0/data/plugins/inputs/file/.sincedb_32d545544e69851bf16f654e4bdeec4a
                    /usr/local/logstash/logstash-7.7.0/data/plugins/inputs/file/.sincedb_6186b45d486441e4a13c8fc65c76d586
            sincedb_path => "/dev/null"   # 配合调试使用 加上 start_position => "beginning" 每次重启读会从头读取一遍
        start_interval # 类型为数值,单位是秒,定时检查文件是否有更新,默认是1秒
        discover_interval # 类型为数值,单位是秒,定时检查是否有新文件呆读取,默认是16秒
        ignore_older  # 类型是数组,单位是秒,扫描文件列表,如果该文件上次更改时间超过设定时长,则不做处理,单依然会健康是否有新内容,默认关闭
        close_older  # 类型是位置,单位是秒,如果监听的文件在超过该设定的时候没有新的内容.会被关闭文件句柄,释放资源,单依然会监控释放有新内容,默认是3600秒,即一个小时
        glob 匹配语法
            * # 匹配任意字符,
            **  # 递归匹配之目录  /var/log/**/*.log  匹配/var/log目录及纸目录下的所有log文件
            ?  # 匹配单一字符
            []  # 匹配多个字符 [a-z]
            {}   # 匹配多个单纯 {"a", "b", "b"}
              # 转义字符
    kafka
        kafka是最流行的消息队列,也是elastic stack架构中常用的,使用相对简单
        input{
            kafka{
                zk_connect => "kafka:2181"   # 连接地址
                group_id => "logstash"
                topic_id = > "apache_logs"
                consumer_threads => 16   # 线程
            }
        }

    6.codec plugin

    codec plugin 作用于input和output plugin,负责将数据在原始与logstash event之间转换,创建的codec有
    plain  # 读取原始内容
    dots  # 将内容简化为点进行输出
    rubydedug  # 将logstash events 安装ruby格式输出,方便调试
    line  # 处理带换行符的内容
    json  # 处理json格式数据
    nultiline  # 处理多行数据内容
    

    7.filter plugin

    filter是logstash功能强大的主要原因,它可以对logstash event进行丰富的处理,比如解析数据,删除字段,类型转换等等,常见有如下几个
    data 日期解析
    grok 正则匹配解析
    dissect 分隔符解析
    mutate 对字段处理,比如重命名,删除,替换
    json 安装json解析字段内容到制定字段中
    geoip 增加地理位置数据
    ruby 利用ruby代码来动态修改logstash event
    

    8.Output plugin

    负责将logstash event输出,创建的创建如下
    stdout # 标准输出
    file  # 输出到文件
    elasticsearch
    

    9.建设阶段建议大家使用如下配置

    http 作为input,方便输入测试数据,并且可以结合reload特征(stdin无法reload)
    stdout做output,codec使用rubydebug,及时查看解析结果
    测试错误输入情况下输出,以便对错误情况进行处理
    input{http{port=>7474}}
    filter{}
    output{stdout{codec=>rubydebug}}
    

      

  • 相关阅读:
    Deepin v20 beta更新后没有无线网卡
    Java操作Poi--word图表中颜色的设置
    IDEA配置之CopyRight
    Oracle——日期函数,时间操作(汇总)
    IDEA插件之alibaba编程规范
    IDEA插件之PMD
    IDEA插件之CheckStyle
    IDEA插件之FindBugs
    小计--------flume 自定义kafka source 案例
    记一次--------phoenix创建表映射到hbase报错
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/12911333.html
Copyright © 2020-2023  润新知