当将 Kibana、Fluentd 和 Elasticsearch 安装在一台 EC2 实例上时的备忘录

做的事情

尝试在一台EC2实例上安装Apache,并通过Fluentd解析访问日志,然后将其传输到Elasticsearch,并在Kibana上进行可视化。

亚马逊云服务

云服务器(EC2)

使用t2.micro实例类型。AMI为Amazon Linux。

安全组

设定入站。

TypeProtocolPort RangeSourceDescriptionCustomTCP80AnywhereapacheCustomTCP5601AnywherekibanaCustomTCP9200Anywhereelasticsearch

安装软件包

各种各样的更新

无论如何,让我们将软件包更新到最新版本。

$ sudo yum update

Kibana 可视化分析平台

参考にしながら、https://www.elastic.co/guide/en/kibana/current/rpm.htmlを使用してインストールします。

可以通过修改 /etc/kibana/kibana.yml 配置文件中的 server.host 来使 Kibana 可以从外部访问并启动。
此外,由于 Elasticsearch 的 URL 将不再能够通过 localhost 访问,所以需要进行修改。

server.host: "ec2-xxx-xxx-xxx-xxx.ap-northeast-x.compute.amazonaws.com"

...

elasticsearch.url: "http://ec2-xxx-xxx-xxx-xxx.ap-northeast-x.compute.amazonaws.com:9200"

当设置发生变化时,开始执行。

$ sudo /etc/init.d/kibana start

弹性搜索

参考にしながらインストールします。ドキュメントによると、rpmは用意されていないようですので、tarを解凍してインストールする必要がありそうです。まずはホームディレクトリに展開して使用してみましょう。

由于Amazon Linux只安装了Java7,而Elasticsearch需要Java8,因此需要单独安装Java8。

$ sudo yum install java-1.8.0-openjdk.x86_64

使用alternatives命令将操作系统默认的Java版本切换为Java8。

$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

将设置文件设定为~/elasticsearch-5.6.0/config/elasticsearch.yml,在外部进行通信需要修改主机设置如下所示。
由于transport.host不能为localhost,因此需要添加一个固定设置来确保其正常运行。

network.host: ec2-xxx-xxx-xxx-xxx.ap-northeast-x.compute.amazonaws.com

...

transport.host: localhost

通过以下命令启动Elasticsearch,但由于内存不足而无法启动(考虑到t2.micro的限制)。

$ ~/elasticsearch-5.6.0/bin/elasticsearch
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ec2-user/hs_err_pid31308.log

由于没有其他办法,需要修改 ~/elasticsearch-5.6.0/config/jvm.options 文件来设置堆内存。将原本的默认2G改为256MB。

-Xms256m
-Xmx256m
#-Xms2g
#-Xmx2g

把它改成可以运行的。加上 nohup,使其成为守护进程并在注销后继续运行。

$ nohup ~/elasticsearch-5.6.0/bin/elasticsearch &

流畅的日志收集器

在安装之前,请参考https://docs.fluentd.org/v0.12/articles/install-by-rpm。简单快捷地使用一行命令进行安装。

$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

安装完成后进行操作确认。

如果能够通过浏览器访问以下地址,那就太好了。

    • Kibana

ttp://ec2-xxx-xxx-xxx-xxx.ap-northeast-x.compute.amazonaws.com:5601/

Elasticsearch

ttp://ec2-xxx-xxx-xxx-xxx.ap-northeast-x.compute.amazonaws.com:9200/

Apache日志传输设置。

安装Apache

$ sudo yum install httpd

因为存储httpd日志的目录的所有者和权限都是root的700,因此需要修改权限以允许apache用户和其所属的组用户进行访问。

$ sudo chown -R apache:apache /var/log/httpd/
$ sudo chmod g+rx /var/log/httpd/

此外,将Fluentd的执行用户(td-agent)加入到apache组中,以便Fluentd能够访问日志。

$ sudo usermod -G apache td-agent

启动httpd。

$ sudo /etc/init.d/httpd start

Fluentd的配置

在 /etc/td-agent/td-agent.conf 文件中追加以下内容。

<source>
  @type tail
  path /var/log/httpd/access_log
  tag apache.access_log
  pos_file /var/log/td-agent/httpd-access.log.pos
  format apache2
</source>

<match apache.**>
  @type copy

  <store>
    @type stdout
  </store>

  <store>
    @type elasticsearch
    host EC2のIPアドレス
    port 9200
    type_name access_log
    logstash_format true
    logstash_prefix apache_access
    logstash_dateformat %Y%m
  </store>
</match>

需要记住,在后面的Kibana配置中将使用这个conf文件中的logstash_prefix。另外,需要安装Elasticsearch插件。

$ sudo td-agent-gem install fluent-plugin-elasticsearch

启动Fluentd并准备完毕。

$ sudo /etc/init.d/td-agent start

使Kibana能够查看图形

访问Apache服务器.

随便用浏览器访问服务器,并下载访问日志。
如果设置正确,Fluentd应该会将解析apache访问日志的数据保存在/var/log/td-agent/td-agent.log中。

Kibana的索引模式设置

在访问一定数量的页面后,现在转而访问Kibana。然后会跳转到Elasticsearch数据源指定的页面,输入apache_access-*作为索引模式。这与Fluentd的conf文件中提到的logstash_prefix相同。输入完成后,点击创建。

スクリーンショット 2017-09-17 21.39.37.png

做成

我已经可以在Kibana上玩耍了。

スクリーンショット 2017-09-17 21.41.34.png
广告
将在 10 秒后关闭
bannerAds