ELK日志分析系统

提示:先安装wget,执行yum  -y  install  wgetsudo  yum  install  wgethtml

大纲:java

1、简介node

2、Logstashlinux

3、Redisweb

4、Elasticsearchredis

5、Kinabashell

 

1、简介

一、核心组成

ELKElasticsearchLogstashKibana三部分组件组成;数据库

Elasticsearch是个开源分布式搜索引擎,它的特色有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。json

Logstash是一个彻底开源的工具,它能够对你的日志进行收集、分析,并将其存储供之后使用。vim

kibana 是一个开源和免费的工具,它能够为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,能够帮助您汇总、分析和搜索重要数据日志。

二、四大组件

Logstash: logstash server端用来搜集日志;

Elasticsearch: 存储各种日志;

Kibana: web化接口用做查寻和可视化日志;

Logstash Forwarder: logstash client端用来经过lumberjack 网络协议发送日志到logstash server;

三、ELK工做流程

在须要收集日志的全部服务上部署logstash,做为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,而后logstash indexer将日志收集在一块儿交给全文搜索服务ElasticSearch,能够用ElasticSearch进行自定义搜索经过Kibana 来结合自定义搜索进行页面展现。

四、ELK的帮助手册

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。

 

2、Logstash

一、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

提示:启动成功后,按2ctrl+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*

 

3、ElasticSearch

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下面生成datalogs文件夹存数据文件和日志文件:

注释:该datalogs文件的路径和目录由配置项的path.datapath.logs决定

 

访问ip:9200注意,若是本地访问不到linux服务器的9200,需让Linux服务器防火墙开启9200端口,或直接关闭防火墙,关闭防火墙命令

# service iptables stop

访问ip:9200/_plugin/head查看ES集群状态:

若要退出elasticsearch服务,在linuxctrl+c便可。

 

Linux(Centos)之安装Redis及注意事项

阅读目录

 

1.redis简单说明

  a.在前面我简单的说过redis封装成共用类的实现,地址以下:http://www.cnblogs.com/hanyinglong/p/Redis.html

  b.redis是一个key-value存储系统,它支持存储的value类型相比较Memcached更多,包括stringlistsetsetshashes(It supports data structures such as stringshasheslistssetssorted sets with range queriesbitmapshyperloglogs and geospatial indexes with radius queies)这些数据类型都支持push/popAdd/remove等丰富的操做,并且这些操做都是原子性的。

  c.redisMemcached同样,为了保证效率,数据都是缓存在内存中的,区别就是redis会周期性的将更新的数据写入磁盘,而且能够实现主从(master-slave)同步。

  d.redis在数据存储方面,采用了NoSql数据库的思想,即将Key做为数据检索的惟一标示,能够将其简单的理解为关系型数据库中索引的键,而value则做为数据存储的主要对象,其中每个Value都有一个Key与之对应,在Redis中,Value将被视为二进制字节流用于存储任何格式的数据,如Json,XML,图片和序列化对象的字节流等,所以咱们也能够将其想象为RDB中的Blob类型字段,从而在咱们进行数据查询是,只能基于Key做为咱们查询的条件。

  e.redis官网:http://www.redis.io/

回到顶部

2.准备工做

  a.经过上面的说明以后咱们既能够开始在linux系统下面安装redis了,在安装redis的过程当中我遇到了一些问题,但也所有解决了,原本我想直接写而后遇到错误在引出来须要安装什么,可是感受不太好写,因此我仍是在前面将这些软件准备好,你们安装的时候能够先去安装redis去验证会不会出现问题,在解决也行。

  b.下载redis的包,下载地址:http://download.redis.io/releases/redis-3.0.5.tar.gz

  c.redisC语言实现的,因此在Linux系统中须要安装gcc来进行编译,安装gcc请参考第三步。

  d.接下来须要安装UnixTcl工具,若是不安装的话后期咱们将没法对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包。

回到顶部

3.gcc的安装

  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

回到顶部

4.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.在执行的过程当中若是不出现错误,耐心等待便可,这些命令的截图就不放在这里了,按照我写的顺序执行便可。   

回到顶部

5.redis的安装

  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安装成功,如图所示:

6.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的安装和测试工做所有完成了。

回到顶部

7.Linux中设置redis的服务器启动和关闭

  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,测试如图所示:

 

8.Linux中设置redis的开机启动

  a.在大部分状况下,咱们须要服务器从新启动的时候自动开启redis,而不是咱们手工的去开启,那么下来就说一下开机自动启动的设置。

  b.首先设置redis.config中的daemonizeyes,确保守护进行开启,执行如下命令:

    b.1 cd usr/local/kencery/redis

    b.2 vim redis.conf  开启配置文件,找到daemonize属性酒设置为yes, 保存而且退出便可。

  c.而后设置开机启动,命令:chkconfig redis on

  d.当以上步骤完成以后,便可以能够从新启动Linux而后按照前面所写的测试是否随机器自动启动了。

 

参考网上配置logstashconsole取数据发送到elasticsearch

 

启动失败:

  

  测试发送消息失败:

  

  缘由,网上给的配置里面确少protocol => "http":

  

  修改后再次启动成功,并发送测试消息:

   

  es查看:

  

  或

  

  安装kopf插件

  

Elasticsearch-kopf插件能够查询Elasticsearch中的数据

访问http://172.16.114.133:9200/_plugin/kopf/#!/cluster,浏览器访问kopf页面访问elasticsearch保存的数据:

  logstash采集log4j的日志产生的日志并输出到es,网上的配置文件有误,可添加filter{}:

  

  启动成功:

  

  

  

  

4、Kibana

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_urllocalhost修改成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中的数据。

5、测试

1、新建一个javajava web项目,必须log4j的包,如log4j-1.2.17.jar

2log4j.properties内容:

3、生成日志

4logstash采集log4j日志并输出到elasticsearch的配置文件log4j_to_es.conf

5、以上面的配置文件启动logstash

6、启动测试,产生日志

7、从es查看日志消息,索引applog

8、从Kibana查看日志

8.1

8.2

8.3

相关文章
相关标签/搜索