Instanaのバックエンドサーバのインストール (Ubuntu 20.x版) 

#はじめに

IBM Cloudのベアメタルサーバ(VMWare)上のUbuntuにInstanaのバックエンドサーバを導入した時のメモになります。　実際に構築する際にどんな感じかイメージするのにご活用ください。

# IBM Observability by Instanaとは
Instanaは、APM(アプリケーション・パフォーマンス・モニタリング）分野の製品です。監視対象にAgentを入れて、Agentを取得したデータをバックエンドのサーバに転送し、観測・分析を行う仕組みになってます。<img src="https://www.instana.com/docs/static/eef3dcddbf5895dfe05d87abddffbcc9/f041d/architecture_overview.png">
[InstanaのDoc アーキテクチャーの概要]("https://www.instana.com/docs/ja-JA/self_hosted_instana/#%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%83%BC") より

Instanaでは、バックエンドサーバに SaaSとオンプレミスの２つの環境を提供しています。この投稿では、オンプレミス版のInstanaサーバのインストールした時の手順メモになります。

なお、Instanaのインストール手順は、下記URLのInstanaのドキュメントで提供されています。
https://www.instana.com/docs/ja-JA/self_hosted_instana/installation/

#前提条件

* Instanaの公式ドキュメントは下記になります。

コンテナー・ベースのインストール
https://www.instana.com/docs/ja-JA/self_hosted_instana/installation/

上記ドキュメントの最小要件に
>Instana のインストール先のマシンには、16 基の CPU と 64 GB の使用可能メモリーが必要です

と書かれていましたが、今回は、検証目的なので、以下のスペックとライセンスなど用意しました。オーバーコミットでも検証目的なら。監視対象も少ないので動きました。

- Ubuntu20.xシステム
- 12コアのCPU
- 48GBのメモリ
- Instanaエージェントキー : Instanaライセンスから取得
- Instanaセールスキー : Instanaライセンスから取得
- （FQDN）: なくても導入はできます。

解放が必要なポート番号などネットワーク要件は、 [ネットワーク・セキュリティーに関する注記]("https://www.instana.com/docs/ja-JA/self_hosted_instana/installation/#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%BB%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%BC%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E6%B3%A8%E8%A8%98")を一読ください。

#　この記事でのカバーする範囲

- Dockerのインストール
- Instanaバックエンドサーバーのパッケージインストール
- Instanaバックエンドサーバーのインストール

# 手順

## Ubuntuのaptパッケージを最新の状態にする

```console
sudo apt-get update
```

## Dockerの導入
(参考)Dockerの公式ドキュメント:[Install Docker Engine on Ubuntu]("https://docs.docker.com/engine/install/ubuntu/")

### リポジトリを設定する

- HTTPS経由でリポジトリに接続できるようにパッケージ追加

```console
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
```

- Dockerの公式GPGキーを追加します。

```console
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```

- リポジトリの追加

```console
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

- 導入するDockerEngineのバージョン確認

```console
 apt-cache madison docker-ce
 docker-ce | 5:20.10.11~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.10~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.9~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.8~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.7~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.6~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.5~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.4~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.3~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.2~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.1~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.0~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.15~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.14~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.13~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.12~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.11~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.10~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.9~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
```

- Instanaサーバがサポートする Dockerのバージョン
20.10+
19.03+
18.03+
1.13

(注意)Docker CEのライセンス状況が、ご利用される環境によって異なります。
事前に、ご確認ください。

- docker-ce 19.03のインストール

```console
sudo apt-get install docker-ce=5:19.03.15~3-0~ubuntu-focal docker-ce-cli=5:19.03.15~3-0~ubuntu-focal containerd.io

```

- Dockerの動作確認

```console
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
```

## メールサーバの導入

Instanaサーバ構築後、アカウント作成等にInstanaサーバからメールを送信します。ですので、メールサーバが必須になります。

参考までに、以下のサイトを参考に構築しました。　SendGridの活用なども良いでしょう。

Mail サーバー : Postfix インストール
https://www.server-world.info/query?os=Ubuntu_20.04&p=mail&f=1
Mail サーバー : Dovecot インストール
https://www.server-world.info/query?os=Ubuntu_20.04&p=mail&f=2


## Instanaパッケージ導入

```console
sudo sh -c "echo \"deb [arch=amd64] https://self-hosted.instana.io/apt generic main\" > /etc/apt/sources.list.d/instana-product.list"
sudo sh -c "wget -qO - \"https://self-hosted.instana.io/signing_key.gpg\" | apt-key add -"
sudo apt-get update
sudo apt-get install instana-console
```

## 　SSLサーバ証明書の準備 (Lets' Encripyt編)

Instana BackendサーバのFQDNで使用するSSLサーバ証明書を 今回はLets' Encripytで作成します。

```console
$ sudo apt update
Hit:1 https://download.docker.com/linux/ubuntu focal InRelease
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease                                                     
Hit:3 https://self-hosted.instana.io/apt generic InRelease                                                
Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Fetched 336 kB in 2s (158 kB/s)   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.

$ sudo apt install snapd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
snapd is already the newest version (2.51.1+20.04ubuntu2).
snapd set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

$ sudo snap install core; sudo snap refresh core
core 16-2.52.1 from Canonical✓ installed
snap "core" has no updates available

$ sudo apt-get remove certbot
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'certbot' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

$ sudo snap install --classic certbot
certbot 1.21.0 from Certbot Project (certbot-eff✓) installed

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

$ sudo certbot certonly --standalone
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): dai@localhost

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: yes
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)


If you really want to skip this, you can run the client with
--register-unsafely-without-email but you will then be unable to receive notice
about impending expiration or revocation of your certificates or problems with
your Certbot installation that will lead to failure to renew.

 (Enter 'c' to cancel): 
Invalid email address: .
Enter email address (used for urgent renewal and security notices)


If you really want to skip this, you can run the client with
--register-unsafely-without-email but you will then be unable to receive notice
about impending expiration or revocation of your certificates or problems with
your Certbot installation that will lead to failure to renew.

 (Enter 'c' to cancel): c
Unable to register an account with ACME server
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

$ sudo certbot certonly --standalone --register-unsafely-without-email
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): "<Your FQDN>"
Requesting a certificate for "<Your FQDN>"

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/"<Your FQDN>"/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/"<Your FQDN>"/privkey.pem
This certificate expires on 2022-03-04.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
```

## Instana　インストール

- rootでの作業

```console
instana init

docker login containers.instana.io -u _ -p "<Your-agent-key>"
docker pull containers.instana.io/instana/release/agent/dynamic:latest
docker pull containers.instana.io/instana/release/agent/static:latest

```


```console
root@instana:~# instana init
Setup host environment ✓
? [Please choose Instana installation type] single
? [What is your tenant name?] "テナント名"
? [What is your unit name?] "ユニット名"
? [Insert your agent key (optional). If none is specified, one is generated which does not allow downloads.] "<Your-agent-key>"
? [Insert your download key or official agent key (optional).] "<Your-agent-key>"
? [Insert your sales key] "<Your Sales Key>"
? [Insert the FQDN of the host] "<Your FQDN>"
? [Where should your data be stored?] /mnt/data
? [Where should your trace data be stored?] /mnt/traces
? [Where should your metric data be stored?] /mnt/metrics
? [Where should your logs be stored?] /var/log/instana
? [Path to your signed certificate file?] /etc/letsencrypt/live/"<Your FQDN>"/fullchain.pem
? [Path to your private key file?] /etc/letsencrypt/live/"<your-FQDN>/privkey.pem
Handle certificates ✓
Ensure images ✓
Ensure images ✓
Clean docker containers ✓
Check data directories ✓
Create configurations ✓
Run data stores ✓
Migrate data stores ✓
Run components ✓
Check components ✓
Setup environment urls ✓
Run nginx ✓
Initialize tenant unit ✓

Welcome to the World of Automatic Infrastructure and Application Monitoring

https://"<your FQDN>"
E-Mail: admin@instana.local
Password: "<サーバが発行したパスワード>"
```

これで、Instanaサーバのインストールは終わりです。
https://"<your FQDN>"と　E-Mailと Passwordを利用してInstanaにログインできるようになります。

Instanaサーバの導入途中に 「unauthorized: authentication required」というエラーで導入が止まってしまう場合は、下記、Qiita投稿を確認してください。

https://qiita.com/daihiraoka/items/fd8b42dbee8e95c2e650




## ライセンスのアクティベーション
instanaサーバ終了後、ライセンスのアクティベーションを行う必要があります。

- ドキュメント: ライセンスアクティベーション   
https://www.instana.com/docs/self_hosted_instana/licensing/


```console
# instana license import
Import license ✓
License is successfully imported
# instana license verify
Verifying local license status ✓

Nr: 1
Valid from: 2021-03-22 00:00:00 +0000 UTC
Valid till: 2121-12-01 23:59:59.999 +0000 UTC
```

# 最後に
これで、Instanaのバックエンドサーバの構築は終了し、
FQDNをブラウザで開くことで、Instanaを利用できるようになりました。

次は、Instanaの監視対象へのエージェントのインストールをすると、Instanaで監視ができるようになります。
エージェントのインストールは、下記ドキュメントを参照ください。

- (ドキュメント)Instana のセットアップと管理 / ホスト・エージェント   
https://www.instana.com/docs/ja-JA/setup_and_manage/host_agent