このページでは、Google Distributed Cloud Connected がオペレーションに関するさまざまな種類の情報をログに記録する方法と、その情報を表示する方法について説明します。一部の種類のログと指標の収集には追加料金が発生します。詳細については、ログと指標の課金をご覧ください。
ロギングとモニタリングの構成
ログと指標の収集を開始する前に、次の操作を行う必要があります。
次のコマンドを使用して、ロギング API を有効にします。
gcloud services enable opsconfigmonitoring.googleapis.com --project PROJECT_ID gcloud services enable logging.googleapis.com --project PROJECT_ID gcloud services enable monitoring.googleapis.com --project PROJECT_ID
PROJECT_IDは、ターゲット Google Cloud プロジェクトの ID に置き換えます。ログと指標の書き込みに必要なロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/opsconfigmonitoring.resourceMetadata.writer \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/metadata-agent]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/logging.logWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver-log-forwarder]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/monitoring.metricWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/gke-metrics-agent]"PROJECT_IDは、ターゲット Google Cloud プロジェクトの ID に置き換えます。
ログ
このセクションでは、Distributed Cloud でサポートされている Cloud Logging リソースタイプの一覧を示します。Distributed Cloud ログを表示するには、 Google Cloud コンソールのログ エクスプローラを使用します。Distributed Cloud ロギングは常に有効になっています。
Distributed Cloud Connected のロギング対象リソースタイプは、次の標準 Kubernetes リソースです。
k8s_containerk8s_node
Cloud Logging API を使用して、Distributed Cloud Connected のログをキャプチャして取得することもできます。このロギング メカニズムの構成方法については、Cloud Logging クライアント ライブラリのドキュメントをご覧ください。
指標
このセクションでは、Distributed Cloud でサポートされている Cloud Monitoring 指標を示します。Distributed Cloud 指標を表示するには、Google Cloud コンソールの Metrics Explorer を使用します。
Distributed Cloud コネクテッド クラスタの指標
Distributed Cloud コネクテッド クラスタの場合、Distributed Cloud コネクテッドは、Distributed Cloud コネクテッド ノードによって生成される次のタイプの指標を提供します。
- リソース指標は、CPU 負荷やメモリ使用量など、Distributed Cloud 接続ノードと Pod のパフォーマンスに関する情報を提供します。
- システム アプリケーション指標は、
corednsなどの Distributed Cloud コネクテッド システム ワークロードに関する情報を提供します。
これらの指標のリストについては、Google Distributed Cloud と Google Distributed Cloud の指標をご覧ください。
Distributed Cloud コネクテッドは、Distributed Cloud コネクテッド クラスタに関連付けられた Kubernetes コントロール プレーンによって生成された指標を提供しません。
Distributed Cloud コネクテッド ハードウェアの指標
Distributed Cloud connected は、次のリソースタイプを使用して、Distributed Cloud connected ハードウェアの指標を提供します。
edgecontainer.googleapis.com/Machine
Machine リソース指標
Distributed Cloud Connected は、edgecontainer.googleapis.com/Machine リソースの次の Cloud Monitoring API 指標を書き込みます。
| 指標 | 説明 |
|---|---|
/machine/cpu/total_cores
|
マシンに存在する物理プロセッサ コアの合計数。 |
/machine/cpu/usage_time
|
マシン上のすべてのコアの CPU 使用時間の累積。タイプは workload(お客様のワークロード)または system(その他すべて)にできます。 |
/machine/cpu/utilization
|
マシンの CPU 使用率。範囲は 0 ~ 1 です。タイプは workload(お客様のワークロード)または system(その他すべて)にできます。 |
/machine/memory/total_bytes
|
マシンの合計メモリのバイト数。 |
/machine/memory/used_bytes
|
マシンで使用されているメモリのバイト数。memory_type は evictable(カーネルで再利用可能)または non-evictable(再利用不可)のいずれかです。 |
/machine/memory/utilization
|
マシン上のメモリ使用率。範囲は 0 ~ 1 です。memory_type は evictable(カーネルで再利用可能)または non-evictable(再利用不可)のいずれかです。 |
/machine/network/up
|
ネットワーク インターフェースが稼働中かどうかを示します。プライマリ カード、セカンダリ カード、ポートが含まれます。 |
/machine/network/link_speed
|
プライマリ ネットワーク インターフェース カードのリンク速度。 |
/machine/network/received_bytes_count
|
プライマリ ネットワーク インターフェース カードで受信したバイト数。 |
/machine/network/sent_bytes_count
|
プライマリ ネットワーク インターフェース カードの送信バイト数。 |
/machine/network/connectivity
|
プライマリ ネットワーク インターフェース カードがインターネットに接続されているかどうかを示します。 |
/machine/disk/total_bytes
|
マシン上のディスク容量の合計のバイト数。 |
/machine/disk/used_bytes
|
マシンで使用されているディスク容量のバイト数。 |
/machine/disk/utilization
|
マシン上のディスク使用率(パーセント)。範囲は 0 ~ 1 です。 |
/machine/restart_count
|
マシンが再起動した回数。 |
/machine/uptime
|
最後の再起動からのマシンの稼働時間。 |
/machine/connected
|
マシンが Google Cloudに接続されているかどうかを示します。 |
仮想マシンのバックアップ オペレーションの指標
Distributed Cloud connected は、仮想マシン バックアップ エージェントに関連する次の指標を収集してエクスポートします。
| 指標 | 説明 |
|---|---|
gdc_backup_backups_completed
|
正常に完了した仮想マシンのバックアップの数。 |
gdc_backup_backups_latency
|
仮想マシンのバックアップのレイテンシ(分単位)。 |
gdc_backup_volume_backups_created
|
これまでに作成されたボリューム バックアップの数。 |
gdc_backup_volume_backups_completed
|
これまでに完了したボリューム バックアップの数。 |
gdc_backup_restores_completed
|
これまでに完了した仮想マシンの復元の数。 |
gdc_backup_restores_latency
|
仮想マシンの復元のレイテンシ(分単位)。 |
gdc_backup_volume_restores_created
|
これまでに作成されたボリューム復元の数。 |
gdc_backup_volume_restores_completed
|
これまでに完了したボリューム復元の数。 |
Distributed Cloud コネクテッドは、仮想マシン バックアップ コントロール プレーンに関連する次の指標を収集してエクスポートします。
| 指標 | 説明 |
|---|---|
gdc_backup_controlplane_live
|
バックアップ コントロール プレーンが動作しているかどうかを示します。 |
gdc_backup_backup_repositories_attached
|
アタッチされたバックアップ リポジトリの数。 |
gdc_backup_backups_created
|
これまでに作成された仮想マシンのバックアップの数。 |
gdc_backup_backups_deleted
|
これまでに削除された仮想マシンのバックアップの数。 |
gdc_backup_restores_created
|
これまでに作成された仮想マシンの復元の数。 |
gdc_gdc_backup_backups_pile_up
|
バックアップ プランが進行中のバックアップ数の上限に達したかどうかを示します。 |
Distributed Cloud Connected は、仮想マシン バックアップ機能の課金に関連する次の指標を収集してエクスポートします。
| 指標 | 説明 |
|---|---|
metering_protected_resources_total
|
現在までにバックアップされた仮想マシンの合計数。 |
metering_deleted_resources_total
|
これまでに削除された仮想マシンのバックアップの合計数。 |
カスタム アプリケーションのログと指標をエクスポートする
Distributed Cloud connected は、Distributed Cloud connected ワークロードで実行されているアプリケーションのログを自動的にエクスポートします。Distributed Cloud に接続されたワークロードで実行されているアプリケーションの指標をエクスポートするには、次のセクションで説明するようにアノテーションを付ける必要があります。
ワークロードにアノテーションを付けて指標のエクスポートを有効にする
アプリケーションのカスタム指標の収集を有効にするには、アプリケーションの Service マニフェストまたは Deployment マニフェストに次のアノテーションを追加します。
prometheus.io/scrape: "true"prometheus.io/path: "ENDPOINT_PATH"。ENDPOINT_PATHは、ターゲット アプリケーションの指標エンドポイントへのフルパスに置き換えます。prometheus.io/port: "PORT_NUMBER": アプリケーションの指標エンドポイントが接続をリッスンするポート。
サンプル アプリケーションを実行する
このセクションでは、カスタムログを書き込み、カスタム指標エンドポイントを公開するアプリケーションを作成します。
次の Service マニフェストと Deployment マニフェストを
my-app.yamlという名前のファイルに保存します。Service にprometheus.io/scrape: "true"というアノテーションが付いていることに注意してください。kind: Service apiVersion: v1 metadata: name: "monitoring-example" namespace: "default" annotations: prometheus.io/scrape: "true" spec: selector: app: "monitoring-example" ports: - name: http port: 9090 --- apiVersion: apps/v1 kind: Deployment metadata: name: "monitoring-example" namespace: "default" labels: app: "monitoring-example" spec: replicas: 1 selector: matchLabels: app: "monitoring-example" template: metadata: labels: app: "monitoring-example" spec: containers: - image: gcr.io/google-samples/prometheus-dummy-exporter:latest name: prometheus-example-exporter imagePullPolicy: Always command: - /bin/sh - -c - ./prometheus-dummy-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090 resources: requests: cpu: 100mDeployment と Service を作成します。
kubectl --kubeconfig apply -f my-app.yaml
アプリケーション ログを表示
コンソール
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[リソース] をクリックします。
[すべてのリソースタイプ] リストで、[
Kubernetes Container] を選択します。[クラスタ名] で、ユーザー クラスタの名前を選択します。
[Namespace name] で
defaultを選択します。[追加] をクリックしてから、[クエリを実行] をクリックします。
[クエリ結果] セクションで、
monitoring-exampleDeployment からのログエントリを確認できます。次に例を示します。{ "textPayload": "2020/11/14 01:24:24 Starting to listen on :9090\n", "insertId": "1oa4vhg3qfxidt", "resource": { "type": "k8s_container", "labels": { "pod_name": "monitoring-example-7685d96496-xqfsf", "cluster_name": ..., "namespace_name": "default", "project_id": ..., "location": "us-west1", "container_name": "prometheus-example-exporter" } }, "timestamp": "2020-11-14T01:24:24.358600252Z", "labels": { "k8s-pod/pod-template-hash": "7685d96496", "k8s-pod/app": "monitoring-example" }, "logName": "projects/.../logs/stdout", "receiveTimestamp": "2020-11-14T01:24:39.562864735Z" }
gcloud
gcloud logging readコマンドを使用します。gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'PROJECT_IDは、プロジェクトの ID に置き換えます。出力で、
monitoring-exampleDeployment からのログエントリを確認できます。次に例を示します。insertId: 1oa4vhg3qfxidt labels: k8s-pod/app: monitoring-example k8s- pod/pod-template-hash: 7685d96496 logName: projects/.../logs/stdout receiveTimestamp: '2020-11-14T01:24:39.562864735Z' resource: labels: cluster_name: ... container_name: prometheus-example-exporter location: us-west1 namespace_name: default pod_name: monitoring-example-7685d96496-xqfsf project_id: ... type: k8s_container textPayload: | 2020/11/14 01:24:24 Starting to listen on :9090 timestamp: '2020-11-14T01:24:24.358600252Z'
アプリケーション指標を表示する
サンプル アプリケーションでは、example_monitoring_up という名前のカスタム指標が公開されています。 Google Cloud コンソールで、その指標の値を確認できます。
Google Cloud コンソールで、[Metrics Explorer] ページに移動します。
[Resource types] で [
Kubernetes Pod] を選択します。[指標] で [
external/prometheus/example_monitoring_up] を選択します。このチャートでは、
example_monitoring_upの繰り返し値が 1 であることがわかります。
Prometheus で指標を収集する
Distributed Cloud Connected は、Distributed Cloud Connected ワークロードの指標を収集するための Prometheus 指標ソリューションをサポートしています。
この目的のために、Distributed Cloud コネクテッド クラスタを作成すると、Distributed Cloud コネクテッドは prom-monitoring という名前の非管理対象 Namespace を作成します。この Namespace を使用して Prometheus をデプロイすることをおすすめします。必要なリソースを prom-monitoring Namespace から任意の Namespace にコピーして、そこに Prometheus をデプロイすることもできます。
Prometheus 指標のスクレイピングを構成する
Prometheus で Distributed Cloud 接続指標を収集するには、Prometheus 指標のスクレイピングを構成する必要があります。これを行うには、Prometheus Pod に prometheus-scrape-config ConfigMap をマウントし、ConfigMap から Prometheus 構成にスクレイピング構成を追加します。次に例を示します。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus-local-rolebinding
namespace: prom-monitoring
subjects:
- kind: ServiceAccount
name: prometheus-scrape
namespace: prom-monitoring
roleRef:
kind: ClusterRole
name: gke-metrics-agent
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: prom-monitoring
data:
prometheus.yml: |
global:
scrape_interval: 5s
evaluation_interval: 5s
rule_files:
scrape_config_files:
- /etc/prometheus/scrape/*.yml
---
apiVersion: v1
kind: Service
metadata:
name: prometheus
namespace: prom-monitoring
spec:
selector:
app: prom-monitoring
ports:
- port: 9090
targetPort: 9090
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-deployment
namespace: prom-monitoring
labels:
app: prom-monitoring
spec:
replicas: 1
selector:
matchLabels:
app: prom-monitoring
template:
metadata:
labels:
app: prom-monitoring
spec:
serviceAccountName: prometheus-scrape
containers:
- name: prometheus
image: prom/prometheus:main
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus/"
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/
- name: prometheus-scrape-config-volume
mountPath: /etc/prometheus/scrape/
- name: prometheus-storage-volume
mountPath: /prometheus/
- name: prometheus-scrape-token
mountPath: /var/run/secrets/kubernetes.io/stackdriver-prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
mountPath: /certs/stackdriver-prometheus-scrape
- name: stackdriver-prometheus-etcd-scrape
mountPath: /stackdriver-prometheus-etcd-scrape
volumes:
- name: prometheus-storage-volume
emptyDir: {}
- name: prometheus-config-volume
configMap:
defaultMode: 420
name: prometheus-config
- name: prometheus-scrape-config-volume
configMap:
defaultMode: 420
name: prometheus-scrape-config
- name: prometheus-scrape-token
secret:
defaultMode: 420
secretName: prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
secret:
defaultMode: 420
optional: true
secretName: stackdriver-prometheus-scrape-cert
- name: stackdriver-prometheus-etcd-scrape
secret:
defaultMode: 420
optional: true
secretName: stackdriver-prometheus-etcd-scrape
Prometheus でワークロード指標を収集するには、ターゲット ワークロードを実行する Service と Pod に次のようにアノテーションを追加する必要があります。
Cloud Monitoring と Prometheus の両方に指標を送信するには、カスタムログと指標をエクスポートするで説明されているアノテーションを使用します。
指標を Prometheus にのみ送信するには、次のアノテーションを使用します。
prometheus.io/unmanaged_scrape: "true"
prometheus.io/unmanaged_path: "ENDPOINT_PATH"
prometheus.io/unmanaged_port: "PORT_NUMBER"
Kafka でログを収集する
Distributed Cloud コネクテッドは、Distributed Cloud コネクテッド デプロイで実行されているワークロードのログを収集するための Apache Kafka ソリューションをサポートしています。
このセクションの手順を完了する前に、機能する Kafka デプロイが必要です。Kafka ブローカーは、リスナーを PLAINTEXT モードでアドバタイズする必要があります。SSL/SASL 関連の変数はサポートされていません。
Kafka ロギング用にクラスタを構成するには、クラスタで実行するアドオンを構成する JSON ファイルを作成する必要があります。--system-addons-config フラグを使用してクラスタを作成するときに、このファイルを指定します。Kafka 構成を変更する必要がある場合は、新しい Kafka 設定を使用してクラスタを削除して再作成する必要があります。
システム アドオンの構成ファイルに次のセクションを追加します。
{
"systemAddonsConfig": {
"unmanagedKafkaConfig": {
"brokers": "BROKERS",
"topics": "TOPICS"
"topic_key": "TOPIC_KEY,
}
}
}
次のように置き換えます。
BROKERS: ブローカーの IP アドレスとポートのペアのカンマ区切りリスト(ip_address:port形式)。TOPICS: Kafka トピックのカンマ区切りのリスト。TOPIC_KEY: Kafka トピックキー。複数のトピックが存在する場合、Kafka がトピックを選択できます。
Distributed Cloud 接続クラスタを作成した後に Kafka がログを収集しない場合は、次の点を確認してください。
- サーバー側: Kafka デプロイのエラーログで問題の兆候を確認します。
- クライアント側: Google サポートにお問い合わせのうえ、システム Pod のログを取得して確認します。
外部処理用にワークロードの未加工ログを収集する
Distributed Cloud Connected を構成して、未加工(未処理でタグ付けされていない)ワークロード Pod ログを /var/logs/export にエクスポートできます。これにより、ログ処理に独自のログコレクタを使用できます。
未加工のワークロード ログのエクスポートを構成するには、次の内容で LogExport カスタム リソースを作成し、クラスタに適用します。
apiVersion: gdc.addons.gke.io/v1 kind: LogExport metadata: name: my-log-export spec: namespaces: - namespace1 - namespace2 - namespace3
namespaces フィールドに、未加工の Pod ログをエクスポートするワークロード Namespace のリストを入力します。このフィールドでは、管理 Namespace の制限事項に記載されているようなシステム Namespace は使用できません。