【EFK】Filebeat 采集 nginx 日志

Filebeat 版本采用的是6.3.2,在官网下载的 tar.gz 包,解压即可使用,若使用 rpm 安装,则文件路径稍有不同,会附在最后面。

在使用 Filebeat 中 nginx 日志模板时,发现少了部分想要配置的参数。于是需要修改模板配置,具体如下

1、模板使用基本命令

# 进入到 filebeat 目录
cd filebeat-6.3.2/
# 打开 nginx 模板
./filebeat modules enable nginx
# 查看已打开模板列表
./filebeat modules list

2、编辑 nginx 配置文件,增加参数

vim nginx.conf
# 原始的
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
# 增加参数之后的
log_format main    '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for" '
                       '"$http_x_real_ip" "$server_addr" "$host" '
                       '$request_time $upstream_response_time "$upstream_addr" ';

3、修改模板配置文件

vim filebeat-6.3.2/module/nginx/access/manifest.yml
# 修改对应 nginx 日志文件路径
var:
  - name: paths
    default:
      - /var/log/nginx/*.access.log  
    os.darwin:
      - /usr/local/var/log/nginx/access.log*
    os.windows:
      - c:/programdata/nginx/logs/*access.log*
vim filebeat-6.3.2/module/nginx/access/ingest/default.json
# 修改 pipeline patterns部分 以下是原始的
{
  "description": "Pipeline for parsing Nginx access logs. Requires the geoip and user_agent plugins.",
  "processors": [{
    "grok": {
      "field": "message",
      "patterns":[
        "\"?%{IP_LIST:nginx.access.remote_ip_list} - %{DATA:nginx.access.user_name} \\[%{HTTPDATE:nginx.access.time}\\] \"%{GREEDYDATA:nginx.access.info}\" %{NUMBER:nginx.access.response_code} %{NUMBER:nginx.access.body_sent.bytes} \"%{DATA:nginx.access.referrer}\" \"%{DATA:nginx.access.agent}\"  \"%{DATA:nginx.access.upstream_addr}\" %{NUMBER:nginx.access.request_time}"
        ],
      "pattern_definitions": {
        "IP_LIST": "%{IP}(\"?,?\\s*%{IP})*"
      },
      "ignore_missing": true
    }
  }

# 增加后的
{
  "description": "Pipeline for parsing Nginx access logs. Requires the geoip and user_agent plugins.",
  "processors": [{
    "grok": {
      "field": "message",
      "patterns":[
        "\"?%{IP_LIST:nginx.access.remote_ip_list} - %{DATA:nginx.access.user_name} \\[%{HTTPDATE:nginx.access.time}\\] \"%{GREEDYDATA:nginx.access.info}\" %{NUMBER:nginx.access.response_code} %{NUMBER:nginx.access.body_sent.bytes} \"%{DATA:nginx.access.referrer}\" \"%{DATA:nginx.access.agent}\" \"%{DATA:nginx.access.xff}\" \"%{DATA:nginx.access.x_real_ip}\" \"%{DATA:nginx.access.server_addr}\" \"%{DATA:nginx.access.host}\" %{DATA:nginx.access.request_time} %{DATA:nginx.access.upstream_response_time} \"%{DATA:nginx.access.upstream_addr}\""
        ],
      "pattern_definitions": {
        "IP_LIST": "%{IP}(\"?,?\\s*%{IP})*"
      },
      "ignore_missing": true
    }
  }
vim filebeat-6.3.2/fields.yml
# 找到 nginx 配置的 agent 部分
           - name: agent
              type: text
              description: >
                Contains the un-parsed user agent string. Only present if the user
                agent Elasticsearch plugin is not available or not used.
# 在 agent 下面增加
            - name: xff
              type: group
              description: >
                http_x_forwarded_for.
            - name: x_real_ip
              type: group
              description: >
                http_x_real_ip.
            - name: server_addr
              type: group
              description: >
                server_addr 服务器地址.
            - name: host
              type: group
              description: >
                host http_host http主机头.
            - name: request_time
              type: group
              description: >
                request_time 请求时间.
            - name: upstream_response_time
              type: group
              description: >
                upstream_response_time 后端响应时间.
            - name: upstream_addr
              type: group
              description: >
                upstream_addr 后端地址.

4、重新启动 Filebeat 

./filebeat setup -e
./filebeat -c filebeat.yml  -e &

5、可能遇到的问题

      更改模板后启动未生效,先删除之前 pipeline 模板之后重新生成 DELETE _ingest/pipeline/filebeat-6.3.2-nginx-access-default

      查看已加载的日志 cat filebeat-6.3.2/data/registry,若发现更改后未重新加载,可删除 data 目录后重启。

 6、rpm 安装文件对应路径

      主配置文件:/etc/filebeat

      模板路径:/usr/share/filebeat/

      缓存文件路径:/var/lib/filebeat

      启动方式:filebeat setup -e 

                        service filebeat start|stop|status|restart

 

 

你可能感兴趣的:(linux,基础知识,EFK)