本文主要介绍如何基于日志服务构建Kubernetes Ingress日志分析平台,并提供一些简单的动手实验方便你们快速了解日志服务相关功能。html
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # your config name, must be unique in you k8s cluster name: k8s-nginx-ingress spec: # logstore name to upload log logstore: nginx-ingress # product code, only for k8s nginx ingress productCode: k8s-nginx-ingress # logtail config detail logtailConfig: inputType: plugin # logtail config name, should be same with [metadata.name] configName: k8s-nginx-ingress inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: io.kubernetes.container.name: nginx-ingress-controller Stderr: false Stdout: true processors: - type: processor_regex detail: KeepSource: false Keys: - client_ip - x_forward_for - remote_user - time - method - url - version - status - body_bytes_sent - http_referer - http_user_agent - request_length - request_time - proxy_upstream_name - upstream_addr - upstream_response_length - upstream_response_time - upstream_status - req_id - host NoKeyError: true NoMatchError: true Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s*(\S*).* SourceKey: content
apiVersion: apps/v1 kind: Deployment metadata: name: mock-ingress namespace: default labels: app: mock-ingress spec: replicas: 1 selector: matchLabels: app: mock-ingress template: metadata: labels: app: mock-ingress spec: containers: - name: mock-ingress image: registry.cn-shanghai.aliyuncs.com/log-service/mock-ingress:latest command: ["/data/replay_log"] args: - '-ecs=true' - '-project=k8s-log-{cluster-id}' - '-endpoint=cn-shanghai.log.aliyuncs.com' - '-source=/data/data.txt' - '-dist=/data/distribute.csv'
total < 100
,即非100%就触发告警(实际场景中可设置的小一些)日志服务除支持经过告警方式通知外,还支持报表订阅功能,您可以使用该功能将报表按期渲染成图片并经过邮件、钉钉群等方式发送。
下述示例为Ingress概览配置订阅功能,每分钟将报表发送到指定钉钉群:nginx
0/5 * * * *
(每5分钟发送一次报告,实际场景可设为天天固定时间),打开添加水印选项。https://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676
(WebHook地址请参见自定义机器人获取)便可完成订阅。日志服务支持丰富的查询与分析功能,详情参考日志查询与分析。在查询页面支持自定义的查询与分析,例如:docker
status > 200
host : inner.njkj.com and request_time > 0.03
not status : 200 | SELECT proxy_upstream_name, count(1) as total group by proxy_upstream_name order by total desc limit 10
* | select ip_to_province(x_forward_for) as province, approx_distinct(x_forward_for) as total group by province order by total desc limit 1000
host : inner.njkj.com | select d[1] as "Today", d[2] as "Yesterday", d[1] - d[2] / d[2] as "Yesterday Delta", d[3] as "Last Week", d[1] - d[3] / d[3] as "Last Week Delta" from( select compare(val, 86400, 604800 ) as d from(select avg(request_time) as val from log ) )
Ingress报表均基于日志服务的分析功能实现,您能够从系统默认提供的Ingress报表中查找对应功能实现的SQL:点击对应图表的右上角菜单选项,选择【查看分析详情】,则会跳到对应的查询页面。api
您能够使用日志服务Logtail接入业务应用的日志来实现自定义的查询、分析、可视化、告警等功能,您能够使用如下任意一种方式接入日志:app
1. 基于日志服务控制台建立采集配置:url
2. 使用环境变量建立采集配置:spa
3. 使用CRD方式建立采集配置:日志
本文做者:元乙code
原文连接htm
本文为云栖社区原创内容,未经容许不得转载。