概要
concourse(コンコース)は「人々が集まる場所」を意味する語である。が、今回はGoで書かれたパイプラインベースのCI/CDツールである Concourse CI - Docs をDocker で 運用していくとDBの領域でもなくDocker が利用している確認して
concourse/concourse: Concourse CI
結論
ちゃんと、ログローテートを確認設定しろ
Concourse CI の特徴
今回の調査と全く関係ないが紹介しておきます。オンプレミスでCI/CD をしなくてはいけない場合には選択肢に入れて欲しい。
- Configration As Code
- Fancy Visualization
- CI Under Source Control
- Reproducible, Debuggable Builds
- Rapid Local Iteration
- Bring Your Own Integrations
詳細はConcourse CI - Docs をご覧ください。。
順を追って調査
df
ディスク容量を調査する際にディスク容量を確認するコマンドがdf コマンドです。
## もしくは -h # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.9G 0 7.9G 0% /dev tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 7.9G 825M 7.1G 11% /run tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/vda2 493G 349G 124G 74% / <docker がマウントしている諸情報について> tmpfs 1639920 0 1639920 0% /run/user/0
docker system df -v
Docker で運用しているので Dockerのディスク使用量を表示するためのコマンドを実行して確認していきますが ディスク容量が大きければ大きいほど遅くなりますね… 500G にもなるとすごく待ちます。この間に自宅で筋トレをするのも良しです。 -v, --verboseフラグを使用して、より詳細な情報を確認できるので確認します
# docker system df -v Images space usage: ## 各リポジトリ毎に REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS postgres latest 0f10374e5170 5 weeks ago 313.7MB 0B 313.7MB 1 concourse/concourse latest 9782e15793ee 2 months ago 1.106GB 0B 1.106GB 6 <none> <none> 73119b8892f9 2 months ago 313.6MB 0B 313.6MB 0 <none> <none> cbcfaf166ff0 4 months ago 1.328GB 0B 1.328GB 0 hello-world latest bf756fb1ae65 5 months ago 13.34kB 0B 13.34kB 0 <none> <none> fce289e99eb9 17 months ago 1.84kB 0B 1.84kB 1 Containers space usage: CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES f1458d798e41 concourse/concourse "dumb-init /usr/loca…" 1 50.5MB 5 weeks ago Up 5 weeks concourse-webcl_concourse-worker_1 bafb918fa767 concourse/concourse "dumb-init /usr/loca…" 1 0B 5 weeks ago Up 5 weeks concourse-webcl_concourse-web_1 48c81a651930 postgres "docker-entrypoint.s…" 1 1.02GB 5 weeks ago Up 5 weeks concourse-webcl_concourse-db_1 24cb33d0a09e fce289e99eb9 "/hello" 0 0B 2 months ago Exited (0) 2 months ago condescending_easley Local Volumes space usage: ## ローカルボリュームの値を確認したが大量に利用しているっぽい VOLUME NAME LINKS SIZE e324cd339d4e5c3d748fed778cfcca38d7d9269c9789f55ebe0d126e9b42a128 0 0B 9e793b865f3ff1e1db89bb1ba8cc684bb730568a05e464405b556badfb7e81fa 0 0B d691d4f1fe689e829fda14c216c6e3c95121f4b7ed6bed67e81f09ac1eae0476 0 5.94GB 8429692daf11086edc82453c89b81058a9718d92f5b20333120cf8e4a811d361 0 0B 3616f3edef4c052f092bf7bd330886de210923bdf2f29fffafa502e230760664 0 0B 1617996662c81857571c9008da98585b8e0708c4dbee3e90a254a605b5a317dc 0 21.27GB efd6d88bdae50083b417b45b992fbbb2aa1d1d7c1ccbca245df24cdb1c77e25e 0 15.6GB d2dc3ca0e55084d6c933f91469b4301b92797ed6c31093af7d65042b2e739016 0 20.76GB 820fbc33c83b33b60c887ce35e6f3a2bcba0e813964db581061a0d3a44586d05 1 22.82GB b6b46f33ae5ed7e6711d05dac306a205ceacb48a0175389fdc79fae7a3873606 0 0B bc793b26a4b57c3af224c0feaf35b46ba23f5d5eeca8b046087e431e14fc4002 0 0B ef6f67921230229a3e9537618458bd2ba1172e4469b14f07808d9e9e95b3d695 0 0B d725ca867543018061bfc1ef74aa4e8aa093dd29e85f5ca7c830b3d085815860 1 0B 1a0da8b3b7079abc3787a80ecc2fc7605373a83d1888015b5f8001df8ea798ee 0 1.251GB 3dfe43116bcb707314fc130dfff880071fa312c6519594f7d8491cfaedebb599 1 15.89GB 9616012387a007fb4afe0548ae73bed41b305ed4b9baee1e6f27fbb2791d8701 0 0B 182ec724a73e5ca07f831e305e26866a0b26f91524c883166bd4c98efd6bf962 1 19.5GB c49c716af3d4e268c3c5423eb818488bee54b49c6e0c6b4fa9e12811edd9b877 0 19.28GB da7c07c528c373d6cf8eeca9286c51c6987fdff77a11cff91cd0258b8043ab5b 0 14.98GB bc40f5e669a61c1e14ecbc1b5a329d6f4123e8ddf8600a418433a03a7b2cbe99 0 0B 922755e2f81cbf2286c9260ab62b14fe484aaa02da3c2071fefbbe054c8dbe11 0 0B 12e802ab10c8cc699bed312b43d1940207844feee8d4c07750f010726219731c 0 0B 673e0726ffcaa62438e01a82caf5c1f2eb9214ed1a3e6227ed466b2d86804b65 1 18.72GB 7d060345b46b188610504eac2ea0daa5f276173c725e59ad8b75e5d42c113163 0 5.002GB b9e5bff774e07586c2e37767ebda1864a9bc3e65b16410b43e19a35b95c5fc9c 0 0B c8df02b8b040c58945d6f0501865d870da15d2e133b4815e85801b66113b8457 0 16.75GB 8e98b00e0c5c53377b242bdab41c23b1167484b72e305eaa82081ff7cc71240d 0 15.17GB 1edac345b0ab470c61baa83cac9312070822dc376183f9763252325e7963ba22 0 24.27GB e77832d02eda5b46dc2157d7aa129507ecadc24517a757633b784b85638f3629 0 0B 310926e70e69e2287ada3662dd06d19c0226fe41c9214adf0916afd277d17055 0 2.063GB 42cef833e280cede8f06b025a9cff78fa5dabcb1c3af26cb65fb6376cb6af15c 0 3.182GB b9a356a3819ea4111e772b5cb254ed3d9f34d55a4b7d1d239f9746adc0ed7f8f 0 0B fdfe034dff841c0f87d485115d387605e09e64f979fc9b4d27e2423947db668f 0 0B 4e8ccdccbe7275fb1a947e6ad7d56de12df4051c3a5500674787be14d2285516 1 20.29GB 4ac6c7e566ee3db5e4e27c83db47a7453b3366d50a6ce038b989acd09d9396d5 1 0B c121b924db25c699ef749317ac4119a47955e21d1e18e4dcc08558ffc0af3880 0 20.94GB 9a59ed6a9492d75267546325eaa7903fdf6e315cb84be063fd88a425c9c7d06f 0 5.859GB 2daa60ac279966ff75941482978060bd8825abd09b277b871d2ba306de9d902f 0 5.553GB 681663db74130ff8ded59899838e215dbb6f9a82812e8bbf1b36b788aff0ce56 0 2.763GB f4caee6a9c9a1ac88970f3067d1f60c607502a43df156dd87ea76b2792edcfb4 0 0B <ローカルボリュームの情報> ## $ grep GB v.txt | awk '{s += $3} END {print s}' ### 297.853GB
およそ、297.853GB 使っているがこれの調査は一旦重そうなので午後やる。 他にも30GB を何が容量食ってるんだ?
du -h --max-depth=1 /var/lib/docker/containers//log | sort -n
あ、ログローテートの設定入れるの忘れてるわ 急に思い出した。ディスク容量を調査する際にディレクトリやファイル容量を確認するコマンドがdu コマンドです。
### docker inspect <CONTAINER ID> | grep -i log で行儀よく確認する方法もあると思うが面倒なので一気に表示させる # du -h --max-depth=1 /var/lib/docker/containers/*/*log | sort -n 4.0K /var/lib/docker/containers/24cb33d0a09e0cbfc172a0338dbe824157610635d7aff08a917aca9afcaa4c91/24cb33d0a09e0cbfc172a0338dbe824157610635d7aff08a917aca9afcaa4c91-json.log 4.3G /var/lib/docker/containers/bafb918fa767e291900f0fe8e6d377c45843731c86690112fd0b999a39439682/bafb918fa767e291900f0fe8e6d377c45843731c86690112fd0b999a39439682-json.log 7.2G /var/lib/docker/containers/9d1d57006f5ec6a197016eedd1f0dbae1dbb927d9ff2073b4678f420e735ccae/9d1d57006f5ec6a197016eedd1f0dbae1dbb927d9ff2073b4678f420e735ccae-json.log 7.2G /var/lib/docker/containers/a83ad7a3c290f8515869e66db68830a7588bfe7f33a58db4b6cc89db5c6d9be8/a83ad7a3c290f8515869e66db68830a7588bfe7f33a58db4b6cc89db5c6d9be8-json.log 7.2G /var/lib/docker/containers/b2b93c2943d2f8d1b6caf4f0c7bee64fab027135f6f85aaf73359ac763d13cd9/b2b93c2943d2f8d1b6caf4f0c7bee64fab027135f6f85aaf73359ac763d13cd9-json.log 7.2G /var/lib/docker/containers/c426d0d17f20ee570cdfe3d77f72b52906114b68b122f0546dae436d40b9ab07/c426d0d17f20ee570cdfe3d77f72b52906114b68b122f0546dae436d40b9ab07-json.log 7.2G /var/lib/docker/containers/f1458d798e415b2e080288aac07e7390a39b5aba324930f0a5adfbeaa2f7fe80/f1458d798e415b2e080288aac07e7390a39b5aba324930f0a5adfbeaa2f7fe80-json.log 744K /var/lib/docker/containers/48c81a65193097609550b7ec26685beaf490eeb9a1b0787367edcb5a0b6b9845/48c81a65193097609550b7ec26685beaf490eeb9a1b0787367edcb5a0b6b9845-json.log
Webのアクセスログは必要になることもあるのでとりあえず、concourse-worker のログを削除していきます
# echo '' > /var/lib/docker/containers/9d1d57006f5ec6a197016eedd1f0dbae1dbb927d9ff2073b4678f420e735ccae/9d1d57006f5ec6a197016eedd1f0dbae1dbb927d9ff2073b4678f420e735ccae-json.log
ディスク確認をしたら、想像以上に減っていて困る。
# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.9G 0 7.9G 0% /dev tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 7.9G 825M 7.1G 11% /run tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/vda2 493G 221G 252G 47% /
ログローテート
デーモン設定ファイルや起動時に指定することが出来るが今回は Docker compose docker-compose に下記を追加する
logging: driver: "json-file" # defaults if not specified options: max-size: "10m" max-file: "3"
蛇足
Linuxサーバーで問題が発生した時に繰り出すコマンドはある程度決まっておりこれらで得られる情報から多くの推論を導くことができる。 Linux Performance Analysis in 60,000 Milliseconds では
uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 sar -n TCP,ETCP 1 top
などを入力することが推奨されておりますがインターネットの猛者は自身のこれらを紹介してくれている。これらのコマンドに対して成熟することは何もデメリットがないので勉強しておいてください。ブログのエントリーで物足りない場合は詳解 システム・パフォーマンス を読むことをおススメします。インフラチームであれば輪読会をしてもいいと思います。