2.3做logstash实验

收集apache日志输出到es

在真实服务器安装logstash,httpd

systemctl start httpd

echo 666 > /var/www/html/index.html

cat /usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/httpd #系统内置变量

cd /usr/local/logstash/config/

cp logstash-sample.conf httpd-access.conf

vim httpd-access.conf

复制代码
input {
   stdin {}
}
filter {
  grok  {
    match => {
      "message" => "%{HTTPD_COMBINEDLOG}"
    }
    remove_field => ["message","auth","ident"]
  }
  date {
      match => ["timestamp","dd/MM/yyy:HH:mm:ss Z"]
  }
}

output {
   stdout {}
}

cat /var/log/httpd/access_log

127.0.0.1 - - 21/Jun/2023:14:41:22 +0800 "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

logstash -f httpd-access.conf

127.0.0.1 - - 21/Jun/2023:14:41:22 +0800 "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

可以看出apache的日志输出带有\,咱可以改进一下:

cd /usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/

grep QS -R .

grep QUOTEDSTRING -R .

此时可以看出定义太复杂,咱自定义一个变量ALL,取代QS,双引号引起来。

vim /usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/httpd

ALL .* #空行新增

HTTPD_COMBINEDLOG %{HTTPD_COMMONLOG} "%{ALL:referrer}" "%{ALL:agent}"

此时filter的相关配置已经完善!

接下来配置input引用apache日志,output输出到es。

vim /usr/local/logstash/config/httpd-access.conf

复制代码
input {
   file {
       path => ["/var/log/*.log","/var/log/message*"]
       type => "httpd_access"
       start_position => "beginning"
   }
}
filter {
  grok  {
    match => {
      "message" => "%{HTTPD_COMBINEDLOG}"
    }
    remove_field => ["message","auth","ident"]
  }
  date {
      match => ["timestamp","dd/MM/yyy:HH:mm:ss Z"]
  }
}

output {
  elasticsearch {
    hosts => ["http://192.168.148.132:9200"]
    index => "%{type}-%{+YYYY.MM.dd}"
  }
}

logstash -f /usr/local/logstash/config/httpd-access.conf

127.0.0.1 - - 21/Jun/2023:14:41:22 +0800 "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

安装插件ElasticSearch Head可视化工具

(略)

测试:浏览器访问192.168.148.132:9100

http://localhost:9200/ > http://192.168.148.132:9200/ > 连接

收集nginx日志输出到es

方案一

nginx:

修改 nginx server 的配置文件

复制代码
    log_format  json '{'
                           '"client":"$remote_addr",'
                           '"time":"$time_local",'
                           '"verb":"$request_method",'
                           '"url":"$request_uri",'
                           '"status":"$status",'
                           '"size":$body_bytes_sent,' 
                           '"referer": "$http_referer",'
                           '"agent": "$http_user_agent"'
               '}';
   access_log  /var/log/nginx/access_json.log  json;   

logstash 配置文件**:**

复制代码
input {
   file {
      path => "/var/log/nginx/access_json.log"
      codec => "json"                           #输入预定义好的 JSON 数据, 可以省略掉 filter/grok 配置, 从而减轻logstash的负载
      start_position => "beginning"
   }
}
output {
    elasticsearch {
           hosts => ["192.168.10.11:9200"]
           index => "nginx-log-%{+YYYY.MM.dd}"
    }
}

方案二

Logstash 对nginx 标准日志的 grok 正则定义是:

MAINNGINXLOG %{COMBINEDAPACHELOG} %{QS:x_forwarded_for}

logstash:直接使用访问日志

复制代码
input {
    file {
        path => "/var/log/nginx/access.log"
        start_position => beginning
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG} %{QS:x_forwarded_for}"}    
    }    
    date {
        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]    
    }    
    geoip {
        source => "clientip"    
    }
}
output {
    elasticsearch {     
        hosts => "192.168.11.10:9200" 
    }
}
相关推荐
Rain的Java大神之路15 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
江南风月15 小时前
3分钟快速上手日志审计系统 WGLOG v2.2 更新了什么
运维·服务器·网络
孙克旭_15 小时前
Docker 镜像构建|Vue+SpringBoot+Go 多语言项目 Dockerfile 案例
linux·运维·vue.js·spring boot·docker·dockerfile
接口不宕机16 小时前
外贸公司实战:利用 1688API 自动化监控竞品价格,解决采购定价痛点
运维·自动化
旗开得胜马到成功16 小时前
可信备份技术解析:中科热备如何防范备份数据被攻击
运维·服务器
JavaPub-rodert16 小时前
使用 Docker 部署 Ollama:Docker Compose 一键运行 DeepSeek-R1 1.5B
运维·docker·容器
蓝速科技16 小时前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙
NJCloud17 小时前
MooseFS 分布式存储部署与高可用架构实践
linux·运维·分布式·架构
晓晓_za89866817 小时前
Geo 优化源码蒸馏词机制:地域词库构建与匹配逻辑详解
运维·tcp/ip·spring·缓存·ci/cd
奈斯先生Vector17 小时前
从 127.0.0.1:3080 到插件运行时:DeepSeek Harness 远程开发与版本治理实战
linux·运维·人工智能·ubuntu·aigc