Kubernetesソリューションで使用される問合せ

問合せは、Kubernetesソリューションで使用可能な様々なパネルに表示するメトリック、イベント、トポロジおよび分析データを抽出するために使用されます。Kubeシステム、OSヘルス、イベント、ワークロード・サマリー、ノード・サマリーおよびポッド・サマリーなどのログ・ベースの問合せの一部はログ・エクスプローラで実行する必要があり、その他の問合せはメトリック・エクスプローラで実行する必要があるメトリック・ベースです。

トピック:

右側のパネル・ウィジェットに対する問合せ

  • ウィジェットのタイトル: Kubeシステム

    タブ: クラスタ

    フィルタ: なし

    スコープ: ログ・エクスプローラ

    Query:

    'Component Type' in ('Kubernetes System', 'Kubernetes Control Plane') and Component != null
     | link Time, Component, cluster()
     | rename 'Cluster Sample' as 'Error Sample'
     | eval Error = if(length('Error Sample') > 50, substr('Error Sample', 0, 50) || ' ...', substr('Error Sample', 0, 50))
     | classify correlate = -*, Error Component as Trend
     | timestats name = 'All Issues' sum(Count) as 'Issue Trend'
     | timestats name = 'Potential Issues' sum(Count) as Issues by Component, Error
     | fields -'Potential Issue', -Error
  • ウィジェット・タイトル: OSヘルス

    タブ: 「クラスタ」「ノード」

    フィルタ: なし

    スコープ: ログ・エクスプローラ

    Query:

    'Component Type' = 'Linux System' and Component != null and (Label = null or (Label != null and 'Problem Priority' != null))
     | link includenulls = true Time, Node, Component, Label, cluster()
     | stats max('Problem Priority') as 'Problem Priority'
     | where 'Problem Priority' != null or 'Potential Issue' = '1'
     | eval Error = if(length('Cluster Sample') > 30, substr('Cluster Sample', 0, 30) || ' ...', substr('Cluster Sample', 0, 30))
     | classify correlate = -*, Error, Label Component as Trend
     | timestats name = 'All Issues' sum(Count) as 'Issue Trend'
     | timestats name = 'Issues Trend' sum(Count) as Issues by Component, Error, Label, Node
     | fields -'Potential Issue', -Error
  • ウィジェット・タイトル: CPUコア(使用済/割当て可能)

    タブ: 「クラスタ」「ワークロード」「ノード」「ポッド」

    フィルタ: 「ネームスペース」「ワークロード」「ノード」

    スコープ: メトリック・エクスプローラ

    Query:

    clusterCPUUtilization[1m]{clusterName = "k8s_solution_development"}.mean()

    フィルタを使用した問合せの例は、「ネットワーク帯域幅」ウィジェットの問合せを参照してください。

  • ウィジェット・タイトル: メモリー(使用済/割当て可能)

    タブ: 「クラスタ」「ワークロード」「ノード」「ポッド」

    フィルタ: 「ネームスペース」「ワークロード」「ノード」

    スコープ: メトリック・エクスプローラ

    Query:

    clusterMemoryUtilization[1m]{clusterName = "k8s_solution_development"}.mean()

    フィルタを使用した問合せの例は、「ネットワーク帯域幅」ウィジェットの問合せを参照してください。

  • ウィジェットのタイトル: 使用中のCPUコア

    タブ: 「クラスタ」「ワークロード」「ノード」「ポッド」

    フィルタ: 「ネームスペース」「ワークロード」「ノード」

    スコープ: メトリック・エクスプローラ

    Query:

    podCpuUsage[1m]{clusterName = "oke-cw22-ll", namespace = "kube-system", nodeName = "192.0.2.1", podName =~"coredns*"}.mean().grouping().sum()
  • ウィジェット・タイトル: ネットワーク帯域幅

    タブ: 「クラスタ」「ワークロード」「ノード」「ポッド」

    フィルタ: 「ネームスペース」「ワークロード」「ノード」

    スコープ: メトリック・エクスプローラ

    Query:

    container_network_receive_bytes_total[5m]{clusterName = "oke-cw22-ll", namespace=~"*", nodeName=~"*", pod=~"kube-proxy*" }.groupBy(interface).rate().filter(x=>x>=0)
    container_network_transmit_bytes_total[5m]{clusterName = "oke-cw22-ll", namespace=~"*", nodeName=~"*", pod=~"kube-proxy*" }.groupBy(interface).rate().filter(x=>x>=0)
  • ウィジェット・タイトル: APIサーバー・リクエストの期間

    タブ: 「クラスタ」「ワークロード」「ノード」「ポッド」

    フィルタ: なし

    スコープ: メトリック・エクスプローラ

    Query:

    apiserver_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll",verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum() / apiserver_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll",verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum()
  • ウィジェット・タイトル: etcdリクエスト時間

    タブ: クラスタ

    フィルタ: なし

    スコープ: メトリック・エクスプローラ

    Query:

    etcd_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(le).sum()/etcd_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll"}.groupBy(le).sum()
  • ウィジェット・タイトル: APIサーバー・リクエスト

    タブ: クラスタ

    フィルタ: なし

    スコープ: メトリック・エクスプローラ

    Query:

    apiserver_request_total[5m]{clusterName = "oke-cw22-ll"}.groupBy(code).rate().filter(x=>x>=0)
  • ウィジェット・タイトル: APIレスポンス・サイズ

    タブ: クラスタ

    フィルタ: なし

    スコープ: メトリック・エクスプローラ

    Query:

    apiserver_response_sizes_sum[5m]{clusterName = "oke-cw22-ll"}.groupBy(verb).sum() / apiserver_response_sizes_count[5m]{clusterName= "oke-cw22-ll"}.groupBy(verb).sum()
  • ウィジェット・タイトル: APIリクエスト実行期間

    タブ: クラスタ

    フィルタ: なし

    スコープ: メトリック・エクスプローラ

    Query:

    apiserver_request_duration_seconds_sum[5m]{clusterName = "oke-cw22-ll", verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum() / apiserver_request_duration_seconds_count[5m]{clusterName = "oke-cw22-ll", verb=~"LIST|GET|PUT|POST|PATCH|DELETE|APPLY"}.groupBy(verb).sum()

イベント表の問合せ

タブ: 「クラスタ」「ワークロード」「ノード」「ポッド」

フィルタ: ネームスペース

スコープ: ログ・エクスプローラ

Query:

'Log Source' = 'Kubernetes Event Object Logs' and 'Kubernetes Event Action' != deleted
 | eval Object = 'Involved Object Kind' || ' - ' || 'Involved Object Name'
 | link includenulls = true Object, 'Event Source Component', Event
 | rename 'Event Source Component' as Component
 | stats latest('Kubernetes Event Action') as Status, unique(Namespace) as Namespace, latest(Reason) as Reason, latest('Event Description') as Message, unique('Event Type') as Type, earliest('First Event Time') as 'First Event Time', latest('Last Event Time') as 'Last Event Time', latest('Event Count') as 'Event Count'
 | eventstats count(Namespace) as Records by Namespace
 | eval Age = 'Last Event Time' - 'First Event Time'
 | createtable name = 'Namespace Summary' select Namespace, Records
 | createtable name = 'Namespace Details' select Namespace, Type, Reason, 'Last Event Time', Age, Message, Object, Component
 | sort Namespace, -'Last Event Time'
 | fields -Event, -'Start Time', -'End Time', -'First Event Time', -Count

クラスタ・トポロジおよび詳細表の問合せ

  • ビジュアライゼーション: ワークロード・サマリー

    タブ: ワークロード

    フィルタ: 「ネームスペース」「ワークロード」

    スコープ: ログ・エクスプローラ

    Query:

    'Log Source' in ('Kubernetes DaemonSet Object Logs', 'Kubernetes Deployment Object Logs', 'Kubernetes CronJob Object Logs', 'Kubernetes Job Object Logs', 'Kubernetes StatefulSet Object Logs')
     | eval Name = if('Log Source' = 'Kubernetes Deployment Object Logs', Deployment, 'Log Source' = 'Kubernetes DaemonSet Object Logs', DaemonSet, 'Log Source' = 'Kubernetes CronJob Object Logs', CronJob, 'Log Source' = 'Kubernetes Job Object Logs', Job, 'Log Source' = 'Kubernetes StatefulSet Object Logs', StatefulSet, null)
     | link Namespace, 'Log Source', Name
     | eval Type = if('Log Source' = 'Kubernetes Deployment Object Logs', literal(Deployment), 'Log Source' = 'Kubernetes DaemonSet Object Logs', literal(DaemonSet), 'Log Source' = 'Kubernetes CronJob Object Logs', literal(CronJob), 'Log Source' = 'Kubernetes Job Object Logs', literal(Job), 'Log Source' = 'Kubernetes StatefulSet Object Logs', literal(StatefulSet), null)
     | addfields [ 'Log Source' = 'Kubernetes Deployment Object Logs'
     | eventstats latest('Available Status') as 'DP Available', latest(Replicas) as 'DP Desired', latest('Ready Replicas') as 'DP Ready', latest('Updated Replicas') as 'DP Updated', latest('Available Replicas') as 'DP Available R', latest('Object Creation Time') as 'DP OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes DaemonSet Object Logs'
     | eventstats latest('Desired Number Scheduled') as 'DM Desired', latest('Ready Count') as 'DM Ready', latest('Updated Replicas') as 'DM Updated', latest('Current Scheduled') as 'DM Scheduled', latest('Object Creation Time') as 'DM OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes CronJob Object Logs'
     | eventstats latest(Schedule) as 'CR Schedule', latest(Suspend) as 'CR Suspended', latest('Last Schedule Time') as 'CR Last Schedule', latest('Object Creation Time') as 'CR OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes Job Object Logs'
     | eventstats latest(Completions) as 'JB Completions', latest(Status) as 'JB Status', latest('Object Creation Time') as 'JB OCR' by Namespace, Name ], [ 'Log Source' = 'Kubernetes StatefulSet Object Logs'
     | eventstats latest(Replicas) as 'SS Replicas', latest('Current Replicas') as 'SS Current Replicas', latest('Desired Replicas') as 'SS Desired Replicas', latest('Ready Replicas') as 'SS Ready Replicas', latest('Object Creation Time') as 'SS OCR' by Namespace, Name ]
     | eval OCR = if('Log Source' = 'Kubernetes Deployment Object Logs', 'DP OCR', 'Log Source' = 'Kubernetes DaemonSet Object Logs', 'DM OCR', 'Log Source' = 'Kubernetes CronJob Object Logs', 'CR OCR', 'Log Source' = 'Kubernetes Job Object Logs', 'JB OCR', 'Log Source' = 'Kubernetes StatefulSet Object Logs', 'SS OCR', null)
     | eval Age = unit('End Time' - OCR, ms) | eval Status = if('Log Source' = 'Kubernetes Deployment Object Logs' and 'DP Available' = true, Available, 'Log Source' = 'Kubernetes DaemonSet Object Logs' and 'DM Desired' = 'DM Ready', Available, 'Log Source' = 'Kubernetes CronJob Object Logs' and 'CR Suspended' = true, Suspended || ' (Last Scheduled: ' || formatDate('CR Last Schedule') || ')', 'Log Source' = 'Kubernetes CronJob Object Logs' and 'CR Suspended' = false, ' Last Scheduled: ' || formatDate('CR Last Schedule'), 'Log Source' = 'Kubernetes Job Object Logs' and 'JB Status' = complete, Complete, 'Log Source' = 'Kubernetes Job Object Logs' and 'JB Status' = failed, Failed, 'Log Source' = 'Kubernetes Job Object Logs', 'JB Status', 'Log Source' = 'Kubernetes StatefulSet Object Logs' and ('SS Desired Replicas' = 'SS Replicas' and 'SS Desired Replicas' = 'SS Ready Replicas'), Available, 'Not Available')
     | createtable name = Workloads select Namespace, Type, Name, Status, Age
     | fields -'DP *', -'DM *', -'JB *', -'SS *', -OCR
  • ビジュアライゼーション: ノード・サマリー

    タブ: ノード

    フィルタ: 「ネームスペース」「ワークロード」「ノード」

    スコープ: ログ・エクスプローラ

    Query:

    'Log Source' = 'Kubernetes Node Object Logs'
     | link Node
     | stats latest('Ready Status') as 'Ready Status', latest('Ready Reason') as 'Ready Reason', latest('Disk Pressure Status') as 'Disk Pressure', latest('Memory Pressure Status') as 'Memory Pressure', latest('PID Pressure Status') as 'PID Pressure', latest(Architecture) as Arch, latest('Operating System Image') as 'OS Image', latest('Kernel Version') as Kernel, latest('Container Runtime Version') as 'Container Runtime', latest('Kubelet Version') as Kubelet, latest('KubeProxy Version') as KubeProxy, latest('CPU Allocatable') as 'CPU A', latest('CPU Capacity') as 'CPU C', latest('Memory Allocatable') as 'Memory A', latest('Memory Capacity') as 'Memory C'
     | eval Status = if('Ready Status' = true, Ready, 'Not Ready')
     | eval Issues = if('Disk Pressure' != true and 'Memory Pressure' != true and 'PID Pressure' != true and Status = Ready, 'No Issues', 'Disk Pressure' = true and 'Memory Pressure' = true and 'PID Pressure' = true, 'Low on Disk, Memory and PID', 'Disk Pressure' = true and 'Memory Pressure' = true and 'PID Pressure' != true, 'Low on Disk and Memory', 'Disk Pressure' = true and 'Memory Pressure' != true and 'PID Pressure' = true, 'Low on Disk and PID', 'Disk Pressure' = true and 'Memory Pressure' != true and 'PID Pressure' != true, 'Low on Disk', 'Disk Pressure' != true and 'Memory Pressure' = true and 'PID Pressure' = true, 'Low on Memory and PID', 'Disk Pressure' != true and 'Memory Pressure' = true and 'PID Pressure' != true, 'Low on Memory', 'Disk Pressure' != true and 'Memory Pressure' != true and 'PID Pressure' = true, 'Low on PID', Status = 'Not Ready' and 'Ready Reason' != null, 'Ready Reason', Unknown)
     | eval CPU = 'CPU C' || ' /  ' || 'CPU A' | eval 'Memory (Capacity)' = unit('Memory C', byte)
     | eval 'Memory (Allocatable)' = unit('Memory A', byte)
     | eval Age = unit('Query End Time' - 'End Time', ms)
     | eval 'Kubelet / KubeProxy Versions' = Kubelet || ' / ' || KubeProxy
     | eval OS = 'OS Image' || ' (' || Arch || ') ' || Kernel
     | createtable name = 'Node Summary' select Node as Name, Status, Issues, Age, OS, 'Container Runtime', 'Kubelet / KubeProxy Versions', CPU, 'Memory (Capacity)', 'Memory (Allocatable)'
  • ビジュアライゼーション: ポッド・サマリー

    タブ: ポッド

    フィルタ: 「ネームスペース」「ワークロード」「ノード」

    スコープ: ログ・エクスプローラ

    Query:

    'Log Source' = 'Kubernetes Pod Object Logs'
     | link Pod
     | stats latest('Pod Phase') as Status, latest(Node) as Node, latest(Namespace) as Namespace, latest('Pod IP Address') as 'Pod IP', latest(Controller) as Controller, latest('Controller Kind') as 'Controller Kind', latest('Scheduler Name') as Scheduler
     | createtable name = 'Pod Summary' select Pod as Name, Status, Node, Namespace, 'Pod IP', Controller, 'Controller Kind', Scheduler
     | fields 'End Time' as 'Last Reported', -Count