????????????????? ELK日志收集平台部署(2)-CSDN博客
????????????????? ELK日志收集平台部署(3)-CSDN博客
?ElasticSearch、Logstash和Kiabana三个开源工具中,我们已经部署好了??ElasticSearch?和Kiabana,接下来部署Logatash。
系统类型:Centos7
节点IP:192.168.246.231 E
软件版本:jdk-8u121-linux-x64.tar.gz、logstash-6.5.4.tar.gz
Logstash运行同样依赖jdk,本次为节省资源,故将Logstash安装在了192.168.244.231节点。
[root@es-2-zk-log ~]# tar xvzf logstash-6.5.4.tar.gz -C /usr/local/
创建目录,我们将所有input、filter、output配置文件全部放到该目录中。
[root@es-2-zk-log ~]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@es-2-zk-log ~]# yum install -y nginx
将原来的日志格式注释掉定义成json格式:
[root@es-2-zk-log conf.d]# vim /etc/nginx/nginx.conf
?
log_format json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"client":"$remote_addr",'
'"url":"$uri",'
'"status":"$status",'
'"domain":"$host",'
'"host":"$server_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"referer": "$http_referer",'
'"ua": "$http_user_agent"'
'}';
access_log? /var/log/nginx/access_json.log? json;
[root@es-2-zk-log ~]# systemctl start nginx
[root@es-2-zk-log ~]# systemctl enable nginx
[root@es-2-zk-log ~]# mkdir -p /usr/local/logstash-7.13.2/etc/conf.d
[root@es-2-zk-log ~]# cd /usr/local/logstash-6.5.4/etc/conf.d/????? ?
[root@es-2-zk-log conf.d]# vim input.conf?????? #---在下面添加
input{ #让logstash可以读取特定的事件源。
file{ #从文件读取
path => ["/var/log/nginx/access_json.log"] #要输入的文件路径
type => "shopweb" #定义一个类型,通用选项.
}
}
[root@es-2-zk-log conf.d]# vim output.conf
?
output{ #输出插件,将事件发送到特定目标
elasticsearch { #输出到es
hosts => ["192.168.246.234:9200","192.168.246.231:9200","192.168.246.235:9200"] #指定es服务的ip加端口
index => ["%{type}-%{+YYYY.MM.dd}"] #引用input中的type名称,定义输出的格式
}
}
启动:
[root@es-2-zk-log conf.d]# cd /usr/local/logstash-7.13.2/
[root@es-2-zk-log logstash-7.13.2]# nohup bin/logstash -f etc/conf.d/? --config.reload.automatic &
查看日志出现:
[root@es-2-zk-log logstash-7.13.2]# tail -f nohup.out [2019-08-04T01:39:24,671][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"template"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s"}, "mappings"=>{"_default_"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}}}
在浏览器中访问本机的nginx网站
配置kia添加索引
Logatash配置成功
注意:如果出不来通过界面提示打开时间管理器,设置时间为本星期
过程: 通过nginx的访问日志获取日志--->传输到logstach ----传输到--elasticsearch--传输到---kibana (通过nginix反代)
注意:如果出现问题
从上面截图可以看出存在5个unassigned的分片,新建索引blog5的时候,分片数为5,副本数为1,新建之后集群状态成为yellow,其根本原因是因为集群存在没有启用的副本分片,我们先来看一下官网给出的副本分片的介绍:
副本分片的主要目的就是为了故障转移,正如在集群内的原理中讨论的:如果持有主分片的节点挂掉了,一个副本分片就会晋升为主分片的角色。
那么可以看出来副本分片和主分片是不能放到一个节点上面的,可是在只有一个节点的集群里,副本分片没有办法分配到其他的节点上,所以出现所有副本分片都unassigned得情况。因为只有一个节点,如果存在主分片节点挂掉了,那么整个集群理应就挂掉了,不存在副本分片升为主分片的情况。
解决办法就是,在单节点的elasticsearch集群,删除存在副本分片的索引,新建索引的副本都设为0。然后再查看集群状态,如下图: