我在職場經常聽到的fluentd嘗試了一下
根据我的理解,我收集了关于 fluentd 的信息并进行了实施尝试。
“Fluentd是什么?”
-
- データのやりとりを管理するソフトウェア
-
- データ、主にログをparse(分解)し転送先に格納出来る
-
- 既存のプラグインが多く、出力先も多様である(ローカル、S3、MongoDB、Cassandraなど)
- buffer機能により、長時間転送に失敗してもリトライが出来る
我試著導入了一下
安裝
以”前提”为基础
-
- ruby環境が必要
-
- 実装先はEC2(CentOS6.5)
■はじめに
TreasureDataというデータウェアハウスより、td-agentというruby環境込みのパッケージ(td-agent)を取得する
■yum でインストールする
▽リポジトリを登録
# vi /etc/yum.repos.d/td.repo
----------
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
----------
安装
# yum install td-agent
如果传输目标是EC2服务器,则需要在安全组中打开fluentd的端口。
由于fluentd默认使用24224端口,因此需要按照以下方式打开该端口。
-
- データ転送 TCP 24224番
- 死活監視 UDP 24224番
td-agent.conf文件的配置定义
■默认设置文件
/etc/td-agent/td-agent.conf
■语法(主观)
· 输入是在源定义中指定的
· 输出在匹配的匹配定义中进行设置
(a) インプットプラグインの設定
<source>
type インプットプラグインの種類の指定(tail、execなど)
その他パラメーター(利用するインプットプラグインに応じて必要なパラメーターを追加指定)
</source>
(b) アウトプットプラグインの設定
<match タグパターン>
type アウトプットプラグインの種類の指定(file、stdoutなど)
その他パラメーター(利用するアウトプットプラグインに応じて必要なパラメーターを追加指定)
</match>
我认为可以进行更详细的设置。这次我只提供了最简配置。
▽タグのマッチングルール
{} … <match A.{B,C}.D> の場合、「A.B.D」 もしくは、 「A.C.D」がマッチング
中括弧内に,(カンマ)区切りで要素を指定。その要素いずれかを含むものが対象となる。
* … <match A.*.C> の場合、「A.Z.C」や「A.9.C」などがマッチング
任意の1文字列が対象となる。
** … <match A.**.C> の場合、「A.B.D.E.F.G.H.C」などにマッチング。
<match **> の場合、全てのタグにマッチング。
(注意、こちらを定義するとそれ以降の設定が評価されなくなるということ。*の箇所はなんにでもマッチング)
请用中文将以下内容进行改写:
请提供以下中国的本土选项:
请提供以下内容的汉语改写:
设定转发目标
-
- 転送先がS3の場合は、バケットを用意するだけ
-
- ElasticSearchならば、起動しておくだけ
- 別サーバへ転送する場合、fluentd(td-agent)を起動しておく
简单来说,就是这样了。
暫時介紹就是以上的內容
安裝補足(fluent插件)。
请以中文进行合成:
■用于dstat日志
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-dstat
请以中文自然地转述以下内容,只需要一种选项:
As the global economy becomes increasingly interconnected, the importance of cross-cultural communication skills in business has grown significantly.
■ Elasticsearch
■ Elasticsearch(中文:弹性搜索)是一个开源分布式搜索引擎,它可以高效地存储、搜索和分析海量数据。
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch
→以下エラーが出た場合
extconf.rb:39:in `<main>': Can't find libcurl or curl/curl.h (RuntimeError)
以下をインストールしてから、リトライ。
# yum install curl-devel
请用中文同义短语重述以下内容,只需要一种选项:
– “The weather is very hot today.”
– “今天的天气非常炎热。”
■用于ELB访问日志
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elb-log
→以下エラーとなった場合
ERROR: Could not find a valid gem 'fluent-plugin-elb-log*' (>= 0) in any repository
ERROR: Possible alternatives: fluent-plugin-elb-log, fluent-plugin-rds-log, fluent-plugin-backlog, fluent-plugin-sumologic, fluent-plugin-netflow
以下のコマンドでリトライ
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elb-log --no-ri --no-rdoc -V
▽参考:
ELBのアクセスログをfluent-plugin-elb-logを使ってkibanaで表示する
http://dev.classmethod.jp/cloud/aws/fluent-plugin-elb-log-to-kibana/
以下是需要翻译成中文的原句,请恕我只提供一种选择:
■ 用于处理输出的JSON数据
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-map
请用中文将以下句子进行同义转述,只需要给出一个选项:
1. 我喜欢在早晨跑步锻炼身体。
■MongoDB
■蒙古数据库
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mongo
请以中文原生语言翻译以下内容,只需一种选项:
请翻译以下内容为中文,只需一种翻译。
提示
在启动td-agent时的故障处理
■前提:
– 首先,让我们查看日志。
# view /var/log/td-agent/td-agent.log
■案例①
“td-agent无法启动”
一开始看起来好像启动了,但实际上是失败了的情况下。
# service td-agent start
Starting td-agent: [ OK ]
# service td-agent status
td-agent が停止していますが PID ファイルが残っています
查看日志
# view /var/log/td-agent/td-agent.log
----------
2014-08-14 18:00:16 +0900 [error]: unexpected error error_class=Errno::EACCES error=#<Errno::EACCES: Permission denied - /var/log/fluent>
2014-08-14 18:00:16 +0900 [error]: /usr/lib64/fluent/ruby/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir'
(以下略)
没有输出目录。
Ruby尝试创建目录,但由于没有权限,无法创建。
■事例②
“由于缺乏执行日志的权限,导致出现错误”
如下所示,输出错误信息
# view /var/log/td-agent/td-agent.log
2014-08-14 19:06:00 +0900 [error]: Permission denied - /var/log/httpd/access_log
/var/log/httpd的权限是700,所有权是root:root,因此无法由td-agent读取。
将执行用户更改为root。
# vi /etc/init.d/td-agent
-------------------------
DAEMON_ARGS=${DAEMON_ARGS---user td-agent}
TD_AGENT_ARGS="${TD_AGENT_ARGS-/usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log}"
↓
DAEMON_ARGS=${DAEMON_ARGS---user root}
TD_AGENT_ARGS="${TD_AGENT_ARGS-/usr/sbin/td-agent --user root --group td-agent --log /var/log/td-agent/td-agent.log}"
以上就是以上的内容了。