本文共 6474 字,大约阅读时间需要 21 分钟。
本次我们采用 yum 官方仓库进行安装,之前采用 rpm 包安装的文档大家请看 。
Filebeat 6.5.1
Logstash 6.5.1Elasticsearch 6.5.1Kibana 6.5.1JDK 1.8.0_181IP | 系统 | 角色 |
---|---|---|
172.18.8.200 | CentOS 7.5 Minimal | Elasticsearch + Kibana |
172.18.8.201 | CentOS 7.5 Minimal | Logstash |
172.18.8.202 | CentOS 7.5 Minimal | Filebeat + Nginx |
角色规划架构图如下所示:
关闭防火墙。
systemctl stop firewalld.servicesystemctl disable firewalld.service
添加时间同步。
echo "$((RANDOM%60)) $((RANDOM%24)) * * * /usr/sbin/ntpdate time1.aliyun.com" >> /var/spool/cron/root
关闭SELinux。
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/configsetenforce 0
添加ELK官方仓库。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat >> /etc/yum.repos.d/elasticsearch.repo <
安装JDK。
rpm -ivh jdk-8u181-linux-x64.rpm
软件Elasticsearch安装。
yum install elasticsearch -y
修改配置文件/etc/elasticsearch/elasticsearch.yml
,修改为如下内容:
cluster.name: my-applicationnode.name: node-1path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 172.18.8.200http.port: 9200
启动服务。
systemctl daemon-reloadsystemctl enable elasticsearch.servicesystemctl start elasticsearch.service
检查启动状态。
[root@es ~]# curl http://172.18.8.200:9200{ "name" : "node-1", "cluster_name" : "my-application", "cluster_uuid" : "SK5_gP5eSQaRyWRaJMPG7Q", "version" : { "number" : "6.5.2", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "9434bed", "build_date" : "2018-11-29T23:58:20.891072Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search"}
看到这个结果,证明我们安装已经完成。
详细安装步骤,请参见。
为了节省机器资源,我们这里使用安装在一台机器上面,因为环境上面已经配置好,我们这里直接进行安装。
yum install kibana -y
编辑配置文件/etc/kibana/kibana.yml
,修改如下内容:
server.port: 5601server.host: "172.18.8.200"elasticsearch.url: "http://172.18.8.200:9200"
启动服务。
systemctl daemon-reloadsystemctl enable kibana.servicesystemctl start kibana.service
访问http://172.18.8.200:5601
,画面正常显示即我们安装完成。
具体配置,请参见。
安装JDK。
rpm -ivh jdk-8u181-linux-x64.rpm
软件Logstash安装。
yum install logstash -y
一个Logstash的pipeline由3部分组成:input, filter, output,在配置文件中我们也分为三部分。
创建配置文件/etc/logstash/conf.d/logstash.conf
,增加如下内容:
input { beats { port => 5044 }}filter { if [fields][type] == "nginx_access" { grok { match => { "message" => "%{NGINXACCESS}" } } } if [fields][type] == "apache_access" { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } mutate { remove_field =>["message"] remove_field =>["host"] remove_field =>["input"] remove_field =>["prospector"] remove_field =>["beat"] } geoip { source => "clientip" } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] }}output { if [fields][type] == "nginx_access" { elasticsearch { hosts => "172.18.8.200:9200" index => "%{[fields][type]}-%{+YYYY.MM.dd}" } } if [fields][type] == "apache_access" { elasticsearch { hosts => "172.18.8.200:9200" index => "%{[fields][type]}-%{+YYYY.MM.dd}" } }}
grok
是我们对输出的数据进行切分格式化。mutate
对我们格式化输出的数据,删除掉一些没用的信息。geoip
是获取IP的地理信息,以便于后面作地图展示。date
是对时间的一种格式化输出。关于过滤插件还有很多,大家可以参照或者查看我的。注意:
%{NGINXACCESS}
是一个grok patterns
,可以对我们的日志进行标准化输出,系统安装好之后,会支持很多patterns,可以使用命令rpm -ql logstash|grep patterns
看到很多的patterns
。然而我们刚刚使用的%{NGINXACCESS}
,默认不存在,需要我们自定义,从上面命令中的patterns
中找到grok-patterns
文件,在最后面加入下面内容: # Nginx logsNGUSERNAME [a-zA-Z\.\@\-\+_%]+NGUSER %{NGUSERNAME}NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}
我安装的软件来看,路径是这样的:/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns。
启动程序。
systemctl daemon-reloadsystemctl enable logstash.servicesystemctl start logstash.service
检测端口5044是否已经启动。
[root@logstash ~]# netstat -tlnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1098/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1234/master tcp6 0 0 127.0.0.1:9600 :::* LISTEN 24546/java tcp6 0 0 :::5044 :::* LISTEN 24546/java tcp6 0 0 :::22 :::* LISTEN 1098/sshd tcp6 0 0 ::1:25 :::* LISTEN 1234/master
因为我们默认的仓库里面没有nginx
软件包,所以我们首先添加epel源。
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/repo/epel-7.repo
软件Filebeat Nginx安装。
yum install filebeat nginx -y
编辑文件/etc/filebeat/filebeat.yml
,修改为如下内容:
filebeat.inputs:- type: log enabled: true paths: - /var/log/nginx/access.log fields: type: nginx_accessfilebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: falsesetup.template.settings: index.number_of_shards: 3output.logstash: hosts: ["172.18.8.201:5044"]processors: - add_host_metadata: ~ - add_cloud_metadata: ~
请注意我们上面添加的type: nginx_access
,是我们根据不同日志进行过滤的筛选条件。
systemctl enable filebeat.servicesystemctl start filebeat.servicesystemctl enable nginx.servicesystemctl start nginx.service
一切配置好之后,我们访问 nginx 服务,查看日志的收集情况,因为我这边开了调试模式stdout { codec => rubydebug }
,可以在 logstash 的服务器终端查看到格式化之后的日志格式如下:
{ "@version" => "1", "source" => "/var/log/nginx/access.log", "response" => "404", "geoip" => {}, "timestamp" => "13/Dec/2018:10:16:21 +0800", "ident" => "-", "auth" => "-", "verb" => "GET", "fields" => { "type" => "nginx_access" }, "request" => "/favicon.ico", "tags" => [ [0] "beats_input_codec_plain_applied", [1] "_geoip_lookup_failure" ], "httpversion" => "1.1", "bytes" => "3650", "agent" => "\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\"", "offset" => 10265, "clientip" => "172.18.8.4", "@timestamp" => 2018-12-13T02:16:21.000Z}
然后我们登录 Kibana,添加索引,插件数据。
转载地址:http://fetgx.baihongyu.com/