1.配置Java开发环境(配置环境变量)
2.安装Logstash
解压:# tar –zxf logstash-2.3.4.tar.gz -C /usr/local/
在logstash安装目录下创建一个“基本配置”测试文件,(例如:logstash-test.conf)文件内容如下:
# vi test.conf
input{ stdin{}}
output{stdout { codec=> rubydebug}}
在当前目录下启动logstash:# ./logstash -f test.conf
成功启动后,随便输入一串字符,会出现相应的ruby格式日志,说明没问题
3.安装elaaticsearch
下载Elasticsearch后,解压到对应的目录就完成Elasticsearch的安装。
# tar -zxf elasticsearch-1.6.0.tar.gz -C /usr/local/
启动Elasticsearch: # /usr/local/elasticsearch-1.6.0/bin/elasticsearch
如果使用远程连接的Linux的方式并想后台运行elasticsearch执行如下命令:
# nohup /usr/local/elasticsearch-1.6.0/bin/elasticsearch >nohup &
如果想要后台运行:# /usr/local/elasticsearch-1.6.0/bin/elasticsearch -d
确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行
# netstat -anp |grep :9200
tcp 0 0 :::9200 :::* LISTEN 3362/java
接下来我们在 logstash安装目录下 创建一个用于测试logstash使用elasticsearch作为logstash的后端的测试文件test2.conf
# vi logstash-es-simple.conf
input { stdin { } }
output {
elasticsearch {hosts => "本机IP地址或者服务器ip" }
stdout { codec=> rubydebug }
}
进入/elasticsearch/config/elasticsearch.yml,把设置ip地址命令前面的#号去掉,localhost改成本机IP或者服务器IP,设置端口号前面的#号去掉,端口号改成9200
执行如下命令:# /usr/local/logstash-1.5.2/bin/logstash -f test2.conf
… …
Logstash startup completed
输入:hello logstash
如果出现
{
"message" => "hello logstash",
"@version" => "1",
"@timestamp" => "2015-07-15T18:12:00.450Z",
"host" => "noc.vfast.com"
}
安装成功
我们可以使用curl命令发送请求来查看ES是否接收到了数据:
# curl 'http://localhost:9200/_search?pretty'
返回结果
{
"took": 58,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits": {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2015.07.15",
"_type" : "logs",
"_id" : "AU6TWiixxDXYhySMyTkP",
"_score" : 1.0,
"_source":{"message":"hellologstash","@version":"1","@timestamp":"2015-07-15T20:13:55.199Z","host":"noc.vfast.com"}
} ]
}
}
安装elasticsearch插件
为了解决内存太小的问题
2.安装Logstash
下载并安装Logstash,安装logstash只需将它解压的对应目录即可,例如:/usr/local下:
在这里不建议在linux环境下到官网下载,太慢,可以在Windows下下载好复制到linux里
解压:# tar –zxf logstash-2.3.4.tar.gz -C /usr/local/
在logstash安装目录下创建一个“基本配置”测试文件,(例如:logstash-test.conf)文件内容如下:
input{ stdin{}}
output{stdout { codec=> rubydebug}}
在当前目录下启动logstash:# ./logstash -f test.conf
成功启动后,随便输入一串字符,会出现相应的ruby格式日志,说明没问题
3.安装elaaticsearch
下载Elasticsearch后,解压到对应的目录就完成Elasticsearch的安装。
# tar -zxf elasticsearch-1.6.0.tar.gz -C /usr/local/
启动Elasticsearch: # /usr/local/elasticsearch-1.6.0/bin/elasticsearch
如果使用远程连接的Linux的方式并想后台运行elasticsearch执行如下命令:
# nohup /usr/local/elasticsearch-1.6.0/bin/elasticsearch >nohup &
如果想要后台运行:# /usr/local/elasticsearch-1.6.0/bin/elasticsearch -d
确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行
# netstat -anp |grep :9200
tcp 0 0 :::9200 :::* LISTEN 3362/java
接下来我们在 logstash安装目录下 创建一个用于测试logstash使用elasticsearch作为logstash的后端的测试文件test2.conf
# vi logstash-es-simple.conf
input { stdin { } }
output {
elasticsearch {hosts => "本机IP地址或者服务器ip" }
stdout { codec=> rubydebug }
}
进入/elasticsearch/config/elasticsearch.yml,把设置ip地址命令前面的#号去掉,localhost改成本机IP或者服务器IP,设置端口号前面的#号去掉,端口号改成9200
执行如下命令:# /usr/local/logstash-1.5.2/bin/logstash -f test2.conf
… …
Logstash startup completed
输入:hello logstash
如果出现
{
"message" => "hello logstash",
"@version" => "1",
"@timestamp" => "2015-07-15T18:12:00.450Z",
"host" => "noc.vfast.com"
}
安装成功
我们可以使用curl命令发送请求来查看ES是否接收到了数据:
# curl 'http://localhost:9200/_search?pretty'
返回结果
{
"took": 58,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits": {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2015.07.15",
"_type" : "logs",
"_id" : "AU6TWiixxDXYhySMyTkP",
"_score" : 1.0,
"_source":{"message":"hellologstash","@version":"1","@timestamp":"2015-07-15T20:13:55.199Z","host":"noc.vfast.com"}
} ]
}
}
安装elasticsearch插件
Elasticsearch-kopf插件可以查询Elasticsearch中的数据,安装elasticsearch-kopf,只要在你安装Elasticsearch的目录中执行以下命令即可:
# cd /usr/local/elasticsearch-1.6.0/
# ./plugin -install lmenezes/elasticsearch-kopf
4.安装kibana
下载kibana后,解压到对应的目录就完成kibana的安装
# tar -zxf kibana-4.1.1-linux-x64.tar.gz -C /usr/local/
进入/kibana/config/kibana.yml,把设置serverport命令前面的#号去掉,serverport改成5601,设置elasticsearch端口号前面的#号去掉,改成 elasticsearch.url: "http://本机ip或者服务器ip:9200"
使用http://kibanaServerIP:5601访问Kibana,登录后,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据。可以自定义选择时间。
5.配置logstash作为Indexer
博文参考:http://www.iyunv.com/thread-89268-1-1.html
# cd /usr/local/elasticsearch-1.6.0/
# ./plugin -install lmenezes/elasticsearch-kopf
4.安装kibana
下载kibana后,解压到对应的目录就完成kibana的安装
# tar -zxf kibana-4.1.1-linux-x64.tar.gz -C /usr/local/
进入/kibana/config/kibana.yml,把设置serverport命令前面的#号去掉,serverport改成5601,设置elasticsearch端口号前面的#号去掉,改成 elasticsearch.url: "http://本机ip或者服务器ip:9200"
使用http://kibanaServerIP:5601访问Kibana,登录后,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据。可以自定义选择时间。
5.配置logstash作为Indexer
将logstash配置为索引器,并将logstash的日志数据存储到Elasticsearch,本范例主要是索引本地系统日志。
# vi /usr/local/logstash-1.5.2/logstash-indexer.conf
input {
file {
type =>"syslog"
path => ["/var/log/messages", "/var/log/syslog" ]
}
syslog {
type =>"syslog"
port =>"5544"
}
}
output {
stdout { codec=> rubydebug }
elasticsearch {host => "localhost" }
}
# /usr/local/logstash-1.5.2/bin/logstash -f logstash-indexer.conf
使用echo命令模拟写入日志,命令执行后看到如下图的信息
# echo "`date` 优衣库视频" >>/var/log/messages
会出现:
kibana里面也会更新相应的日志信息
到此,ELK平台部署和基本的测试已完成。
# vi /usr/local/logstash-1.5.2/logstash-indexer.conf
input {
file {
type =>"syslog"
path => ["/var/log/messages", "/var/log/syslog" ]
}
syslog {
type =>"syslog"
port =>"5544"
}
}
output {
stdout { codec=> rubydebug }
elasticsearch {host => "localhost" }
}
# /usr/local/logstash-1.5.2/bin/logstash -f logstash-indexer.conf
使用echo命令模拟写入日志,命令执行后看到如下图的信息
# echo "`date` 优衣库视频" >>/var/log/messages
会出现:
kibana里面也会更新相应的日志信息
到此,ELK平台部署和基本的测试已完成。
为了解决内存太小的问题
-
修改 bin 目录中 elasticsearch.in.sh 文件,关于Elasticsearch JVM 内存配置大小:
此处可以根据机器硬件配置情况作出适当的调整,一般情况下,此处的内存分配大小为机器物理内存的一半,同时将 ES_MIN_MEM 与 ES_MAX_MEM 配置成相同的值,这样的好处在于ES JVM大小固定,不会上下浮动,从实践效果上看可以提高 node 性能。
为了解决too many open files的问题-
检查系统允许 Elasticsearch 打开的最大文件数
查看 /etc/security/limits.conf,如果没有指定的话,默认是4096。这里应该添加如下两行:
这个值可以根据需要适当的调整的更大。如此,当 Elasticsearch 中存在很多 index 的时候不会出现 Too many open files 的错误。
ps:修改完系统文件后,需要重启服务器!
为了解决分词问题,需要在elasticsearch.yml中添加一句: