Azure Monitor for containers からログを照会する方法How to query logs from Azure Monitor for containers

Azure Monitor for containers では、コンテナー ホストおよびコンテナーからパフォーマンスのメトリック、インベントリ データ、および正常性状態の情報が収集され、Azure Monitor の Log Analytics ワークスペースに転送されます。Azure Monitor for containers collects performance metrics, inventory data, and health state information from container hosts and containers, and forwards it to the Log Analytics workspace in Azure Monitor. データは、3 分ごとに収集されます。Data is collected every three minutes. このデータは、Azure Monitor でクエリ用に使用できます。This data is available for query in Azure Monitor. このデータは、移行計画、容量の分析、探索、必要に応じたパフォーマンスのトラブルシューティングといったシナリオに適用できます。You can apply this data to scenarios that include migration planning, capacity analysis, discovery, and on-demand performance troubleshooting.

コンテナー レコードContainer records

次の表には、コンテナーの Azure Monitor によって収集されるレコードと、ログ検索結果に表示されるデータ型の例を示します。Examples of records that are collected by Azure Monitor for containers and the data types that appear in log search results are displayed in the following table:

データ型Data type ログ検索のデータ型Data type in Log Search フィールドFields
ホストとコンテナーのパフォーマンスPerformance for hosts and containers Perf Computer、ObjectName、CounterName (%Processor Time、Disk Reads MB、Disk Writes MB、Memory Usage MB、Network Receive Bytes、Network Send Bytes、Processor Usage sec、Network)、CounterValue、TimeGenerated、CounterPath、SourceSystemComputer, ObjectName, CounterName (%Processor Time, Disk Reads MB, Disk Writes MB, Memory Usage MB, Network Receive Bytes, Network Send Bytes, Processor Usage sec, Network), CounterValue, TimeGenerated, CounterPath, SourceSystem
コンテナー インベントリContainer inventory ContainerInventory TimeGenerated、Computer、container name、ContainerHostname、Image、ImageTag、ContainerState、ExitCode、EnvironmentVar、Command、CreatedTime、StartedTime、FinishedTime、SourceSystem、ContainerID、ImageIDTimeGenerated, Computer, container name, ContainerHostname, Image, ImageTag, ContainerState, ExitCode, EnvironmentVar, Command, CreatedTime, StartedTime, FinishedTime, SourceSystem, ContainerID, ImageID
コンテナー ログContainer log ContainerLog TimeGenerated、Computer、image ID、container name、LogEntrySource、LogEntry、SourceSystem、ContainerIDTimeGenerated, Computer, image ID, container name, LogEntrySource, LogEntry, SourceSystem, ContainerID
コンテナー ノード インベントリContainer node inventory ContainerNodeInventory TimeGenerated、Computer、ClassName_s、DockerVersion_s、OperatingSystem_s、Volume_s、Network_s、NodeRole_s、OrchestratorType_s、InstanceID_g、SourceSystemTimeGenerated, Computer, ClassName_s, DockerVersion_s, OperatingSystem_s, Volume_s, Network_s, NodeRole_s, OrchestratorType_s, InstanceID_g, SourceSystem
Kubernetes クラスター内のポッドのインベントリInventory of pods in a Kubernetes cluster KubePodInventory TimeGenerated、Computer、ClusterId、ContainerCreationTimeStamp、PodUid、PodCreationTimeStamp、ContainerRestartCount、PodRestartCount、PodStartTime、ContainerStartTime、ServiceName、ControllerKind、ControllerName、ContainerStatus、ContainerStatusReason、ContainerID、ContainerName、Name、PodLabel、Namespace、PodStatus、ClusterName、PodIp、SourceSystemTimeGenerated, Computer, ClusterId, ContainerCreationTimeStamp, PodUid, PodCreationTimeStamp, ContainerRestartCount, PodRestartCount, PodStartTime, ContainerStartTime, ServiceName, ControllerKind, ControllerName, ContainerStatus, ContainerStatusReason, ContainerID, ContainerName, Name, PodLabel, Namespace, PodStatus, ClusterName, PodIp, SourceSystem
Kubernetes クラスター内のノード部分のインベントリInventory of nodes part of a Kubernetes cluster KubeNodeInventory TimeGenerated, Computer, ClusterName, ClusterId, LastTransitionTimeReady, Labels, Status, KubeletVersion, KubeProxyVersion, CreationTimeStamp, SourceSystemTimeGenerated, Computer, ClusterName, ClusterId, LastTransitionTimeReady, Labels, Status, KubeletVersion, KubeProxyVersion, CreationTimeStamp, SourceSystem
Kubernetes イベントKubernetes Events KubeEvents TimeGenerated, Computer, ClusterId_s, FirstSeen_t, LastSeen_t, Count_d, ObjectKind_s, Namespace_s, Name_s, Reason_s, Type_s, TimeGenerated_s, SourceComponent_s, ClusterName_s, Message, SourceSystemTimeGenerated, Computer, ClusterId_s, FirstSeen_t, LastSeen_t, Count_d, ObjectKind_s, Namespace_s, Name_s, Reason_s, Type_s, TimeGenerated_s, SourceComponent_s, ClusterName_s, Message, SourceSystem
Kubernetes クラスター内のサービスServices in the Kubernetes cluster KubeServices TimeGenerated, ServiceName_s, Namespace_s, SelectorLabels_s, ClusterId_s, ClusterName_s, ClusterIP_s, ServiceType_s, SourceSystemTimeGenerated, ServiceName_s, Namespace_s, SelectorLabels_s, ClusterId_s, ClusterName_s, ClusterIP_s, ServiceType_s, SourceSystem
Kubernetes クラスターのノード部分のパフォーマンス メトリックPerformance metrics for nodes part of the Kubernetes cluster Perf | where ObjectName == “K8SNode”Perf | where ObjectName == “K8SNode” Computer、ObjectName、CounterName (cpuAllocatableBytes、memoryAllocatableBytes、cpuCapacityNanoCores、memoryCapacityBytes、memoryRssBytes、cpuUsageNanoCores、memoryWorkingsetBytes、restartTimeEpoch)、CounterValue、TimeGenerated、CounterPath、SourceSystemComputer, ObjectName, CounterName (cpuAllocatableBytes, memoryAllocatableBytes, cpuCapacityNanoCores, memoryCapacityBytes, memoryRssBytes, cpuUsageNanoCores, memoryWorkingsetBytes, restartTimeEpoch), CounterValue, TimeGenerated, CounterPath, SourceSystem
Kubernetes クラスターのコンテナー部分のパフォーマンス メトリックPerformance metrics for containers part of the Kubernetes cluster Perf | where ObjectName == “K8SContainer”Perf | where ObjectName == “K8SContainer” CounterName (cpuRequestNanoCores、memoryRequestBytes、cpuLimitNanoCores、memoryWorkingSetBytes、restartTimeEpoch、cpuUsageNanoCores、memoryRssBytes)、CounterValue、TimeGenerated、CounterPath、SourceSystemCounterName ( cpuRequestNanoCores, memoryRequestBytes, cpuLimitNanoCores, memoryWorkingSetBytes, restartTimeEpoch, cpuUsageNanoCores, memoryRssBytes), CounterValue, TimeGenerated, CounterPath, SourceSystem
カスタム メトリックCustom Metrics InsightsMetrics Computer、Name、Namespace、Origin、SourceSystem、Tags1、TimeGenerated、Type、Va、_ResourceIdComputer, Name, Namespace, Origin, SourceSystem, Tags1, TimeGenerated, Type, Va, _ResourceId

1Tags プロパティは、対応するメトリックの複数のディメンションを表します。1 The Tags property represents multiple dimensions for the corresponding metric. InsightsMetrics テーブルに収集して格納されているメトリックの詳細とレコードのプロパティの説明については、InsightsMetrics の概要に関するページを参照してください。For additional information about the metrics collected and stored in the InsightsMetrics table and a description of the record properties, see InsightsMetrics overview.

注意

現時点では、Prometheus のサポートはパブリック プレビューの機能です。Support for Prometheus is a feature in public preview at this time.

データを分析するためのログの検索Search logs to analyze data

Azure Monitor ログを使用することにより、傾向の特定、ボトルネックの診断、予想を行ったり、データを関連付けて現在のクラスター構成のパフォーマンスが最適化されているかどうかを判断したりできます。Azure Monitor Logs can help you look for trends, diagnose bottlenecks, forecast, or correlate data that can help you determine whether the current cluster configuration is performing optimally. すぐに使用できる事前定義のログ検索が提供されています。また、検索結果として返される情報の表示方法をカスタマイズすることもできます。Pre-defined log searches are provided for you to immediately start using or to customize to return the information the way you want.

[分析で表示する] ドロップダウン リストからプレビュー ウィンドウの [Kubernetes イベント ログの表示] または [コンテナー ログの表示] オプションを選択することにより、ワークスペース内のデータの分析を対話式に実行できます。You can perform interactive analysis of data in the workspace by selecting the View Kubernetes event logs or View container logs option in the preview pane from the View in analytics drop-down list. [ログ検索] ページは、元の Azure portal ページの右側に表示されます。The Log Search page appears to the right of the Azure portal page that you were on.

Log Analytics でデータを解析する

ワークスペースに転送されるコンテナー ログ出力は、STDOUT および STDERR です。The container logs output that's forwarded to your workspace are STDOUT and STDERR. Azure Monitor では、Azure マネージド Kubernetes (AKS) が監視され、大量のデータが生成されるため、現時点では Kube システムのデータは収集されません。Because Azure Monitor is monitoring Azure-managed Kubernetes (AKS), Kube-system is not collected today because of the large volume of generated data.

検索クエリの例Example log search queries

多くの場合、1、2 個の例を使ってクエリを作成し、その後、要件に合わせて変更するとうまくいきます。It's often useful to build queries that start with an example or two and then modify them to fit your requirements. より高度なクエリを作成できるように、次のサンプル クエリを試すことができます。To help build more advanced queries, you can experiment with the following sample queries:

クエリQuery 説明Description
ContainerInventoryContainerInventory
| project Computer, Name, Image, ImageTag, ContainerState, CreatedTime, StartedTime, FinishedTime| project Computer, Name, Image, ImageTag, ContainerState, CreatedTime, StartedTime, FinishedTime
| render table| render table
コンテナーのライフ サイクル情報をすべて一覧表示しますList all of a container's lifecycle information
KubeEvents_CLKubeEvents_CL
| where not(isempty(Namespace_s))| where not(isempty(Namespace_s))
| sort by TimeGenerated desc| sort by TimeGenerated desc
| render table| render table
Kubernetes イベントKubernetes events
ContainerImageInventoryContainerImageInventory
| summarize AggregatedValue = count() by Image, ImageTag, Running| summarize AggregatedValue = count() by Image, ImageTag, Running
イメージ インベントリImage inventory
[折れ線] グラフの表示オプションを選択する:Select the Line chart display option:
PerfPerf
| where ObjectName == "K8SContainer" and CounterName == "cpuUsageNanoCores" | summarize AvgCPUUsageNanoCores = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName| where ObjectName == "K8SContainer" and CounterName == "cpuUsageNanoCores" | summarize AvgCPUUsageNanoCores = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName
コンテナー CPUContainer CPU
[折れ線] グラフの表示オプションを選択する:Select the Line chart display option:
PerfPerf
| where ObjectName == "K8SContainer" and CounterName == "memoryRssBytes" | summarize AvgUsedRssMemoryBytes = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName| where ObjectName == "K8SContainer" and CounterName == "memoryRssBytes" | summarize AvgUsedRssMemoryBytes = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName
コンテナー メモリContainer memory
InsightsMetricsInsightsMetrics
| where Name == "requests_count"| where Name == "requests_count"
| summarize Val=any(Val) by TimeGenerated=bin(TimeGenerated, 1m)| summarize Val=any(Val) by TimeGenerated=bin(TimeGenerated, 1m)
| sort by TimeGenerated asc| sort by TimeGenerated asc
| project RequestsPerMinute = Val - prev(Val), TimeGenerated| project RequestsPerMinute = Val - prev(Val), TimeGenerated
| render barchart| render barchart
カスタム メトリックでの 1 分あたりの要求数Requests Per Minute with Custom Metrics

Prometheus メトリック データのクエリを実行するQuery Prometheus metrics data

次の例は、ノードごとのディスクごとの 1 秒あたりのディスク読み取り数を示す Prometheus メトリック クエリです。The following example is a Prometheus metrics query showing disk reads per second per disk per node.

InsightsMetrics
| where Namespace == 'container.azm.ms/diskio'
| where TimeGenerated > ago(1h)
| where Name == 'reads'
| extend Tags = todynamic(Tags)
| extend HostName = tostring(Tags.hostName), Device = Tags.name
| extend NodeDisk = strcat(Device, "/", HostName)
| order by NodeDisk asc, TimeGenerated asc
| serialize
| extend PrevVal = iif(prev(NodeDisk) != NodeDisk, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeDisk) != NodeDisk, datetime(null), prev(TimeGenerated))
| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated
| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))
| where isnotnull(Rate)
| project TimeGenerated, NodeDisk, Rate
| render timechart

Azure Monitor によって収集された Prometheus メトリックを名前空間でフィルター処理して表示するには、"prometheus" を指定します。To view Prometheus metrics scraped by Azure Monitor filtered by Namespace, specify "prometheus". default kubernetes 名前空間から Prometheus メトリックを表示するクエリの例を次に示します。Here is a sample query to view Prometheus metrics from the default kubernetes namespace.

InsightsMetrics 
| where Namespace == "prometheus"
| extend tags=parse_json(Tags)
| summarize count() by Name

prometheus のデータは、名前で直接照会することもできます。Prometheus data can also be directly queried by name.

InsightsMetrics 
| where Namespace == "prometheus"
| where Name contains "some_prometheus_metric"

クエリ構成エラーまたはスクラップ エラーQuery config or scraping errors

構成エラーまたはスクラップ エラーを調査するために、次のクエリの例では、KubeMonAgentEvents テーブルから情報イベントが返されます。To investigate any configuration or scraping errors, the following example query returns informational events from the KubeMonAgentEvents table.

KubeMonAgentEvents | where Level != "Info" 

出力では、次のような結果が示されます。The output will show results similar to the following:

エージェントからの情報イベントのクエリ結果をログに記録する

次のステップNext steps

Azure Monitor for containers には、定義済みの一連のアラートは含まれません。Azure Monitor for containers does not include a predefined set of alerts. Azure Monitor for containers を使用したパフォーマンス アラートの作成に関するページを読んで、CPU やメモリの使用率が高い場合に推奨アラートを作成し、DevOps や運用プロセスまたは手順をサポートする方法について学習します。Review the Create performance alerts with Azure Monitor for containers to learn how to create recommended alerts for high CPU and memory utilization to support your DevOps or operational processes and procedures.