本文主要介紹如何基於日誌服務構建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
本文爲雲棲社區原創內容,未經容許不得轉載。