ELK日志管理

·        1.简介

·        2.依赖组件

·        3.下载

·        4.安装步骤

o   4.1 安装redis

o   4.2 ElasticSearch安装

o   4.3 LogStash安装

o   4.4 Kibana安装

·         5.使用说明

o   5.1 ElasticSearch

o   5.2 Kibana

1.简介

   ELK日志管理系统主要功能:应用系统日志的分析和监控 

   ELK组成:ElasticSearch,LogStash,Kibana,Redis

   ELK各组件数据流向:App(应用系统将日志写入Redis)→Redis(缓存)→LogStash(从Redis中收集日志,分析完存入ElasticSearch→ElasticSearch(日志存储)→Kibana(从ElasticSearch获取日志进行分析,展现)

2.依赖组件

序号

组件名称

版本

备注

1

jdk

1.7+

必选

3.下载

注:以下组件均为linux版本的

elasticSearch 1.5.0(最低支持1.4.4

    下载地址:http://tech.iflytek.com:8900/SPP/ELK/elasticsearch-1.4.4.zip

 logstash  1.4.2

    下载地址:http://tech.iflytek.com:8900/SPP/ELK/logstash-1.4.2.tar.gz

 redis 2.8.19),

    下载地址:http://tech.iflytek.com:8900/SPP/ELK/redis-2.8.19.tar.gz

 kibana (最新版本)

   下载地址:http://tech.iflytek.com:8900/SPP/ELK/kibana-4.0.1-linux-x64.tar.gz

4.安装步骤

4.1 安装redis

#tar   -zxvf   redis-2.8.19.tar.gz
#cd  redis
#make
#make install

make install命令执行完成后,会在/usr/local/bin目录下生成本个可执行文件,分别是redis-serverredis-cliredis-benchmarkredis-check-aofredis-check-dump,它们的作用如下:

可执行文件

说明

redis-server

Redis服务器的daemon启动程序

redis-cli

Redis命令行操作工具。也可以用telnet根据其纯文本协议来操作

redis-benchmark

Redis性能测试工具,测试Redis在当前系统下的读写性能

redis-check-aof

数据修复

redis-check-dump

检查导出工具

修改配置文件:

cd /etc
vi redis.conf
修改daemonize yes 目的使进程在后台运行

启动Redis

#cd /usr/loacl/bin
#nohup ./redis-server  /etc/redis.conf &

 

启动后输入以下命令:ps-ef | grep redis,如果能看到以下进程则表示Redis启动成功

 wKioL1X7du7hRN7hAACCVgBK7y0015.jpg

4.2 ElasticSearch安装

 1.解压安装包:unzipelasticSearch-1.4.4.zip

 2.修改集群名称和节点名称:vi /ELK/elasticsearch-1.4.4/config/elasticsearch.yml

    文件打开后,找到: cluster.name,去掉前面的#,修改为cluster.name:youname(名字随意).

    :集群名字必须修改,因为如果不修改集群名字的话,elasticSearch会自动添加同个网段内所有的没有改名字的节点

    找到node.name,修改该名称

 3.修改ES跨越支持:在elasticsearch.yml末尾添加如下内容

ES跨域支持

http.json.enable:true
http.cors.allow-origin:“/.*/”
http.cors.enabled:true

4.设置ES缓存类型(防止数据量大时出现问题),在elasticsearch.yml末尾添加如下内容

index.cache.field.type: soft

 说明:默认类型为resident字面意思是常驻(居民),一直增加,直到内存耗尽。改为soft就是当内存不足的时候,先clear占用的,然后再往内存中放。设置为soft后,相当于设置成了相对的内存大小。   resident的话,除非内存够大。

5.设置ES内存:vimelasticsearch-1.4.4/bin/elasticsearch,添加下面的配置,内存大小根据机器来定,尽量设大一点,kibana查询缓存很大,如果内存太小会出异常

 ES_HEAP_SIZE=15g

6.启动ES

#./bin  nohup ./elasticsearch &

访问http://127.0.0.1:9200/_plugin/head,如果出现下列界面,则表示启动成功

 wKiom1X7dMmwqXJDAAEh-JLuw2E908.jpg

7.设置ES不分词(此步骤不能忘记,否则kibana查询时会出问题

 启动ES后,在shell命令行输入以下命令(IP和端口号需与第6步启动的ESIP和端口号一致,template为日志的索引名称),以单引号(“  ’  ” )结束,回车执行不分词设置。

设置ES不分词命令  Expand source

curl -XPUT "http://192.168.84.175:9200/_template/not_analyzed_template" -d'
{
    "template": "skynet-ant-log",
    "mappings": {
        "_default_": {
            "dynamic_templates": [
                {
                    "template_1": {
                        "mapping": {
                            "index": "not_analyzed",
                            "type": "string"
                        },
                        "match_mapping_type": "string",
                        "match": "*"
                    }
                }
            ]
        }
    }
}

 

4.3 LogStash安装

(此处一大坑:必须安装在/usr/local/下,如果安装在home目录下启动时会出错)

# tar  -xzvf logstash-1.4.2.tar.gz

#vim logstash-1.4.2/bin index.conf   //创建启动配置文件,添加以下内容,此配置文件刚开始没有,需自己创建,名字随意,启动时指定到该配置文件即可

LogStash配置文件  Expand source

input {
        redis{
                data_type => "pattern_channel"
                key => "skynet-ant-logstash-*"
                host => "127.0.0.1"
                port => 6379
        }
}
filter {
        json {
                source => "message"
        }
        mutate {
                convert => ["start" , "integer"]
                convert => ["end" , "integer"]
                convert => ["duration" , "integer"]
                convert => ["originalDuration" , "integer"]
                convert => ["timefrugal" , "integer"]
                convert => ["wavePoint" , "integer"]
                convert => ["silenceDuration" , "integer"]
        }
}
output{
        elasticsearch {
                host => "127.0.0.1"
                port => 9450
                protocol => http
                index => "skynet-ant-log"
        }
}

参数说明

参数名称

说明

Input

redis的相关配置

data_type

数据类型,主要有三种类型(pattern_channellistchannel),此类型根据redis来定

key

关键词

host

存放的地址

port 

端口号

filter

数据过滤的条件

mutate

数据格式转换,主要将字符类型转换成数值类型

output

输出的elasticSearch的相关配置,如果是集群的话需将hostport改为cluster=>"name"集群的名称即可

 

启动 logstash 

# nohup ./logstash   -f  index.conf &

如果使用jps命令看到如下进程则表示logstash启动成功

 wKiom1X7dOeADnNQAABj8oUyJp8280.jpg

4.4 Kibana安装

# tar  -xzvf   kibana-4.0.1-linux-x64.tar.gz

#vim ./kibana-4.0.1-linux-x64/config/kibana.yml

修改elasticsearch_url: "http://192.168.84.167:9200"

运行kibana

#./ kibana-4.0.1-linux-x64  nohup ./kibana &

 

在浏览器器访问:http://127.0.0.1:5601,如果出现以下界面则表示部署成功

 wKioL1X7dzGANBjqAAEgtFhP2hk612.jpg

至此,ELK管理系统全部部署完毕。只需将应用系统的日志导入该系统中,然后学习kibana的使用即可对应用系统的日志进行分析和监控

注意:启动各个组件时有一定的顺序要求,RedisElasticSearch必须在LogstashKibana启动之前启动,一般的启动顺序为:RedisElasticSearchLogStashKibana。具体原因可参考简介中的数据流向。

 5.使用说明

5.1 ElasticSearch

 

 配置好skynet引擎服务,启动引擎服务:访问:http://ip:9200/_plugin/head,如果ES中有数据进入则表示部署成功,而且日志数据已接入到ES中。如下图所示:

  wKioL1X7d0DCSyNlAADYMwpInGQ241.jpg

5.2 Kibana

接着访问kibana地址:http://ip:5601,如下图所示,kibana中已有日志数据了(注意右上角时间范围的选择)

  wKiom1X7dRSy4NtGAAEGehH7SrE671.jpg

使用已定义好的报表:如下图所示,点击DashBoard,打开已定义好的面板

  wKiom1X7dSPhuJctAAD1Q_QRvlw773.jpg

例如选择skynet-log-vspp:会出现下图所示的报表

  wKiom1X7dTCDvCtaAAEbppF-kiE516.jpg

此时就可以根据这些报表进行分析了。