分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

ELK分析Apache访问日志并生成图像

发布时间:2023-09-06 02:20责任编辑:董明明关键词:暂无标签
一、背景

我们的ELK架构如下图所示,各个应用节点日志直接通过rsyslog实时传输到Logstash节点,Logstash对生成的各节点日志文件做处理后传输到Elashticsearch。

二、 ?logstash配置文件

input部分

input {file { ?type => "apache_log"path => ["/opt/data/logs/idca-web1-172.16.3.2/apache_access.log","/opt/data/logs/idca-web1-172.16.3.2/apache_ssl_request.log" ??????????] ???stat_interval => 1 ???discover_interval => 1start_position=>"end"sincedb_path => "/dev/null" ???}}

filter部分

filter { ?if [type] == "apache_log" { ???grok { ?????patterns_dir => ["/usr/local/logstash/etc/conf.d/patterns/httpd"] ?????match => { "message" => "%{HTTPDLOG}" } ???????} ???geoip { ?????source => "clientip" ?????target => "geoip" ?????add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}"] ?????add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}"] ?????remove_field => ["[geoip][longitude]","[geoip][latitude]"] ???????} ???mutate { ?????convert => [ "[geoip][coordinates]", "float" ] ?????convert => [ "response","integer" ] ?????convert => [ "bytes","integer" ] ?????convert => [ "usetime","integer" ] ?????remove_field => "message" ???????} ???date { ?????match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"] ???????} ???mutate { ?????remove_field => "timestamp" ???????} ?}}

#geiop配置部分使用add_field添加了一个坐标字段,使用remove_field删除了多余的经度、纬度坐标。
#第一个mutate配置使用convert转换了部分字段的类型,使用remove_filed删除了message字段,message字段是原日志内容,已经分配到了各个字段,所以是多余的直接删除。
#GeoIP 库数据较多,如果你不需要这么多内容,可以通过 fields 选项指定自己所需要的。下例为全部可选内容:

geoip {  fields => ["city_name", "continent_code", "country_code2", "country_code3", "country_name", "dma_code", "ip", "latitude", "longitude", "postal_code", "region_name", "timezone"]}

output部分

output { ???????if [type] == "apache_log" {elasticsearch {hosts => ["172.16.1.25","172.16.1.26","172.16.1.27"] ?????index => ‘logstash-apache-%{+YYYY-MM-dd}‘ ?????codec=>plain{charset=>"UTF-8"} ??}}

#注意:index索引的名称要以logstash开头,否则kibana在生成地图选择field类型时会报“No Compatible Fields: The “[*****]YYYY-MM” index pattern does not contain any of the following field types: geo_point”的错误。

patterns部分

HTTPDLOG %{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"%{DATA:referrer}\" ?%{NUMBER:response} (?:%{NUMBER:bytes}|-) %{NUMBER:usetime} \"%{DATA:agent}\"

#根据日志格式形成正则表达式,logstash有大量的内置变量,直接套用即可,如果某些字段不能正确匹配,可以使用DATA变量(代表任意字符)。
#logstash默认pattern目录为/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns,在里面也可找到logstash自带的正则表达式。

三、Kibana图形化

Elashticsearch不需要其他额外配置,重启Logstash后,Kibana中便可发现日志,利用以上配置文件,得到的字段包括:

绘制visualize

例1:统计日访排名前5的城市

例2:统计排名前5的城市访问对多的URI

例3:访问排名前10位外国国家以及对应IP

最后,将绘制的visualize都添加到dashboard中,做统一展示:

参考:
Kibana的图形化-Tile
Logstash自带正则表达式

ELK分析Apache访问日志并生成图像

原文地址:http://blog.51cto.com/fengjicheng/2311916

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved