ELK菜鸟手记 (四) - 利用filebeat和不同端口把不同服务器上的log4j日志传输到同一台ELK服务器

1. 问题描述 

我们需要将不同服务器(如Web Server)上的log4j日志传输到同一台ELK服务器,介于公司服务器资源紧张(^_^)

2. 我们需要用到filebeat

什么是filebeat?

filebeat被用来ship events,即把一台服务器上的文件日志通过socket的方式,传输到远程的ELK。

可以传输到logstash,也可以直接传输到elasticsearch。

3. 我们这里讲解如何传输到远程的logstash,然后再由elasticsearch讲数据传输到kibana展示

3-1) 首先你要在你的本地测试机器上安装filebeat

以下是下载路径:

https://www.elastic.co/downloads/beats/filebeat

3-2) 其次你应该配置你的filebeat.xml

filebeat.prospectors:

- input_type: log

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /Users/KG/Documents/logs/t-server/*.log

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["xx.xx.xx.xx:5000"]

3-3) 启动filebeat

需要先给配置文件加权限

chown root filebeat.yml

然后启动

sudo ./filebeat -e -c filebeat.yml &

3-4) 配置远程的logstash并启动

log4j_filebeat.conf

input{
    beats {
        port => 5000
    }
}
output{
    stdout{ codec => rubydebug }
    elasticsearch {
        hosts => "localhost:9200"
        index =>  "t-server-%{+YYYY.MM.dd}"
        document_type => "log4j_type"
        user => your-username
        password => your-password
    }
}

启动:

./bin/logstash -f config/log4j_fliebeat.conf &

3-5) Java客户端日志配置和程序

log4j.properties

### 设置###
log4j.rootLogger = debug,stdout,D

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=/Users/bee/Documents/elk/log4j/debug.log###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /Users/KG/Documents/logs/t-server/app.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

Java API

package org.genesis.arena.elk;

import org.apache.log4j.Logger;

/**
 * Created by KG on 17/3/27.
 */
public class ElkLog4jTest {
    private static final Logger logger = Logger.getLogger(ElkLog4jTest.class);
    public static void main(String[] args) throws Exception {
        logger.debug("最新的日志!!");
    }
}

在logstash看到结果如下:

在kibana看到结果如下:

同理,我们使用另一个端口启动另外一个logstash后台进程

logstash配置文件如下:

log4j_fliebeat2.conf

input{
    beats {
        port => 5001
    }
}
output{
    stdout{ codec => rubydebug }
    elasticsearch {
        hosts => "localhost:9200"
        index =>  "t-yxc-finance-%{+YYYY.MM.dd}"
        document_type => "log4j_type"
        user => your-username
        password => your-password
    }
}

启动:

./bin/logstash -f config/log4j_fliebeat2.conf &

filebeat.yml

filebeat.prospectors:

# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.

- input_type: log

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /Users/KG/Documents/logs/t-yxc-finance/*.log

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["xx.xx.xx.xx:5001"]

客户端配置文件和代码:

### 设置###
log4j.rootLogger = debug,stdout,D

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=/Users/bee/Documents/elk/log4j/debug.log###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /Users/KG/Documents/logs/t-yxc-finance/app.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
package org.genesis.arena.elk;

import org.apache.log4j.Logger;

/**
 * Created by KG on 17/3/27.
 */
public class ElkLog4jTest {
    private static final Logger logger = Logger.getLogger(ElkLog4jTest.class);
    public static void main(String[] args) throws Exception {
        logger.debug("另外一台服务器,最新的日志!!");
    }
}

运行结果如下:

时间: 2024-11-08 20:10:57

ELK菜鸟手记 (四) - 利用filebeat和不同端口把不同服务器上的log4j日志传输到同一台ELK服务器的相关文章

ELK菜鸟手记 (一) 环境配置+log4j日志记录

1. 背景介绍 在大数据时代,日志记录和管理变得尤为重要. 以往的文件记录日志的形式,既查询起来又不方便,又造成日志在服务器上分散存储,管理起来相当麻烦, 想根据一个关键字查询日志中某个关键信息相当困难. 这个时候,ELK诞生了. 什么是ELK? 简单来说:它是一套完整的日志记录和分析的解决方案平台. 2. 技术栈介绍 ELK = Elasticsearch + Logstash + Kibana 2-1) Elasticsearch: ( Elasticsearch is a distribu

ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决

0. 背景 我们在使用ELK进行日志记录的时候,通过网址在Kibana中查看我们的应用程序(eg: Java Web)记录的日志, 但是默认是任何客户端都可以访问Kibana的, 这样就会造成很不安全,我们应该设置相应的用户名和密码, 只有通过登录用户名和密码才能通过Kibana查看我们的日志. 1. 在elasticsearch 2.x的版本是怎么做的 笔者网上查了一些博文,大部分推荐的是通过给elasticsearch安装Shield插件,参考链接如下: http://blog.csdn.n

利用filebeat推送mysql慢查询日志

介绍通过利用filebeat来收集mysql的慢查询日志,logstash解析后推送到elasticsearch,并创建自定义的索引,最终通过kibana进行web展示. 环境介绍:操作系统版本:CentOS Linux release 7.3.1611 (Core) 64bitMysql版本: 5.6.28Logstash版本: logstash 5.3.0Elasticsearch版本:elasticsearch 5.3.0Kibana版本:Kibana 5.3.0Java版本:1.8.0_

Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由

Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由 一.实验目标 掌握交换机Tag VLAN 的配置: 掌握三层交换机基本配置方法: 掌握三层交换机VLAN路由的配置方法: 通过三层交换机实现VLAN间相互通信: 二.实验背景 某企业有两个主要部门,技术部和销售部,分处于不同的办公室,为了安全和便于管理,对两个 部门的主机进行了VLAN的划分,技术部和销售部分处于不同的VLAN.现由于业务的需求,需要销售部和技术部的主机能够相互访问,获得相应的资源,两个 部门的交换机

菜鸟站长如何利用十分钟以内的时间写质高量多的原创?

现在做seo的从业人员都知道,那就是'内容为王',外链为皇'这个道理.可是能够真正做到的又有几个呢,也包括我自己,特别是在写网站内容的时候非常头疼.也许是我从小就不喜欢写作文的原因吧,还有自己的写作水平也是非常烂的.'内容为王'里面的内容还必须得原创,这样的内容才算得上高质量的内容,而不是大量复制别人网站的文章内容,可是如何写一下高质量的原创文章呢?大家可以去看我的站点,我的更新的文章,基本都会收录.下面我们就来具体说一下如何在十分钟之内写出质高量多原创文章来. 1.儿童造句 大家都应该知道看词

elk(elasticsearch、logstast,kibana)filebeat部署与实践

1.elk说明elk全称:elasticsearch:是一个分布式.高扩展.高实时的搜索与数据分析引擎;简称eslogstash:是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的"存储库"中;如elasticsearch中kibana:是为 Elasticsearch设计的开源分析和可视化平台.你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互.你可以很容易实现高级的数据分析和可视化,以图标的形

ELK 架构之 Logstash 和 Filebeat 安装配置

上一篇:ELK 架构之 Elasticsearch 和 Kibana 安装配置 阅读目录: 1. 环境准备 2. 安装 Logstash 3. 配置 Logstash 4. Logstash 采集的日志数据,在 Kibana 中显示 5. 安装配置 Filebeat 6. Filebeat 采集的日志数据,在 Kibana 中显示 7. Filebeat 采集日志数据,Logstash 过滤 8. Filebeat 采集的日志数据,Logstash 过滤后,在 Kibana 中显示 上一篇主要说

ELK学习实验018:filebeat收集docker日志

Filebeat收集Docker日志 1 安装docker [[email protected] ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [[email protected] ~]# yum update [[email protected] ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/d

ELK日志处理之使用logstash收集log4J日志

介绍一下如何从Java工程中导出log4J日志到Logstash. 一.log4j基础 不能免俗的官方介绍: Log4j 是一个使用 Java 语言编写的,可靠.快速.灵活的日志框架(API),使用 Apache Software License 授权.它被移植到 C.C++.C#.Perl.Python.Ruby 和 Eiffel 语言中. Log4j 是高度可配置的,在运行期使用外部的配置文件对其进行配置.它按照优先级别记录日志,并可将日志信息定向输出到各种介质,比如数据库.文件.控制台.U