ELK概述
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:
1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在ElasticSearch中,所有节点的数据是均等的。
2)Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
3)Kibana 是一个基于浏览器页面的ElasticSearch前端展示工具,也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
一、安装JDK
Logstash的运行依赖于Java运行环境, Logstash 1.5以上版本不低于java 7,推荐使用最新版本的Java(已安装的请跳过)。
# wget http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz # mkdir /usr/local/java # tar -zxf jdk-8u45-linux-x64.tar.gz -C /usr/local/java/
配置Java环境变量
# vi /etc/profile export JAVA_HOME=/usr/local/java/jdk1.8.0_45 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
执行java -version命令,查看JDK是否配置成功。
二、安装Logstash
下载Logstash,并解压Logstash到指定目录
# wget https://download.elastic.co/logstash/logstash/logstash-2.3.4.tar.gz # tar -zxvf logstash-2.3.4.tar.gz -C /usr/local/ # mv /usr/local/logstash-2.3.4 /usr/local/logstash
简单测试Logstash服务是否正常,预期可以将输入内容以简单的日志形式打印在界面上
# /usr/local/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
创建Logstash配置文件
# mkdir -p /data/elk/logstash_conf/ # vi log_web_error.conf
input { file { codec => multiline { pattern => "^\d{2}:\d{2}:\d{2}\.\d* \d* ERROR" negate => true what => "previous" } path => "/data/weblogs/tomcat_web/error/*.log" start_position => "beginning" } } output { stdout {} elasticsearch { action => 'index' hosts => '172.16.90.33' index => 'web_33_error' } }
测试脚本是否正常(正常启动时,日志信息会打印到控制台)
# /usr/local/logstash/bin/logstash -f /data/elk/logstash_conf/log_web_error.conf
当脚本较多时,可以指定logstash –f到指定目录即可
# /usr/local/logstash/bin/logstash -f /data/elk/logstash_conf/
三、安装ElasticSearch
1、下载ElasticSearch,并解压到指定目录
# wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz # tar -zxvf elasticsearch-2.3.4.tar.gz -C /usr/local/ # mv /usr/local/elasticsearch-2.3.4 /usr/local/elasticsearch
2、创建ElasticSearch数据存储目录和日志存储目录
# mkdir -p /data/elk/db/ # mkdir -p /data/weblogs/elk/
3、为ElasticSearch服务创建启动用户
# useradd es # chown -R es /usr/local/elasticsearch/ # chown -R es /data/
4、调整ElasticSearch配置文件
# cd /usr/local/elasticsearch/config/ # vi elasticsearch.yml
cluster.name: es-cluster node.name: node-33 path.data: /data/elk/db path.logs: /data/weblogs/elk network.host: 172.16.90.33 http.port: 9200
5、安装head插件
# su - es $ cd /usr/local/elasticsearch/ $ ./bin/plugin install mobz/elasticsearch-head #查看head插件是否安装 $ ls plugins/
6、启动ElasticSearch
$ ./bin/elasticsearch &
7、查看ElasticSearch首页
# curl http://172.16.90.33:9200
可以通过浏览器查看head插件是否安装成功:http://172.16.90.33:9200/_plugin/head/
8、防火墙配置
为了正常使用HTTP服务等,需要关闭防火墙
# service iptables stop
或者可以不关闭防火墙,但是要在iptables中打开相关的端口
# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9292 -j ACCEPT # service iptables restart
四、安装Kibana
1、下载Kibana,并安装Kibana到指定目录
# wget https://download.elastic.co/kibana/kibana/kibana-4.5.3-linux-x64.tar.gz # tar -zxvf kibana-4.5.3-linux-x64.tar.gz # mv /usr/local/kibana-4.5.3-linux-x64 /usr/local/kibana/
2、修改Kibana配置文件
# cd /usr/local/kibana/config/ # vi kibana.yml server.host: "172.16.90.33" elasticsearch.url: http://172.16.90.33:9200
3、启动Kibana
# cd ../ # ./bin/kibana &
通过浏览器访问Kibana: http://172.16.90.33:5601/
五、kibana的登录认证问题
kibana是nodejs开发的,本身并没有任何安全限制,直接浏览url就能访问,如果公网环境非常不安全,可以通过nginx请求转发增加认证,方法如下:
注意:kibana没有重启命令,要重启,只能ps -ef|grep node 查找nodejs进程,干掉重来。
1、参考一下内容修改nginx配置文件:
##如果是大规模集群环境,此处配置多台Kibana服务器即可 upstream kibana_server { server 172.16.90.33:5601; #server 192.168.8.203:5601; } server { listen 80; server_name localhost; charset utf8; location / { proxy_pass http://kibana_server$request_uri; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; ##方案一、用户认证方式,依赖apache-utils中的生成密码工具 auth_basic "secret"; auth_basic_user_file /usr/local/nginx/db/passwd.db; ##方案二、只有公司的外网IP,局域网IP可以访问 #allow 10.**.*.**; #allow 192.168.8.0/24; #deny all; } }
2、配置登录用户名、密码
htpasswd -c /usr/local/nginx/db/passwd.db kibana
注意passwd.db的路径要跟nginx配置中的一致,最后的kibana为用户名,可以随便改,输入完该命令后,系统会提示输入密码,搞定后passwd.db中就有加密后的密码了,有兴趣的可以cat看下。
提示:htpasswd是apache自带的小工具,如果找不到该命令,尝试用yum install httpd安装。
3、关闭kibana端口的外网访问
用nginx转发后,一定要记得配置iptables之类的防火墙,禁止外部直接访问5601端口,这样就只能通过nginx来访问了。