拓扑图:

QQ图片20180516194135.png


根据拓扑图精简一下这个实验:

一台web server + logstash (真正生产可能是若干台)    ===>192.168.1.13

一台redis(生产下一般会是主备,消息队列的作用)      ===>192.168.1.12

一台logstash server (整合数据流的作用)            ===>192.168.1.11

一台elasticsearch+kibana(生产中一般会是ES集群)       ===>192.168.1.10


安装ELK事前需要安装JDK这里不在演示




首先从redis这台服务器下手吧

yum install -y redis

关于redis的具体操作以后的文章会讲到

vim /etc/redis.conf
修改
bind 0.0.0.0
保存退出,启动
/etc/init.d/redis start

ss -tanl查看redis启动端口6379

web server (192.168.1.13):

yum install -y httpd
/etc/init.d/httpd start
ss -tanl 查看一下80端口是否启动

安装logstash

rpm -ivh logstash-1.5.4-1.noarch.rpm

vim /etc/logstash/conf.d/full.conf #full.conf这个你可以随意起名字
input { 
        file {
                path => "/var/log/httpd/access_log"
                type => "Apache"
                start_position => "beginning"
        }
}

output {
        redis {
                port => "6379"
                host => ["192.168.1.12"]
                data_type => "list"
                key => "logstash-%{type}"
        }
}

保存退出!

测试一下语法有没有错误:
[root@linux-node4 ~]# logstash -f /etc/logstash/conf.d/full.conf --configtest
Configuration OK

没有错误可以启动了
[root@linux-node4 ~]# logstash -f /etc/logstash/conf.d/full.conf
Logstash startup completed

至此,我们可以测试一下,是否把收集到的日志数据发送到了redis。

#redis-cli
127.0.0.1:6379> LLEN logstash-Apache
(integer) 38
127.0.0.1:6379> LINDEX logstash-Apache 1
"{\"message\":\"192.168.1.159 - - [16/May/2018:19:29:39 +0800] \\\"GET / HTTP/1.1\\\" 304 - \\\"-\\\" \\\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0\\\"\",\"@version\":\"1\",\"@timestamp\":\"2018-05-16T13:13:48.004Z\",\"host\":\"0.0.0.0\",\"path\":\"/var/log/httpd/access_log\",\"type\":\"Apache\"}"
127.0.0.1:6379> 
由此说明已经产生数据到redis了。



接下来在logstash server这台机器上操作

logstash安装不再演示

vim fromredis.conf
input {
        redis {
                port => "6379"
                host => "192.168.1.12"
                data_type => "list"
                key => "logstash-Apache"
        }
}

output {
        stdout {
                codec => rubydebug
        }
}

测试语法是否正确:
[root@linux-node2 conf.d]# logstash -f /etc/logstash/conf.d/fromredis.conf --configtest
Configuration OK
运行:
[root@linux-node2 conf.d]# logstash -f /etc/logstash/conf.d/fromredis.conf

至这里,运行结果会把收集到的日志信息,标准输入至屏幕;

打开浏览器输入"http://192.168.1.13" 刷新几次,你会发现logstach server 这台服务器的屏幕会出现日志滚动信息,都是刚刚刷新收集到的最新日志信息;


最后,在es这台机器上,安装elasticsearch + kibana,安装方法不再演示:

vim /etc/elasticsearch/elasticsearch.yml
cluster.name: myes
node.name: "linux-node1"
保存退出,并启动

编辑kibana的配置文件:
/usr/local/kibana/config/kibana.yml
elasticsearch_url: " #这一项非常重要 

启动kibana:
/usr/local/kibana/bin/kibana

复制一个终端
ss -tanl 查看5601端口是否开启

浏览器输入"http://192.168.1.10:5601"打开kibana界面


接下来还返回logstash server服务器

前面,我们是将结果标准输出到了屏幕,这次我们需要把结果输出到elasticsearch服务器

vim /etc/logstash/conf.d/fromredis.conf 
修改为:
input {
        redis {
                port => "6379"
                host => "192.168.1.12"
                data_type => "list"
                key => "logstash-Apache"
        }
}

output {
        elasticsearch {
                cluster => "myes"
                index => "logstash-%{YYYY.MM.dd}"
        }
}

测试语法,没有问题就运行:
[root@linux-node2 conf.d]# logstash -f /etc/logstash/conf.d/fromredis.conf --configtest
Configuration OK
[root@linux-node2 conf.d]# logstash -f /etc/logstash/conf.d/fromredis.conf

想要知道是否成功的信息输出到了es上,可以验证

[root@linux-node1 ~]# curl -XGET 'localhost:9200/_cat/indices'
yellow open .kibana             1 1   2 2  10.3kb  10.3kb 
yellow open logstash-2018.05.16 5 1 389 0 170.5kb 170.5kb 
[root@linux-node1 ~]# curl -XGET 'localhost:9200/logstash-2018.05.16/_search?pretty'

接下来在kibana上显示:

浏览器"http://192.168.1.10:5601/"


0000.png



00001.png



至此elk+redis配置完毕。。。。

kibana还有好多图形设置自己需要的话,请自行查找配置。。。