Elastic Stack 是原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼,ELK 套件成了开源日志处理领域的第一选择;java
从Elasticsearch 5.0版本开始,Elastic公司全线产品升级到5.0版本。并且由于Beats的加入,再也不使用ELK简称。
23 Oct 2016 是 5.0GA发布的日子,因此本次release,也标志着ELK的结束。之后的更新,将基于Elastic Stack 5.0继续;node
-- chenrynbootstrap
按照官方 https://www.elastic.co 介绍:vim
Visualize your data. Navigate the Elastic Stack. ------- Kibana浏览器
Search, analyze, and store your data. ------- Elasticsearchtomcat
Ingest any data, from any source, in any format ------- Beats 和 Logstashruby
ELasticsearch:5.2.2bash
Logstash:5.2.2服务器
Kibana:5.2.2jvm
jdk:1.8.0_77
官网下载程序包
$ tar xvf elasticsearch-5.2.2.zip $ cd elasticsearch-5.2.2 # elasticsearch 默认是不能用 root 启动的,须要使用别的用户启动 $ su userother
目前仍有许多插件不支持 5.x 版本,好比 mobz/elasticsearch-head 就不支持 5.x,有关插件参考官方文档
修改配置文件。建立 /tmp/elasticsearch/data /tmp/elasticsearch/logs 文件夹:
# 添加以下配置 cluster.name: es_cluster node.name: node0 path.data: /tmp/elasticsearch/data path.logs: /tmp/elasticsearch/logs network.host: 0.0.0.0 # network.port: 9200 默认
./bin/elasticsearch 启动报错:
... Exception in thread "main" java.lang.RuntimeException: bootstrap checks failed initial heap size [268435456] not equal to maximum heap size [2147483648]; this can cause resize pauses and prevents mlockall from locking the entire heap max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] please set [discovery.zen.minimum_master_nodes] to a majority of the number of master eligible nodes in your cluster max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] ... # fix 一、提升 vm.max_map_count $ su root $ sysctl -w vm.max_map_count=262144 $ sysctl -a | grep vm.max_map_count vm.max_map_count = 262144 # 永久修改,须要修改 /etc/sysctl.conf 文件里面 vm.max_map_count=262144 $ sysctl -p # 生效 二、修改 jvm 内存 $ vim elasticsearch/config/jvm.options 将 -Xms2g -Xmx2g 改成 -Xms256m -Xmx256m 值为 [268435456] / 1024 / 1024 三、修改系统 limit $ su root $ vim /etc/security/limits.conf 添加(userother 为启动 elasticsearch 的用户) userother hard nofile 65536 userother soft nofile 65536
./bin/elasticsearch 启动程序,访问 http://IP:9200
Logstash 其实就是一个收集器,能够指定 Input 和 Output( Input 和 Output 能够为多个)
Logstash 能够获取服务器上的日志,编写 Logstash 配置文件便可;
# Remember: if a new user has a bad time, it's a bug in logstash
从官网下载二进制包,推荐使用软件仓库完成批量安装(将二进制包打包成 rpm 包,放入自搭建的 yum 库中,用于服务器批量安装,避免出现版本而致使的错误)
Logstash 是须要 java 环境支持的,从 orecle 下载 java jdk,添加至环境变量 /etc/profile
JAVA_HOME=/usr/lib/jdk1.8.0_77 JAVA_BIN=$JAVA_HOME/bin PATH=$JAVA_BIN:$PATH:. export JAVA_HOME JAVA_BIN PATH
简单的 Hello World:
$ bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' { "message" => "Hello World", "@version" => "1", "@timestamp" => "2017-03-10T10:30:59.937Z", "host" => "pcdeMacBook-Pro.local", }
Logstash 配置文件中用 {} 来定义区域,区域内能够包括插件区域的定义,插件区域内则能够定义键值对设置,详细语法能够参考官方文档。
编辑配置文件:
$ cat ./config/tomcat_to_es.conf # 从指定位置读取日志,并输出到 elasticsearch 服务器中 input { file { path => "/usr/tomcat/tomcat-10005/logs/*" exclude => "s10005.log*" start_position => beginning } } filter { } output { elasticsearch { hosts => ["http://10.12.41.127:9200"] index => "tomcats10005" } } # 启动 Logstash $ ./bin/logstash -f ./config/tomcat_to_es.conf
Logstash 还支持从 syslog 中获取日志,从 java log4j 获取等方式。
filter 区域则能够配置须要获取日志的规则,很强大;
Kibana 安装仅需从官网下载 Kibana 二进制包,解压缩便可运行;
修改配置文件,告诉 Kibana 须要搜索哪一个 Elasticsearch 索引
$ cat ./config/kibana.yml # 添加配置 server.port: 5601 server.host: 10.12.41.127 elasticsearch.url: http://localhost:9200 kibana.index: ".kibana" # 启动 Kibana $ ./bin/kibana
打开浏览器,访问 http://10.12.41.127:5601,配置至少一个 Index 名字或者 Pattern,用于在分析时肯定 ES 中的 Index,输入以前在 Logstash 中配置的 Index 名字,Kibana 会自动加载该 Index 下的 doc 的 field,并自动选择合适的 field 用于图标中的时间字段;
至此,简单的 ELK 日志平台部署基本完成了;