はじめに
こちらの記事は、上記の記事を1年目新入社員が手を動かして実践してみた記録になります。
たくさんつまづいて、想像の何倍も時間がかかったので、3つのパートに分けて手順のなかで時間がかかったところを記録します。
- DBmarlinサーバー構築 👈 今回はこれ
- PostgreSQL と テストアプリの作成・デプロイ・Instanaエージェントインストール
- DBmarlin データベース接続設定
環境
DBmarlinを導入するためのサポートOSとシステム要件はそれぞれ以下です。
サポートOS:
https://docs.dbmarlin.com/docs/Getting-Started/supported-platforms
システム要件:
https://docs.dbmarlin.com/docs/Getting-Started/server-installation/hardware-requirements
DBmarlinサーバ構築
今回構築するDBmarlinサーバを一言でいうと、
「1台のサーバーアプリをサーバー(今回はEC2)にインストールして、指定ポートで常時動かすことでDBを監視する仕組み」
そのために必要なのが:
- サーバーアプリの置き場所を決める(/opt)
- 専用ユーザーを作る(dbmarlin):rootで動かすのは危険だから。他に危害加える。
- アプリ一式を展開する(tar.gz)
- 初期設定を流し込む(configure.sh)
- 常駐プロセスとして動かす
大きく分けると、1.DBmarlinパッケージのダウンロード → 2.インストール
の2ステップです。
実際にやってみましょう。
手順
1.DBmarlinパッケージのダウンロード
DBmarlinを以下のサイトからダウンロードします。ログインすると画像のページに移ります。
https://www.dbmarlin.com/download

プラットフォーム別のパッケージがリスト表示されているので、ここから選択してダウンロードします。
ダウンロード方法①
直接サーバーにダウンロードする方法。
curlは、URLからデータを取得するコマンドです。インストールコマンドを直接EC2サーバーで打つことで、DBmarlinパッケージをインストールできます。
どこでコマンド実行するの?
今回コマンドを実行する場所は、最終的にインストールする場所の/opt/dbmarlinになります。(後から移動させても良し)
/optは、追加で入れるソフトウェアを置く場所!
cd /opt
curl -O https://download.dbmarlin.com/dbmarlin-Linux-****.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 166M 100 166M 0 0 15.2M 0 0:00:10 0:00:10 --:--:-- 19.3M
ダウンロード方法②
ローカルでボタンからダウンロードして、その後EC2に移動させる方法
1.ローカルPCでダウンロード
https://www.dbmarlin.com/download
から、Downloadボタンをクリック。
2.EC2にファイルを転送
EC2サーバーにコピーするには、scp(Secure Copy)を使います。
# mac / Linux の場合
scp -i /path/to/db-marlin.pem /path/to/dbmarlin-Linux-****.tar.gz ec2-user@<EC2のパブリックIP>:/tmp/
# scp -i /path/to/db-marlin.pem /path/to/dbmarlin-Linux-****.tar.gz を、ec2-userの<EC2のパブリックIP>:/tmp/に移動。
3.EC2上で配置場所に移動
転送後に /opt/dbmarlinに移動して展開。
sudo mkdir -p /opt/dbmarlin
sudo tar xzvf /tmp/dbmarlin-Linux-****.tar.gz -C /opt/
sudo chown -R dbmarlin:dbmarlin /opt/dbmarlin
2. インストール
DBmarlinのインストール手順公式ドキュメント
https://docs.dbmarlin.com/docs/Getting-Started/server-installation/installation-on-linux
基本は上記ドキュメントに沿って実施します。
まずはnetstatで、DBmarlinが使いたいポートが使われていないこと(=netstatのレスポンスがないこと)を確認します。
$ sudo dnf install net-tools -y
$ netstat -na | grep LISTEN | grep 9080
$ netstat -na | grep LISTEN | grep 9090
$ netstat -na | grep LISTEN | grep 9070
netstatは、netの状態を見るコマンド
net-toolsが入ってなかったのでインストールしたが、
私はUbuntuにしてたのでパッケージ管理コマンド、dnfじゃなくてaptだった。
次に、dbmarlin用ユーザを作成します。
$ sudo useradd dbmarlin
dbmarlinユーザーを作る理由は?
→DBmarlin を専用ユーザーで実行して権限を分離し、セキュリティと管理を安全かつ簡単にするため。
DBmarlinのtar.gzを /optに展開します。
$ sudo tar xzvf dbmarlin-Linux-********.tar.gz -C /opt/
dbmarlinというディレクトリが展開されるので、Permissionをdbmarlinユーザに変更します。
$ sudo chown -R dbmarlin:dbmarlin /opt/dbmarlin/
インストールスクリプトを実行します。
$ sudo su - dbmarlin
# cd /opt/dbmarlin
$ ./configure.sh
./configure.shとは?
→DBmarlin を「このサーバー環境用に初期設定するためのスクリプト」
/optにあるの納得!
処理が開始されます。DBmarlinのTermを読みagreementをacceptしたら、続けてprofileの選択などを実施したらインストールが開始されます。
Local postgresql install
Starting DBmarlin configuration...
Press Enter then space bar to scroll
**DBmarlin Terms of Service for On-Premises Deployments**
This on-premises Terms of Service licence agreement (this “Agreement”)
(..省略..)
Do you accept the agreement Y/N ? Y
Continuing....
Set port for Nginx (current 9090):
Set port for Tomcat (current 9080):
Set port for PostgreSQL (current 9070):
See https://docs.dbmarlin.com/docs/Getting-Started/server-installation/hardware-requirements for Profile sizes
1) XSmall
2) Small
3) Medium
4) Large
5) XLarge
Choose the profile [1-5]: 2
Small profile selected
Recommended RAM is 4GB. You have 8.1GB
Continue Y/N ? Y
(..省略..)
Next run ./start.sh to startup the DBmarlin services
Then connect to http://<hostname>:9090/ in your browser
以上で DBmarlinのインストールは完了です。
DBmarlinのWebアプリケーションはnginxを通じて公開されており、デフォルトポートは9090です。
起動はコマンド一発です。
$ ./start.sh
dbmarlinユーザーが /opt/dbmarlin にて./start.shを実行すれば、http://<hostname>:9090 でDBmarlinにアクセスできるようになります。
ブラウザで http://<hostname>:9090 にアクセスすると、 http://<hostname>:9090/dashboard に遷移した上で以下の画面が出れば導入は成功です。

まとめ
最後に、今回 DBmarlin サーバー構築を実践してみて、特に初学者としてつまづいた・理解が浅かった点をまとめます。
-
Linux ディストリビューションによる違い
- Ubuntu では dnf ではなく apt を使う必要があった
- 公式手順をそのまま打つとコマンドが通らないことがある
-
/opt ディレクトリの役割
- /opt は「後から追加するアプリケーション置き場」
-
専用ユーザーを作る理由
- 「手順だから作る」のではなく→ 権限分離によるセキュリティ・運用性向上のため
- 何でもかんでもroot で動かすのはだめ
-
./configure.sh の正体
- このサーバー用に設定ファイルを生成する初期設定スクリプト
- ./ は、「今いるディレクトリを指定して実行している」ということ。
-
ポート確認の重要性
- netstat の結果が「何も出ない=問題ない」という判断が最初は分からなかった
- DBmarlin が複数ポートを使う理由も後から理解できた
-
「インストール完了」と「起動」は別
- configure.sh は設定まで
- 実際にサービスを動かすのは ./start.sh
