ELK——ELK+filebeat+kafka部署——(2)部署nginx+filebeat

部署nginx+filebeat

我们在虚拟机上部署nginx服务器,然后安装filebeat,使用filebeat收集nginx日志文件,把收集到的日志发送给logstash,让logstash过滤日志,把过滤完的日志保存到elasticsearch,然后通过kibana展示出来。

安装nginx

安装nginx

安装nginx依赖包:

[root@filebeat01 ~]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel

预编译:

[root@filebeat01 ~]# groupadd www

[root@filebeat01 ~]# useradd -g www www -s /sbin/nologin

[root@filebeat01 ~]# tar zxf nginx-1.10.3.tar.gz

[root@filebeat01 ~]# cd nginx-1.10.3/

[root@filebeat01 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www

[root@filebeat01 nginx-1.10.3]# make && make install

[root@filebeat01 nginx-1.10.3]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

启动nginx

[root@filebeat01 ~]#nginx

查看端口号:

[root@filebeat01 nginx-1.10.3]# netstat -anplt | grep nginx

访问测试页

[root@filebeat01 ~]# curl http://localhost/index.html

安装filebeat

上传软件包

[root@filebeat01 ~]# ls

解压缩软件

[root@filebeat01 ~]# tar -zxvf filebeat-7.3.0-linux-x86_64.tar.gz -C /usr/local/

[root@filebeat01 ~]# mv /usr/local/filebeat-7.3.0-linux-x86_64 /usr/local/filebeat

修改配置文件

filebeat.yml配置主要有两个部分,一个是日志收集,一个是日志输出的配置。

[root@filebeat01 ~]# vim /usr/local/filebeat/filebeat.yml

- type: log                  # type: log 读取日志文件的每一行(默认)

  enabled: true             #enabled: true 该配置是否生效,如果改为false,将不收集该配置的日志

  paths:                   # paths: 要抓取日志的全路径

    - /usr/local/nginx/logs/*.log    #添加收集httpd服务日志

    #- /var/log/*         #将该行注释掉

#-------------------------- Elasticsearch output ------------------------------

#output.elasticsearch:        # Elasticsearch这部分全部注释掉

  # Array of hosts to connect to.

  #hosts: ["localhost:9200"]

#----------------------------- Logstash output --------------------------------

output.logstash:              #取消注释,把日志放到logstash中

  # The Logstash hosts

  hosts: ["192.168.10.4:5044"]  #取消注释,输出到Logstash的地址和端口

#logging.level: warning          #调整日志级别

启动服务

[root@filebeat01 ~]# cd /usr/local/filebeat/

[root@filebeat01 filebeat]# ./filebeat &

[root@filebeat01 filebeat]# ./filebeat -e -c filebeat.yml &

-e: 记录到stderr(标准输出(设备)文件,对应终端的屏幕),并禁用syslog 文件输出

-c: 指定用于Filebeat的配置文件, 如果未指定-c标志,则使用默认配置文件filebeat.yml

查看服务进程

[root@filebeat01 ~]# ps -ef | grep filebeat

设置开机自启动

[root@filebeat01 ~]# echo "cd /usr/local/filebeat/ && ./filebeat -e -c filebeat.yml & " >> /etc/rc.local

[root@filebeat01 ~]# chmod +x /etc/rc.local

logstash配置

配置logstash文件

[root@elk01 ~]# vim /usr/local/logstash-7.3.0/config/http_logstash.conf

input{

    beats {    #从Elastic beats接收事件

        codec => plain{charset => "UTF-8"} #设置编解码器为utf8

        port => "5044"   #要监听的端口 

    }

}

output {

  stdout { #标准输出,把收集的日志在当前终端显示,方便测试服务连通性

      codec => "rubydebug"    #编解码器为rubydebug

  }

  elasticsearch {                #把收集的日志发送给elasticsearch

      hosts => [ "192.168.10.4:9200" ]  # elasticsearch的服务器地址

      index => "nginx-logs-%{+YYYY.MM.dd}" #创建索引

  }

}

如果报错:

 杀死上一个logstash进程,因为我们之前已经启用了一个logstash,所以杀死之前的进程,再启动logstash。或者使用选项--path.data=/dir为要启动的logstash实例指定一个路径。

这里可以看到file beat发送过来的消息,如果没有新消息,可以去刷新nginx网页

开机自启动

[root@elk01 ~]# echo "nohup logstash -f /usr/local/logstash-7.3.0/config/http_logstash.conf &" >> /etc/rc.local

kibana配置

创建索引

http://192.168.10.4:5601

添加时间过滤器

查看日志

打开新建的索引去查看收集到的日志,可以通过刚才添加的时间过滤器查看你想要的看到的日志。

添加过滤器

我们可以在搜到的日志添加过滤器,过滤出我们想要的内容,比如,我想看下nginx的错误日志,那么添加一个log.file.path为/usr/local/nginx/logs/error.log的过滤器,如果我们监控的服务器比较多,我可以查看特定的主机的nginx错误日志

1、添加类型为log.file.path的过滤器

 

2、过滤出这台主机的nginx错误日志

过滤主机的字段名称叫agent.hostname,添加agent.hostname为filebeat01的过滤器,所有的过滤器字段在显示的日志上面可以看到。

 到这里ELK+filebeat部署完成


版权声明:本文为w1206507055原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。