yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

サーバー監視ツール netdataをVPSのUbuntu16.04に導入した

はじめに

今IDCFクラウドVPSを借りていて、鯖管初学者として私、 @kamioda_ampsprg, @celluloce@qiitadon.comと割り勘してえっちらおっちら運用している。

先日は@kamioda_ampsprgが

qiita.com

のような記事を投稿していた。

サーバー監視ツールを入れたい

gnome-system-monitor

最初は適当にgnome-system-monitorみればええんちゃうん?とか軽く考えていたが、入れようとしたらご覧の有様だよ!

流石にそっ閉じして、真面目にサーバー監視ツールを入れようとなった。

netdata

qiita.com

というわけでnetdataである。

github.com

公式Wikiに基づいて

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

とした。

これだけでsystemdのサービス追加とか不足パッケージ引っ張ってきたり、cronに自動アップデート登録したりしてくれる。強いて言えばcronじゃなくてsystemdで自動アップデートしてほしかったが、まあいいことにする。

この時点で、http://127.0.0.1:19999でWeb画面が見えることになっているが、ここで19999 port開けるとかただの馬鹿なのでもっとマシな手段を取る。

サブドメイン取得

www.onamae.com

お名前.comのDNSを使っているので、それで新たにAレコードを貼る。

DNS A

Let's Encrypt

とりあえず

<VirtualHost *:80>
        ServerName netdata.irregular-at-tus.work
        ServerAdmin https://qiitadon.com/@yumetodo
        DocumentRoot /usr/share/netdata/web/
        ErrorLog /home/for_netdata/logs/error.log
        CustomLog /home/for_netdata/logs/access.log combined
</VirtualHost>
<Directory /usr/share/netdata/web>
        Options Indexes
        Options FollowSymLinks
        #AllowOverride none
        Require all granted
</Directory>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

のようなダミーのApache2 configを書いて/etc/apache2/sites-availableに置き、

$ sudo systemctl restart apache2
$ ./certbot-auto run --apache -d netdata.irregular-at-tus.work

certbot

--apacheは自動でapache2の設定を書き換えて証明書のパスを書いたりしてくるはずなんだけど、どうにもうまくいかない。なんでや。

まあ証明書はくれたのでいいことにする。

Digest認証有効でHTTPSでnetdataの画面を公開する

あんまりサーバー監視ツールの画面を不特定多数の人には見られたくない。アクセスする人のIPアドレスは可変なのでIP指定制限するのもだるい。BASIC認証はダサい。どうするかと思っていたら、

qiita.com

ちょうどいい記事があった。そういやDigest認証なんてあったわ。

Apache2からSSL有効でProxy貼る方法は

github.com

公式のIssueにそれっぽいconfig晒している人がいたのでこいつを元にいじる。

<VirtualHost *:80>

    ServerName netdata.irregular-at-tus.work
    ServerAdmin https://qiitadon.com/@yumetodo

    DocumentRoot /usr/share/netdata/web/

    Redirect permanent "/" "https://netdata.irregular-at-tus.work/"

    ErrorLog /home/for_netdata/logs/netdata-error.log
    CustomLog /home/for_netdata/logs/netdata-access.log combined

</VirtualHost>

<VirtualHost *:443>

    ServerName netdata.irregular-at-tus.work
    ServerAdmin https://qiitadon.com/@yumetodo

    DocumentRoot /usr/share/netdata/web/

    SSLEngine On
    SSLCertificateFile    /etc/letsencrypt/live/netdata.irregular-at-tus.work/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/netdata.irregular-at-tus.work/privkey.pem
    SSLProtocol all -SSLv2 -SSLv3
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Require all granted
    </Proxy>

   # Local 127.0.0.1:19999 netdata server accessed with '/'
    ProxyPass "/" "http://127.0.0.1:19999/" connectiontimeout=5 timeout=30
    ProxyPassReverse "/" "http://127.0.0.1:19999/"

    <Location />
        AuthType Digest
        AuthName "Digest Auth"
        AuthUserFile /etc/apache2/.htdigest
        Require valid-user
    </Location>

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

    ErrorLog /home/for_netdata/logs/netdata-error.log
    CustomLog /home/for_netdata/logs/netdata-access.log combined

</VirtualHost>

https://gist.github.com/yumetodo/11ead23aee869f5f9ff7dfc4618c458e

こいつを/etc/apache2/sites-availableに置いて(さっきのと置き換える)

$ sudo a2dismod auth_basic
$ sudo a2enmod auth_digest
$ sudo systemctl restart apache2

で完了。注意点はBasic認証を殺さないとDigest認証は使えないらしい。

動作

Microsoft EdgeはDigest認証すらまともに使えない

なんとURL末尾に?をつける必要があるそうだ。糞では?

参考リンク