Oracle Management Cloud Integrationの追加

Oracleコンテナ・レジストリまたは他のコンテナ・レジストリに構成されているイメージをアップロードし、デプロイメント・マニフェストを作成してKubernetesクラスタにアプリケーションをデプロイできます。分散アプリケーションの準備ができたら、分散アプリケーションを監視し、作成された新しいインスタンスと停止しているインスタンスをシームレスに追跡できます。

Oracle Application Performance Monitoringエージェントのインストールを簡単に説明できるようにするには、Oracle Management Cloudからインストーラをダウンロードしてファイル内に登録キーを保存します。

Oracle Application Performance Monitoringエージェント・バイナリおよび登録キーをダウンロードします。

  • エージェント・バイナリのダウンロード: Oracle Management Cloudコンソールから、「管理」→「エージェント」→「エージェントのダウンロード」に移動します。
  • 登録キーのダウンロード: Oracle Management Cloudコンソールから、「管理」>「エージェント」>「登録キーの管理」に移動します。

Oracle Management Cloudインストーラのバイナリおよび登録キーをgs-accessing-data-rest/complete/src/distディレクトリに保存します(distディレクトリを作成する必要があります)。

アプリケーションはOracle Management Cloudに登録する必要があります。Oracle Management Cloud統合を追加するには、バイナリを入手し、Dockerイメージの作成時にエージェント・インストールを実行します。そのためには、gradle-docker-pluginプラグインを利用して、生成するDockerfileにさらに多くの命令を追加します。

次の「build.gradle」ファイルを追加します。

dockerCreateDockerfile {
    instruction {'RUN unzip /omc-sample-app/*APM*.zip -d /omc-sample-app/omc'}
    instruction {'COPY /omc-sample-app/registrationKey.txt /omc-sample-app/omc'}
    instruction {'WORKDIR /omc-sample-app/omc'}
    instruction {'RUN /bin/bash ProvisionApmJavaAsAgent.sh -d . -h do-not-use -no-wallet -no-prompt -regkey-file registrationKey.txt'}
    instruction {'ENV APM_PROP_FILE=/omc-sample-app/omc/apmagent/config/AgentStartup.properties'}
    instruction {'RUN echo "oracle.apmaas.agent.appServer.classifications=OMC_SAMPLE" >> ${APM_PROP_FILE}'}
    environmentVariable('JAVA_OPTS', '${JAVA_OPTIONS} -javaagent:/omc-sample-app/omc/apmagent/lib/system/ApmAgentInstrumentation.jar')
}

前述のコード行によって、最初にエージェントJARファイルが抽出され、登録キーがファイルとしてコピーされます。その後、そのコードでインストーラ(ProvisionApmJavaAsAgent.sh)が実行されます。プロセスでエージェントがインストールされ、このコンテナのすべてのインスタンスをグループ化する構成が、OMC_SAMPLEという分類に追加されます。最後に、javaagentパラメータをJAVA_OPTS環境変数に追加します。この環境変数により、JVMの起動時に使用されるいくつかのオプションを外部化できます。ここでは、エージェントの追加に使用されます。

これで、このイメージを使用して起動するすべてのコンテナに、自動的にエージェントが統合されました。コンテナが起動されるとすぐに、Oracle Management Cloudへのレポート・メトリックが開始されます。さらに、追加した分類を使用して、すべてのインスタンスがOracle Management Cloudによってグループ化されます。これにより、Oracle Container Engine for Kubernetesデプロイメントを個別のポッドやコンテナとは対照的にグループとして自動的に監視したり、カスタム問合せまたはラベルをグループ・ノードに設定したりできます。

すべてのエントリを含むサンプルbuild.gradleを次に示します。

buildscript {
    repositories {
        mavenCentral()
        maven {
                url 'https://plugins.gradle.org/m2/'
            }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
        classpath 'com.bmuschko:gradle-docker-plugin:4.3.0'
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'application'
apply plugin: 'com.bmuschko.docker-java-application'

mainClassName = 'hello.Application'


jar {
    enabled = true
    baseName = 'gs-accessing-data-rest'
    version = '0.1.0'
}

bootJar {
    baseName = 'gs-accessing-data-rest'
    version = '0.1.0'
}

repositories {
    mavenCentral()
    jcenter()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

docker {
        javaApplication {
            baseImage = 'openjdk:8'
            maintainer = 'Your Name "your.email@company.com"'
            ports = [8080]
            tag = 'region-code.ocir.io/my-tenant/my-repo/omc-sample-app:latest'
        }
}

dockerCreateDockerfile {
        instruction 'RUN unzip /omc-sample-app/*APM*.zip -d /omc-sample-app/omc'
        instruction 'COPY /omc-sample-app/registrationKey.txt /omc-sample-app/omc'
        instruction 'WORKDIR /omc-sample-app/omc'
        instruction 'RUN /bin/bash ProvisionApmJavaAsAgent.sh -d . -h do-not-use -no-wallet -no-prompt -regkey-file registrationKey.txt'
        instruction 'ENV APM_PROP_FILE=/omc-sample-app/omc/apmagent/config/AgentStartup.properties'
        instruction 'RUN echo "oracle.apmaas.agent.appServer.classifications=OMC_SAMPLE" >> ${APM_PROP_FILE}'
        environmentVariable 'JAVA_OPTS', '${JAVA_OPTIONS} -javaagent:/omc-sample-app/omc/apmagent/lib/system/ApmAgentInstrumentation.jar' 
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-rest")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("com.h2database:h2")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}