环境: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.conf
echo '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 <
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 是修改了所有的索引只读状态