ELK产品组件

Elasticsearch 分布式、开源的搜索和分析引擎。为垂直扩展、可靠性、易管理而生。它结合了搜索速度快的优点和支持复杂分析的需求。为开发者提供了对结构化的、非结构化的、时间序列的数据的友好查询语言(DSL)

Elasticsearch as a Service 在短时间内就可以搭建自己的ES集群。一个高度管理的解决方案,支持搜索,日志和分析。并且集成了很多商业的插件。

Logstash 是一个灵活的,开源的数据收集、数据enrichment、数据传输的管道。能够轻松地集成到常见的infrustructure里去。为充分地处理日志、时间、非结构化数据而设计,并能将数据分发到多种多样的输出,包括ES。

Shield 给企业级的ES带来安全保障,为整个ELK栈提供加密的通信,认证,基于角色的连接控制和审计。为日益增长的商业安全需要而生。sheild能为你带来头脑的平静。

Kibana 开源数据可视化平台,能够让你与数据交互,生成dashboads等图能让你宣传并分享你对数据的深刻见解。

Watcher 是一个警告和通知的产品。如果你能查询ES,你就能警告它。为ES提供安全的监控或者日志里的异常。watcher能让你基于你的数据马上采取行动。

Elasticsearch for Apache Hadoop es-hadoop是双向的连接器,让你实时地读写数据并且搜索。es-hadoop是一个优美的解决方案,利用了hadoop和ES两个的力量。

Marvel 提供了ES部署后状态的信息的综合的工具。监控ES节点的活动,快速诊断问题,并且能尽可能够×××能的优化。

Beats 是ES开源数据传输的未来。从网络包到日志文件,infrastructure数据,还有更多。beats是一个构建了多种多样轻量的传输工具来帮助你利用操作的数据。

ELK的服务端的安装部署

 1:服务器环境

  服务器ip地址:192.168.0.147

[root@hanye147 conf.d]# uname -a

Linux hanye147 3.10.103-1.el6.elrepo.x86_64 #1 SMP Sun Aug 28 16:41:49 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux

[root@hanye147 conf.d]# cat /etc/issue

CentOS release 6.8 (Final)

Kernel \r on an \m

[root@hanye147 conf.d]# java -version

openjdk version "1.8.0_101"

OpenJDK Runtime Environment (build 1.8.0_101-b13)

OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)

2:安装ELK所需要的软件

    A:java-1.8.0-openjdk   yum install -y java-1.8.0-openjdk

    B: wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.noarch.rpm

    C: wget https://download.elastic.co/logstash/logstash/packages/centos/logstash-1.5.5-1.noarch.rpm
          D: wget https://download.elastic.co/kibana/kibana/kibana-4.1.0-linux-x64.tar.gz

3:ELK之elasticsearch的安装部署

[root@hanye147 ~]# wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.noarch.rpm 

[root@hanye147 ~]# yum install -y elasticsearch-1.7.2.noarch.rpm 

[root@hanye147 ~]# sudo chkconfig --add elasticsearch 

[root@hanye147 ~]# service elasticsearch start 

Starting elasticsearch:                                    [  OK  ] 

  安装head集群插件

         

 elasticsearch/bin/plugin -install mobz/elasticsearch-head 

[root@hanye147 ~]# /usr/share/elasticsearch/bin/plugin  -install mobz/elasticsearch-head 

-> Installing mobz/elasticsearch-head... 

Trying https://github.com/mobz/elasticsearch-head/archive/master.zip... 

Downloading ................................................... 

Installed mobz/elasticsearch-head into /usr/share/elasticsearch/plugins/head 

[root@hanye147 ~]# ls /usr/share/elasticsearch/plugins/ 

head 

访问:
  

http://192.168.0.147:9200/_plugin/head/ 


修改配置文件

编辑 /etc/elasticsearch/elasticsearch.yml打开以下行

[root@ELK-S-linux78 ~]# cat /etc/elasticsearch/elasticsearch.yml |egrep -v "^#|^$" 

cluster.name: hanye123 

node.name: "hanye147" 

network.host: 192.168.0.147 

http.port: 9200 

discovery.zen.ping.multicast.enabled: false #关闭广播,如果局域网有机器开9300 端口,服务会启动不了 

http.cors.allow-origin: "/.*/" 

http.cors.enabled: true 

 启动elasticsearh

[root@hanye147 ~]# /etc/init.d/elasticsearch restart 

停止 elasticsearch: [确定] 

正在启动 elasticsearch: [确定] 

查看端口

[root@hanye147 ~]# netstat -tunlp 

Active Internet connections (only servers) 

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 

tcp 0 0 ::ffff:10.0.0.55:9200 :::* LISTEN 2207/java 

tcp 0 0 ::ffff:10.0.0.55:9300 :::* LISTEN 2207/java 

udp 0 0 :::54328 :::* 2207/java 

[root@hanye147 ~]# curl -X GET http://192.168.0.147:9200/ 

"status" : 200, 

"name" : "hanye147, 

"cluster_name" : "elasticsearch", 

"version" : { 

"number" : "1.7.2", 

"build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec", 

"build_timestamp" : "2015-09-14T09:49:53Z", 

"build_snapshot" : false, 

"lucene_version" : "4.10.4" 

}, 

"tagline" : "You Know, for Search" 


Elasticsearch目录结构

rpm安装目录:usr/share/elasticsearch/ 

bin:运行ElasticSearch实例和管理插件的脚本

lib:使用的库

plugins :已安装的插件存入的位置

etc/elasticsearch/:配置文件目录

/var/log/elasticsearch/:日志文件

[root@hanye147 ~]# rpm -ql elasticsearch|less #查看安装文件目录位置  



4:ELK之logstash的安装部署和测试



Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。每个阶段都由很多的插件配合工作,比如file、elasticsearch、redis等等。

每个阶段也可以指定多种方式,比如输出既可以输出到elasticsearch中,也可以指定到stdout在控制台打印。

由于这种插件式的组织方式,使得logstash变得易于扩展和定制,



工作原理


Logstash使用管道方式进行日志的搜集处理和输出。有点类似*NIX系统的管道命令 xxx | ccc | ddd,xxx执行完了会执行ccc,然后执行ddd。

在logstash中,包括了三个阶段:

输入input --> 处理filter(不是必须的) --> 输出output 

yum安装



[root@ELK-S-linux78 ~]# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch 

 [root@hanye147 ~]# cat  >/etc/yum.repos.d/logstash.repo >>EOF 

 [logstash-1.5] 

 name=logstash repository for 1.5.x packages 

 baseurl=http://packages.elasticsearch.org/logstash/1.5/centos 

 gpgcheck=1 

 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch 

 enabled=1 

 EOF 

 [root@hanye147 ~]# yum install logstash 





文件安装位置

[root@hanye147 ~]# ls /opt/logstash/ 

 bin CHANGELOG.md CONTRIBUTORS Gemfile Gemfile.jruby-1.9.lock lib LICENSE NOTICE.TXT vendor 

 [root@hanye147 ~]# ls /etc/logstash/ 

 conf.d 



测试程序是否正常



[root@hanye147 ~]# /opt/logstash/bin/logstash -e 'input {stdin{}} output {stdout{}}' 

 Logstash startup completed 

 hello world!!   ###手敲 

 2016-06-06T17:32:24.385Z hanye147 hello world!!

 命令选项 



-f:指定配置文件

-e:用于指定字符输入

-l: 指定logstash的默认日志写入一个文件中,默认为控制台输出

-t: 用来测试logstash读取到的配置文件语法是否正确解析 





5:ElK只kibana的安装和配置





Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化仪表板、分析等各种操作。已经历经了 v1, v2, v3, v4 个版本,分别采用了 PHP,Ruby,AngularJS,JRuby,NodeJS 等不同语言编写。

Kibana 容易安装和使用,整个项目都是用 HTML 和 Javascript 写的, Kibana 不需要任何服务器端组件,一个纯文本发布服务器就够了。

Kibana 的使用场景集中在两方面:

实时监控

问题分析



kibana下载地址修改配置文件



[root@hanye147 ~]#  wget https://download.elastic.co/kibana/kibana/kibana-4.1.0-linux-x64.tar.gz 

[root@hanye147 ~]#  tar xf kibana-4.1.0-linux-x64.tar.gz -C /usr/local/ 

[root@hanye147 ~]#  ln -s /usr/local/kibana-4.1.0-linux-x64/ /usr/local/kibana

  

[root@hanye147 ~]#  vim /usr/local/kibana/config/kibana.yml 

server.host: "192.168.0.147" 

elasticsearch.url: "http://192.168.0.147:9200" 

kibana.defaultAppId: "discover" 

elasticsearch.requestTimeout: 300000 

elasticsearch.shardTimeout: 0 



添加服务脚本

[root@hanye147 ~]#  vim /etc/init.d/kibana 

#!/bin/bash 

### BEGIN INIT INFO 

# Provides: kibana 

# Default-Start: 2 3 4 5 

# Default-Stop: 0 1 6 

# Short-Description: Runs kibana daemon 

# Description: Runs the kibana daemon as a non-root user 

### END INIT INFO 

# Process name 

NAME=kibana 

DESC="Kibana4" 

PROG="/etc/init.d/kibana" 

# Configure location of Kibana bin 

KIBANA_BIN=/usr/local/kibana/bin 

# PID Info 

PID_FOLDER=/var/run/kibana/ 

PID_FILE=/var/run/kibana/$NAME.pid 

LOCK_FILE=/var/lock/subsys/$NAME 

PATH=/bin:/usr/bin:/sbin:/usr/sbin:$KIBANA_BIN 

DAEMON=$KIBANA_BIN/$NAME 

# Configure User to run daemon process 

DAEMON_USER=root 

# Configure logging location 

KIBANA_LOG=/var/log/kibana.log 

# Begin Script 

RETVAL=0 

 

if [ `id -u` -ne 0 ]; then 

echo "You need root privileges to run this script" 

exit 1 

fi 

 

# Function library 

. /etc/init.d/functions 

 

start() { 

echo -n "Starting $DESC : " 

 

pid=`pidofproc -p $PID_FILE kibana` 

if [ -n "$pid" ] ; then 

echo "Already running." 

exit 0 

else 

# Start Daemon 

if [ ! -d "$PID_FOLDER" ] ; then 

mkdir $PID_FOLDER 

fi 

daemon --user=$DAEMON_USER --pidfile=$PID_FILE $DAEMON 1>"$KIBANA_LOG" 2>&1 & 

sleep 2 

pidofproc node > $PID_FILE 

RETVAL=$? 

[[ $? -eq 0 ]] && success || failure 

echo 

[ $RETVAL = 0 ] && touch $LOCK_FILE 

return $RETVAL 

fi 

 

reload() 

echo "Reload command is not implemented for this service." 

return $RETVAL 

 

stop() { 

echo -n "Stopping $DESC : " 

killproc -p $PID_FILE $DAEMON 

RETVAL=$? 

echo 

[ $RETVAL = 0 ] && rm -f $PID_FILE $LOCK_FILE

 

case "$1" in 

start) 

start 

;; 

stop) 

stop 

;; 

status) 

status -p $PID_FILE $DAEMON 

RETVAL=$? 

;; 

restart) 

stop 

start 

;; 

reload) 

reload 

;; 

*) 

# Invalid Arguments, print the following message. 

echo "Usage: $0 {start|stop|status|restart}" >&2 

exit 2 

;; 

esac 

启动服务



[root@ELK-S-linux78 ~]#  chmod +x /etc/init.d/kibana 

[root@hanye147 ~]#  /etc/init.d/kibana start 

Starting Kibana4 : [确定] 

# netstat -tunlp 

tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 2022/node 

tcp 0 0 ::ffff:10.0.0.44:9200 :::* LISTEN 1955/java 

tcp 0 0 ::ffff:10.0.0.44:9300 :::* LISTEN 1955/java 

添加开机服务

[root@hanye147 ~]# chkconfig --add kibana 

[root@hanye147~]# chkconfig kibana on 

访问方式

http://192.168.0.147:5601 


参考文档:http://www.fblinux.com/?p=40

参看文档:http://www.linux78.com/the-elk-kibana-installation.html
      参考文档:http://www.linuxea.com/category/Stack/