Tutorial: 使用rsyslog向kafka, elasticsearch推送日志

本文介绍了一种简单易行的使用rsyslog向kafka,elasticsearch推送日志的方法;rsyslog的omkafka插件的安装、使用方法;rsyslog的omelasticsearch插件的安装、使用方法。

Kafka是一种开源的分布式消息系统,项目主页:kafka.apache.org

elasticsearch是一种开源的分布式搜索引擎,项目主页:elastic.co

rsyslog使用omkafka向kafka推送日志,使用omelasticsearch向elasticsearch推送日志。这两个插件默认编译选项是关闭的,没有被编译到rsyslog中。下面介绍了具体的安装方法:

## add rsyslog repo
WORK_DIR=$(pwd)
cd /etc/yum.repos.d
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo -O rsyslog.repo

cd $WORK_DIR
mkdir rsyslog-install
cd rsyslog-install

# check rsyslog version
# rsyslog supports kafka from v8.7.0
old_rsyslog_ver=$(rsyslogd -version |head -n 1 | awk ‘{print $2}‘)

## install rsyslog dependency: libestr
yum install -y libestr-devel

## install rsyslog dependency: libee
yum install -y libee-devel

## install rsyslog dependency: json-c
yum install -y json-c-devel

## install rsyslog denpendency: uuid
yum install -y libuuid-devel

## install rsyslog denpendency: liblogging-stdlog
yum install -y liblogging-devel

## install rsyslog denpendency: rst2man
yum install -y python-docutils

## install libcurl for omelasticsearch
yum install -y libcurl-devel

## install librdkafka for omkafka
wget https://github.com/edenhill/librdkafka/archive/0.8.5.tar.gz -O librdkafka-0.8.5.tar.gz
tar zxvf librdkafka-0.8.5.tar.gz
cd librdkafka-0.8.5
./configure
make
make install

cd ..
## install rsyslog
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-8.8.0.tar.gz -O rsyslog-8.8.0.tar.gz
tar zxvf rsyslog-8.8.0.tar.gz
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/lib64/pkgconfig/
old_executable_path=$(which rsyslogd)
executable_dir=$(dirname "$old_executable_path")
cd rsyslog-8.8.0
./configure --sbindir=$executable_dir --libdir=/usr/lib64 --enable-omkafka --enable-elasticsearch
make
make install

## show installation result:
new_rsyslog_ver=$(rsyslogd -version |head -n 1 | awk ‘{print $2}‘)
echo "Old rsyslogd version: "$old_rsyslog_ver
echo "New rsyslogd version: "$new_rsyslog_ver
echo "Executable: " $(which rsyslogd)

我在Github上托管了相关代码:

https://github.com/garyelephant/rsyslog-scripts

omkafka插件的详细文档见:

http://www.rsyslog.com/doc/master/configuration/modules/omkafka.html

omelasticsearch插件的详细文档见:

http://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html

配置示例:

# /etc/rsyslog.conf
# load required module
# `imuxsock` provides support for local system logging (e.g. via logger command)
module(load="imuxsock")
module(load="omkafka")
module(load="omelasticsearch")

# push to kafka
action(type="omkafka" topic="your_topic" broker="your_kafka_broker_host_or_ip")

# or you can push to elasticsearch
action(type="omelasticsearch" server="your_elasticsearch_host_or_ip" searchIndex="your_elasticsearch_index" searchType="your_elasticsearch_index_type" )

启动 rsyslog

rsyslogd -n

在另一个终端用logger向rsyslog写数据

$ logger ‘hello world‘

References:

  1. http://www.rsyslog.com/doc/master/installation/install_from_source.html
  2. http://bigbo.github.io/pages/2015/01/21/syslog_kafka/
  3. http://blog.oldzee.com/?tag=rsyslog
  4. http://www.rsyslog.com/newbie-guide-to-rsyslog/
  5. http://www.rsyslog.com/doc/master/configuration/modules/omkafka.html


转载本文请注明作者和出处[Gary的影响力]http://garyelephant.me,请勿用于任何商业用途!

Author: Gary Gao( garygaowork[at]gmail.com) 关注互联网、分布式、高性能、NoSQL

时间: 2024-12-09 12:17:43

Tutorial: 使用rsyslog向kafka, elasticsearch推送日志的相关文章

[PHP] php作为websocket的客户端实时读取推送日志文件

首先要使用composer来下载一个第三方扩展就可以实现php的websocket客户端,直接在当前目录生成下composer.json文件就可以了composer require textalk/websocket require('vendor/autoload.php'); use WebSocket\Client; $client = new Client("ws://echo.websocket.org/"); $client->send("Hello Web

推送服务哪个好用

推送服务,主要就是将最新资讯和最近的活动信息及时推送给用户,与用户保持互动,从而提高用户粘性,提升用户体验.推送服务很多,在众多的推送服务中那个更好用,更适合你的需求呢,分享下我用过的几款推送服务和意见. 百度云推送 百度云推送服务是推送界关注度最高的一款服务,支持Andriod,iOS两个平台,可推送 通知.信息.富媒体等内容,支持自定义样式和推送统计报表,支持自定义样式.自定义打开行为.以及附加字段. 点评:推送及时,支持推送通知,穿透消息推送,富媒体消息推送.有专业客服支持.没有详细的开发

使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)

原文:使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 工作上有个业务,.Net Core WebAPI作为服务端,需要将运行过程中产生的日志分类,并实时推送到各种终端进行报警,终端有桌面(WPF).移动(Xamarin.Forms).网站(

由内搜推送思考Kafka 的原理

刚入公司的两周多,对CDX项目有了进一步的认识和理解,在这基础上,也开始了解部门内部甚至公司提供的一些中间服务.CDX项目中涉及到的二方服务和三方服务很多,从之前写过的SSO,Auth,到三方图库的各个接口,以及图片存储的云服务Gift,以及今天说到的内搜系统. 由于内搜推送信息是到一个kafka队列中消费,虽然作为业务开发不涉及消息中间件的建设,但还是希望能了解内部选型的一些思想,一点一点学习和理解部门的各个服务.这里我也参加了内部的一些分享,想说说自己对Kafka的初识吧. 首先是Kafka

.net推送数据之Kafka

.NET VS工具添加程序包源 在NuGet包管理中选择程序包源为上面添加的私有仓库. 搜索Data.Pipelines并安装. 在app.congif或者web.config中添加Kafka配置 <appSettings> <add key="kafka.ip" value="172.20.105.205"/> <add key="kafka.prot" value="9092"/> &l

ORACLE的DDL日志 推送到Kafka,并接入Flink,进行统计

ORACLE的DDL日志 推送到Kafka,并接入Flink,进行统计 本次测试的环境: 环境:docker oracle12c 日志模式:归档日志模式 archivelog 用户:scott/tiger 具有dba权限 大数据组件:kafka(默认创建好topic:flink_topic),zookeeper 额外组件:kafka-connect-oracle-1.0.jar 下载地址: https://github.com/erdemcer/kafka-connect-oracle 1. 创

第87课:Flume推送数据到SparkStreaming案例实战和内幕源码解密

本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装配置Flume,并且测试数据的传输.我昨天是要求传送的HDFS上. 文件配置: ~/.bashrc: export FLUME_HOME=/usr/local/flume/apache-flume-1.6.0-bin export FLUME_CONF_DIR=$FLUME_HOME/conf PA

signalr推送消息

参考:Tutorial: Getting Started with SignalR 2 and MVC 5 环境:vs2013,webapi2,entity framework6.0 实现效果:当用户上传一个文件时候,推送消息给关注此用户的其他用户,告知此用户上传了一个新的文件. 推送原理:当前端用户打开网页时候,SignalR 服务端会自动生成一个guid类型的ConnectionId.此ConnectionId用来连接确定用户端,用来确定发送给哪个当前在线用户.当要推送消息时候,后端方法会根

利用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_