前言 参考 【ELK】抓取AWS-ELB日志的logstash配置文件 - 郑立赛 - 博客园 改进

ELK搭建没有难度,难的是logstash的配置文件,logstash主要分为三个部分,input,filter和output。

input,输入源可选的输入源由很多,详情见ELK官网,这里我们说s3作为输入源。

filter,过滤器,logstash可以在input和output中间添加过滤器,可以将数据进行分类、过滤、打标签等操作,将数据格式化。logstash的核心就在此。

output,输出。一般是输出到elasticsearch。

说明:

AWS的ELB日志存储在S3,可以通过logstash的S3插件获取,经过过滤器后,输出到elasticsearch。

ELK的搭建和配置在这里就不说了,看官方文档就行,这里提供一个logstash的配置文件 ,用于抓取和格式化ELB日志。

input {
    s3 {
        access_key_id => " "
        secret_access_key => " "
        bucket => " "
        region => " "
        type => "XXXX-server-log-s3"
    }
}

filter { 
    if [type] == "XXXX-server-log-s3" {
    mutate{
    split => { "message" => " " }
    add_field=> {
        "protocol_type" => "%{[message][0]}"
    }
    add_field => {
        "log_time" => "%{[message][1]}"
        }
    add_field => {
        "elb_name" => "%{[message][2]}"
        }
    add_field => {
        "client_port" => "%{[message][3]}"
        }
    add_field => {
        "target_port" => "%{[message][4]}"
        }
    add_field => {
        "request_processing_time" => "%{[message][5]}"
        }
    add_field => {
        "target_processing_time" => "%{[message][6]}"
        }
    add_field => {
        "response_processing_time" => "%{[message][7]}"
        }
    add_field => {
        "elb_status_code" => "%{[message][8]}"
        }
    add_field => {
        "target_status_code" => "%{[message][9]}"
        }
    add_field => {
        "received_bytes" => "%{[message][10]}"
        }
    add_field => {
        "sent_bytes" => "%{[message][11]}"
        }
    add_field => {
        "getpost" => "%{[message][12]}"
        }
    add_field => {
        "url" => "%{[message][13]}"
        }
    add_field => {
        "http_version" => "%{[message][14]}"
        }    
    add_field => {
        "message2" => "%{[message][15]} %{[message][16]} %{[message][17]} %{[message][18]} %{[message][19]} %{[message][20]} %{[message][21]} %{[message][22]} %{[message][23]} %{[message][24]} %{[message][25]} %{[message][26]} %{[message][27]} %{[message][28]} %{[message][29]} %{[message][30]} %{[message][31]} %{[message][32]} %{[message][33]} %{[message][34]} %{[message][35]} %{[message][36]} %{[message][37]} %{[message][38]} %{[message][39]} %{[message][40]}"
        }
    remove_field => [ "message" ]
    }
    mutate {
    convert => { "target_processing_time" => "float" }
    convert => { "response_processing_time" => "float" }
    convert => { "request_processing_time" => "float" }
    convert => { "elb_status_code" => "integer" }
    convert => { "target_status_code" => "integer" }
    convert => { "target_status_code_list" => "integer" }
    convert => { "received_bytes" => "integer" }
    convert => { "sent_bytes" => "integer" }
    convert => { "matched_rule_priority" => "integer" }
    }
    grok {
        match => { "message2" => "\"%{DATA:user_agent}\" (?:%{DATA:ssl_cipher}|-) (?:%{DATA:ssl_protocol}|-) %{DATA:target_group_arn} \"%{DATA:trace_id}\" \"(?:%{DATA:domain_name}|-)\" \"(?:%{DATA:chosen_cert_arn}|-)\" (?:%{NUMBER:atched_rule_priority}|-) %{TIMESTAMP_ISO8601:request_creation_time} \"%{WORD:actions_executed}\"%{DATA:redirect_url}\" \"(?:%{DATA:error_reason}|-)\" \"%{DATA:target_port_list}\" \"%{NUMBER:target_status_code_list}\" \"(?:%{DATA:classification}|-)\" (?:%{DATA:classification_reason}|-)"
                }

break_on_match => false
        match => { "client_port" => "%{IPV4:client_ip}" }
        match => { "url" => "%{URIPROTO:url_head}://%{URIHOST:url_destination}:%{POSINT:url_port}%{URIPATH:url_path}(?:%{URIPARAM:url_param})?" }
        match => { "getpost" => "%{WORD:get_post}" }
        remove_field => [ "getpost" ]
        remove_field => [ "message2"]
    }
    date {
        match => ["log_time", "ISO8601"]
        target => "log_date"
        add_tag => [ "log_date" ]
        remove_field => [ "log_time" ]
    }
    geoip {
        source => "client_ip"
        add_tag => [ "geoip" ]
        remove_field => [ "client_port" ]
    }
}

}
output {

if [type] == "XXXX-server-log-s3" {
            elasticsearch {
                hosts => ["127.0.0.1:9200"]
                manage_template => true
                index => "logstash-awslb-XXXXserverlog-%{+YYYY-MM-dd}"
                }
    }
    stdout {
        codec => rubydebug
    }    
}

ELK抓取AWS-ELB日志的logstash配置文件相关推荐

  1. aws python sns_手把手教你用Python抓取AWS的日志(CloudTrail)数据

    原标题:手把手教你用Python抓取AWS的日志(CloudTrail)数据 作者: Gang TAO 大数据时代,利用数据做决策是大数据的核心价值. 本文手把手,教你使用python进行AWS的Cl ...

  2. .NET LINQ分析AWS ELB日志避免996

    前言 小明是个单纯的 .NET开发,一天大哥叫住他,安排了一项任务: "小明,分析一下我们 超牛逼网站上个月的所有 AWS ELB流量日志,这些日志保存在 AWS S3上,你分析下,看哪个 ...

  3. 如何抓取安卓APP日志?

    在开发测试安卓APP时,遇到应用奔溃crash时,我们经常要抓取安卓APP日志来定位问题的原因,测试提交bug时也需要把日志提交给开发. 方法一adb命令 环境安装SDK(参考android sdk环 ...

  4. linux命令日志抓取,linux抓取某条日志记录的命令

    温馨提示:截图可能有点小模糊,勉强可以看到,查看原图可以看得比较清晰 一.less命令 格式是:less [参数] 文件,假设all-9000-2019-08.0.log是文件名 1.打开日志文件是 ...

  5. 小米手机如何抓取软件使用日志

    听语音 原创 | 浏览:265 | 更新:2019-11-24 12:33 1 2 3 4 5 6 分步阅读 有时我们需要抓取软件的使用日志,那么我们应该如何抓取呢?下面就是小米手机抓取日志操作步骤介 ...

  6. Android studio抓取app应用日志

    首先要安装Android studio开发工具,这个教程百度很多 https://www.jianshu.com/p/9e7003242894 安装完成之后就可以抓取日志了 1.选择logcat 2. ...

  7. java怎么抓取测试apk日志_Android测试日志文件抓取与分析

    1.log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shel ...

  8. logcat崩溃_使用logcat抓取Android崩溃日志

    一.安装jdk JDK网上教程非常多,此处不再赘述.(好像不装也没关系,未实测) 二.工具列表 a)         adb包(v.1.0.31版本或以上,下文提供下载地址) b)         l ...

  9. adb抓取App crash日志

    adb查看Android小米6 ap crash日志 1.Android机打开开发者模式: 2.设置adb端口号 adb tcpip 5555: 3.获取小米6的IP地址: 4.adb通过命令[adb ...

  10. 360n5s不打印日志 不同厂商手机系统日志抓取方法

    调试android程序,当使用真机时system.out,log.i等日志在logcat里面打印不出来(但能打印出来其他一堆系统消息),而使用模拟机一切正常,怎样才能在真机调试时也能在logcat打印 ...

最新文章

  1. Chrome浏览器查看SSL证书信息
  2. latex 加粗_LaTeX论文模板
  3. [Android] 检讨书生成器1.0
  4. 在C#调用C++的DLL简析(二)—— 生成托管dll
  5. n个整数,其中有两个数是重复的,要求找出这两个重复的整数
  6. Magento: 设置产品列表默认排序方式 How to sort Magento products by date added as default
  7. Spring事务处理之 编程式事务 和 声明式事务
  8. Nginx应用场景之负载均衡
  9. 【Baltic2003】【BZOJ1370】Gang团伙(并查集,拆点)
  10. python | 高效统计语言模型kenlm:新词发现、分词、智能纠错
  11. 如何通过ildasm/ilasm修改assembly的IL代码
  12. 软考初级程序员---题目(一)
  13. 初中七年级上计算机试题答案,初中信息技术考试试题(含答案).docx
  14. 【软件工程】——项目开发计划
  15. matlab双线性插值双三次插值对CUFED5进行处理
  16. linux网卡驱动rtl8188cu,Realtek RTL8188CU芯片无线网卡的Linux驱动安装
  17. ELEMENTARY: Is Even
  18. 寒霜朋克计算机丢失,Frostpunk寒霜朋克冰汽时代已停止工作修复补丁(Windows6.1-KB2670838-x64)...
  19. 产品经理 : 最全的运营数据指标解读
  20. ORM框架的简单介绍

热门文章

  1. 推荐3个开源的快速开发平台,前后端都有,项目经验又有着落了!
  2. 美赛数模论文之表的格式
  3. muduo学习笔记:base部分之高性能日志库-Logger
  4. python三引号的作用有哪些_Python中3种引号的作用与区别
  5. iOS 获取 appid
  6. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第四节 窗体的移动
  7. Ubuntu 更改默认浏览器
  8. 脑语言2500令v0.5.5
  9. 码云提交不显示贡献度问题
  10. 远方有你,Emacs