事前学習
前佛さんが書いているhttps://docs.docker.jp/index.html の「始め方 - Get started」の項目をpart1からpart9まで進めておいてください。
第1回, 第2回
docker composeファイルを作る
- どこでもいいのでroot filderを1つ定めてください 例示として /sample/を定めます。このフォルダが作業フォルダとなります。フォルダ名は今後省略して表記します。
- 例: /sample/root/, /sample/root/src/->/src, /sample/root/model/->/model/
- 使っていいポートの範囲は10000-11000の区間内です。ただし、10080ポートはブラウザでアクセスできないので注意して下さい。
- network名は自由ですが、例として苗字-networkになるようにして進めます。
- nginx 関連を/sample/root/nginxに置きます.イメージを展開してください
問題サーバーを一つ立ててみる
問題のファイルはこれ です.ダウンロードして展開してください. 問題ファイルは非公開です。適当なCTFのDockerインスタンスを用意してください。
私は作問者としてロールプレイしますので、ポート番号10081から疎通するように問題をデプロイしてください。不足情報は適宜質問してください。
第3回
1つ目のタスク
prometheus を生やします. Docker imageはこちら を使用してください。
前回までのcompose.ymlに生やしてください。
2つ目のタスク
prometheusを動作して疎通できる状態にします.続けて、特に題材が思いつかなかったのでとりあえずDocker自身を監視することにします。
- prometheusがデフォルトで使うポート番号は9090番です.前回までと同じポート番号のルールで疎通を確認しましょう。
- prometheusの設定ファイルは
/etc/prometheus/prometheus.yml
に記述します。 設定ファイルの書き方はdocker公式 と [Prometheus公式]を参考にしてください。(https://prometheus.io/docs/prometheus/latest/configuration/configuration/) を参考にしてください。
3つ目のタスク
prometheusで収集されたデータを永続化します。
/prometheus
をネームドボリュームで永続化してください。
参考資料: https://docs.docker.jp/compose/compose-file/index.html
4つ目のタスク
nginxのmetricsを収集します。
初めに、nginxのコンテナでngx_http_stub_status_module
が有効であることを確認してください。
確認出来たら、nginx.confを編集して/stub_status
で見えるようにしてください。
続けて、nginx-exporterのインスタンスを生やします.
docker imageはこちら を使用してください。
nginx-exporterのインスタンスが生えてきたらdocker metricsと同様にnginx-exporter経由でmetricsを収集してください。
第3.5回
Arch LinuxをインストールしてLinuxに慣れましょう。 参考資料を見て各自進めてください。インストール先は部室のProxmoxのインスタンスを1つ作成してかまいません。 参考資料: Arch linux wiki
第4回
1つ目のタスク
grafanaを生やします。 docker imageはこちらを使用してください。 前回までのcompose.ymlに生やしてください。
2つ目のタスク
/etc/grafana/provisioning/datasources
をネームドボリュームで永続化してください。
3つ目のタスク
grafanaを動作して疎通できる状態にします。また、prometheusで収集されたデータを、grafanaに転送して可視化します。
GF_SECURITY_ADMIN_USER
、GF_SECURITY_ADMIN_PASSWORD
の環境変数をセットするとデフォルトパスワードをセットできます。デフォルトではadmin/adminです。
設定方法は参考資料を見ながら頑張ってください。ダッシュボードはあえてベストプラクティスは特に教えないので思い思いに作ってください。
参考資料: prometheus公式
おまけのタスク
prometheusからアラートを発報できるようにします。 alertmanagerを導入します。 docker imageこちらを使用してください。 discordのwebhook機能と連携して、アラートを発報してみてください。 参考資料: https://knowledge.sakura.ad.jp/11635/