新增 Oracle Management Cloud 整合

您可以將設定的影像上傳到「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 Plug-in,在您產生的 Docker 檔案中新增幾個指示。

將下列項目新增至您的 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 建置自動作為群組來監督,而不是個別的 pods 或容器,或是設定自訂查詢或標籤來群組節點。

以下是一個包含所有項目的 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")
}