rsyslog & kafka 流量日志

1、rsyslog安装

  在线安装: https://www.rsyslog.com/rhelcentos-rpms/

  离线安装:

  1)版本要求:

    操作系统: Centos 7.2

    应用版本: 8.34.0

  2)依赖:

   (一般来说安装最新版本的依赖就可以)

  必须:

      Gcc

Libestr 0.1.10

Libfastjson 0.99.8

   非必须(某些插件要求):

  3)依赖安装:

    a)  Libestr

      下载libestr最新版安装包, 解压到某个目录, 进入该目录;

      执行: ./configure --libdir=/usr/lib64 --includedir=/usr/include

      执行:  make && make install

      查看/usr/lib64目录下是否出现libestr.so等链接库,

      查看/usr/lib64/pkgconfig目录下是否出现libestr.pc

    b)   Libfastjson

      下载libfastjson最新版安装包, 解压到某个目录, 进入该目录

      执行: ./configure --libdir=/usr/lib64 --includedir=/usr/include

      执行:make && make install

      查看/usr/lib64目录下是否出现libfastjson.so等链接库,

      查看/usr/lib64/pkgconfig目录下是否出现libfastjson.pc

  4) rsyslog 安装:

  下载rsyslog 8.34.0的安装包。

     http://rpms.adiscon.com/v8-stable/epel-7/x86_64/RPMS/rsyslog-8.34.0-1.el7.centos.x86_64.rpm

    rpm -i  rsyslog-8.34.0-2.el7.centos.x86_64.rpm

  输入rsyslogd –version 查看版本号, 是否安装成功

  5) redis插件安装

    rsyslog的redis插件依赖于hiredis, 下载hiredis 0.13.0 rpm包

    rpm –i hiredis-0.13.3-7.fc28.x86_64.rpm

  下载rsyslog-hiredis插件包

  rpm -i --nodeps rsyslog-hiredis-8.34.0-1.fc29.x86_64.rpm

  (--nodeps 否则会失败)

  查看/usr/lib64/rsyslog/omhiredis.so 是否存在

6) kafka 插件安装

    下载liblz4 rpm包安装

    rpm –i --nodeps lz4-1.7.3-1.el7.x86_64.rpm

    下载rsyslog-kafka插件包

    rpm -i –nodeps rsyslog-kafka-8.34.0-2.el7.centos.x86_64.rpm

    查看/usr/lib64/rsyslog/omkafka.so是否存在

2、Kafka安装

  1)    版本要求

    Kafka 1.1.0

  2)    依赖

    Java 1.8

    Zookeeper

  3)    依赖安装

    Java

    Zookeeper(kafka自带,但zookeeper一般至少3个节点)

  4) kafka安装

    略

  5)需要注意问题

    Zookeeper和kafka一般都是集群方式部署, 流量采集服务器单台怎么部署集群,磁盘问题。

3、Rsyslog插件

  1) redis  

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName /data/rsyslog/queue/syslog # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 10g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
$ModLoad omhiredis
#module(load="omhiredis")
action(
type="omhiredis"
name="push_redis"
server="127.0.0.1"
serverport="6379"
mode="queue"
key="syslog"
)

  2) kafka  

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
#module(load="imtcp" maxsessions="1000")
#input(
#  type="imtcp"
#  address="0.0.0.0"
#  port="514"
#)
module(load="imudp" threads="2"
       timeRequery="8" batchSize="128")
module(load="imptcp" threads="4")

input(type="imudp" port="514"
      ruleset="write2kafka")
input(type="imptcp" port="514"
      ruleset="write2kafka")

# Where to place auxiliary files
#
# # Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
template(name="rawFormat" type="string" string="%rawmsg%")
#$ActionFileDefaultTemplate rawFormat
#
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
#$ModLoad omkafka
#
module(load="omkafka")

ruleset(
name="write2kafka"
queue.filename="syslog"
queue.spoolDirectory="/data/rsyslog/queue"
queue.size="10000000"
queue.maxdiskspace="10G"
queue.type="LinkedList"
queue.saveonshutdown="on"
queue.dequeueBatchSize="4096"
queue.workerThreads="10"
queue.workerThreadMinimumMessages="100000"
)
{
action(
template="rawFormat"
type="omkafka"
topic="syslog"
confParam=["compression.codec=snappy",
           "socket.timeout.ms=20",
           "socket.keepalive.enable=true"]
partitions.auto = "on"
resubmitonfailure = "on"
)
}

4、Rsyslog 配置

  rsyslog有3种不同配置方式: basic(已过时,兼容), advance, obsolete legacy(已过时,兼容, 官方建议不要使用这种方式)。

  目前rsyslog主要使用basic和advance混搭的方式进行配置, 凡是$开头的配置,都是obsolete legacy风格的配置, 大都有。

  rsyslog的配置主体分为input, ruleset, action, global,module

  1)  input

    input代表输入, 默认是从文件中获取输入, 其他还有imtcp. imudp等

   可以使用input()函数声明输入, input函数的type参数是必须的, 必须是输入源的module名,如tcp使用imtcp模块, 则type必须是imtcp,其他参数根据不同的module而定, 如tcp必须约定address(主机名), port(监听的端口)等等。

  以tcp为例, 输入配置为:

  input(

type="imtcp"

address="0.0.0.0"

port="514"

    )

    或者

    $InputTCPServerRun 514

    可以有多个输入源

  

  2)  ruleset

    略

  3)  action

    action即output, 默认输出omfile, 其他还有omhiredis, omfwd, omkafka, omelasticseasch等。

    可以使用action()函数声明输出, action的type参数必须是输出插件的module名,其他参数依不同插件而定, 需要说明的是action里面可以设置队列参数,如queue.type和queue.size等,具体见队列

4)       global

    全局参数, 可以使用global()函数约定,或$参数名约定。

  5)  module

    导入模块的函数module(), 无论input或是action等, 使用的插件都必须通过module方法导入,module函数的load必须, 必须是插件的名称,如imfile, omfile等。其他可选参数依据不同的module而定, 可以性能调优。

    也可通过$ModLoad module_name的方式导入模块。

  6)  include

    等同于$IncludeConfig

  7)  queue

    rsyslog对列分为direct, 磁盘, 内存3种模式, direct和磁盘模式都影响性能,内存模式分为FixedArray和LinkedList, 一般情况下使用LinkedList比较好。

    也可以启用DA模式,内存队列和磁盘队列结合使用, 默认情况下,优先使用内存队列,当内存中队列已满时,开启磁盘队列。即可以保证高性能, 又可以防止数据丢失。

    重要参数:

    queue.size  队列的最大大小,不能设太小,影响性能

    queue.type  可选值:FixedArray / LinkedList / Direct / Disk

    queue.saveonshutdown on/off

    queue.workerthreads 工作线程数,官方建议1

    queue.filename 存储队列的文件名称, 仅对磁盘队列有用, 需要注意的是只能是文件名,不能包含目录

    queue.spoolDirectory 存储队列的工作目录, 仅对磁盘队列有用

    queue.maxdiskspace 存储队列的最大大小,仅对磁盘队列有用

    queue.highwatermark 仅对DA模式有用, 队列大小达到该水平,开启磁盘辅助队列

    queue.lowwatermark仅对DA模式有用,开启磁盘辅助队列后, 如果队列大小降到该水平, 关闭磁盘辅助队列,回复内存模式

5、Rsyslog 运行

  1)    systemctl

    systemctl start|status|stop rsyslog   读取/etc/rsyslog.conf 及 /etc/rsyslogd.d/*.conf

    systemctl status –l rsyslog 查看rsyslog运行情况, 可以看到报错信息

  2)    命令行

    rsyslogd –i pid文件 –f conf配置文件

    可以通过 rsyslogd –N4 查看rsyslog配置是否正确

    可以通过 rsyslogd –dn  进行debug

原文地址:https://www.cnblogs.com/lowseasonwind/p/8952950.html

时间: 2024-11-08 23:03:37

rsyslog & kafka 流量日志的相关文章

ELK+Kafka 企业日志收集平台(一)

背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis换成了专业的消息信息发布订阅系统Kafka, Kafka的更多介绍大家可以看这里:传送门  ,关于ELK的知识网上有很多的哦, 此篇博客主要是总结一下目前线上这个平台的实施步骤,ELK是怎么跟Kafka结合起来的.好吧,动手! ELK架构拓扑: 然而我这里的整个日志收集平台就是这样的拓扑: 1,使用

Es+kafka搭建日志存储查询系统(设计)

现在使用的比较常用的日志分析系统有Splunk和Elk,Splunk功能齐全,处理能力强,但是是商用项目,而且收费高.Elk则是Splunk项目的一个开源实现,Elk是ElasticSearch(Es).Logstash.Kibana上个项目结合.Es就是基于Lucene的存储,索引的搜索引擎:logstash是提供输入输出及转化处理插件的日志标准化管道:Kibana提供可视化和查询统计的用户界面.往往这些开源项目并不是适合每一个公司的业务,业务不同,对开源项目扩展也就不同,logstash进行

ELK+kafka构建日志收集系统

ELK+kafka构建日志收集系统 原文  http://lx.wxqrcode.com/index.php/post/101.html 背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis换成了专业的消息信息发布订阅系统Kafka, Kafka的更多介绍大家可以看这里: 传送门 ,关于ELK的知识网上有很多的哦, 此篇博客主要是总结一下目前线上这个

基于Flume+LOG4J+Kafka的日志采集架构方案

本文将会介绍如何使用 Flume.log4j.Kafka进行规范的日志采集. Flume 基本概念 Flume是一个完善.强大的日志采集工具,关于它的配置,在网上有很多现成的例子和资料,这里仅做简单说明不再详细赘述.Flume包含Source.Channel.Sink三个最基本的概念: Source——日志来源,其中包括:Avro Source.Thrift Source.Exec Source.JMS Source.Spooling Directory Source.Kafka Source.

LAMP基于rsyslog+loganalyzer实现日志集中管理及分析

前言 作为一名运维工程师,查看分析系统日志是每天必做的功课,但每次查看日志都得一台服务器一台服务器的看,几台服务器还可以这么对付,但如果管理成百上千台线上服务器,这种方法就捉襟见肘了.于是我们就需要用到日志服务器了,但是如何能让它更直观的显示呢?loganalyzer是一个不错的选择,本文将讲解如何使用rsyslog+loganalyze实现日志统一管理及分析. 简介 LogAnalyzer是一款syslog日志和其他网络事件数据的Web前端,它提供了对日志的简单浏览.搜索.基本分析和一些图表报

rsyslog+MySQL+loganalyzer日志集中分析管理

前言   rsyslog系统日志,在CentOS5上叫syslog,而在CentOS6上叫rsyslog,叫增强版的syslog,CentOS5上的配置文件在/etc/syslog.conf下,而CentOS6在/etc/rsyslog.conf下.       syslog默认是把我们的日志放到文件.用户.日志服务器.管道中.       rsyslog在syslog的基础上还多了一条途径,允许把日志放到mysql数据中.       rsyslog比syslog好在哪里:       Mul

网站流量日志数据自定义采集实现

为什么要进行网站流量数据统计分析? 随着大数据时代的到来,各行各业产生的数据呈爆发式增长,大数据的技术从之前的"虚无"变成可能,数据产生的各种潜在价值慢慢的被人们挖掘出来利用在各行各业上.比如网站流量数据统计分析,可以帮助网站管理员.运营人员.推广人员等实时获取网站流量信息,并从流量来源.网站内容.网站访客特性等多方面提供网站分析的数据依据.从而帮助提高网站流量,提升网站用户体验,让访客更多的沉淀下来变成会员或客户,通过更少的投入获取最大化的收入. 网站流量日志数据采集原理分析 首先,

JavaWeb项目架构之Kafka分布式日志队列

架构.分布式.日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Kafka做消息队列罢了. kafka介绍 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决. 特性 Kafka是一种高吞

Rsyslog 实现Nginx日志统一收集功能

一.rsyslog 介绍 ryslog 是一个快速处理收集系统日志的程序,提供了高性能.安全功能和模块化设计.rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍,现在可以处理100万条信息. 二.Rsyslog应用 Rsyslog服务端配置 下面有一些参数没有做中文解释,是因为我也不是太了解,没办法做出解释,测试不出具体效果 需要自己去看看文档来解决了. 配置文件/etc/rsyslog.conf $ModLoad imuxsock