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. C# NotifyIcon 托盘控件

    右下角以图标形式显示,双击图标显示界面,最小化界面时不显示在任务栏. 第一步:在界面上添加NotifyIcon控件. 第二步:设置notifyIcon1的属性,添加图标,将Visible设为true. ...

  2. Python9-事件及队列-day37

    信号量 from multiprocessing import Process from multiprocessing import Semaphore import time import ran ...

  3. List删除元素

    在单线程环境下的解决办法 public void remove() { if (lastRet == -1) throw new IllegalStateException(); checkForCo ...

  4. NSNotificationCenter的用法

    作用:NSNotificationCenter是专门供程序中不同类间的消息通信而设置的. 注册通知:即要在什么地方接受消息 [[NSNotificationCenter defaultCenter]  ...

  5. Ice cream samples Gym - 101670G 滑动扫描

    题目:题目链接 思路:比赛中读错了题,题目要求选一个连续区间,却读成了随便选取几个柜台,英语要好好学啊,读懂题就很简单了,扫一遍就出结果了 AC代码: #include <iostream> ...

  6. Leetcode 75. 颜色分类

    题目链接 https://leetcode-cn.com/problems/sort-colors/description/ 题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们 ...

  7. [转] vuex最简单、最直白、最全的入门文档

    前言 我们经常用element-ui做后台管理系统,经常会遇到父组件给子组件传递数据,下面一个简单的例子,点击按钮,把弹框显示变量数据通过子组件的props属性传递,子组件通过$emit事件监听把数据 ...

  8. 令人惊叹的Npm工具包

    1.http-server (简单搭建http服务器) 2.json-server (JSON服务器,快速搭建resful api接口) 3.cssnano (css多功能优化工具) PS:比uncs ...

  9. Jeddict研究过程中的总结

    一.与作者交流的总结 说来也是惭愧,没有太多的经验,先给大家贴两张图,看看大家能不能发现问题: 在最开始的时候,都处于Gaurav Gupta让我给材料的过程,因为我不是缺这个就是缺那个,根本说不清楚 ...

  10. 九度oj 题目1465:最简真分数

    题目描述: 给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合. 输入: 输入有多组,每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000. ...