New Relicで外形監視をする際に監視対象がプライベートネットワーク内にある場合、Synthetics Job Managerを使うことでプライベートネットワーク内でも簡単に外形監視を実施できます。最近のアップデートで、podman上でSynthetics Job Managerを動作できるようになったので試してみたいと思います。
ちなみに、Synthetics Job Managerはpodmanの他にDockerやKubernetesでも動作させることが可能です。
動作環境の要件確認
まずは下記のページでSynthetics Job Managerを動作させるpodmanの要件を確認してください。
Podmanの事前設定
PodmanでSynthetics Job Mangerを動かす際に事前にサンドボックス技術使うようにしましょう。
詳細は下記の手順を参考にしてください。
1. Podmanのインストール
インストールされていない場合は下記を参考に5.0.0-ce以上をインストールしてください。
2. Rootless実行の設定
Podman設定ディレクトリの作成:
mkdir -p ~/.config/containers
touch ~/.config/containers/containers.conf
containers.confファイルの編集:
vi ~/.config/containers/containers.conf
以下の内容を追加:
[engine]
runtime = "crun"
cgroup_manager = "systemd"
3. cgroups v2の有効化(RHELのみ)
GRUBの編集:
sudo sed -i 's/GRUB_CMDLINE_LINUX="/&systemd.unified_cgroup_hierarchy=1 /' /etc/default/grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
4. システム全体のcgroups委譲の設定
sudo mkdir -p /etc/systemd/system/user@.service.d/
echo -e "[Service]\nDelegate=yes" | sudo tee /etc/systemd/system/user@.service.d/delegate.conf > /dev/null
5. ユーザーレベルのsystemdサービスの設定
mkdir -p ~/.config/systemd/user/podman.service.d
echo -e "[Service]\nDelegate=yes" > ~/.config/systemd/user/podman.service.d/override.conf
6. Podmanソケットの有効化と起動
systemctl --user enable podman.socket
systemctl --user start podman.socket
systemctl --user status podman.socket
7. Podman APIサービスの作成と設定
サービスファイルの作成:
mkdir -p ~/.config/systemd/user
touch ~/.config/systemd/user/podman-api.service
vi ~/.config/systemd/user/podman-api.service
以下の内容を追加:
[Unit]
Description=Podman API Service
After=default.target
[Service]
Type=simple
ExecStart=/usr/bin/podman system service -t 0 tcp:0.0.0.0:8000
Restart=on-failure
[Install]
WantedBy=default.target
8. Podman APIサービスの有効化と起動
systemctl --user daemon-reload
systemctl --user enable podman-api.service
systemctl --user start podman-api.service
systemctl --user status podman-api.service
これらの手順でNew Relic Synthetics Job ManagerをPodmanで実行するための環境が整います。
Podman上でSynthetics Job Managerを起動
それでは、Podman上でSynthetics Job Managerを起動しましょう!
詳細は下記を参照ください。
1. プライベートロケーションのキーを取得
New Relicで one.newrelic.com > Synthetic monitoring > Private locations を開き、[Create private location]をクリックします。
プライベートロケーションの名称を入れて、[Generate key]をクリックして、
[View Private Location]をクリック。
さらに[Edit private location]をクリックすることで、Private location Keyを確認することができます。
2. Job Managerを起動
Podを起動:
それぞれ適切な値を入れてください。
- YOUR_POD_NAMEにはPodの名前を設定
- IP_ADDRESSはpodmanが動いているホストのIPアドレス
podman pod create --network slirp4netns --name YOUR_POD_NAME --add-host=podman.service:IP_ADDRESS
Job Mangerを起動:
それぞれ適切な値を入れてください。
- YOUR_PRIVATE_LOCATION_KEYには先ほど取得したプライベートロケーションのキー
- YOUR_CONTAINER_NAMEにはコンテナの名前を設定
- YOUR_POD_NAMEは先程つけたPodの名前(2箇所あるので注意してください)
podman run \
--name YOUR_CONTAINER_NAME \
--pod YOUR_POD_NAME \
-e "PRIVATE_LOCATION_KEY=YOUR_PRIVATE_LOCATION_KEY" \
-e "CONTAINER_ENGINE=PODMAN" \
-e "PODMAN_API_SERVICE_PORT=YOUR_PODMAN_API_SERVICE_PORT" \
-e "PODMAN_POD_NAME=YOUR_POD_NAME" \
-d \
--restart unless-stopped \
newrelic/synthetics-job-manager:latest
ログで起動を確認:
podman logs --follow YOUR_CONTAINER_NAME
Syntheticsの設定でプライベートロケーションを選択
それでは実際にpodmanで動いているJob Managerを使って外形監視をしてみます。
New Relicで one.newrelic.com > Synthetic monitoring > Monitors を開き、[Create monitor]をクリックします。
今回はPingを選択します。
このPing監視の名称と対象のURLをしていします。
Select locationのPrivate locationにpodmanで動かしているJob Managerが表示されるのでコチラを選択します。
最後に[save monitor]をクリックして設定完了です。
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!