ELK(日志分析系统): Elasticsearch + Logstash + Kibana集群环境部署及应用

原创
2016/12/22 21:50
阅读数 363

一.名词介绍:

ElasticSearch 搜索

logstash 管理日志和事件的工具

Kibana4 功能强大的数据显示客户端

redis 缓存

二.应用包准备:

elasticsearch-1.5.0.tar.gz

logstash-1.4.2.tar.gz

kibana-4.0.1-linux-x64.tar.gz

redis-2.8.19.tar.gz

jdk-7u45-linux-x64.tar.gz

三.部署安装:

1.集群部署模式:

2.安装JDK 1.7

省略安装步骤,推荐1.7+版本以上

java –version

设置java的环境变量,比如

vim ~/.bashrc

>> 

export JAVA_HOME= /home/xiel/Java/jdk1.7.0_45

export JRE_HOME=${JAVA_HOME}/jre 

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 

export PATH=${JAVA_HOME}/bin:$PATH 

>> 

source ~/.bashrc

 

3.安装Redis

A.创建目录data->redis,将src中的redis-cli、redis-server文件以及redis.conf文件复制至

……/data/redis目录下。

如cp –r redis-cli /home/xiel/module/redis-2.8.19.1/data/redis

B.启动:redis-server redis.conf &

C. 连接测试:redis-cli –h 127.0.0.1 -p 6379

127.0.0.1:6379> set username nieyong

OK

127.0.0.1:6379> get username

"nieyong"

表示安装配置成功。用命令介绍:

查询所有键值字段:KEYS *

清除所有数据:flushdb

查询key的list集合数量:llen

更多请查看官方API命令

注:./redis-cli -h IP -p 端口号
端口配置见:redis.conf中的port参数

4.安装Elasticsearch

A.解压elasticsearch-1.5.0.tar.gz

B.进入 bin目录,启动./ elasticsearch –d(后台启动)

C.测试验证,curl -X GET http://localhost:9200

{

  "status" : 200,

  "name" : "test-node1",

  "cluster_name" : "cluster",

  "version" : {

    "number" : "1.5.0",

    "build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",

    "build_timestamp" : "2015-03-23T14:30:58Z",

    "build_snapshot" : false,

    "lucene_version" : "4.10.4"

  },

  "tagline" : "You Know, for Search"

}

表示安装配置成功。

注:基本配置介绍../conf/ elasticsearch.yml

cluster.name: cluster(集群名称)

node.name: "test-node1"(集群结点名称)

node.master: true(是否可被选为主结点,默认true)

node.data: true(结点是否存储数据,默认true)

index.number_of_shards: 5(索引分片数)

index.number_of_replicas: 1(索引副本数)

transport.tcp.port: 9300(数据传输IP)

http.port: 9200(对外访问监听IP)

常用基本命令:

查询所有数据:curl http://localhost:9200/_search?pretty

集群健康状态:curl -XGET http://localhost:9200/_cluster/health?pretty

删除所有数据: curl -XDELETE 'http://localhost:9200/_all'

删除指定索引:curl -XDELETE 'http://10.21.16.86:9200/索引名称'

5.安装Logstash

A.解压logstash-1.4.2.tar.gz。

B.进入bin目录,./logstash agent –f 配置文件 &即可。         

logstash下载即可使用,命令行参数可以参考logstash flags,主要有

agent   #运行Agent模式

-f CONFIGFILE #指定配置文件

web     #自动Web服务

-p PORT #指定端口,默认9292

6.安装Kibana

A.解压kibana-4.0.1-linux-x64.tar.gz

B.进入bin,启动./kibana即可。

C.登录访问:http://10.21.16.86:5601(默认端口为5601)

注:可以修改kibana.yml配置elasticsearch的地址和索引

7.集成

把上面的系统集成起来

首先把redis和elasticsearch都启动起来

为logstash新建一个配置文件

vi redis.conf

配置文件内容如下

input {

  redis {

    host => "127.0.0.1"

    port => "6379"

    key => "logstash:demo"

    data_type => "list"

    codec  => "json"

    type => "logstash-redis-demo"

    tags => ["logstashdemo"]

  }

}

output {

  elasticsearch {

    host => "127.0.0.1"

  }

}

用这个配置文件启动logstash agent

./logstash agent -f redis.conf &

启动logstash内置的web

./logstash web &

查看web,应该还没有数据

http://127.0.0.1:9292

在redis 加一条数据

RPUSH logstash:demo "{\"time\": \"2013-01-01T01:23:55\", \"message\": \"logstash demo message\"}"

看看elasticsearch中的索引现状

curl 127.0.0.1:9200/_search?pretty=true

curl -s http://127.0.0.1:9200/_status?pretty=true | grep logstash

再通过logstash web查询一下看看

http://127.0.0.1:9292

通过单独的kibana界面查看

http://127.0.0.1/html/kibana-latest/index.html#/dashboard/file/logstash.json

8.Logstash高级配置应用

A.Logstash文件采集输入Redis数据缓存配置。

vim shipper.conf
input {

  file {

    path => ["/home/xiel/module/logstash-1.4.2/logs/stdout.log"]

    exclude => ["*.gz", "access.log"]

  }

}

output {

  stdout {}

  redis {

    host => "10.21.16.86"

    port => "6379"

    data_type => "list"

    key => "logstash:redis"

  }

}  

B.Logstash端口监听方式采集输入Redis数据缓存配置。

vim logstash-syslog-shipper.conf   
input {

  tcp {

    port => 5140

    type => syslog

  }

  udp {

    port => 5140

    type => syslog

  }

}



filter {

  if [type] == "syslog" {

    grok {

      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }

      add_field => [ "received_at", "%{@timestamp}" ]

      add_field => [ "received_from", "%{host}" ]

    }

    syslog_pri { }

    date {

      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]

    }

  }

}

output {

  stdout {}

  redis {

    host => "10.21.16.86"

    port => "6379"

    data_type => "list"

    key => "logstash:redis"

  }

}

C.Logstash采集Redis输入Elasticsearch索引配置。

Logstash-es.conf

input {

        redis {

                host => "127.0.0.1"

                port => "6379"

                type => "redis-input"

                # these settings should match the output of the agent

                data_type => "list"

                key => "logstash:redis"

                # We use json_event here since the sender is a logstash agent

                #message_format => "json_event"

        }

}

output {

        # stdout { debug => true debug_format => "json"}

        elasticsearch {

        #host => "127.0.0.1"

        cluster => "cluster"   (Elasticsearch集群名称)

        codec => "json"

        protocol => "http"



        }

        stdout { codec => rubydebug }

}

9.Elasticsearch常用插件安装:

1.head

        和插件名字一样,首推这个插件。通过head,可以查看集群几乎所有信息,还能进行简单的搜索查询,观察自动恢复的情况等等。

(2)安装

方式1

1.下载https://github.com/mobz/elasticsearch-head

2. 命令载入安装

 ./plugin -u file:////home/xiel/installSoft/elasticsearch-head-master.zip(存放路径)

-i mobz/elasticsearch-head                                      

方式2

进入Elasticsearch所在bin目录下,执行以下命令

./ plugin -install Aconex/elasticsearch-head

(3) 运行es,找开http://localhost:9200/_plugin/head/

2.bigdesk

bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。

安装命令:\bin>plugin -install lukas-vlcek/bigdesk

进入http://localhost:9200/_plugin/bigdesk/

注:也可以像head方式1一样先下载对应插件,下载地址:

https://github.com/lukas-vlcek/bigdesk

进入bin目录下,执行:

./plugin -u file:////home/xiel/installSoft/bigdesk-master.zip(存放路径)

-i mobz/elasticsearch-head    

展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部