提示:先安装wget,执行yum -y install wget或sudo yum install wgethtml
大纲:java
1、简介node
2、Logstashlinux
3、Redisweb
4、Elasticsearchredis
5、Kinabashell
ELK由Elasticsearch、Logstash和Kibana三部分组件组成;数据库
Elasticsearch是个开源分布式搜索引擎,它的特色有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。json
Logstash是一个彻底开源的工具,它能够对你的日志进行收集、分析,并将其存储供之后使用。vim
kibana 是一个开源和免费的工具,它能够为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,能够帮助您汇总、分析和搜索重要数据日志。
Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各种日志;
Kibana: web化接口用做查寻和可视化日志;
Logstash Forwarder: logstash client端用来经过lumberjack 网络协议发送日志到logstash server;
在须要收集日志的全部服务上部署logstash,做为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,而后logstash indexer将日志收集在一块儿交给全文搜索服务ElasticSearch,能够用ElasticSearch进行自定义搜索经过Kibana 来结合自定义搜索进行页面展现。
ELK官网:https://www.elastic.co/
ELK官网文档:https://www.elastic.co/guide/index.html
ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html
提示:
ELK有两种安装方式:
(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。
(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较经常使用)
本实验以第二种方式独立环境来进行演示;单机版主机地址为:192.168.1.104。
一、Logstash的运行依赖于Java运行环境,安装jdk(采用yum安装jdk不需手动配置环境变量):
# yum -y install java-1.8.0
# java -version
输出jdk版本信息:
Openjdk version "1.8.0_51"
OpenJDK Runtime Environment (build 1.8.0_51-b16)
OpenJDK 64-Bit Server VM (build 25.51-b03, mixed mode)
二、安装logstash:
# wget https://download.elastic.co/logstash/logstash/logstash-1.5.4.tar.gz
# tar zxf logstash-1.5.4.tar.gz -C /usr/local
三、配置logstash环境变量:
# echo "export PATH=\$PATH:/usr/local/logstash-1.5.4/bin" > /etc/profile.d/logstash.sh
# . /etc/profile
四、logstash经常使用参数:
e:指定logstash的配置信息,能够用于快速测试;
f:指定logstash的配置信息,能够用于生产测试;
五、启动logstash:
5.1 经过-e参数指定logstash的配置信息,用于快速测试,直接输出到屏幕。
# logstash -e "input {stdin{}} output {stdout{}}"
启动成功显示:Logstash startup completed
输入hello logstash. //手动输入后回车,等待10秒后会有返回结果:
2015-10-08T13::55:50.660Z 0.0.0 hello logstash. //这种输出是直接原封不动的返回
5.2 经过-e参数指定logstash的配置信息,用于快速测试,以json格式输出到屏幕。
# logstash -e 'input {stdin{}} output {stdout {codec=>rubydebug}}'
启动成功显示:Logstash startup completed
输入hello logstash. //手动输入后回车,等待10秒后会有返回结果:
{
"message" => " hello logstash.",
"@version" => "1",
"@timestamp" => "2015-10-08T13:57:31.851Z",
"host" => "0.0.0.0"
}
这种输出是以json格式的返回。
六、logstash以配置文件方式启动:
6.1 输出信息到屏幕:
编辑配置文件
# vim logstash-simple.conf
input { stdin {} }
output {
stdout { codec=>rubydebug }
}
普通方式启动
# logstash -f logstash-simple.conf
启动成功显示:Logstash startup comleted
开启debug模式启动
# logstash agent -f logstash-simple.conf --verbose
启动成功显示:
Pipeline started {:leave=>:info}
Logstash startup comleted
测试:效果同5.命令行配置参数同样。
7.启动成功,查看logstash的监听端口号(默认4567端口):
# netstat -tunlp|grep java
提示:启动成功后,按2次ctrl+c退出
8.刚才将信息直接显示在屏幕上,如今将logstash输出信息存储到redis数据库中:
编辑配置文件
# vim logstash_to_redis.conf
input { stdin{} }
output {
stdout { codec => rubydebug }
redis {
host => '172.16.114.133'
data_type => 'list'
key => 'logstash:redis'
}
}
其中,input是从控制台输入,output输出到redis,host是redis服务器ip,data_type是json格式的list,每一条json格式日志信息都加入到list,list的键由key决定,在redis的客户端redis-cli下输入命令keys *可查看全部键,redis中查看list内容的命令是lrange 键 起始索引(0开始) 条数。
以该配置文件启动Logstash:
# logstash agent -f logstash_to_redis.conf --verbose
启动成功后,在控制台输入日志信息进行测试,若是未安装redis或出现以下异常:
提示:
解決 centos中-bash: vim: command not found
用centos 的主机的時候, 用 vim 时出现 -bash: vim: command not found. 只能使用 vi. 那么如何安裝 vim 呢?
输入 rpm -qa|grep vim 命令, 若是 vim 已经正确安装,会返回下面的三行代码:
[root@centos]# rpm -qa |grep vim
vim-minimal-7.0.109-6.el5
vim-common-7.0.109-7.2.el5
vim-enhanced-7.0.109-7.2.el5
若是少了其中的某一条,好比 vim-enhanced 的,就用命令 yum -y install vim-enhanced 来安装:
yum -y install vim-enhanced
若是上面的三条都沒有返回, 能够直接用 yum -y install vim* 命令
yum -y install vim*
0、下载elasticsearch需用wget(Linux的下载工具),若未安装wget,执行以下命令:
# yum -y install wget或# sudo yum install wget
安装过程当中提示y/n时,输入y便可,直到出现complete!则安装成功。
一、下载
# wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.tar.gz
二、解压
# tar zxf elasticsearch-1.7.2.tar.gz -C /usr/local/
三、修改配置项:
# cd /usr/local/elasticsearch
# vi config/elasticsearch.yml
配置内容(后面有解释):
cluster.name: es_cluster
node.name: elk
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 172.16.114.133
network.port: 9200
由于elasticsearch安装完成之后elasticsearch.yml里的配置项都是注释过的,因此直接在文件底部插入以上配置内容便可,效果以下:(切记配置名后面是冒号,后面有空格,而后才是配置值,若是冒号后面没有空格,elasticsearch会抛异常,提示没法加载配置文件),配置好后保存:
可从浏览器访问elasticsearch服务,但须要安装head插件,这是一个用浏览器与es集群交互的插件,能够查看集群状态,集群doc内容,执行搜索和普通的rest请求等,安装过程以下:
在elasticsearch-1.7.2文件夹下执行命令
# ./bin/plugin install mobz/elasticsearch-head
配置正确,安装完head插件,启动elasticsearch服务:
在elasticsearch-1.7.2文件夹下执行命令
# ./bin/elasticsearch
上图为启动信息,注意其中的transport,启用了9300端口与其它节点传输数据,启用9200端口接受http请求,可从浏览器经过ip:9200访问。
注意:若配置项的冒号后面没空格,安装插件时抛异常以下,提示无法从配置文件加载配置:
注意:若是启动时抛以下异常,即不认识的主机名,须要配置hosts文件:
# vi /etc/hosts
在最后添加一行,将本机IP和主机名进行映射:
启动完成后,会在/tmp/elasticsearch下面生成data和logs文件夹存数据文件和日志文件:
注释:该data和logs文件的路径和目录由配置项的path.data和path.logs决定
访问ip:9200,注意,若是本地访问不到linux服务器的9200,需让Linux服务器防火墙开启9200端口,或直接关闭防火墙,关闭防火墙命令
# service iptables stop
访问ip:9200/_plugin/head查看ES集群状态:
若要退出elasticsearch服务,在linux按ctrl+c便可。
阅读目录
a.在前面我简单的说过redis封装成共用类的实现,地址以下:http://www.cnblogs.com/hanyinglong/p/Redis.html。
b.redis是一个key-value存储系统,它支持存储的value类型相比较Memcached更多,包括string,list,set,sets,hashes等(It supports data structures such as strings,hashes,lists,sets,sorted sets with range queries,bitmaps,hyperloglogs and geospatial indexes with radius queies)这些数据类型都支持push/pop,Add/remove等丰富的操做,并且这些操做都是原子性的。
c.redis和Memcached同样,为了保证效率,数据都是缓存在内存中的,区别就是redis会周期性的将更新的数据写入磁盘,而且能够实现主从(master-slave)同步。
d.redis在数据存储方面,采用了NoSql数据库的思想,即将Key做为数据检索的惟一标示,能够将其简单的理解为关系型数据库中索引的键,而value则做为数据存储的主要对象,其中每个Value都有一个Key与之对应,在Redis中,Value将被视为二进制字节流用于存储任何格式的数据,如Json,XML,图片和序列化对象的字节流等,所以咱们也能够将其想象为RDB中的Blob类型字段,从而在咱们进行数据查询是,只能基于Key做为咱们查询的条件。
e.redis官网:http://www.redis.io/
a.经过上面的说明以后咱们既能够开始在linux系统下面安装redis了,在安装redis的过程当中我遇到了一些问题,但也所有解决了,原本我想直接写而后遇到错误在引出来须要安装什么,可是感受不太好写,因此我仍是在前面将这些软件准备好,你们安装的时候能够先去安装redis去验证会不会出现问题,在解决也行。
b.下载redis的包,下载地址:http://download.redis.io/releases/redis-3.0.5.tar.gz
c.redis是C语言实现的,因此在Linux系统中须要安装gcc来进行编译,安装gcc请参考第三步。
d.接下来须要安装Unix的Tcl工具,若是不安装的话后期咱们将没法对Redis进行测试,完成安装以后make test会报错,安装tcl请参考第4步,tcl包的下载地址是:http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz
e.安装完成上面的几个必须的包以后,便可以安装redis,请参考第5步以后。
f.操做须要的软件以及系统以下:虚拟机(Vmware),虚拟机中安装的Centos系统,Xshell,Xftp,redis包,tcl包。
a.经过上面准备工做以后,咱们如今已经拥有了能够安装和发布的环境,若是没有,请自行查询安装。
b.在centos下面安装gcc,咱们使用yum(包管理器)安装,由于gcc依赖了不少东西,而有些包系统可能已经安装了,有些没有,因此下面的命令最后都执行一遍,在Xshell中执行下面的命令:
b.1 yum install cpp
b.2 yum install binutils
b.3 yum install glibc-kernheaders
b.4 yum install glibc-common
b.5 yum install glibc-devel
b.6 yum install gcc
b.7 yum install make
备注:以上全部的包信息在安装完成的时候都会提示Complete,若是没有是Complete,而是Nothing to do,则说明服务器已经安装了这个包,不须要再次安装,因此不要紧,继续执行下一个命令便可。
c.若是安装过程当中没有报错,则说明gcc的安装已经完成了,下面继续安装tcl。
a.在Xshell中使用命令跳转到local下面建立属于本身的文件夹:kencery
a.1 cd usr/local/ mkdir kencery cd kencery/
b. 而后使用Xftp将在准备工做下载的tcl包复制到kencery文件夹下面,如图所示:
c.将上传的tcl包解压,解压以后重命名为tcl,如图所示
c.1 tar -zxvf tcl8.6.3-src.tar.gz
c.2 mv tcl8.6.3 tcl
c.3 cd tcl
d.解压完成以后使用下面的命令安装,命令执行顺序按照我写的便可。
d.1 cd unix/
d.2 ./configure
d.3 make
d.4 make install
e.在执行的过程当中若是不出现错误,耐心等待便可,这些命令的截图就不放在这里了,按照我写的顺序执行便可。
a.经过上面几步以后,准备工做已经完成,便可以开始安装redis了。
b.使用Xftp将在准备工做下下载的redis包复制到kencery文件夹下面,如图所示:
c.将上传的redis包解压,解压以后重命名为redis,如图所示:
c.1 tar -zxvf redis-3.0.5.tar.gz
c.2 mv redis-3.0.5 redis
c.3 cd redis
d.当对包解压完成以后,即可以开始对其进行安装了,安装的命令为(在redis目录下执行):
d.1 make
(1) 在练习的时候输入make出现错误了,可是如今写博客的时候部署没有出现错误,若是出现错误,请使用这个命令(make MALLOC=libc)便可执行,由于没有出现错误,因此没有截图,你们若是遇到的话给我截图留言,谢谢。
(2) 若是执行make出现错误,当再次执行make的话,咱们建议,清理一下在执行,命令为:make clean。
d.2 cd src/ make test
(1)在执行完make以后,在最后的程序中会输出(t's a good idea to run 'make test'),它建议咱们执行make test进行测试,那么接下来咱们就输入make test,检查测试,是否出现问题,如出现如图所示:则说明测试没有问题:
(2)在输入make test执行的时候我在练习的时候是会出现错误的,可是这个错误不影响咱们的测试,故而能够忽略。
d.3 make install
最后执行make install,不出现错误的话则说明redis安装成功,如图所示:
a.当安装完redis以后,就须要进行测试,如下简单作一个测试来验证咱们的redis是否安装成功。
b.首先咱们启动redis服务,启动和关闭redis服务命令以下:
b.1 src/redis-server & 启动redis,加上&表示使redis之后台程序方式运行
b.2 redis-server /usr/local/kencery/redis/redis.conf 启动redis
b.3 src/redis-cli shutdown 关闭redis
b.4 输入启动redis的命令,启动redis,如图所示:
b.5 当redis启动完成以后,使用netstat -ntlp |grep 6379 查看端口是否在使用中,若是在使用中,则说明安装成功,不然安装没有成功。
b.6 链接redis而且测试,链接命令为:src/redis-cli,最后的测试结果如图所示:
b.7 到这里reids的安装和测试工做所有完成了。
a.如上面所述,咱们已经完成了对redis的安装,接下来就能够按照上面的方法使用,可是这里还存在一些小问题,那就是linux系统重启以后都须要找到安装路径才能执行启动命令,那么咱们能够设置按照service的形式来启动redis吗?
b.执行命令:vim /etc/init.d/redis,建立脚本文件,在文件中写入以下代码,保存而且退出:
1 # Date 2015-12-10
2 # chkconfig: 2345 10 90
3 # description: Start and Stop redis
4
5 PATH=/usr/local/kencery/redis/src:/sbin:/usr/bin:/bin
6 REDISPORT=6379
7 EXEC=/usr/local/kencery/redis/src/redis-server
8 REDIS_CLI=/usr/local/kencery/redis/src/redis-cli
9
10 PIDFILE=/var/run/redis.pid
11 CONF="/usr/local/kencery/redis/redis.conf"
12 AUTH="1234"
13 case "$1" in
14 start)
15 if [ -f $PIDFILE ]
16 then
17 echo "$PIDFILE exists, process is already running or crashed."
18 else
19 echo "Starting Redis server..."
20 $EXEC $CONF
21 fi
22 if [ "$?"="0" ]
23 then
24 echo "Redis is running..."
25 fi
26 ;;
27 stop)
28 if [-f $PIDFILE ]
29 then
30 echo "$PIDFILE exists, process is not running."
31 else
32 PID=$(cat $PIDFILE)
33 echo "Stopping..."
34 $REDIS_CLI -p $REDISPORT SHUTDOWN
35 sleep 2
36 while [ -x $PIDFILE ]
37 do
38 echo "Waiting for Redis to shutdown..."
39 sleep 1
40 done
41 echo "Redis stopped"
42 fi
43 ;;
44 restart|force-reload)
45 ${0} stop
46 ${0} start
47 ;;
48 *)
49 echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
50 exit 1
51 esac
c.给文件添加权限,使用脚本文件能够执行,命令为:chmod 755 /etc/init.d/redis
d.以上工做顺利完成而且没有出现报错,则配置完成,每次咱们开机以后均可以输入如下两个命令启动和关闭redis服务,如图所示:
d.1 service redis start 开启redis服务
d.2 service redis stop 关闭redis服务
f.当开启服务以后既能够链接redis测试进行操做或者使用其余客户端来操做redis,测试如图所示:
a.在大部分状况下,咱们须要服务器从新启动的时候自动开启redis,而不是咱们手工的去开启,那么下来就说一下开机自动启动的设置。
b.首先设置redis.config中的daemonize为yes,确保守护进行开启,执行如下命令:
b.1 cd usr/local/kencery/redis
b.2 vim redis.conf 开启配置文件,找到daemonize属性酒设置为yes, 保存而且退出便可。
c.而后设置开机启动,命令:chkconfig redis on
d.当以上步骤完成以后,便可以能够从新启动Linux而后按照前面所写的测试是否随机器自动启动了。
参考网上配置logstash从console取数据发送到elasticsearch:
启动失败:
测试发送消息失败:
缘由,网上给的配置里面确少protocol => "http":
修改后再次启动成功,并发送测试消息:
在es查看:
或
安装kopf插件
Elasticsearch-kopf插件能够查询Elasticsearch中的数据
访问http://172.16.114.133:9200/_plugin/kopf/#!/cluster,浏览器访问kopf页面访问elasticsearch保存的数据:
logstash采集log4j的日志产生的日志并输出到es,网上的配置文件有误,可添加filter{}:
启动成功:
1、下载
# wget https://download.elastic.co/kibana/kibana/kibana-4.1.2-linux-x64.tar.gz
2、解压
# tar zxf kibana-4.1.2-linux-x64.tar.gz -C /usr/local
3、修改kinaba配置文件kinaba.yml
# vim /usr/local/kibana-4.1.2-linux-x64/config/kibana.yml
将其中的elasticsearch_url的localhost修改成elasticsearch服务器的ip:
elasticsearch_url: "http://172.16.114.133:9200"
4、启动
# /usr/local/kibana-4.1.2-linux-x64/bin/kibana
kinaba默认监听在本地的5601端口上
5、浏览器访问http://172.16.114.133:5601/#/settings/indices/?_g=()
6、点击Create建立索引,使用默认的logstash-*的索引名称,而且是基于时间的,或使用指定的索引。
索引建立完成:
7、点击上图的Discover,搜索和浏览Elasticsearch中的数据。
1、新建一个java或java web项目,必须log4j的包,如log4j-1.2.17.jar:
2、log4j.properties内容:
3、生成日志
4、logstash采集log4j日志并输出到elasticsearch的配置文件log4j_to_es.conf
5、以上面的配置文件启动logstash
6、启动测试,产生日志
7、从es查看日志消息,索引applog
8、从Kibana查看日志
8.1
8.2
8.3