New Relic Now Start training on Intelligent Observability February 25th.
Save your seat.

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 で見たい方は、是非本記事を参考に試してみてください。