在Linux上安装Logstash并与Filebeat整合,读取nginx的日志输出到Elasticsearch和Kibana

首先得安装好Elasticsearch,Filebeat,Kibana(非必须),如果没有安装可以查看我的其他博客进行安装

1. 安装Logstash

检查jdk环境,要求jdk1.8+

java -version

java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

下载安装包并解压

下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.tar.gz

# 解压
tar -xvf logstash-6.5.4.tar.gz

2. 安装Nginx

# 安装
apt install nginx -y

#nginx服务命令
service nginx {start|stop|restart|reload|forcereload|status|configtest|rotate|upgrade}

#通过浏览器访问页面
访问地址:http://192.168.241.130/  #自己的虚拟机地址,默认80端口

# 查看日志
tail -f /var/log/nginx/access.log

nginx文件介绍

/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志

3. 配置Filebeat

在Filebeat目录下创建读取nginx日志的配置文件 nginx.yml

vim nginx.yml

# 添加以下内容
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log   # nginx日志文件
  tags: ["log"]
  fields:
    from: nginx
  fields_under_root: false
output.logstash:   # 输出到logstash,5044为logstash的默认端口
  hosts: ["192.168.241.130:5044"]

4. 配置Filter

为了更友好的拿到nginx中的日志信息,这里配置Filter(不配置也行)

4.1 自定义nginx的日志格式

# 修改nginx配置文件,配置日志格式
vim /etc/nginx/nginx.conf

# 自定义nginx的日志格式main
log_format main '$remote_addr - $remote_user [$time_local] '
				'"$request" $status $body_bytes_sent '
				'"$http_referer" "$http_user_agent"';

access_log /var/log/nginx/access.log main;  # 将access_log配置为main格式


# 重启nginx
nginx -s reload

4.2 编写nginx-patterns文件

在Logstash目录下创建nginx-patterns文件,用于Logstash解析nginx的日志信息

vim nginx-patterns
# 添加内容
NGINX_ACCESS %{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[%{HTTPDATE:time_local}\] \"%{DATA:request}\" %{INT:status} %{NUMBER:bytes_sent} \"%{DATA:http_referer}\" \"%{DATA:http_user_agent}\"

5. 配置Logstash

在Logstash目录下创建配置文件nginx-pipeline.conf

vim nginx-pipeline.conf

# 添加以下内容
input {
    beats {
        port => "5044"
    }
}
# 若没有配置Filter,则可以不写这个
filter {
    grok {
        patterns_dir => "/es-beats/logstash-6.5.4/nginx-patterns"   # 配置Filter中创建的解析nginx日志的文件
        match => { "message" => "%{NGINX_ACCESS}"}
        remove_tag => [ "_grokparsefailure" ]   # 删除字段
        add_tag => [ "nginx_access" ]     # 添加字段
    }
}
# 处理后输出到elasticsearch 
output {
    elasticsearch {
        hosts => [ "192.168.241.130:9200","192.168.241.130:9201" ]
    }
}

6. 启动

# 先启动logstash,nginx-pipeline.conf为刚在logstash目录下创建的配置文件
bin/logstash -f nginx-pipeline.conf --config.reload.automatic

# 再启动filebeat, nginx.yml为刚在filebeat目录下创建的配置文件
./filebeat -e -c nginx.yml

7. 测试

访问nginx地址(自己主机地址),多刷新几次nginx的页面,产生几条数据

查看Elasticsearch,已经产生数据
在Linux上安装Logstash并与Filebeat整合,读取nginx的日志输出到Elasticsearch和Kibana_第1张图片

查看Kibana,新建logstash索引,创建柱状图,可以看到数据已经可视化
在Linux上安装Logstash并与Filebeat整合,读取nginx的日志输出到Elasticsearch和Kibana_第2张图片

你可能感兴趣的:(linux,nginx,elasticsearch)