1.Java日志收集

使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并.

  1. 语法示例:
  2. input {
  3. stdin {
  4. codec => multiline { #使用multiline插件
  5. pattern => "pattern, a regexp" #正则匹配
  6. negate => "true" or "false" #匹配是否成功
  7. what => "previous" or "next" #和上面的还是和下面的内容合并
  8. }
  9. }
  10. }

命令行测试输入输出

logstash -e 'input { stdin {codec => multiline { pattern => "^\[" negate => "true" what => "previous"} }} output { stdout {codec => rubydebug}}'

2.配置logstash

elk集群日志上都是以"["开头并且每一个信息都是如此

tailf /data/logs/elk-cluster.log

  1. vim /etc/logstash/conf.d/java.conf
  2. input {
  3. file{
  4. path => "/data/logs/elk-cluster.log"
  5. type => "elasticsearch-java-log"
  6. start_position => "beginning"
  7. stat_interval => "2"
  8. codec => multiline {
  9. pattern => "^\["
  10. negate => "true"
  11. what => "previous"
  12. }
  13. }
  14. }
  15.  
  16. output {
  17. if [type] == "elasticsearch-java-log" {
  18. elasticsearch {
  19. hosts => ["10.0.0.22:9200"]
  20. index => "elasticsearch-jva-log-%{+YYYY.MM.dd}"
  21. }
  22. }
  23. }
  24.  
  25. logstash -f /etc/logstash/conf.d/java.conf -t
  26. systemctl restart logstash

es插件中查看

3.通过TCP收集日志

TCP收集日志使用场景

有一台服务器A只需要收集一个日志,那么我们就可以不需要在这服务器上安装logstash,我们通过在其他logstash上启用tcp模块,监听某个端口,然后在服务器A上把日志通过nc发送到logstash上即可.

a.elk2上配置测试TCP模块

  1. cat /etc/logstash/conf.d/tcp.conf
  2. input {
  3. tcp{
  4. port => "5600" #监听5600端口
  5. mode => "server" #模式为server
  6. type => "tcplog" #类型为tcplog
  7. }
  8. }
  9.  
  10. output {
  11. stdout {
  12. codec => rubydebug
  13. }
  14. }
  15.  
  16. # elk1节点上安装nc命令,并发送日志到elk2
  17. yum -y install nc
  18. echo "hello world" | nc 10.0.0.33 5600
  19.  
  20. # elk2终端上查看日志输出信息:
  21. /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tcp.conf
  22. {
  23. "@timestamp" => 2019-02-07T00:59:49.356Z,
  24. "port" => 57902,
  25. "@version" => "1",
  26. "host" => "linux-elk1",
  27. "@metdata" => {
  28. "ip_address" => "10.0.0.22"
  29. },
  30. "message" => "hello world",
  31. "type" => "tcplog"
  32. }
  33. # 可以看到linux-elk2上有监听5600端口
  34. netstat -tunlp |grep 5600
  35.  
  36. # 还可以将某个文件发送到nc
  37. nc 10.0.0.33 5600 < /etc/passwd
  38.  
  39. # 也可以通过这种方式伪设备的方式发送日志
  40. echo "222" > /dev/tcp/10.0.0.33/5600

b.配置logstash,通过TCP收集数据,输出到elasticsearch

  1. vim /etc/logstash/conf.d/tcp.conf
  2. input {
  3. tcp{
  4. port => "5600"
  5. mode => "server"
  6. type => "tcplog"
  7. }
  8. }
  9.  
  10. output {
  11. elasticsearch {
  12. hosts => ["10.0.0.33:9200"]
  13. index => "tcp-test-%{+YYYY.MM.dd}"
  14. }
  15. }
  16. systemctl restart logstash

在elk1上向elk2发送数据:nc 10.0.0.33 5600 < /etc/passwd

java日志收集:http://blog.51cto.com/jinlong/2055424

通过TCP收集日志:http://blog.51cto.com/jinlong/2056521

ELK之收集Java日志、通过TCP收集日志的更多相关文章

  1. ELKStack入门篇(二)之Nginx、Tomcat、Java日志收集以及TCP收集日志使用

    1.收集Nginx的json格式日志 1.1.Nginx安装 [root@linux-node1 ~]# yum install nginx -y [root@linux-node1 ~]# vim ...

  2. ELK学习实验017:filebeat收集java日志

    收集JAVA格式日志 1 查看Java格式日志 elasticsearch属于Java日志,可以收集elasticsearch作为Java日志范本 [root@node3 ~]# tail -f /u ...

  3. 第六章·Logstash深入-收集java日志

    1.通过Logstash收集java日志并输出到ES中 因为我们现在需要用Logstash收集tomcat日志,所以我们暂时将tomcat安装到Logstash所在机器,也就是db03:10.0.0. ...

  4. 使用logstash收集java、nginx、系统等常见日志

    目录 1.使用codec的multiline插件收集java日志... 1 2.收集nginx日志... 2 3.收集系统syslog日志... 3 4.使用fliter的grok模块收集mysql日 ...

  5. logstash收集TCP端口日志

    logstash收集TCP端口日志官方地址:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html ...

  6. 从0搭建一个基于 ELK 的日志、指标收集与监控系统

    为了使得私有化部署的系统能更健壮,同时不增加额外的部署运维工作量,本文提出了一种基于 ELK 的开箱即用的日志和指标收集方案. 在当前的项目中,我们已经使用了 Elasticsearch 作为业务的数 ...

  7. ELK 收集 Tomcat日志以及修改Tomcat日志格式

    ELK 收集 Tomcat日志以及修改Tomcat日志格式 Tomcat日志 想要收集tomcat 日志 首先我们要对tomcat的日志有足够的了解 tomca日志分类 简单的说tomcat logs ...

  8. 用Kibana和logstash快速搭建实时日志查询、收集与分析系统

    Logstash是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索),您可以使用它.说到搜索,logstash带有一个web界面,搜索和展示所有日志. kibana ...

  9. 精心收集java基础106条

    Java基础 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 一个Java源文件中可以定义多个类,但最多只能定义一个public的类,并且public ...

随机推荐

  1. guava笔记

    ​guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点.刚刚接触就被guava吸引了... ​    ​这个是gua ...

  2. Python学习笔记:面向对象(类)

    1.类定义:Python3中,如果新建的类没有继承任何其他类,默认继承基础类object.Python2中如果没有显式继承object类就是经典类,而显式继承了object类就是新式类,Python2 ...

  3. XML映射文件中关系映射

    映射(多)对一.(一)对一的关联关系 1).使用列的别名 ①.若不关联数据表,则可以得到关联对象的id属性 ②.若还希望得到关联对象的其它属性.则必须关联其它的数据表 1.创建表: 员工表: DROP ...

  4. CentOS 7 安装 配置 Nginx + PHP

    . CentOS 7 下配置 yum 安装 Nginx. 进入/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim ngi ...

  5. Java学习——面对对象的思想入门

          本文是看过<head first Java>之后的一点感悟,写点东西帮忙以后回忆,Java目前在我的工作中用到还不多,而我又对面对对象的编程非常的感兴趣.曾经在MFC平台上写过 ...

  6. 算法学习记录-查找——折半查找(Binary Search)

    以前有个游戏,一方写一个数字,另一方猜这个数字.比如0-100内一个数字,看谁猜中用的次数少. 这个里面用折半思想猜会大大减少次数. 步骤:(加入数字为9) 1.因为数字的范围是0-100,所以第一次 ...

  7. HDU 5489 Removed Interval DP 树状数组

    题意: 给一个长度为\(N\)的序列,要删除一段长为\(L\)的连续子序列,问所能得到的最长的\(LIS\)的长度. 分析: 设\(f(i)\)表示以\(a_i\)结尾的\(LIS\)的长度,设\(g ...

  8. 关于.net 项目 nuget包还原项目失败的记录

    在.net项目中,一般通过vs打开项目,会自动进行nuget包还原,可能因为其他一些因素,包还原失败,同时在之前包依赖是可以正常使用,现在却提示包 AutoMapper 6.2.2 与 netcore ...

  9. 遍历Request.QueryString

    Request.QueryString 返回的是 NameValueCollection, 而NameValueCollection实现了IEnumerable的GetEnumerator方法,只是G ...

  10. Verlet Integration

        Verlet Integration Verlet 积分法是一种用于求解牛顿运动方程的数值方法,被广泛运用于动力学模拟以及视频游戏中.尔莱算法的优点在于:数值稳定性比简单的欧拉方法高很多,并保 ...