zoukankan      html  css  js  c++  java
  • 第五章·Logstash深入-日志收集

    1.Logstash收集单个日志到文件中

    file模块收集日志

    不难理解,我们的日志通常都是在日志文件中存储的,所以,当我们在使用INPUT插件时,收集日志,需要使用file模块,从文件中读取日志的内容,那么接下来讲解的是,将日志内容输出到另一个文件中,如此一来,我们可以将日志文件同意目录,方便查找。

    注意:Logstash与其他服务不同,收集日志的配置文件需要我们根据实际情况自己去写。
    前提:需要Logstash对被收集的日志文件有读的,并且对要写入的文件,有写入的权限。

    #进入Logstash配置文件目录下
    [root@elkstack03 ~]# cd /etc/logstash/conf.d/
    #编辑Logstash收集日志的配置文件
    [root@elkstack03 conf.d]# vim message.conf
    #输入插件
    input {
    #文件模块
      file {
    #日志类型
        type => "message-log"
    #日志路径
        path => "/var/log/messages"
    #第一次收集日志从头开始
        start_position => "beginning"
    
      }
    }
    #输出插件
    output {
    #文件模块
      file {
    #输出路径
        path => "/tmp/message_%{+yyyy.MM.dd}.log"
      }
    }
    #检测语法
    [root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf -t
    Configuration OK
    

    结果如下图所示:

    #如果语法没有错,那就可以启动Logstash了,去掉-t,加上&即可
    [root@elkstack03 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf &
    

    启动成功结果如下:


    验证收集数据
    #查看tmp目录下是否生成日志文件
    [root@elkstack03 ~]# ll /tmp/
    总用量 1
    -rw-r--r-- 1 root  root   291 3月  30 22:05 message_2019.03.30.log
    #查看日志内容(日志中就一条)
    [root@elkstack03 ~]# cat /tmp/message_2019.03.30.log
    {"path":"/var/log/messages","@timestamp":"2019-03-30T14:05:35.103Z","@version":"1","host":"0.0.0.0","message":"Mar 26 21:23:02 elkstack03 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1073" x-info="http://www.rsyslog.com"] rsyslogd was HUPed","type":"message-log"}
    #往系统日志中写入数据
    [root@elkstack03 ~]# echo zls_test_message >> /var/log/messages
    #再次查看收集到的日志内容(变成了两条)
    [root@elkstack03 ~]# cat /tmp/message_2019.03.30.log
    {"path":"/var/log/messages","@timestamp":"2019-03-30T14:05:35.103Z","@version":"1","host":"0.0.0.0","message":"Mar 26 21:23:02 elkstack03 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1073" x-info="http://www.rsyslog.com"] rsyslogd was HUPed","type":"message-log"}
    {"path":"/var/log/messages","@timestamp":"2019-03-30T14:07:37.071Z","@version":"1","host":"0.0.0.0","message":"zls_test_message","type":"message-log"}
    

    开启两个窗口实时查看:

    #右边窗口实时查看日志
    [root@elkstack03 ~]# tail -f /tmp/message_2019.03.30.log
    #左边窗口往系统日志中插入数据
    [root@elkstack03 ~]# echo 1 >> /var/log/messages
    [root@elkstack03 ~]# echo 2 >> /var/log/messages
    [root@elkstack03 ~]# echo 3 >> /var/log/messages
    

    结果如下图所示:

    2.Logstash收集多个日志到文件中

    #进入Logstash配置文件目录
    [root@elkstack03 ~]# cd /etc/logstash/conf.d/
    #编辑配置文件
    [root@elkstack03 conf.d]# vim system_log.conf
    #输入插件
    input {
    #文件模块
      file {
    #日志路径
        path => "/var/log/messages"
    #日志类型
        type => "system_log"
    #第一次收集从头收集
        start_position => "beginning"
    #收集日志间隔时间3秒
        stat_interval => "3"
      }
    #文件模块
      file {
    #日志路径
        path => "/var/log/secure"
    #日志类型
        type => "secure_log"
    #第一次收集从头收集
        start_position => "beginning"
    #收集日志间隔时间3秒
        stat_interval => "3"
      }
    }
    #输出插件
    output {
    #判断如果类型是system_log则输出到指定路径
      if [type] == "system_log" {
    #文件模块
        file {
    #日志输出路径
          path => "/tmp/message2_%{+yyyy.MM.dd}.log"
        }}
    #判断如果类型是secure_log则输出到指定路径
      if [type] == "secure_log" {
    #文件模块
        file {
    #日志输出路径
          path => "/tmp/secure_%{+yyyy.MM.dd}.log"
        }}
    }
    #启动Logstash
    [root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system_log.conf &
    

    验证收集数据
    #查看tmp目录是否有新文件
    [root@elkstack03 ~]# ll /tmp/
    总用量 12
    -rw-r--r-- 1 root  root   291 3月  30 22:05 message_2019.03.30.log
    -rw-r--r-- 1 root  root   294 3月  30 23:00 message2_2019.03.30.log
    -rw-r--r-- 1 root  root   286 3月  30 23:00 secure_2019.03.30.log
    #查看新收集的message日志
    [root@elkstack03 ~]# cat /tmp/message2_2019.03.30.log
    {"path":"/var/log/messages","@timestamp":"2019-03-30T15:00:05.454Z","@version":"1","host":"0.0.0.0","message":"test_message","type":"message_log"}
    #查看新收集的secure日志
    [root@elkstack03 ~]# cat /tmp/secure_2019.03.30.log
    {"path":"/var/log/secure","@timestamp":"2019-03-30T15:00:24.216Z","@version":"1","host":"0.0.0.0","message":"test_secure","type":"secure_log"}
    

    开启多个窗口实时查看数据:

    #中间窗口实时追踪message日志
    [root@elkstack03 ~]# tail -f /tmp/message2_2019.03.30.log
    #右边窗口实时追踪secure日志
    [root@elkstack03 ~]# tail -f /tmp/secure_2019.03.30.log
    #往message日志中插入数据
    [root@elkstack03 ~]# echo 1 >> /var/log/messages
    [root@elkstack03 ~]# echo 2 >> /var/log/messages
    [root@elkstack03 ~]# echo 3 >> /var/log/messages
    #往secure日志中插入数据
    [root@elkstack03 ~]# echo 1 >> /var/log/secure
    [root@elkstack03 ~]# echo 2 >> /var/log/secure
    [root@elkstack03 ~]# echo 3 >> /var/log/secure
    

    3.Logstash收集多个日志到Elasticsearch中

    之前讲到Logstash收集多个日志到文件中,实际上,我们将输出源从文件改到Elasticsearch中即可。

    #进入Logstash配置文件目录
    [root@elkstack03 ~]# cd /etc/logstash/conf.d/
    #编辑配置文件
    [root@elkstack03 conf.d]# vim system_es.conf
    #输入插件
    input {
    #文件模块
      file {
    #日志路径
        path => "/var/log/messages"
    #日志类型
        type => "message_log"
    #第一次收集从头收集
        start_position => "beginning"
    #收集日志间隔时间3秒
        stat_interval => "3"
      }
    #文件模块
      file {
    #日志路径
        path => "/var/log/secure"
    #日志类型
        type => "secure_log"
    #第一次收集从头收集
        start_position => "beginning"
    #收集日志间隔时间3秒
        stat_interval => "3"
      }
    }
    #输出插件
    output {
    #判断如果类型是system_log则输出到指定路径
      if [type] == "message_log" {
    #elasticsearch模块
        elasticsearch {
    #es的ip及端口
          hosts => ["10.0.0.51:9200"]
    #es的索引名称,也就是日志名称
          index => "message_log_%{+YYYY.MM.dd}"
        }}
    #判断如果类型是secure_log则输出到指定路径
      if [type] == "secure_log" {
    #es模块
        elasticsearch {
    #es的ip及端口
          hosts => ["10.0.0.51:9200"]
    #es的索引名称,也就是日志名称
          index => "secure_log_%{+YYYY.MM.dd}"
        }}
    }
    #启动Logstash
    [root@elkstack03 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system_es.conf &
    

    启动成功,结果如下:

    打开浏览器,访问:http://10.0.0.51:9100 查看是否有新索引添加

    如果没有查看到新数据,那么可以往日志文件中插入几条测试数据,再刷新页面即可。

    [root@elkstack03 ~]# echo test_message_to_es >> /var/log/messages
    [root@elkstack03 ~]# echo test_secure_to_es >> /var/log/secure
    

    在数据浏览中,我们可以查看到message_log_2019.03.30日志的内容,在message中显示刚才插入的数据:test_message_to_es

    在数据浏览中,我们可以查看到secure_log_2019.03.30日志的内容,在message中显示刚才插入的数据:test_secure_to_es

  • 相关阅读:
    Linux C多线程实现生产者消费者
    数据库视图创建学习
    jsp生成好看的验证码
    每日英语
    ES6学习笔记(一)——let和const
    dataTables的导出Excel功能
    jquery生成二维码图片
    angular2表单初体验
    echarts系列之动态加载数据
    js刷新页面方法
  • 原文地址:https://www.cnblogs.com/Forever-x/p/11325013.html
Copyright © 2011-2022 走看看