Oracle Cloud Infrastructure(以降 OCI)は、Oracle 社が提供しているパブリッククラウドです。他のパブリッククラウドと同様に、OCI にもさまざまなサービスがあります。本記事では、そのサービスの一つであるDatabase Cloud Service(以降 DBCS)に New Relic Infrastructure Agent を導入する流れをご紹介します。
DBCS は、仮想マシンの上に Oracle Database がインストールされたサービスです。ユーザが DBCS を利用する場合は、OS や Oracle Database の管理もユーザ自身で行うことになります。

New Relic でこの DBCS をモニタリングしたい場合は、OS や Oracle Databsae から情報を取得してNew Relic に入れる流れになります。そのためには、New Relic Infrastructure Agent をインストールしていただく必要がありますが、環境によってはインストール時にエラーが発生することがあります。特に作成したままの初期状態の DBCS だと、yum リポジトリが利用できないために Infrastructure Agent のインストールがドキュメントの通りに実施しても失敗します。今回は、初期状態の DBCS に対する Infrastructure Agent のインストールの流れをご紹介します。

検証した環境

以下の DBCS 環境を作成して検証しました。

DBCS

DBCS の OS のバージョンは以下の通りです。

[opc@nrdbcs ~]$ cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="7.9"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Oracle Linux Server 7.9"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:9:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.9
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.9

インストールエラーが発生する場合の手順と原因

まずは、ドキュメントに記載の手順で Infrastructure Agent をインストールしてみましょう。

[opc@nrdbcs ~]$ echo "license_key: XXXXXXXXXXXXXXXXXXXXNRAL" | sudo tee -a /etc/newrelic-infra.yml
[opc@nrdbcs ~]$ sudo curl -o /etc/yum.repos.d/newrelic-infra.repo https://download.newrelic.com/infrastructure_agent/linux/yum/el/7/x86_64/newrelic-infra.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   236  100   236    0     0   1027      0 --:--:-- --:--:-- --:--:--  1210
[opc@nrdbcs ~]$ sudo yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'
Importing GPG key 0x8ECCE87C:
 Userid     : "infrastructure-eng <infrastructure-eng@newrelic.com>"
 Fingerprint: a758 b3fb cd43 be8d 123a 3476 bb29 ee03 8ecc e87c
 From       : https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg
[opc@nrdbcs ~]$ sudo yum install newrelic-infra -y
読み込んだプラグイン:versionlock
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ newrelic-infra.x86_64 0:1.24.2-1.el7 を インストール
--> 依存性の処理をしています: td-agent-bit のパッケージ: newrelic-infra-1.24.2-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ td-agent-bit.x86_64 0:1.9.1-1 を インストール
--> 依存性の処理をしています: libpq.so.5()(64bit) のパッケージ: td-agent-bit-1.9.1-1.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: td-agent-bit-1.9.1-1.x86_64 (newrelic-infra)
             要求: libpq.so.5()(64bit)
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

libpq.so.5 に依存しているようですが、ダウンロードできなかったようです。

原因としては libpq.so.5 がダウンロードできないためですが、根本原因は DBCS を作成すると初期状態では OS を更新できない(yum リポジトリを利用できない)ようになっているためです。ですので、前提条件として OS を更新できる状態にする必要があります。

DBCS に Infrastructure Agent を導入する流れ

DBCS の OS を更新できるようにします。環境によって作業の流れが異なりますので、DBCS の OS 更新の前提条件や作業の詳細説明について OCI のドキュメント DBシステムの更新 を事前に確認してください。
それでは、DBCS の OS が更新できるようにしていきましょう。

[opc@nrdbcs ~]$ sudo su -
[root@nrdbcs ~]# curl -s http://169.254.169.254/opc/v1/instance/ |grep region
  "region" : "ap-tokyo-1",
  "regionInfo" : {
    "regionKey" : "NRT",
    "regionIdentifier" : "ap-tokyo-1"
[root@nrdbcs ~]# wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol7repo -O /tmp/oci_dbaas_ol7repo
--2022-05-02 02:25:50--  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol7repo
Resolving swiftobjectstorage.ap-tokyo-1.oraclecloud.com (swiftobjectstorage.ap-tokyo-1.oraclecloud.com)... 134.70.80.3
Connecting to swiftobjectstorage.ap-tokyo-1.oraclecloud.com (swiftobjectstorage.ap-tokyo-1.oraclecloud.com)|134.70.80.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 985 [application/octet-stream]
Saving to: '/tmp/oci_dbaas_ol7repo'

100%[======================================>] 985         --.-K/s   in 0s

2022-05-02 02:25:50 (86.5 MB/s) - '/tmp/oci_dbaas_ol7repo' saved [985/985]

[root@nrdbcs ~]# wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock_ol7.list -O /tmp/versionlock.list
--2022-05-02 02:26:14--  https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock_ol7.list
Resolving swiftobjectstorage.ap-tokyo-1.oraclecloud.com (swiftobjectstorage.ap-tokyo-1.oraclecloud.com)... 134.70.80.3
Connecting to swiftobjectstorage.ap-tokyo-1.oraclecloud.com (swiftobjectstorage.ap-tokyo-1.oraclecloud.com)|134.70.80.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14911 (15K) [application/octet-stream]
Saving to: '/tmp/versionlock.list'

100%[======================================>] 14,911      --.-K/s   in 0s

2022-05-02 02:26:14 (73.9 MB/s) - '/tmp/versionlock.list' saved [14911/14911]

[root@nrdbcs ~]# cp /tmp/oci_dbaas_ol7repo /etc/yum.repos.d/ol7.repo
[root@nrdbcs ~]# cp /etc/yum/pluginconf.d/versionlock.list /etc/yum/pluginconf.d/versionlock.list-`date +%Y%m%d`
[root@nrdbcs ~]# cp /tmp/versionlock.list /etc/yum/pluginconf.d/versionlock.list
cp: overwrite '/etc/yum/pluginconf.d/versionlock.list'? y

これで OS の更新ができるようになりました。問題の libpq.so.5 は postgresql-libs から入手しますので、以下のようにリポジトリからダウンロードできることを確認しておきましょう。

[root@nrdbcs ~]# yum list available |grep postgresql-libs
postgresql-libs.i686                       9.2.24-7.el7_9             ol7_latest
postgresql-libs.x86_64                     9.2.24-7.el7_9             ol7_latest

それでは Infrastructure Agent をインストールしてみましょう。

[opc@nrdbcs ~]$ echo "license_key: XXXXXXXXXXXXXXXXXXXXNRAL" | sudo tee -a /etc/newrelic-infra.yml
[opc@nrdbcs ~]$ sudo curl -o /etc/yum.repos.d/newrelic-infra.repo https://download.newrelic.com/infrastructure_agent/linux/yum/el/7/x86_64/newrelic-infra.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   236  100   236    0     0    589      0 --:--:-- --:--:-- --:--:--   646
[opc@nrdbcs ~]$ sudo yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'
[opc@nrdbcs ~]$ sudo yum install newrelic-infra -y
読み込んだプラグイン:versionlock
Excluding 44 updates due to versionlock (use "yum versionlock status" to show them)
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ newrelic-infra.x86_64 0:1.24.2-1.el7 を インストール
--> 依存性の処理をしています: td-agent-bit のパッケージ: newrelic-infra-1.24.2-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ td-agent-bit.x86_64 0:1.9.1-1 を インストール
--> 依存性の処理をしています: libpq.so.5()(64bit) のパッケージ: td-agent-bit-1.9.1-1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ postgresql-libs.x86_64 0:9.2.24-7.el7_9 を インストール
--> 依存性解決を終了しました。

〜途中省略〜

インストール:
  newrelic-infra.x86_64 0:1.24.2-1.el7

依存性関連をインストールしました:
  postgresql-libs.x86_64 0:9.2.24-7.el7_9     td-agent-bit.x86_64 0:1.9.1-1

完了しました!

正常にインストールできました。New Relic の画面でも DBCS のホストの情報が見えているかどうか確認しましょう。

newrelic-dbcs1

 

newrelic-dbcs2

問題なく DBCS のホストの情報が見えていますね。これで DBCS への Infrastructure Agent の導入は完了です。

最後に

OCI の DBCS に対して Infrastructure Agent を導入する流れをご紹介しました。DBCS から OS 更新ができるように事前準備は必要ですが、DBCS も New Relic で可視化できることがお分かりいただけたかと思います。DBCS のリソースも New Relic で見たい方は、是非本記事を参考に試してみてください。