12 監視および視覚化ソフトウェアのインストール

Kubernetesクラスタに独自の監視および視覚化ソフトウェアをデプロイする場合は、この章で説明するステップを実行できます。
ElasticsearchおよびPrometheusデプロイメントの本番ベスト・プラクティスについては、このドキュメントの対象外です。詳細なインストール手順は、次を参照してください:

この章の内容は次のとおりです。

ロギングおよび可視化ソフトウェアのインストール

Elasticsearchを使用すると、システム上の様々な製品のログを集約できます。ログを分析し、Kibanaコンソールを使用して、チャートやグラフの形式でデータを視覚化できます。Elasticsearchでは、集中管理型のElasticsearchデプロイメントへの接続にAPIキーを使用するというベスト・プラクティスが推奨されています。わかりやすくするため、このドキュメントでは、ユーザー名とパスワードを使用して、そのプロセスを説明します。これらの製品の詳細は、https://www.elastic.co/で製造元のドキュメントを参照してください。

この項には次のトピックが含まれます:

Kubernetesサービス

Kubernetesサービスは、監視および視覚化のデプロイメント・プロセスの一環として作成されます。

表12-1 Kubernetesサービス

サービス名 タイプ サービス・ポート マップ済ポート

elasticsearch

ClusterIP

9600

kibana-nodeport

NodePort

31800

6501

elk-nodeport

NodePort

31920

9200

ノート:

マップ済ポートは、インストール時にランダムに割り当てられます。この表に記載されている値は例にすぎません。

この項で使用する変数

この項では、多数のファイルを作成する手順について説明します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。

変数の形式は<VARIABLE_NAME>です。次の表に、これらの各変数に設定する必要がある値を示します。

表12-2 変数のリスト

変数 サンプル値 説明

<ELKNS>

elkns

Elasticsearchネームスペースの名前。

<ELK_OPER_VER>

2.10.0

Elasticsearch Operatorのバージョン。

<ELK_VER>

8.11.0

インストールするElasticsearch/Kibanaのバージョン。

<ELK_USER>

logstash_internal

Elasticsearchにアクセスするlogstashのユーザーの名前。

<ELK_PASSWORD>

<password>

ELK_USERのパスワード。

<ELK_K8>

31920

外部からのElasticsearchへのアクセスに使用するKubernetesポート。

<ELK_KIBANA_K8>

31800

外部からのKibanaへのアクセスに使用するKubernetesポート。

<DH_USER>

username

Docker Hubのユーザー名。

<DH_PWD>

mypassword

Docker Hubのパスワード。

<PV_SERVER>

mynfsserver.example.com

NFSサーバーの名前。

ノート: この名前は、Kubernetesクラスタ内で解決可能である必要があります。

<ELK_SHARE>

/export/IAMPVS/elkpv

ELK永続ボリュームのNFSマウント・ポイント。

前提条件

最新リリースのElasticsearchでは、Elasticsearch Operatorが使用されます。Elasticsearch Operatorは、Kubernetesステートフル・セットを使用してエラスティック・クラスタをデプロイします。ステートフル・セットにより、動的な永続ボリュームが作成されます。

Elasticsearchをインストールする前に、動的ストレージを許可する環境に、デフォルトのKubernetesストレージ・クラスが定義されていることを確認してください。各ベンダーには独自のストレージ・プロバイダがありますが、ストレージを動的に割り当てられるように構成されていない場合があります。

デフォルトのストレージ・クラスを確認するには、次のコマンドを使用します:
kubectl get storageclass
NAME            PROVISIONER                          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
oci (default)   kubernetes.io/is-default-class       Delete          Immediate           false                  6d21h

ストレージを動的に作成できるストレージ・プロバイダがない場合は、NFS subdir外部プロビジョナなど、外部のNFSストレージ・プロバイダを使用できます。

ストレージ・クラスの詳細は、「Storage Classes」を参照してください。

NFS subdir外部プロビジョナの詳細は、Kubernetes NFS Subdir外部プロビジョナを参照してください。

完全を期すため、次のステップでは、NFS subdirを使用してElasticsearchおよびKibanaをインストールする方法を示します:

ELKデータ用のファイルシステムの作成

NFSクライアントをデプロイする前に、ELKデータを格納するためのNFSストレージにマウント・ポイント/エクスポートを作成する必要があります。このマウント・ポイントは、NFS subdir外部プロバイダによって使用されます。

NFS Subdir外部プロビジョナのインストール
  1. NFS subdir外部プロビジョナをインストールするには、次のコマンドを使用します:
    helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
    helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
        --set nfs.server=<PVSERVER>\
        --set nfs.path=<ELK_SHARE>
  2. 次のコマンドを発行します。
    kubectl get storageclass

    これで、nfs-clientという新しいストレージ・クラスが表示されます。

Elasticsearch (ELK)スタックおよびKibanaのインストール

各製品の章には、視覚化コンソールであるKibanaを含む集中管理型のElasticsearchスタックに、ログ・ファイルを送信する方法が記載されています。この手順は、シンプルなELKクラスタのデプロイに役立ちます。テストを目的とする場合には十分です。本番環境では、ベンダーから適切なライセンスを取得する必要があります。

本番セキュリティの設定は、「Configure Security for the Elastic Stack」を参照してください。

この項には次のトピックが含まれます:

製品固有の作業ディレクトリの設定

インストールを開始する前に、ELKコンテナ・イメージをダウンロードしてステージングしておくか、Oracle Container Registryおよびコード・リポジトリを使用している必要があります。

「エンタープライズ・デプロイメント用のソフトウェア・ディストリビューションの特定と取得」を参照してください。この項では、ダウンロードしたサンプル・デプロイメント・スクリプトをELKの一時作業ディレクトリにコピーする手順について説明します。

  1. インストール・ユーザーとして一時作業ディレクトリを作成します。インストール・ユーザーには、Kubernetesクラスタへのkubectlアクセス権が必要です。
    mkdir <WORKDIR>
    たとえば:
    mkdir /workdir/ELK
  2. ディレクトリをこの場所に変更します:
    cd /workdir/ELK

    ノート:

    このガイドでは、複数の製品で同じサンプル・ファイル・セットが使用されています。毎回ダウンロードする必要がないように、ファイルは製品固有でない作業ディレクトリにステージングされます。
Kubernetesネームスペースの作成

Kubernetesネームスペースは、Elasticsearchスタックの格納に使用されます。

次のコマンドを使用して、ELKのネームスペースを作成します:

kubectl create namespace <ELKNS>
たとえば:
kubectl create namespace elkns
Docker HubイメージのKubernetesシークレットの作成

このシークレットを使用すると、KubernetesはElasticsearchイメージを含むhub.docker.comからイメージをプルできます。

hub.docker.comにアカウントが必要です。

次のコマンドを使用して、hub.docker.comのKubernetesシークレットを作成します:

kubectl create secret docker-registry dockercred --docker-server="https://index.docker.io/v1/" --docker-username="<DH_USER>" --docker-password="<DH_PWD>" --namespace=<ELKNS>
たとえば:
kubectl create secret docker-registry dockercred --docker-server="https://index.docker.io/v1/" --docker-username="username" --docker-password="mypassword" --namespace=elkns
独自のレジストリからイメージをプルする場合、次のコマンドを使用してレジストリのシークレットを作成します:
kubectl create secret -n <ELKNS> docker-registry <REGISTRY_SECRET_NAME> --docker-server=<REGISTRY_ADDRESS> --docker-username=<REG_USER> --docker-password=<REG_PWD>
たとえば:
kubectl create secret -n elkns docker-registry regcred --docker-server=iad.ocir.io/mytenancy --docker-username=mytenancy/oracleidentitycloudservice/myemail@email.com --docker-password=<password>
Elasticsearch Operatorのインストール
Elasticsearch Operatorをインストールするには、次のステップを実行します:
  1. 次のコマンドを使用します:
    helm repo add elastic https://helm.elastic.co
    helm repo update
    helm install elastic-operator elastic/eck-operator -n <ELKNS> --set image.tag=<ELK_OPER_VER>

    ノート:

    独自のリポジトリからイメージをプルする場合、コマンドは次のようになります:
    helm install elastic-operator elastic/eck-operator -n <ELKNS> --set image.repository=container-registry.oracle.com/eck/eck-operator --set imagePullSecrets[0].name=regcred
    たとえば:
    helm install elastic-operator elastic/eck-operator -n elkns --set image.tag=2.11.0
  2. 次のコマンドを使用して、インストールを検証します:
    kubectl get all -n elkns
Elasticsearchクラスタの作成

Elasticsearch Operatorを使用してElasticsearchクラスタを作成するには、次のステップを実行します:

構成ファイルの作成
構成ファイルを作成するには、次のステップを実行します:
  1. <WORKDIR>/ELK/elk_cluster.yamlという構成ファイルを、次の内容で作成します:
    apiVersion: elasticsearch.k8s.elastic.co/v1
    kind: Elasticsearch
    metadata:
      name: elasticsearch
      namespace: <ELKNS>
    spec:
      version: <ELK_VER>
      nodeSets:
      - name: default
        count: 1
        config:
          node.store.allow_mmap: false
        volumeClaimTemplates:
        - metadata:
            name: elasticsearch-data # Do not change this name unless you set up a volume mount for the data path.
          spec:
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 5Gi
            storageClassName: nfs-client

    ノート:

    独自のコンテナ・レジストリを使用している場合は、前述の内容に次の行を追加する必要があります:
    spec:
      image: iad.ocir.io/mytenancy/idm/elasticsearch/elasticsearch:<ELK_VER>
    
        podTemplate:
          spec:
            imagePullSecrets:
            - name: regcred
  2. storageClassNameが、使用するストレージ・クラスの名前であることを確認します。たとえば、ociまたはnfs-clientです。
Elasticsearchクラスタの作成
Elasticsearchクラスタを作成するには、次のステップを実行します
  1. 次のコマンドを実行します。
    kubectl  create -f <WORKDIR>/ELK/elk_cluster.yaml
  2. 次のコマンドを使用して、ポッドの作成を監視します:
    kubectl get all -n elkns -o wide
    kubectl get elasticsearch -n elkns
Elasticsearch証明書のコピー

Logstashでは、Elasticsearch CA (認証局)証明書にアクセスして、Elasticsearchサーバーに接続する必要があります。Logstashでは、Logstashが実行される各ネームスペースにロードされた構成マップに証明書のコピーが配置されます。

本番環境では、本番証明書を使用することをお薦めします。ただし、Elasticsearchによる自己署名証明書の作成を許可している場合は、後からアクセスしやすいように、この証明書を作業ディレクトリにコピーしてください。

自己署名証明書は、次のコマンドで作業ディレクトリにコピーします:

kubectl cp <ELKNS>/elasticsearch-es-default-0:/usr/share/elasticsearch/config/http-certs/..data/ca.crt <WORKDIR>/ELK/elk.crt
たとえば:
kubectl cp elkns/elasticsearch-es-default-0:/usr/share/elasticsearch/config/http-certs/..data/ca.crt /workdir/ELK/elk.crt
Elasticsearchのアクセスの詳細

クラスタが起動したら、クラスタとの対話に次の情報が必要になります:

資格証明
クラスタが作成されると、elasticというユーザーが作成されます。次のコマンドを使用すると、ユーザーelasticのパスワードを取得できます:
kubectl get secret elasticsearch-es-elastic-user -n <ELKNS> -o go-template='{{.data.elastic | base64decode}}'
たとえば:
kubectl get secret elasticsearch-es-elastic-user -n elkns -o go-template='{{.data.elastic | base64decode}}'
URL

ログを送信するためのURLは、次のコマンドで確認できます:

https://elasticsearch-es-http.<ELKNS>.svc.cluster.local:9200/
たとえば:
https://elasticsearch-es-http.elkns.svc.cluster.local:9200/
Kibanaクラスタの作成

Kibanaクラスタを作成するには、次のステップを実行します:

構成ファイルの作成
<WORKDIR>/ELK/kibana.yamlという構成ファイルを、次の内容で作成します:
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: kibana
  namespace: <ELKNS>
spec:
  version: <ELK_VER>
  count: 1
  elasticsearchRef:
    name: elasticsearch

ノート:

独自のコンテナ・レジストリを使用している場合は、前述の内容に次の行を追加する必要があります:
spec:
  image: iad.ocir.io/mytenancy/idm/kibana/kibana:<ELK_VER>

  podTemplate:
    spec:
      imagePullSecrets:
      - name: regcred
Kibanaのデプロイ
  1. 次のコマンドを使用して、Kibanaをデプロイします:
    kubectl  create -f <WORKDIR>/ELK/kibana.yaml
  2. 次のコマンドを使用して、ポッドの作成を監視します:
    kubectl get all -n elkns -o wide
    kubectl get kibana -n elkns
Kubernetesサービスの作成

イングレス・コントローラを使用している場合は、イングレス経由でサービスを公開できます。ただし、イングレス・ログ・ファイルをElasticsearchに送信する場合は、相互に依存しないようにしてください。

ElasticsearchおよびKibanaにアクセスするには、2つのNodePortサービスを作成する必要があります。

  • 外部Elasticsearchとやり取りするためのNodePortサービス。たとえば、クラスタ外のソースからのログの送信や、ELKクラスタへのAPIコールの実行です。
  • もう1つは、Kibanaコンソールへのアクセス用です。
Kibana用のNodePortサービスの作成
ブラウザからKibanaコンソールへのアクセスを有効にするには、クラスタ外に公開する必要があります。これには、NodePortサービスを作成します:
  1. <WORKDIR>/ELK/kibana_nodeport.yamlというファイルを、次の内容で作成します:
    kind: Service
    apiVersion: v1
    metadata:
      name: kibana-nodeport
      namespace: <ELKNS>
    spec:
      type: NodePort
      selector:
        common.k8s.elastic.co/type: kibana
        kibana.k8s.elastic.co/name: kibana
      ports:
        - targetPort: 5601
          port: 5601
          nodePort: <ELK_KIBANA_K8>
          protocol: TCP
  2. 次のコマンドを使用して、NodePortサービスを作成します:
    kubectl create -f <WORKDIR>/ELK/kibana_nodeport.yaml
    たとえば:
    kubectl create -f </workdir/ELK/kibana_nodeport.yaml
Elasticsearch用のNodePortサービスの作成
クラスタ外からのElasticsearchスタックへのアクセスを有効にするには、クラスタの外部に公開する必要があります。これには、NodePortサービスを作成します。
  1. <WORKDIR>/ELK/elk_nodeport.yamlというファイルを、次の内容で作成します:
    kind: Service
    apiVersion: v1
    metadata:
      name: elk-nodeport
      namespace: <ELKNS>
    spec:
      type: NodePort
      selector:
        common.k8s.elastic.co/type: elasticsearch
        elasticsearch.k8s.elastic.co/cluster-name: elasticsearch
      ports:
        - targetPort: 9200
          port: 9200
          nodePort: <ELK_K8>
          protocol: TCP 
  2. 次のコマンドを使用して、NodePortサービスを作成します:
    kubectl create -f <WORKDIR>/ELK/elk_nodeport.yaml
    たとえば:
    kubectl create -f </workdir/ELK/elk_nodeport.yaml
Logstashへのアクセス権の付与

本番デプロイメントでは、Elasticsearchセキュリティが有効になっています。セキュリティには、LogstashとElasticsearchの間のSSL通信と、アクセスするためのAPIキーまたはユーザー名とパスワードの組合せという2つの部分があります。

Logstash用のロールおよびユーザーの作成
本番デプロイメントでは、Elasticsearchセキュリティが有効になっています。セキュリティには、LogstashとElasticsearchの間のSSL通信と、アクセスするためのユーザー/パスワードの組合せという2つの部分があります。ユーザー名およびロールは、コマンドラインAPIまたはKibanaコンソールを使用して作成できます。次に記載するのは、コマンドラインの手順です。

ノート:

Elasticsearchでは、ユーザー名とパスワードではなく、APIキーの使用をお薦めします。詳細は、https://www.elastic.coを参照してください。

このために、専用のロールとユーザーを作成することをお薦めします。

次のコマンドでは、Elasticsearchユーザーelasticをエンコードする必要があります。次のコマンドで、ユーザーelasticをエンコードします:
echo -n elastic:<ELASTIC PASSWORD> | base64

elasticユーザーのパスワードの取得は、「資格証明」を参照してください。

  1. 権限が制限されたロールを作成するには、次のコマンドを使用します:
    curl -k  -X  POST "https://k8worker1.example.com:31920/_security/role/logstash_writer" -H "Authorization: Basic <ENCODED USER>" -H 'Content-Type: application/json' -d'
    {
      "cluster": ["manage_index_templates", "monitor", "manage_ilm"],
      "indices": [
        {
          "names": ["oiglogs*","oamlogs*","oudlogs*","oudsmlogs*","oirilogs*","oaalogs*],
          "privileges": ["write","create","create_index","manage","manage_ilm"]
        }
      ]
    }'
  2. 上のロールを持つユーザーを作成するには、次のコマンドを実行します:
    curl -k  -X  POST "https://k8worker1.example.com:31920/_security/user/<ELK_USER>" -H "Authorization: Basic <ENCODED USER>" -H 'Content-Type: application/json' -d'
    {
      "password" : "<ELK_PASSWORD>",
      "roles" : [ "logstash_writer"],
      "full_name" : "Internal Logstash User"
    }'
Logstash用のAPIキーの作成

Elasticsearchでは、APIキーを使用してElasticsearchにアクセスすることをお薦めします。コマンド・ライン・オプションを使用してAPIキーを作成するには:

  1. 次のコマンドを実行します。
    curl -XPOST -u 'elastic:<ELK_PWD>' -k "https://K8WORKER1.example.com:<ELK_K8>/_security/api_key" -H "kbn-xsrf: reporting" -H "Content-Type: application/json" -d'
    {
      "name": "logstash_host001",
      "role_descriptors": {
        "logstash_writer": {
          "cluster": ["monitor", "manage_ilm", "manage_index_templates","read_ilm"],
          "index": [
            {
              "names": ["logs*","oiglogs*","oamlogs*","oudlogs*","oudsmlogs*"],
              "privileges": ["write","create","create_index","manage","manage_ilm"]
            }
          ]
        }
      }
    }'
    たとえば:
    curl -XPOST -u 'elastic:3k2KuO7eNxI2ZeB350H71VW2' -k "https://k8worker1.example.com:31920/_security/api_key" -H "kbn-xsrf: reporting" -H "Content-Type: application/json" -d'
    {
      "name": "logstash_host001",
      "role_descriptors": {
        "logstash_writer": {
          "cluster": ["monitor", "manage_ilm", "manage_index_templates","read_ilm"],
          "index": [
            {
              "names": ["logs*","oiglogs*","oamlogs*","oudlogs*","oudsmlogs*"],
              "privileges": ["write","create","create_index","manage","manage_ilm"]
            }
          ]
        }
      }
    }'
    出力は次のようになります:
    {"id":"PyGUf4MBwDOoSXCOlS5W","name":"logstash_host001","api_key":"Cs1YDZCvTG6SviN0ejL4-Q","encoded":"UHlHVWY0TUJ3RE9vU1hDT2xTNVc6Q3MxWURaQ3ZURzZTdmlOMGVqTDQtUQ=="}
  2. APIキーをメモします。この値は、Logstashを構成するときに使用します。
Kibanaコンソールへのアクセス
Kibanaコンソールにアクセスするには、次のURLを使用します:
http://k8workers.example.com:30094/app/kibana
デフォルト・ユーザーはelasticです。パスワードを取得するには、次のコマンドを使用します:
kubectl get secret elasticsearch-es-elastic-user -n $ELKNS -o go-template='{{.data.elastic | base64decode}}'
Kibana索引の作成
Elasticsearchにログ・ファイルを追加しても、索引パターンを作成するまでは表示されません。このステップを実行できるのは、Elasticsearchが一部のログを受信してからです。
  1. Kibanaコンソールにログインします。
  2. 「Stack Management」をクリックします。
  3. 「Kibana」セクションの「Data Views」をクリックします。
  4. 「Create Data View」をクリックします。
  5. 次の情報を入力します。
    • Name: Logs*
    • Timestamp: @timestamp
  6. 「Create Data View」をクリックします。
  7. 「Discover」をクリックして、ログ・ファイルのエントリを表示します。

監視ソフトウェアのインストール

PrometheusとGrafanaは、環境の監視に役立ちます。この章で説明する手順は、kube-prometheusインストーラを使用したシンプルなデプロイメント用です。「kube-prometheus」を参照してください。Prometheus製品の詳細は、「Prometheus」を参照してください。

インストール・プロセスを開始する前に、ご使用のKubernetesリリースでサポートされているバージョンのPrometheusであることを確認してください。「Prometheus/Kubernetes compatibility matrix」を参照してください。

この項には次のトピックが含まれます:

Kubernetesサービス

インストールの一環として作成されるKubernetesサービスは次のとおりです:

サービス名 タイプ サービス・ポート マップ済ポート

prometheus-nodeport

NodePort

32101

9090

grafana-nodeport

NodePort

32100

3000

alertmanager-nodeport

NodePort

32102

9093

この項で使用する変数

この項では、多数のファイルを作成する手順について説明します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。

変数の形式は<VARIABLE_NAME>です。次の表に、これらの各変数に設定する必要がある値を示します。

表12-3 変数のリスト

変数 サンプル値 説明

<PROMNS>

monitoring

デプロイメントに使用するKubernetesネームスペースの名前。

<PROM_GRAF_K8>

8.3.0

外部からGrafanaへのアクセスに使用するKubernetesポート。

<PROM _K8>

logstash_internal

外部からPrometheusへのアクセスに使用するKubernetesポート。

<PROM_ALERT_K8>

<password>

外部からアラート・マネージャへのアクセスに使用するKubernetesポート。

PrometheusおよびGrafanaのインストール

監視データをPrometheusやGrafanaに送信する方法は、各製品の章で説明します。この項では、PrometheusおよびGrafanaソフトウェアのインストール方法について説明します。

インストールには次のステップがあります。

製品固有の作業ディレクトリの設定

この項では、ダウンロードしたサンプルのデプロイメント・スクリプトをPrometheusの一時作業ディレクトリにコピーする手順について説明します。

  1. インストール・ユーザーとして一時作業ディレクトリを作成します。インストール・ユーザーには、Kubernetesクラスタへのkubectlアクセス権が必要です。
    mkdir <WORKDIR>
    たとえば:
    mkdir /workdir/PROM
  2. ディレクトリをこの場所に変更します:
    cd /workdir/PROM

ノート:

このガイドでは、複数の製品で同じサンプル・ファイル・セットが使用されています。毎回ダウンロードする必要がないように、ファイルは製品固有でない作業ディレクトリにステージングされます。
Prometheusインストーラのダウンロード
Prometheusインストーラは、GitHubでhelmリポジトリとして入手できます。インストーラをダウンロードするには、次のようにします:
  1. ディレクトリを作業ディレクトリに変更します:
    cd /workdir/PROM
  2. 次のコマンドを実行します。
    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 
    helm repo update
Kubernetesネームスペースの作成
PrometheusおよびGrafanaのすべてのオブジェクトを含むネームスペースを作成する必要があります。

ネームスペースを作成するには、次のコマンドを実行します:

kubectl create namespace monitoring

出力が次のように表示されます。

namespace/monitoring created
Helmオーバーライド・ファイルの作成
<WORKDIR>/override_prom.yamlというhelmオーバーライド・ファイルを作成して、デプロイメントの作成方法を決定します。このファイルの内容は次のとおりです。
alertmanager:
  service:
    nodePort: <PROM_ALERT_K8>
    type: NodePort

prometheus:
  image:
    tag: <IMAGE_VER>
  service:
    nodePort: <PROM_K8>
    type: NodePort

grafana:
  image:
    tag: <IMAGE_VER>
  service:
    nodePort: <PROM_GRAF_K8>
    type: NodePort

  adminPassword: <PROM_ADMIN_PWD>

この例ではNodePortサービスを使用していますが、これは、Prometheusではイングレスの監視が可能で、イングレスに関連する問題でPrometheusへのアクセスが妨げられないようにするためです。したがって、NodePortでスタンドアロンの状態にします。

ノート:

docker.io以外のリポジトリからイメージをプルする場合は、ファイルの先頭に次のエントリを追加します:
global:
  imageRegistry: <REPOSITORY>
たとえば:
global:
  ImageRegistry: iad.ocir.io/mytenancy/idm
PrometheusおよびGrafanaのデプロイ
先ほど作成したオーバーライド・ファイルを使用して、Prometheusアプリケーションをデプロイします。
  1. ディレクトリを作業ディレクトリに変更します。
    cd <WORKDIR>
  2. 次のコマンドを実行します。
    helm install -n <PROMNS> kube-prometheus prometheus-community/kube-prometheus-stack -f <WORKDIR>/override_prom.yaml

    このコマンドでは、PrometheusおよびGrafanaアプリケーションに関連付けられたコンテナを作成します。

    ノート:

    独自のリポジトリを使用している場合は、オーバーライド・ファイルの変更に加えて、状況に応じてhelmコマンドに次を追加する必要があります:
    helm install -n <PROMNS> --set grafana.image.repository=<REPOSITORY>/grafana/grafana kube-prometheus prometheus-community/kube-prometheus-stack -f <WORKDIR>/override_prom.yaml
インストールの検証
アプリケーションがデプロイされ、インストールが完了していることを確認するには、次のコマンドを実行します:
kubectl get all -n monitoring
次のような出力が表示されます:
NAME                                                         READY   STATUS    RESTARTS   AGE
pod/alertmanager-kube-prometheus-kube-prome-alertmanager-0   2/2     Running   0          15h
pod/kube-prometheus-grafana-95944596-kcd9k                   3/3     Running   0          15h
pod/kube-prometheus-kube-prome-operator-84c5bc5876-klvrs     1/1     Running   0          15h
pod/kube-prometheus-kube-state-metrics-5f9b85478f-qtwnz      1/1     Running   0          15h
pod/kube-prometheus-prometheus-node-exporter-9h86g           1/1     Running   0          15h
pod/kube-prometheus-prometheus-node-exporter-gbkgb           1/1     Running   0          15h
pod/kube-prometheus-prometheus-node-exporter-l99sb           1/1     Running   0          15h
pod/kube-prometheus-prometheus-node-exporter-r7d77           1/1     Running   0          15h
pod/kube-prometheus-prometheus-node-exporter-rnq42           1/1     Running   0          15h
pod/prometheus-kube-prometheus-kube-prome-prometheus-0       2/2     Running   0          15h

NAME                                               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
service/alertmanager-operated                      ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP   15h
service/kube-prometheus-grafana                    NodePort    10.97.137.130    <none>        80:30900/TCP                 15h
service/kube-prometheus-kube-prome-alertmanager    NodePort    10.97.153.100    <none>        9093:30903/TCP               15h
service/kube-prometheus-kube-prome-operator        ClusterIP   10.108.174.205   <none>        443/TCP                      15h
service/kube-prometheus-kube-prome-prometheus      NodePort    10.110.156.35    <none>        9090:30901/TCP               15h
service/kube-prometheus-kube-state-metrics         ClusterIP   10.96.233.108    <none>        8080/TCP                     15h
service/kube-prometheus-prometheus-node-exporter   ClusterIP   10.107.188.115   <none>        9100/TCP                     15h
service/prometheus-operated                        ClusterIP   None             <none>        9090/TCP                     15h

NAME                                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/kube-prometheus-prometheus-node-exporter   5         5         5       5            5           <none>          15h

NAME                                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kube-prometheus-grafana               1/1     1            1           15h
deployment.apps/kube-prometheus-kube-prome-operator   1/1     1            1           15h
deployment.apps/kube-prometheus-kube-state-metrics    1/1     1            1           15h

NAME                                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/kube-prometheus-grafana-95944596                 1         1         1       15h
replicaset.apps/kube-prometheus-kube-prome-operator-84c5bc5876   1         1         1       15h
replicaset.apps/kube-prometheus-kube-state-metrics-5f9b85478f    1         1         1       15h

NAME                                                                    READY   AGE
statefulset.apps/alertmanager-kube-prometheus-kube-prome-alertmanager   1/1     15h
statefulset.apps/prometheus-kube-prometheus-kube-prome-prometheus       1/1     15h

Grafanaダッシュボードについて

Grafanaダッシュボードは、ターゲットの情報を視覚化するために使用されます。製品ごとに異なるタイプのダッシュボードがあります。ダッシュボードをインストールして、Kubernetes環境を監視してください。

Oracle Identity Managementデプロイメントに関連するダッシュボードは、次のとおりです:

表12-4 Oracle Identity Managementデプロイメントに関連するダッシュボード

ダッシュボード 場所 説明

Kubernetes

https://grafana.com/grafana/dashboards/10856

Kubernetesクラスタの監視に使用します。

Nginx

https://grafana.com/grafana/dashboards/9614-nginx-ingress-controller/

イングレス・コントローラの監視に使用します。

WebLogic

<WORKDIR>/samples/monitoring-service/config/weblogic-server-dashboard-import.json

GitHubからのOracleダウンロードに含まれています。

WebLogicドメインの監視に使用します。

Apache

https://grafana.com/grafana/dashboards/3894-apache/

複数のApacheダッシュボードを使用できます。これは例です。

Oracle Database

https://grafana.com/grafana/dashboards/3333-oracledb/

サンプルのデータベース・ダッシュボード。

Grafanaダッシュボードのインストール
ダッシュボードをインストールするには:
  1. GrafanaのWebサイトから、KubernetesダッシュボードのJSONファイルをダウンロードします。例: https://grafana.com/grafana/dashboards/10856
  2. http://<K8_WORKER1>:30900というURLでGrafanaダッシュボードにアクセスし、admin/<PROM_ADMIN_PWD>でログインします。要求された場合はパスワードを変更します。
  3. 画面上部の検索ボックスをクリックし、「Import New Dashboard」を選択します。
  4. ステップ1でダウンロードしたJSONファイルを「Upload JSON File」ボックスにドラッグするか、ボックスをクリックしてファイルを参照します。「Import」をクリックします。
  5. 要求された場合は、Prometheusデータ・ソースを選択します。例: Prometheus
  6. 「Import」をクリックします。ダッシュボードが「Dashboards」パネルに表示されます。