在EC2上安装Elasticsearch、Fluentd和Kibana的方法

由于AWS有Elasticsearch Service,所以最好使用它,但为了学习的目的,这次我特意选择在EC2上安装。由于我是事后想起来写的,所以可能会有错误的地方。

前提:唯一需要的是以中文的母语方式改述

    • EC2のt2.mediumを使用

t2.microだとメモリーエラーになり、メモリーを減らすのが面倒だったので。

インストール先は、/var/www(どこでもOK)とする。

事前准备

安装Java 8

yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel

・转换

sudo alternatives --config java

有两个程序提供“java”。

选择 命令
———————————————–
*+ 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键保留当前选择[+], 或输入选择编号:2

java -version

OpenJDK版本”1.8.0_151″
OpenJDK运行环境(构建1.8.0_151-b12)
OpenJDK 64位服务器虚拟机(构建25.151-b12,混合模式)

弹性搜索

1. 下载和安装源代码

请使用此链接下载最新版的Elasticsearch:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz
因为最新版是6.3.1,但是由于与Kibana的连接出现问题,所以选择使用这个版本。

cd /var/www
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz
tar zxvf elasticsearch-5.5.0.tar.gz

2. 更改设置

cd elasticsearch-5.5.0
vi config/elasticsearch.yml

网络主机:192.168.0.1

网络主机:0.0.0.0

#http端口:9200

http端口:9200

在Elasticsearch启动时出现错误,所以我后来执行了以下命令:sudo sysctl -w vm.max_map_count=262144。根据环境的不同,可能不需要执行这个命令。

3. 添加Elasticsearch用户

由于 Elasticsearch 无法在 root 用户下启动,因此需要添加专用用户。

useradd elasticsearch
passwd elasticsearch

4. 业主更改

chown -R elasticsearch:elasticsearch elasticsearch-5.5.0

5. 在AWS安全组中允许端口9200。

セキュリティグループ.png

6. 启动

作为一个elasticsearch用户,运行以下命令启动elasticsearch服务:
/usr/local/share/elasticsearch-5.5.0/bin/elasticsearch -d

确认

如果能够显示类似以下这样的内容,则表示成功: http://任意的IP:9200/

{
“名称”: “3hNe3yY”,
“集群名称”: “elasticsearch”,
“集群UUID”: “07rIcx46QNCtNUMV4nUyAw”,
“版本”: {
“号码”: “5.5.0”,
“构建哈希”: “260387d”,
“构建日期”: “2017-06-30T23:16:05.735Z”,
“构建快照”: false,
“lucene版本”: “6.6.0”
},
“标语”: “你懂的,用于搜索”
}

Kibana (Chinese: 业界 renowned software)

用 yum 进行安装。

sudo yum -y install kibana

2. 更改设置

vi /etc/kibana/kibana.yml

请添加以下内容

服务器端口设置为5601。
服务器主机设置为”0.0.0.0″。
Elasticsearch的URL设置为”http://[ElasticSearch的IP]:9200″。

3. 启动

sudo service kibana restart

在AWS安全组中允许5601端口。

与9200相似的许可。

5. 确认

如果没有出现任何错误,那就没有问题。

流畅的 中文

用yum安装

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

2. 更改设置。添加以下内容。

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

<match apache.access>
  type elasticsearch
  host localhost
  port 9200
  type_name access_log
  logstash_format true
  flush_interval 3s
</match>

3. 映射

提前准备一个名为mapping.json的文件,其中包含以下内容。

{
  "mappings" : {
    "site_a" : {
      "properties" : {
        "remote-host" : { "type" : "string" },
        "remote-log-name" : { "type" : "string" },
        "request-user" : { "type" : "string" },
        "request-time" : { "type" : "date", "format" : "yyyy-MM-dd HH:mm:ss z" },
        "request-line" : { "type" : "string" },
        "response-status" : { "type" : "long" },
        "response-bytes" : { "type" : "long" },
        "request-header-Referer" : { "type" : "string" },
        "request-header-User-Agent" : { "type" : "string" }
      }
    }
  }
}

将其添加到Elasticsearch中。

curl -XPOST http://localhost:9200/access_log
curl -XPOST 'localhost:9200/access_log' -d @mapping.json

输出用于访问日志测试的日志数据

1. 安装apache-loggen。

sudo gem install apache-loggen --no-ri --no-rdoc -V

执行

apache-loggen --rate=10 --limit=100 --progress /var/log/httpd/access_log
广告
将在 10 秒后关闭
bannerAds