使用Logstash分析纪录Nginx服务器访问及错误日志

本文介绍如何通过Logstash配置文件解析Nginx的access.log和error.log,利用grok插件匹配日志格式,并使用geoip插件添加地理信息。配置包括输入、过滤和输出三个阶段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 编写配置文件, 从 Nginx access.log, error.log 中解析日志数据
# nginx-logstash-pipeling.conf

# 输入
input {
    file {
        type => "nginx-access"
        path => "/var/nginx/access.log"
        start_position => beginning  # 从开始位置读取文件,而非默认的从结尾开始仅仅读取新加内容
        ignore_older => 0            # 不忽略旧文件
    }
    file {
        type => "nginx-error"
        path => "/var/nginx/error.log"
        start_position => beginning
        ignore_older => 0
    }
}

# 过滤: 指定对输入的处理
filter {
    # Nginx访问和错误日志分开解析
    if [type] == "nginx-access" {
        # grok是Logstash常用的默认插件之一, 指定输入文本格式, 返回解析后的json数据
        # 此处使用grok内置的格式(pattern)解析同格式的Nginx访问日志
        grok {
            match => { "message" => "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}" }
        }
    } else if [type] == "nginx-error" {
        grok {
            match => [ "message" , "(?<timestamp>%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage}(?:, client: (?<clientip>%{IP}|%{HOSTNAME}))(?:, server: %{IPORHOST:server}?)(?:, request: %{QS:request})?(?:, upstream: (?<upstream>\"%{URI}\"|%{QS}))?(?:, host: %{QS:request_host})?(?:, referrer: \"%{URI:referrer}\")?"]
        }
    }

    # geoip,另一个插件,为之前处理好的结构化数据中添加额外的地理位置信息
    geoip {
        source => "clientip"
    }
}

output {
    # 输出目标1: 默认传入本地Elasticsearch服务器作为索引文档(index document),并按类型和时间导出到不同的索引中 (如果没有启动Elasticsearch则不必填写)
    elasticsearch {
        index => "%{type}-%{+YYYY.MM.dd}"
    }
    # 输出目标2: 写入本地文件
    file {
        path => "~/nginx-logstash.output"
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值