天天看點

Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

本文主要介紹如何基于日志服務建構Kubernetes Ingress日志分析平台,并提供一些簡單的動手實驗友善大家快速了解日志服務相關功能。

部署Ingress日志方案

  1. 登入 容器服務管理控制台
  2. 将上述CRD配置儲存成編排模闆。編排模闆文檔請參見 建立編排模闆
  3. 基于該模闆建立應用,選擇您所在叢集的default命名空間。
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           
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

驗證Ingress日志方案

  1. 容器服務控制台
  2. 進入路由頁面,點選【Ingress概覽】,若跳轉出Ingress概覽頁則表示Ingress日志方案建立成功。
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

部署Ingress日志腳本

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'           
  1. ,複制叢集清單中的叢集ID并儲存到記事本。
  2. 替換上述配置模闆中的{cluster-id}為您實際的叢集ID。
  3. 使用上述配置模闆建立無狀态應用。
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

檢視Ingress詳細報表

  1. 日志服務控制台
  2. 單擊左側導航欄中的Project管理,選擇建立叢集時設定的日志Project,單擊名稱進入日志Project頁面(預設建立的project名稱為 k8s-log-{cluster-id})。
  3. 在Project詳情頁面,預設進入日志庫頁面。名稱為nginx-ingress的日志庫(logstore)存放着所有的Ingress通路日志。單擊左側導航欄中的儀表盤進入儀表盤清單,可檢視到所有Ingress的分析報表。

設定告警

Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群
  1. 打開Ingress監控中心,在【請求成功率】圖表右上角的菜單欄中點選【建立告警】
  2. 在彈出的告警框中輸入告警名稱,選擇查詢區間、執行區間
  3. 觸發條件設定為: 

    total < 100

     ,即非100%就觸發告警(實際場景中可設定的小一些)
  4. 點選【下一步】
  5. 在【通知類型】中選擇【釘釘機器人】,填入釘釘機器人的WebHook位址  https://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676 (WebHook位址請參見 自定義機器人 擷取)即可完成告警設定。

訂閱定時報告

日志服務除支援通過告警方式通知外,還支援報表訂閱功能,您可使用該功能将報表定期渲染成圖檔并通過郵件、釘釘群等方式發送。

下述示例為Ingress概覽配置訂閱功能,每分鐘将報表發送到指定釘釘群:

  1. 進入Ingress概覽報表,單擊報表右上角的訂閱按鈕。
  2. 在彈出的配置頁面中,頻率選擇CronJob,輸入 

    0/5 * * * *

      (每5分鐘發送一次報告,實際場景可設為每天固定時間),打開添加水印選項。
  3. 通知類型中選擇釘釘機器人,填入釘釘機器人的WebHook位址 

    https://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676

    擷取)即可完成訂閱。

進階功能

自定義分析Ingress日志

  1. 在Project詳情頁面,預設進入日志庫頁面。點選名稱為nginx-ingress的日志庫(logstore)右側的【查詢】連結進入查詢頁面。

日志服務支援豐富的查詢與分析功能,詳情參考

日志查詢與分析

。在查詢頁面支援自定義的查詢與分析,例如:

  1. 查詢狀态碼大于200的請求: 

    status > 200

  2. 查詢host(域名)為 inner.njkj.com 且響應延遲高于30ms的請求:

    host :  inner.njkj.com and request_time > 0.03

  3. 統計狀态碼非200的Top10服務: 

    not status : 200 | SELECT proxy_upstream_name, count(1) as total group by proxy_upstream_name order by total desc limit 10

  4. 統計各省份UV分布: 

    * | 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

  5. 統計host(域名)為 inner.njkj.com最近1天的通路平均延遲,并和昨天以及上周同一天的對比:

    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:點選對應圖表的右上角菜單選項,選擇【檢視分析詳情】,則會跳到對應的查詢頁面。

Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

從審計日志中查詢部署操作

  1. 進入左側導航欄中的儀表盤清單,選擇【Kubernetes資源操作詳細清單】進入。
  2. 在左上角【資源類型】篩選框中輸入Deployments,即可查詢到之前部署的Deployment。
  3. 可點選左下角【資源建立清單】中的事件ID查詢詳細的事件資訊。
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群
Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

接入其他日志(會後作業)

您可以使用日志服務Logtail接入業務應用的日志來實作自定義的查詢、分析、可視化、告警等功能,您可以使用以下任意一種方式接入日志:

1. 基于日志服務控制台建立采集配置:
2. 使用環境變量建立采集配置:
3. 使用CRD方式建立采集配置:

日志相關技術交流群

Kubernetes Ingress日志分析入門部署Ingress日志方案部署Ingress日志腳本檢視Ingress詳細報表設定告警訂閱定時報告進階功能日志相關技術交流群

繼續閱讀