基于业务的需求,需要对网关层的日志进行适当定制,以满足使用kibana的制图。

对于kong的日志格式更改,可查看到的资料都过于繁琐,特此记录。

修改kong的日志格式

 #  ctl edit deployment ingress-kong -n kong
...
spec:
containers:
- env:
- name: KONG_PLUGINS
value: forward-auth-request,prometheus
- name: KONG_LUA_PACKAGE_PATH
value: /opt/?.lua;;
- name: KONG_PROXY_LISTEN
value: 0.0.0.0:8000, 0.0.0.0:8443 ssl http2
- name: KONG_ADMIN_LISTEN
value: 127.0.0.1:8444 ssl
- name: KONG_STATUS_LISTEN
value: 0.0.0.0:8100
- name: KONG_DATABASE
value: "off"
- name: KONG_NGINX_WORKER_PROCESSES
value: "1"
- name: KONG_ADMIN_ACCESS_LOG
value: /dev/stdout custom_fmt
- name: KONG_ADMIN_ERROR_LOG
value: /dev/stderr
- name: KONG_PROXY_ACCESS_LOG
value: /dev/stdout custom_fmt
- name: KONG_PROXY_ERROR_LOG
value: /dev/stderr
- name: KONG_NGINX_HTTP_LOG_FORMAT
value: custom_fmt '$remote_addr - $remote_user [$time_local] "$request"
$status "$upstream_status" $body_bytes_sent "$http_referer" "$http_user_agent"
"$request_time" "$upstream_response_time"'
...

查看日志格式

1xx.xxx.xxx.xx - - [26/Jan/2021:08:14:59 +0000] "PUT /api/xxxx/xxs/xxxx38a458 HTTP/2.0" 200 "200" 133 "https://www.baidu.com/xx/exxxor/e11xxxxxxxxxx47c/?lang=zh" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36" "0.072" "0.068"

kong 获取客户端真实ip

# ctl edit svc kong-proxy -n kong
...
spec:
...
externalTrafficPolicy: Local
...

logstash 解析kong日志格式

filter {   # kong的单独索引
if [type] == "kong" {
grok {
match => {
"message" => '(?<clientip>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) - - \[(?<requesttime>[^ ]+ \+[0-9]+)\] "(?<requesttype>[A-Z]+) (?<requesturl>[^ ]+) HTTP/\d.\d" (?<status>[0-9]{3}) "(?<upstream_status>[0-9]+)" (?<body_bytes_sent>[0-9]+) "(?<http_referer>[^"]+)" "(?<http_user_agent>[^"]+)" "(?<request_time>[0-9]+\.[0-9]+)" "(?<upstream_response_time>[0-9]+\.[0-9]+)"'
}
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
target => "@timestamp"
}
geoip {
source => "clientip"
target => ["geoip"]
fi
}
}
}

kong更改日志格式的更多相关文章

  1. Nginx内置变量以及日志格式变量参数详解

    $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...

  2. binlog之四:mysql中binlog_format模式与配置详解,binlog的日志格式详解

    mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...

  3. Nginx内置变量以及日志格式变量

    $args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符 ...

  4. log_format为Nginx设置日志格式

    nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式, 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件中日记配置 ...

  5. 【nginx运维基础(4)】Nginx的日志管理(日志格式与定时分割日志)

    Nginx日志主要分为两种:访问日志和错误日志.日志开关在Nginx配置文件(一般在server段来配置)中设置,两种日志都可以选择性关闭,默认都是打开的. 访问日志access_log #日志格式设 ...

  6. nignx日志格式

    web-master的nginx格式: log_format web_format '$remote_addr $remote_port $remote_user [$time_local] ' '& ...

  7. 场景2 nginx 错误日志格式:

    nginx 错误日志格式: 2016/09/01 11:23:36 [error] 28388#0: *14549 open() "/var/www/zjzc-web-frontEnd/im ...

  8. nginx日志格式

    日志格式 log_format main '$remote_addr - $remote_user [$time_local] $request '                    '" ...

  9. rsyslog 日志格式和输出

    日志格式: $EscapeControlCharactersOnReceive off #关闭rsyslog默认转译ASCII<32的所有怪异字符,包括换行符等 $template nginx- ...

随机推荐

  1. Inspect Network Activity In Chrome DevTools

    Inspect Network Activity In Chrome DevTools https://developers.google.com/web/tools/chrome-devtools/ ...

  2. NGK高效的背后驱动力是社区发展

    社区是公有链生态系统中最重要的部分,如果开发了区块链应用或工具,却没有用户使用,那将毫无价值.因此对公链项目来说首先需要构建用户群,并深入研究用户群体的需求.就目前而言,任何项目都需要社区力量加入项目 ...

  3. go-admin在线开发平台学习-3[细节解析]

    本章节主要的内容是对go-admin中的一些有趣编码进行分析,为自己以后提供一些借鉴 使用cli方式启动项目 使用cobra[眼镜蛇]完成强壮cli的工具,确保稳定. 使用cli的方式启动项目的好处显 ...

  4. 联童科技基于incubator-dolphinscheduler从0到1构建大数据调度平台之路

    联童科技是一家智能化母婴童产业平台,从事母婴童行业以及互联网技术多年,拥有丰富的母婴门店运营和系统开发经验,在会员经营和商品经营方面,能够围绕会员需求,深入场景,更贴近合作伙伴和消费者,提供最优服务产 ...

  5. SSL/TLS协议详解(中)——证书颁发机构

    本文转载自SSL/TLS协议详解(中)--证书颁发机构 导语 上一篇中,我们讨论了关于Diffie Hellman算法的SSL/TLS密钥交换.我们最终认为需要第三方来验证服务器的真实性,并提出了证书 ...

  6. 1086 Tree Traversals Again——PAT甲级真题

    1086 Tree Traversals Again An inorder binary tree traversal can be implemented in a non-recursive wa ...

  7. dev 控件获得所有的EFDEVGRID

    //获得当前Grid DevExpress.XtraGrid.GridControlNavigator GCN2 = sender as DevExpress.XtraGrid.GridControl ...

  8. C# 中 string.Empty、""、null的差别

    一.string.Empty 和 ""                                                           原文1   原文2 1. ...

  9. 剑指 Offer 48. 最长不含重复字符的子字符串 + 动态规划 + 哈希表 + 双指针 + 滑动窗口

    剑指 Offer 48. 最长不含重复字符的子字符串 Offer_48 题目详情 解法分析 解法一:动态规划+哈希表 package com.walegarrett.offer; /** * @Aut ...

  10. Java 常见对象 02

    常见对象·String类 Scanner 的概述和方法介绍 * A:Scanner 的概述 * B:Scanner 的构造方法原理 * Scanner(InputStream source) * Sy ...