Fluentd初探 简介与安装
Fluentd是一个开源的数据收集器,专为处理数据流设计,有点像 syslogd
,但是使用JSON作为数据格式。它采用了插件式的架构,具有高可扩展性高可用性,同时还实现了高可靠的信息转发。
据分(Y)析(Y),Fluentd是由Fluent+d得来,d生动形象地标明了它是以一个守护进程的方式运行。官网上将其描述为data collector,在使用上,我们可以把各种不同来源的信息,首先发送给Fluentd,接着Fluentd根据配置通过不同的插件把信息转发到不同的地方,比如文件、SaaS Platform、数据库,甚至可以转发到另一个Fluentd。
总结一下,数据流殊途,同归与Fluentd,Fluentd做一些诸如过滤、缓存、路由等工作,将其转发到不同的最终接收方。
用Fluentd处理数据还能保证一定的实时性,其提供种类丰富的客户端lib,很适合处理单位时间emit出log数量巨大的场景。从v10后,Fluentd 不支持 Windows。
其采用Ruby编写,比较注重性能的地方采用C编写,Ruby的创始人松本老师这样评价Fluentd:
Fluentd proves you can achieve programmer happiness and performance at the same time. A great example of Ruby beyond the Web.
Heroku的联合创始人Adam Wiggins说的挺有道理:
Logs are streams, not files. I love that Fluentd puts this concept front-and-center, with a developer-friendly approach for distributed systems logging.
更多信息请看 这里 。
安装
安装前的准备工作
安装
ntpd
ntpd
,以d结尾,是一个守护进程,全称是Network Time Protocol (NTP) daemon,它通过与一个Internet标准时钟服务器同步来维护系统时钟,同时也可以将本机做为一个时钟服务器对外提供时钟同步服务。更多信息请man一下ntpd。安装ntpd是为了防止Fluentd在收集log的时候出现非法的时间戳。
在Ubuntu下,apt-get即可安装:
$ sudo apt-get install ntp
之后查看ntpd是否启动成功(pgrep返回进程号):
$ pgrep ntpd
增加系统文件描述符的最大数量
通过ulimit查看当前的文件描述符的最大数量:
$ ulimit -n
如果是1024,那是远远不够的,将下面4行添加到
/etc/security/limits.conf
中,重启机器。root soft nofile 65536 root hard nofile 65536 * soft nofile 65536 * hard nofile 65536
之后用ulimit查看,应该是65536了。
(Optional)优化机器内核TCP/IP参数
如果Fluentd处于一个高负载的运行环境,比如一个机器中运行了多个Fluentd实例,那么最好将下面的参数添加到
/etc/sysctl.conf
中:net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 10240 65535
然后执行
sysctl -w
或者重启机器使之生效。这个跟TCP/IP的细节有关系,我没有深究,貌似是为了防止短连接数过多,机器处于
TIME_WAIT
状态的TCP连接数过多,开启快速回收与重用。具体请参考 这里 。
安装Fluentd
写在前面
有 很多种方式 来安装Fluentd,比如通过Ruby的Gem,以及Ubuntu的deb、OS X的Homebrew。
采用Ruby的Gem安装比较简单,安装的是基本版的Fluentd,即不自带 /etc/init.d
脚本,在运行时内存分配采用的是操作系统默认的方式;
而采用.rpm/.deb for Linux的方式安装呢,安装的是一个由 Treasure Data, Inc 维护的稳定版本Fluentd,又被称为td-agent。为了保持一个良好的灵活性,Fluentd采用Ruby编写,性能要求比较高的地方采用C编写,考虑到一般的用户可能安装操作Ruby有困难,因此该公司维护并提供了一个稳定版本的Fluentd。该版本的Fluentd在内存分配上采用了着重避免内存碎片分配实现 jemalloc 。两个版本的区别可以在这 查看 。
那么我们到底选用哪种方式呢,根据官方的文档。td-agent强调new features的稳定性,如果希望自己控制Fluentd的features,自己手动去更新,采用gem的方式安装。如果是第一次使用Fluentd或者在大规模的生产环境使用,推荐安装td-agent,每2-3个月,td-agent就会发布一个新的版本。
在Ubuntu 12.04上安装Fluentd
注意 这种方式截止到笔者发稿仅支持一下两个Ubuntu的版本:
- Ubuntu 12.04 LTS / Precise
- Ubuntu 10.04 LTS / Lucid
可以在 这里 查看最新进展。
(Optional but Recommend)设置GPG Key
deb包使用 Treasure Data GPG key 签名,首先将 GPG key 导入apt:
$ apt-key add /path/to/RPM-GPG-KEY-td-agent
执行下面的脚本
echo "This script requires superuser access to install apt packages." echo "You will be prompted for your password by sudo."# clear any previous sudo permission sudo -k# run inside sudo sudo sh <<SCRIPT# add treasure data repository to apt echo "deb http://packages.treasure-data.com/precise/ precise contrib" > /etc/apt、sources.list.d/treasure-data.list# update your sources apt-get update# install the toolbelt apt-get install -y --force-yes td-agentSCRIPT
即安装完毕。
也可执行下面的的命令:
$ curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh
其实脚本内容就是上面的,我粘过去的。
启动Fluentd的守护进程
因为我们安装的是td-agent,自带
/etc/init.d/td-agent
脚本,通过该脚本启动Fluentd服务。$ /etc/init.d/td-agent restart * Restarting td-agent td-agent $ /etc/init.d/td-agent status * ruby is running
同时还支持以下命令:
$ /etc/init.d/td-agent start $ /etc/init.d/td-agent stop $ /etc/init.d/td-agent restart $ /etc/init.d/td-agent status
配置文件在:
/etc/td-agent/td-agent.conf
测试
默认在配置文件中td-agent在8888端口监听,接收来自HTTP的log信息,并把其路由到stdout(
/var/log/td-agent/td-agent.log
),可以用curl命令测试:$ curl -X POST -d ‘json={"json":"message"}‘ http://localhost:8888/debug.test
之后可以打开
/var/log/td-agent/td-agent.log查看。
Fluentd初探 简介与安装相关推荐
- 【从零开始vnpy量化投资】一. vnpy初探 - 注册、安装、运行策略
@[从零开始vnpy量化投资]vnpy初探 - 注册.安装.运行策略 vnpy简介 以下内容摘自vnpy.com官方,https://www.vnpy.com/ 功能介绍 作为一套基于Python的量 ...
- 2021年大数据ELK(二十一):Logstash简介和安装
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Logstash简介和安装 一.简介 1.经典架构 2.对比Flume 3.对 ...
- 扩增子分析QIIME2(2018.6). 1简介和安装
扩增子分析QIIME2. 1简介和安装 QIIME2版本 2018.6 简介 优点 学习思路 什么是QIIME 2? 核心概念 安装 原生安装QIIME2 虚拟机安装 使用VirtualBox方式安装 ...
- db2top详细使用方法_Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略
Py之PIL:Python的PIL库的简介.安装.使用方法详细攻略 目录 PIL库的简介 PIL库的安装 PIL库的用方法 1.几何图形的绘制与文字的绘制 2.绘制图形的各种案例 PIL库的简介 PI ...
- python compiler库_Python之compiler:compiler库的简介、安装、使用方法之详细攻略
Python之compiler:compiler库的简介.安装.使用方法之详细攻略 目录 compiler库的简介 compiler库的安装 compiler库的使用方法 compiler库的简介 根 ...
- Pandas简明教程:一、Pandas简介与安装
文章目录 1.Pandas简介 2.为何要用Pandas? 3.知识.技能与环境的准备 4.Pandas的安装与相关辅助资料 本系列教程教程完整目录: 1.Pandas简介 关于Pandas的介绍在百 ...
- Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略
Py之Xlrd:Xlrd简介.安装.使用方法(读取xlsx文件的shee表头名/总行数/总列数.每一行的内容.指定列的内容)之详细攻略 导读 xlrd,xlwt和xlutils是用Pyth ...
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
Python之ffmpeg-python:ffmpeg-python库的简介.安装.使用方法之详细攻略 目录 ffmpeg-python库的简介 ffmpeg-python库的安装 ffmpeg-py ...
- Python之fastai:fastai库的简介、安装、使用方法之详细攻略
Python之fastai:fastai库的简介.安装.使用方法之详细攻略 目录 fastai库的简介 fastai库的安装 fastai库的使用方法 1.计算机视觉分类
最新文章
- 展望2018:WebRTC大规模商用元年
- 被误读的博弈:谁才是大厂解除屏蔽的最终受益者?
- 关于python的GIL
- 算法竞赛入门经典(第二版) | 程序3-6 WERTYU (UVa 10082)(常量数组)
- 单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴
- 三元环计数四元环计数
- 《游戏编程模式》一7.8 并发状态机
- 小熊的人生回忆(五)
- geotools 读取shp属性过滤_Flink进阶之使用布隆过滤器实现UV统计
- Docker cpu memory quota使用说明
- iPhone开发知识和项目
- Java基础13:反射详解
- 色彩构成与搭配——人对色彩的感觉
- lineageos信号叉号_Z1刷lineage os 14.1 15.1官方版后信号上叉号的清除教程
- mysql ansi unicode_ANSI与Unicode编码
- VS实现rar格式压缩包的解压详解
- 别总用git merge了,Git高级操作之选择合并,git将一个分支的提交合并到另一个分支,git cherry-pick
- vs2015 x86的Qt项目迁移到vs2017 x64平台
- mysql zombodb_zombodb安装试用
- 科技百咖 | 天威诚信:韶光与共,不负前路
热门文章
- 删除顺序表指定下标的元素
- springMVC上传下载
- windows 7 安装及.net开发环境搭建
- MATLAB二维图形坐标变换
- win10 安装 Pytorch
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step
- Failed resolution of: Landroid/support/v7/internal/widget/TintManager;异常解决方法
- sxssfworkbook设置单元格格式_用好条件格式,实现数据可视化,尤其是第8个技巧!...
- 服务端统一时间戳 boost::date_time UTC
- perl regular expresstion