在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。
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