环境:centos7.3

安装模式  elasticsearch,logstash, kibana + redis

数据流:logstash(收集日志)->redis(存储日志)->elasticsearch(存储并创建索引)->kibana(创建操作、查看日志)

ip

安装软件

作用

192.168.1.10

elasticsearch,logstash, kibana,redis

elk服务器

192.168.1.11

logstash

测试环境

 

 

 

 

1、安装java

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

2、下载软件包到/elk目录

mkdir /elk
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz -P /elk
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz -P /elk
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz  -P /elk
wget http://download.redis.io/releases/redis-3.0.4.tar.gz -P /elk

3、解压文件

tar -zxvf /elk/elasticsearch-6.4.0.tar.gz -C /elk
tar -zxvf /elk/kibana-6.4.0-linux-x86_64.tar.gz -C /elk
tar -zxvf /elk/logstash-6.4.0.tar.gz -C /elk
tar -zxvf /elk/redis-3.0.4.tar.gz -C /elk

4、redis安装

yum -y install gcc
make #进行编译,如果报错(make[1]: *** [adlist.o] Error 1)请使用 make MALLOC=libc
make install  
cd utils
./install_server.sh#redis-cli  #redis测试 a返回值表示安装成功
>set a 1
>get a

 5、配置启动elasticsearch

修改系统配置
  elasticsearch对系统最大连接数有要求,所以需要修改系统连接数。

echo '
* hard nofile 65536
* soft nofile 65536
* soft nproc  65536
* hard nproc  65536
' >>/etc/security/limits.confecho 'vm.max_map_count = 262144' >> /etc/sysctl.conf
vim /etc/security/limits.d/90-nproc.conf
# 第一行最后一个数,修改为4096,如果是则不用修改
# limits.d下面的文件可能不是90-nproc.conf,可能是其他数字开头的文件。
*          soft    nproc     4096
root       soft    nproc     unlimited

elasticSearch配置
这个其实也是ELK中的核心,启动的时候一定要注意,从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户,所以你还需要创建一个elsearch账户。

useradd es  
chown -R es:es  /elk/elasticsearch-6.4.0/    #指定elasticsearch-6.4.0目录下的文件所属elsearch组

修改配置文件

vim /application/elasticsearch-6.4.0/config/elasticsearch.yml
······
path.data: /elk/elasticsearch-6.4.0/data
path.logs: /elk/elasticsearch-6.4.0/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 192.168.1.10
······

创建数据和日志目录

mkdir /elk/elasticsearch-6.4.0/data /elk/elasticsearch-6.4.0/logs


启动

su es          ## 切换到普通用户
cd /elk/elasticsearch-6.4.0/
./bin/elasticsearch -d        ## -d 后台运行

配置elasticsearch自启动

cat <<EOF>>/etc/rc.local
su - es -c '/elk/elasticsearch-6.4.0/bin/elasticsearch -d'
EOF

6、配置kibana

它的配置也非常简单,你需要在kibana.yml文件中指定一下你需要读取的elasticSearch地址和可供外网访问的bind地址就可以了。

# vim /elk/kinbana-6.4.0/config/kibana.yml
······
elasticsearch.url: "http://192.168.1.10:9200"
server.host: 192.168.1.10
······



启动

# nohup /elk/kinbana-6.4.0/bin/kibana & 
# 使用nohup,启动后台运行,如需关闭使用kill -9

浏览器中输入:http://192.168.1.10:5601/,你就可以打开kibana页面了

7、配置日志收集传输到redis存储中

在192.168.1.11服务器上操作

mkdir /elk
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz -P /elk
tar -zxvf /elk/logstash-6.4.0.tar.gz -C /elk
cd /elk/logstash-6.4.0/config


解压后进入到config目录中新建一个logstash.conf配置,添加如下内容

[root@11 config]# vim logstash.conf

input {
     file {
        type => "log"
        path => "/logs/*.log"   ##创建一个/logs目录用于之后的测试
        discover_interval => 10
        start_position => "beginning"
    }
}

output {
 if [type] == "log"{
  redis {
                host => "192.168.1.10"
                port => 6379
                db => "1"
                data_type => "list"        #数据类型也要保持一致
                key => "log"          #key 要与服务器端的相同
            }
        }
 }

启动logstash

# nohup /elk/logstash-6.4.0/bin/logstash -f /elk/logstash-6.4.0/config/logstash.conf &

验证
进入redis查看数据

#redis-cli
>keys *
>llen log
>lpop log

8、配置redis的日志到elasticsearch

在服务器192.168.1.11上操作

cd /elk/logstash-6.4.0/config
解压后进入到config目录中新建一个logstash.conf配置,添加如下内容

[root@11 config]# vim logstash.conf

input {
      redis {
         type => "redis-input" #输入类型
         host => "192.168.1.10" #本地的reds地址
         port => 6379 #redis端口
         db => "1"
         data_type => "list" #使用redis的list存储数据
         key => "log"
    }
}

output {
    if [type] == "log" {
        elasticsearch {
        hosts => "192.168.1.10:9200" #elasticsearch地址
        index => "log-%{+YYYY.MM.dd}"
      }
   }
}

 

启动logstash 

# nohup /elk/logstash-6.4.0/bin/logstash -f /elk/logstash-6.4.0/config/logstash.conf &

9、验证

浏览器中输入:http://192.168.1.10:5601/,你就可以打开kibana页面了。
点击Management => Index Patterns 创建索引,如果ES接受到了logstash传过来的日志数据,页面会显示能创建的索引,不然会显示不能创建索引。请自行查看日志文件分析错误。
创建索引后,点击左侧Discover,可以看到你刚才创建的日志的分析。

10、问题处理

在logstash中发现日志错误

retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"block

在linux上执行:

curl -XPUT -H 'Content-Type: application/json' http://192.168.1.10:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'


其中 _all 这个可以更改为自己在创建 Eleastisearch 索引的时候的name,用来修改单个索引只读状态,当然用 _all 也可以, _all 是修改了所有的索引只读状态