サーバー監視ツールCheckmkのインストール

#はじめに
これまで色々のサーバー監視ツールを使用してきました。
最初はMuninから始まって、Pandra FMS、Nagios等、…
Zabbixも使ったことがありますが、グラフがイマイチ好きではないことと私でなくても誰かが利用した記事を公開しているだろうということで、最終的に利用しなくなりました。

最近の要件としては、パブリッククラウドやハイパーバイザーなどの仮想環境の監視も含まれてきています。それを監視できるツールとして、Icinga2とSite24x7を利用しています。
Icinga2はVMware ESXiはOKだがクラウドが苦手、Site24x7はこの手の有料環境では安価な方ですが、自宅で利用する物理サーバーだけではなくAzureやオンプレのハイパーバイザーまで手を広げると個人で監視にかける金額としてはそれなりに高額になります（それでも安価な方ですが）。

これらに代わるサーバ監視ツールとしてCheckMkを利用してみることにします。
#CheckMK
[CheckMK](https://checkmk.com/)は元々Nagiosをベースにした、ドイツtribe29社が作るネットワークインフラ全般を監視できるツールです。OSS版はまだベースがNagiosベースのようですね。
しかしEnterprise版は改良したカーネルを用いていて、高速化しているようです。
機能としては物理サーバやSNMPを利用したmetric監視や死活監視はもちろん、コンテナやクラウド監視、ログ監視、inventory調査など色々な機能があります。
プラグインも数多く揃っています。それでもUqiquiti用はありませんが。

エディションとしては

+ オープンソース版
+ Free版
+ Standard版
+ Managed Service版
+ Appliance

があります。

エディションの違いとしては、

+ OSS版はホストの動的管理、リポート機能、60秒未満ごとの監視、CPU負荷が他のエディションより高い等の制限があります。
+ Free版は各10ホストが2サイトのみ、国や会社を横断した監視が出来ない等の制限があります。また直接サポートが受けられません。
+ Standard版は機能的にはFree版と同じですが、各10ホストが2サイトという制限がなく、Eメールやポータル画面からの直接サポートを受けることができます。
+ Managed Service版は無制限バージョンになります。 

今回はOSS版ではなく、Free版をインストールしてみることにします。
#構築する環境

+ Ubuntu 18.04
+ Nginx

#準備作業
/opt以下に十分なスペースを持つことを確認します。
システム時計がNTPを使って正しい時間になっていることを確認します。
必要ならメールが送信できるように設定が行われていることを確認します。
インストールするサーバ側にSSH環境が準備出来ていることを確認します。
#インストール
[https://checkmk.com/download.php](https://checkmk.com/download.php)からdebファイルをダウンロードします。この画面ではOSとOSのバージョンを指定して、メールアドレスを入力後「Download」ボタンを押します。

ダウンロード後、サーバーにdebファイルをscp等を使ってコピーします。
署名の準備を行います

```
# sudo apt install dpkg-sig
# wget https://checkmk.com/support/Check_MK-pubkey.gpg
```
もしくは

```
# gpg --keyserver keys.gnupg.net --recv-keys 434DAC48C4503261
# gpg --armor --export 434DAC48C4503261 > Check_MK-pubkey.gpg
```
署名を追加します。

```
# sudo apt-key add Check_MK-pubkey.gpg
```
コピーしたdebファイルに署名でverifyします

```
# sudo dpkg-sig --verify check-mk-enterprise-1.6.0p14.demo_0.bionic_amd64.deb
```
インストールします

```
# sudo apt install gdebi-core
# sudo gdebi check-mk-enterprise-1.6.0p14.demo_0.bionic_amd64.deb
----
ソフトウェアパッケージをインストールしますか? [y/N]:y
----
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
#
```
今回の場合、nginxを使用しているため、途中でApache関連のところで失敗しますが無視します。

バージョンを確認します

```
# omd version
OMD - Open Monitoring Distribution Version 1.6.0p14.cee.demo
```
#Apacheのポート変更
CheckMKはApacheをインストールし、そこで稼働します。
そこで、Apache側のポート番号を変更し、nginxとapacheが動くように変更します。

```apache:/etc/apache2/sites-available/000-default.conf
- <VirtualHost *:80>
+ <VirtualHost *:5000>

```

#インスタンスの作成
インスタンス＝監視サイトの作成を行います。

```
# sudo omd create mysite
Adding /opt/omd/sites/mysite/tmp to /etc/fstab.
Creating temporary filesystem /omd/sites/mysite/tmp...OK
Created new site mysite with version 1.6.0p14.cee.demo.

  The site can be started with omd start mysite.
  The default web UI is available at http://chris3/mysite/

  The admin user for the web applications is cmkadmin with password: j89hvy7k
  (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user.
)
  Please do a su - mysite for administration of this site.
```
生成されたパスワードを控えておきます。
サイトの起動を行います。

```
# su
パスワード:
# su - mysite
# omd start
Starting Livestatus Proxy-Daemon...OK
Starting rrdcached...OK
Starting CMC Rushing Ahead Daemon...OK
Starting Check_MK Micro Core...OK
Starting dedicated Apache for site mysite...OK
Initializing Crontab...OK
```
#nginxの設定
nginxにリバースプロキシー設定をして、Apacheへ転送させます。設定ファイルでは次のように設定します。

```
location ~ ^/mysite {
  sendfile off;
  proxy_pass         http://127.0.0.1:5000;

  proxy_set_header   Host             $http_host;
  proxy_set_header   X-Real-IP        $remote_addr;
  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

  add_header Pragma "no-cache";

  proxy_max_temp_file_size 0;

  #this is the maximum upload size
  client_max_body_size       10m;
  client_body_buffer_size    128k;

  proxy_connect_timeout      90;
  proxy_send_timeout         90;
  proxy_read_timeout         90;

  proxy_buffer_size          4k;
  proxy_buffers              4 32k;
  proxy_busy_buffers_size    64k;
  proxy_temp_file_wr![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683966/eac7ecb1-2ba7-facb-326e-6afb900d0543.png)
ite_size 64k;

  proxy_headers_hash_max_size 1024;
  proxy_headers_hash_bucket_size 128;

}
```
nginxを再起動させます。
参考：[check-mk-with-lets-encrypt](https://forum.checkmk.com/t/check-mk-english-check-mk-with-lets-encrypt/11928/7)

```
# sudo systemctl restart nginx
```
http://監視サーバ/mysite/でアクセスすれば、ログイン画面になっていると思います。
<div align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683966/81794b65-6046-f77e-1fe8-1b1e119ce543.png" alt="ログイン" width="40%" />
</div>
管理者ユーザ：cmkadmin 
パスワード：控えておいたパスワード

でログインします。
パスワードはその後で変更しておいた方が良いでしょう。