• ELK之logstash


    1、概述

    logstash是有java语言写的,所以程序占用系统资源比较多。但是支持grok正则,这是特别强大的。

    2、安装

    参考:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

    yum安装:

    #rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    #cat /etc/yum.repos.d/logstash.repo
    [logstash-6.x]
    name=Elastic repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md

    #yum install logstash

    3、配置文件
    # cat logstash.conf

    input {
     beats {
      port => "5044"
     }
    }

    filter {
    if 'backend' in [tags] {
    json {
    source => "message"
    }
    }

    if 'api' in [tags] {
    grok {
    patterns_dir => "/etc/logstash/patters.d"
    match => { "message" => "%{NGINXACCESS1}" }
    }
    kv {
    source => "params"
    field_split => "&?"
    value_split => "="
    include_keys => [ "token","user" ]
    }
    }
    if 'access' in [tags] {
    grok {
    patterns_dir => "/etc/logstash/patters.d"
    match =>{ "message" => "%{NGINXACCESS}"
    }
    }
    kv {
    source => "params"
    field_split => "&?"
    value_split => "="
    include_keys => [ "token","user" ]
    }
    }

     if [host] =~ '^db' {
        grok {
         match => ["message","%{TIMESTAMP_ISO8601:timestamp}s+%{MONGO3_SEVERITY:severity}s+%{MONGO3_COMPONENT:component}s+(?:[%{DATA:context}])?s+%{GREEDYDATA:body}"]

        }
     }
    }

    ## Add your filters / logstash plugins configuration here

    output {
     if 'backend' in [tags] {
       elasticsearch {
              hosts => "elasticsearch:9200"
              user => "elastic"
              index => "logstash-backend-%{+YYYY-MM-dd}"
              password => "hqXrH"
       }
      
        #stdout { codec => rubydebug }
     }

     if 'api' in [tags] {
       elasticsearch {
              hosts => "elasticsearch:9200"
              user => "elastic"
              index => "loadbalance-api-%{+YYYY-MM-dd}"
              password => "hqXrH"
       }
     }

     if [host] =~ '^db' {
       elasticsearch {
              hosts => "elasticsearch:9200"
              user => "elastic"
              index => "logstash-mongodb-%{+YYYY-MM-dd}"
              password => "hqXrH"
       }
     }
    }

     #cat nginx

    HOSTPORT1 (%{IPV4}:%{POSINT}[, ]{0,2})+
    NGINXACCESS %{IPORHOST:http_host} %{IPORHOST:server_addr} %{IPORHOST:remote_addr} [%{HTTPDATE:time_local}] "%{WORD:method} %{URIPATH:uri}?%{NOTSPACE:params} HTTP/%{NUMBER:http_version}" %{NOTSPACE:request_body|-} %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent} %{NUMBER:request_time:float} %{NUMBER:upstream_response_time:float} %{HOSTPORT1:upstream_addr}

    4、启动服务

    service  logstash start

    5、logstash处理时区、类型转换、删除字段

    filter{

    #去除换行符

    mutate{

    gsub => ["message", " ", ""]

    }

    #逗号分隔

    mutate{

    split => ["message",","]

    }

    #分割后字段命名与赋值

    mutate{

    add_field => {

      "domain" => "%{[message][0]}"

          "create_time" => "%{[message][2]}"

    }

    }

    #字段里面的日期识别以及时区转换,生成date

    mutate{

         match => ["create_time","MM/dd/yyyy HH:mm:ss"]

         target => "date"

         local => "en"

         timezone => "+00:00"

    }

    #删除无用的字段

    mutate{

    remove_field => "meaasge"

    }

    #转换字段类型

    mutate{

    convert => {"size" => "integer"}

    }

    }

    output{

    elastisearch {

      host => ["host1","host2"]

      protocol => "http"

      index => "logstash-mongodb-%{+YYYY-MM-dd}"

    }

    }

  • 相关阅读:
    C#使用DataSet Datatable更新数据库的三种实现方法
    WIN10 安装不了NET3.5
    Linux和Windows下ping命令详解(转:http://linux.chinaitlab.com/command/829332.html)
    ALLOCATE语句分配FORTRAN动态数组方法(转自http://blog.csdn.net/zhuxianjianqi/article/details/8067174)
    gfortran、g77等编译器中使用多个文件
    gfortran编译Fortran数组问题
    GRUB学习笔记(转自http://www.cnblogs.com/evilzy/archive/2008/03/30/1130173.html)
    ubuntu下gcc、g++和gfortran版本切换
    Beta冲刺Day1
    Beta冲刺预备
  • 原文地址:https://www.cnblogs.com/cuishuai/p/8066450.html
Copyright © 2020-2023  润新知