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
C: wget
D: wget
3:ELK之elasticsearch的安装部署
[root@hanye147 ~]# wget
[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
Downloading ...................................................
Installed mobz/elasticsearch-head into /usr/share/elasticsearch/plugins/head
[root@hanye147 ~]# ls /usr/share/elasticsearch/plugins/
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
{
"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
[root@hanye147 ~]# cat >/etc/yum.repos.d/logstash.repo >>EOF
[logstash-1.5]
name=logstash repository for 1.5.x packages
baseurl=
gpgcheck=1
gpgkey=
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
[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: ""
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
访问方式
参考文档:
参看文档:
参考文档: