摘要:
Ingress NGINX Controller
是一个Kubernetes
上的Ingress
控制器,它可以将外部流量路由到K8s
集群内的服务。主要提供7层路由能力,是目前K8s
中HTTP/HTTPS
服务的主流暴露方式。当Ingress NGINX Controller
处理访问请求时,会将相关信息记录在日志中,例如请求的URL、状态码等。有了这些数据信息,对业务系统的流量分析,包括问题定位都有极大的帮助。
接下来我们将介绍如何收集Ingress NGINX Controller
的日志,并将日志存储在Elasticsearch
中,然后使用Grafana
进行展示可视化展示及分析。如各服务的PV
、UV
、访问最多的IP
地址、最常请求的资源、历史趋势等。
日志收集
我们集群的管理日志使用filebeat
收集,只需要简单配置就能收集到Ingress NGINX Controller
的日志,并且filebeat
有专门的模块解析Ingress NGINX Controller
日志的字段,都不需要自己写gork
解析日志字段。
apiVersion: v1
kind: ConfigMap
metadata:
namespace: kube-logging
name: filebeat-config
labels:
app: filebeat
data:
filebeat.yml: |-
filebeat.config:
inputs:
# Mounted `filebeat-inputs` configmap:
path: ${path.config}/inputs.d/*.yml
# Reload inputs configs as they change:
reload.enabled: true
reload.period: 10s
modules:
path: ${path.config}/modules.d/*.yml
# Reload module configs as they change:
reload.enabled: false
xpack.monitoring.enabled: true
# 使用filebeat autodiscover收集ingress nginx controller的日志
filebeat.autodiscover:
providers:
- type: kubernetes
templates:
- condition:
equals:
kubernetes.namespace: "ingress-nginx"
config:
- module: nginx
ingress_controller:
enabled: true
input:
type: container
paths:
- /var/log/containers/*-${data.kubernetes.container.id}.log
ignore_older: 48h
fields_under_root: true
fields:
servicetype: "k8s_ingress_log"
收集到日志后配置output
至Elasticsearch
output.elasticsearch:
hosts: ["elasticsearch:9200"]
indices:
- index: "k8s-ingress-log-%{+yyyy.MM.dd}"
when.contains:
servicetype: "k8s_ingress_log"
Ingress NGINX Controller 日志分析
image-20231101192902396.png日志入库后就可以检索了。
这些访问日志通常包含URL
、源IP
、UserAgent
、状态码、入/出流量、响应时间等,数据量大、信息价值也比较高。从这些信息中,我们能够分析出非常多的信息:
- 服务访问的
PV
、UV
- 访问的客户端
IP
信息 - 访问的错误比例
- 后端服务的响应延迟
- 不同URL访问分布
- 恶意攻击分析
当然还可以进行服务来源的地域分析,但我们的服务访问基本都发生在内网之间,所以就不做这部分的信息分析了。
有了这些信息,就可以很轻松应对业务同事的各种数据统计已经问题定位的需求了。比如面前我们有位业务系统小姐姐同事找我要访问响应状态码,统计接口的调用量,查看请求的转发等等。
Ingress 可视化
我们根据收集到的日志数据,定制了几个可视化看板:总体概览、TOP
、PV & UV
、趋势展示、报表分析。所有可视化看板均可通过单一服务过滤,亦可根据业务系统实际场景进行定制化调整。
总体概览
总体概览看板主要展示当前集群的整体状态,主要包括以下几类信息:
- 整体状态,包括:
PV
、UV
、处理时间、平均响应时间等
TOP
TOP
则可统计展示源IP
、UserAgent
、URL
等比较多的信息。
趋势展示
趋势展示可以分析请求数、状态码等信息的时间趋势。
image-20231101204536577.png报表分析
最后可以根据各种需求场景,做一些统计报表。
image-20231101205019226.png image-20231101205126377.png
网友评论