• ELK搭建&Logstash 日志收集


    1.ES搭建

    2.搭建 Logstash

    1)安装java环境

    1.上传java包
    2.安装Java环境
    

    2)时间同步

    [root@web01 ~]# ntpdate time1.aliyun.com
    

    3)安装Logstash

    1.上传包
    [root@web01 ~]# rz logstash-6.6.0.rpm
    
    2.安装
    [root@web01 ~]# rpm -ivh logstash-6.6.0.rpm
    
    3.授权
    [root@web01 ~]# chown -R logstash.logstash /usr/share/logstash/
    
    # 启动程序
    /usr/share/logstash/bin/logstash
    

    3.logstash介绍

    1)输入输出插件介绍

    INPUT、OUTPUT插件
    INPUT:插件使Logstash收集指定源的日志
    OUTPUT:插件将事件数据发送到特定的目的地
    
    INPUT支持事件源 OUTPUT支持输出源 CODEC编解码器支持编码
    azure_event_hubs(微软云事件中心) elasticsearch(搜索引擎数据库) avro(数据序列化)
    beats(filebeat日志收集工具) email(邮件) CEF(嵌入式框架)
    elasticsearch(搜索引擎数据库) file(文件) es_bulk(ES中的bulk api)
    file(文件) http(超文本传输协议) Json(数据序列化、格式化)
    generator(生成器) kafka(基于java的消息队列) Json_lines(便于存储结构化)
    heartbeat(高可用软件) rabbitmq(消息队列 OpenStack) line(行)
    http_poller(http api) redis(缓存、消息队列、NoSQL) multiline(多行匹配)
    jdbc(java连接数据库的驱动) s3*(存储) plain(纯文本,事件间无间隔)
    kafka(基于java的消息队列) stdout(标准输出) rubydebug(ruby语法格式)
    rabbitmq(消息队列 OpenStack) tcp(传输控制协议)
    redis(缓存、消息队列、NoSQL) udp(用户数据报协议)
    s3*(存储)
    stdin(标准输入)
    syslog(系统日志)
    tcp(传输控制协议)
    udp(用户数据报协议)

    2)Logstash输入输出测试

    # 配置环境变量
    [root@web01 ~]# vim /etc/profile.d/logstash.sh
    export PATH=/usr/share/logstash/bin/:$PATH
    
    # 收集标准输入到标准输出测试
    [root@web01 ~]# logstash -e 'input { stdin {} } output { stdout {} }'
    
    # 测试输入
    123456
    {
    	#时间戳
        "@timestamp" => 2020-08-13T01:34:24.430Z,
        	  #主机
              "host" => "web01",
          #版本
          "@version" => "1",
           #内容
           "message" => "123456"
    }
    
    # 收集标准输入到标准输出指定格式
    [root@web01 ~]# logstash -e 'input { stdin {} } output { stdout { codec => rubydebug } }'
    123456
    {
           "message" => "123456",
          "@version" => "1",
        "@timestamp" => 2020-08-13T01:39:40.837Z,
              "host" => "web01"
    }
    

    3)Logstash收集标准输入到文件

    # 收集标准输入到文件
    [root@web01 ~]# logstash -e 'input { stdin {} } output { file { path => "/tmp/test.txt" } }'
    
    # 收集标准输入到文件
    [root@web01 ~]# logstash -e 'input { stdin {} } output { file { path => "/tmp/test_%{+YYYY-MM-dd}.txt" } }'
    

    4)Logstash收集标准输入到ES

    # 收集标准输入到ES
    [root@web01 ~]# logstash -e 'input { stdin {} } output { elasticsearch { hosts => ["10.0.0.51:9200"] index => "test_%{+YYYY-MM-dd}" } }'
    
    # 随便输入些内容
    
    # 查看页面
    

    4.Logstash使用

    Logstash是一个开源的数据收集引擎,可以水平伸缩,而且logstash整个ELK当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一输出到指定的且可以是多个不同目的地。
    

    1.logstash的配置文件

    # 默认的配置文件
    /etc/logstash/logstash.yml
    
    #一般不使用,只有用system管理时才使用
    

    2.收集文件中的日志到文件
    1)配置

    [root@web01 ~]# vim /etc/logstash/conf.d/message_file.conf
    input {
      file {
        path => "/var/log/messages"
        start_position => "beginning"
      }
    }
    output {
      file {
        path => "/tmp/message_file_%{+YYYY-MM-dd}.log"
      }
    }
    

    2)启动

    # 检测配置
    [root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf -t
    
    # 启动
    [root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf
    

    3)查看是否生成文件

    [root@web01 tmp]# ll
    total 4
    -rw-r--r-- 1 root root 1050 Aug 13 11:24 message_file_2020-08-13.log
    

    5.收集文件中的日志到ES

    1)配置

    [root@web01 ~]# vim /etc/logstash/conf.d/message_es.conf
    input {
      file {
        path => "/var/log/messages"
        start_position => "beginning"
      }
    }
    output {
      elasticsearch {
        hosts => ["10.0.0.51:9200","10.0.0.52:9200","10.0.0.53:9200"]
        index => "message_es_%{+YYYY-MM-dd}"
      }
    }
    

    2)启动

    [root@web01 ~]# logstash -f /etc/logstash/conf.d/message_es.conf
    

    3)查看页面

    6.启动多个logstash收集日志

    1)创建多个数据目录

    [root@web01 ~]# mkdir /data/logstash/{message_file,message_es} -p
    
    # 授权
    [root@web01 ~]# chown -R logstash.logstash /data/
    

    2)启动时指定数据目录

    [root@web01 ~]# logstash -f /etc/logstash/conf.d/message_es.conf --path.data=/data/logstash/message_es &
    [1] 18693
    [root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf --path.data=/data/logstash/message_file &
    [2] 18747
    

    3)验证

    查看文件和ES页面
    

    7.一个logstash收集多个日志

    [root@web01 ~]# vim /etc/logstash/conf.d/more_file.conf
    
    input {
      file {
        type => "messages_log"
        path => "/var/log/messages"
        start_position => "beginning"
      }
      file {
        type => "secure_log"
        path => "/var/log/secure"
        start_position => "beginning"
      }
    }
    output {
      if [type] == "messages_log" {
        file {
          path => "/tmp/messages_%{+YYYY-MM-dd}"
        }
      }
      if [type] == "secure_log" {
        file {
          path => "/tmp/secure_%{+YYYY-MM-dd}"
        }
      }
    }
    # 如果资源充足,可以使用多实例收集多日志,如果服务器资源不足,启动不了多实例,配置一个文件收集多日志启动
    
  • 相关阅读:
    《C和指针》读书笔记——第一章 快速上手
    《C和指针》读书笔记——第三章 数据
    Linux下简易蜂鸣器驱动代码及测试实例
    Linux下GPIO驱动(五) misc_register();
    Linux下实现流水灯等功能的LED驱动代码及测试实例
    Linux下GPIO驱动(四) gpio_request();gpio_free();
    支持阻塞操作和轮询操作的globalfifo设备驱动代码分析以及测试代码
    基于等待队列及poll机制的按键驱动代码分析和测试代码
    Linux下GPIO驱动(一) 一个简单的LED驱动
    虚拟内存设备驱动memdev及实例代码
  • 原文地址:https://www.cnblogs.com/Applogize/p/13520157.html
Copyright © 2020-2023  润新知