ELK收集日志之logstash使用

一、logstash使用

1.logstah收集文件日志

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

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

2.配置logstash

#默认配置文件
[root@logstash ~]# vim /etc/logstash/logstash.yml
#启动logstash回去读取conf.d下面的配置文件
path.config: /etc/logstash/conf.d

3.配置logstash收集文件日志到文件

1)配置

[root@logstash ~]# vim /etc/logstash/conf.d/message.conf
input {
  file {
    path => "/var/log/messages"
    start_position => "beginning"
  }
}

output {
  file {
    path => "/tmp/message_%{+YYYY.MM.dd}.log"
  }
}

2)启动logstash

#先检查语法
[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf -t

#启动
[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf &

3)查看新文件内容

[root@logstash ~]# tail /var/log/messages
Jul 17 15:01:01 logstash systemd: Started Session 448 of user root.

Jul 17 15:05:01 logstash systemd: Started Session 449 of user root.

[root@logstash ~]# tail /tmp/message_2020.07.17.log
{"@version":"1","path":"/var/log/messages","message":"Jul 17 15:01:01 logstash systemd: Started Session 448 of user root.","@timestamp":"2020-07-17T07:05:42.341Z","host":"logstash"}
{"@version":"1","path":"/var/log/messages","message":"Jul 17 15:05:01 logstash systemd: Started Session 449 of user root.","@timestamp":"2020-07-17T07:05:42.341Z","host":"logstash"}

4.配置收集日志到ES

1)配置

[root@logstash tmp]# 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"]
    index => "messages_%{+YYYY-MM-dd}.log"
  }
}

2)启动logstash

#先检查语法
[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf -t

#启动
[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf &

启动多个logstash进程需要配置多个data目录,否则会出现这样的报错

[ERROR] 2020-07-20 11:59:22.363 [LogStash::Runner] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

5.启动logsstash多实例

1)创建多实例数据目录

[root@logstash ~]# mkdir /data/logstash/{message_file,secure_file} -p
#授权目录logstash权限
[root@logstash ~]# chown -R logstash.logstash /data/logstash/

2)启动多实例

#启动多实例要加一个参数 --path.data 指定多实例不同的数据目录

[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message_es.conf --path.data=/data/logstash/message_file &

[root@logstash tmp]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/secure_es.conf --path.data=/data/logstash/secure_file &

6.单个进程收集多个日志

1)停掉原来的进程删掉索引

2)配置方式一:

[root@logstash ~]# vim /etc/logstash/conf.d/double_es.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" {
    elasticsearch {
      hosts => ["10.0.0.51:9200"]
      index => "messages_%{+YYYY-MM-dd}.log"
    }
  }
  if [type] == "secure_log" {
    elasticsearch {
      hosts => ["10.0.0.51:9200"]
      index => "secure_%{+YYYY-MM-dd}.log"
    }
  }
}

3)配置方式二:

[root@logstash ~]# vim /etc/logstash/conf.d/doubles_es.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 {
  elasticsearch {
    hosts => ["10.0.0.51:9200"]
    index => "%{type}_%{+YYYY-MM-dd}.log"
  }
}

4)启动

[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/doubles_es.conf

二、收集tomcat日志

1.安装tomcat

#上传包
#安装java环境
#解压包
[root@logstash ~]# tar xf apache-tomcat-9.0.30.tar.gz
#移动并做软连接
[root@logstash ~]# mv apache-tomcat-9.0.30 /usr/local/
[root@logstash ~]# ln -s /usr/local/apache-tomcat-9.0.30 /usr/local/tomcat

2.启动tomcat

#配置一个页面
[root@logstash ~]# echo "test logstash log" > /usr/local/tomcat/webapps/ROOT/index.html

#启动
[root@logstash ~]# /usr/local/tomcat/bin/startup.sh

[root@logstash ~]# netstat -lntp
tcp6       0      0 :::8080                 :::*                    LISTEN      84967/java

3.配置logstash收集tomcat日志

[root@logstash ~]# vim /etc/logstash/conf.d/tomcat_es.conf
input {
  file {
    path => "/usr/local/tomcat/logs/catalina.*.log"  #input 插件不识别变量,日志只收集当天的,以前的日志文件第二天之后不会再写入,所以这里用* 就可以收集每天的日志。
    start_position => "beginning"
  }
}

output {
  elasticsearch {
    hosts => ["10.0.0.51:9200"]
    index => "tomcat_%{+YYYY-MM-dd}.log"
  }
}

[root@logstash ~]# vim /etc/logstash/conf.d/tomcat_access_es.conf
input {
  file {
    path => "/usr/local/tomcat/logs/localhost_access_log.*.txt"
    start_position => "beginning"
  }
}

output {
  elasticsearch {
    hosts => ["10.0.0.51:9200"]
    index => "tomcat_access_%{+YYYY-MM-dd}.log"
  }
}

4.启动

[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat_access_es.conf

5.收集tomcat错误日志

1)概念

当收集tomcat错误日志时,一条报错可能是很多行,收集到以后时很多条数据,查看时比较麻烦

#解决方式
1.跟开发协商,将tomcat日志格式改为json格式,直接收集即可
2.通过logstash的模块将日志合并

2)方式一:

#进入tomcat配置文件目录
[root@elkstack03 ~]# cd /usr/local/tomcat/conf
#编辑server配置文件
[root@elkstack03 conf]# vim server.xml
#在138行,添加如下内容

3)方式二:

[root@logstash ~]# vim /etc/logstash/conf.d/tomcat_mutiline_es.conf
input {
  file {
    type => "java_log"
    path => "/usr/local/tomcat/logs/localhost_access_log.*.txt"
    start_position => "beginning"
    codec => multiline {
      pattern => "^\["
      negate => true
      what => "previous"
    }
  }
}
output {
  elasticsearch {
    hosts => ["10.0.0.51:9200"]
    index => "tomcat_mutiline_%{+YYYY-MM-dd}.log"
  }
}

#注释:
[root@elkstack03 ~]# vim /etc/logstash/conf.d/java.conf
input {
        stdin {
        codec => multiline {
#当遇到[开头的行时候将多行进行合并
        pattern => "^\["
#true为匹配成功进行操作,false为不成功进行操作
        negate => true
#与上面的行合并,如果是下面的行合并就是next
        what => "previous"
        }}
}
output {
        stdout {
        codec => rubydebug
        }
}

Original: https://www.cnblogs.com/zbzSH/p/15727583.html
Author: zbzSH
Title: ELK收集日志之logstash使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611398/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • zabbix监控配置流程

    1.0 zabbix监控配置流程详细 管理角度: 开发 由开发人员提供监控指标来监控 运营 让其找开发要监控指标 运维 直接加 配置角度: 创建主机 创建主机组并加入主机 添加监控…

    Linux 2023年6月7日
    094
  • SQLI-LABS(Less-1)

    Less-1(GET-Error-Single quotes-String) 打开Less-1页面,可以看到页面中间有一句 Please input the ID as param…

    Linux 2023年6月6日
    087
  • shell md5sum

    md5sum out.a echo “fd_limit=$(ulimit -n), fd_used=$(ll /proc/4741/fd | wc -l)”…

    Linux 2023年5月28日
    089
  • Android下获取FPS的几种方法

    FPS(Frames Per Second)是关乎Android用户体验最为重要的指标之一,而在VR中更是如此。为了评估VR系统、VR SDK及Unity应用的性能,通常会实时获取…

    Linux 2023年6月7日
    0100
  • 5.5 Vim移动光标命令汇总

    Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键。 Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有…

    Linux 2023年6月7日
    0107
  • 我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景

    欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 写在前面….. 本文是笔者肉眼…

    Linux 2023年6月6日
    0120
  • js阻止事件冒泡(phpcms,浮窗第一次10秒弹出后每30秒弹出,动态更换日期)

    /* v9_date_list 日期表 tiptime 考试日期(数据类型为日期) 如果要实现浮窗淡入淡出用jquery的(“#main0”).fadeIn…

    Linux 2023年6月13日
    0116
  • Java类初始化顺序小结

    第一种情况(单一类) 测试结果 静态变量 静态&…

    Linux 2023年6月7日
    0108
  • Linux网络配置

    第一种 通过编辑网络配置文件/etc/sysconfig/network-scripts/ifcfg-ens32 -> TYPE=Ethernet -> #网卡类型是以…

    Linux 2023年5月27日
    0114
  • Java Web登录界面

    非常激动的开通了我的第一个博客,在这里希望大家能多多指点,相互学习。 一个简单的登录界面 首先我们先把这个登录分为三块: 一、数据库 数据库我用的是MYSQL; 二、前端 三、后台…

    Linux 2023年6月13日
    0115
  • django admin用法

    django admin用法 – 基本使用 给几个字段加标题 添加关联的对象 自定义后台展示列表字段 过滤功能 搜索功能 django admin用法 基本使用 fro…

    Linux 2023年6月14日
    0182
  • vue过滤器和生命周期——day02

    vue之过滤器和生命周期——day02 过滤器: 概念:Vue.js 允许你自定义过滤器, 可被用作一些常见的文本格式化。过滤器可以用在两个地方: mustache 插值和 v-b…

    Linux 2023年6月7日
    0131
  • Keytool配置 Tomcat的HTTPS双向认证

    keytool 简介 Keytool 是一个 Java数据证书的管理工具, Keytool将密钥(key)和证书(certificates)存在一个称为 keystore的文件中。…

    Linux 2023年6月6日
    0135
  • Centos8安装docker报错(错误提示:All mirrors were tried)

    Centos8从零安装Docker-ce 背景:我把服务器整个yum源的配置文件里的内容全删了。因为我一直碰到”All mirrors were tried&#8221…

    Linux 2023年5月27日
    0157
  • Linux之虚拟专用网络—VPN

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Linux 2023年5月27日
    0118
  • mysql查询中字符串转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如’0’…

    Linux 2023年6月13日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球