鲲鹏服务器logstash采集nginx日志

准备

1、服务器信息

[root@ecs ~]# cat /etc/kylin-release 
Kylin Linux Advanced Server release V10 (Tercel)
[root@ecs ~]# 
[root@ecs ~]# uname -a
Linux ecs.novalocal 4.19.148+ #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Linux

2、logstash镜像
版本:8.4.0,可以在https://hub.docker.com/下载,也可以到https://download.youkuaiyun.com/download/Angushine/91436965这里下载

采集思路

1、将nginx的日志输出为json格式方便采集
2、logstash通过访问nginx日志access-yyyy-mm-dd.log将采集的日志写入kafka或es

导入镜像

[root@ecs public]# 
[root@ecs public]# docker load -i logstash-8.4.tar 
9beca9c8e2ec: Loading layer [==================================================>]   68.1MB/68.1MB
deebf99a620e: Loading layer [==================================================>]  66.89MB/66.89MB
1ec913148952: Loading layer [==================================================>]  345.6kB/345.6kB
5ffe4168f194: Loading layer [==================================================>]  595.9MB/595.9MB
ed15c32d9098: Loading layer [========================================<
### 配置Logstash采集和解析Nginx日志中的HTTP请求方法 为了使用Logstash采集和解析Nginx日志中的HTTP请求方法,需要正确配置Logstash的输入插件(Input)、过滤插件(Filter)以及输出插件(Output)。以下是详细的配置步骤和示例: #### 1. 配置Logstash Input 插件 Logstash可以通过多种方式接收Nginx日志数据。常见的方法包括直接读取文件或通过Filebeat发送日志数据。如果选择直接读取文件,可以使用`file`插件;如果通过Filebeat发送,则在Logstash中配置`beats`插件。 - **直接读取文件**: ```yaml input { file { path => "/var/log/nginx/access.log" # Nginx日志路径 start_position => "beginning" sincedb_path => "/dev/null" # 确保每次启动都从头读取 } } ``` - **通过Filebeat发送**: 确保Filebeat已正确配置并发送日志Logstash[^2],然后在Logstash中配置如下: ```yaml input { beats { port => 5044 } } ``` #### 2. 配置Logstash Filter 插件 使用`grok`过滤器插件解析Nginx日志中的HTTP请求方法。默认情况下,Nginx日志格式遵循标准的Common Log Format(CLF),但也可以自定义日志格式。以下是一个典型的Nginx日志格式及其对应的Grok模式: - **Nginx默认日志格式**: ```text $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" ``` - **Grok模式**: ```yaml filter { grok { match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:http_method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:bytes}" } } } ``` 上述Grok模式会提取出HTTP请求方法并存储在字段`http_method`中[^1]。 #### 3. 配置Logstash Output 插件 根据需求将解析后的日志数据输出到目标系统。例如,可以将数据写入MySQL数据库或Elasticsearch。 - **输出到MySQL**: ```yaml output { jdbc { driver_class => "com.mysql.jdbc.Driver" connection_string => "jdbc:mysql://localhost:3306/logdb?user=root&password=secret" statement => ["INSERT INTO nginx_logs (http_method, client_ip, timestamp) VALUES (?, ?, ?)", "http_method", "clientip", "timestamp"] } } ``` - **输出到Elasticsearch**: ```yaml output { elasticsearch { hosts => ["http://localhost:9200"] index => "nginx-log-%{+YYYY.MM.dd}" } } ``` #### 4. 启动Logstash 完成配置后,启动Logstash以开始处理日志数据: ```bash ./bin/logstash -f /path/to/your/config/file.conf ``` --- ### 示例完整配置文件 以下是一个完整的Logstash配置文件示例,用于采集和解析Nginx日志中的HTTP请求方法: ```yaml input { file { path => "/var/log/nginx/access.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:http_method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:bytes}" } } date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] target => "@timestamp" } } output { stdout { codec => rubydebug } elasticsearch { hosts => ["http://localhost:9200"] index => "nginx-log-%{+YYYY.MM.dd}" } } ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angushine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值