・GitLabサーバーで「/var/opt/gitlab/prometheus/」ディレクトリにあるwalファイルがディスク容量を圧迫している。
・対処方法を教えてほしい。
こういった疑問に答えます。
本記事の内容
- GitLabサーバーの
/var/opt/gitlab/prometheus/
ディレクトリにあるwalファイルがディスク容量を圧迫しているときの対処方法
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
GitLabサーバーの/var/opt/gitlab/prometheus/にあるwalファイルがディスク容量を圧迫しているときの対処方法
発生事象
・Hinemos監視で、GitLabサーバーのディスク容量をしきい値超過を検知しました。
ディスク使用率の確認
df -h
[root@SV-MARS ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 28K 1.8G 1% /dev/shm tmpfs 1.8G 14M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/mapper/cl-root 13G 8.8G 4.0G 69% / /dev/sda2 976M 281M 629M 31% /boot /dev/sda1 599M 5.8M 594M 1% /boot/efi //sv-jupiter.planet.space.com/backup1/sv-mars_bk 3.7T 3.3T 428G 89% /win tmpfs 365M 0 365M 0% /run/user/1000
「/」の使用率が7割になっていました。
どのディレクトリが肥大化しているのか探す
「du -d 1 -h」で順番に見ていくと、「/var/opt/gitlab/prometheus」がサイズが増えているのが見つかりました。
du -d 1 -h /var/opt/gitlab
[root@SV-MARS data]# du -d 1 -h /var/opt/gitlab 0 /var/opt/gitlab/.bundle 4.0K /var/opt/gitlab/.ssh 4.0K /var/opt/gitlab/gitlab-shell 453M /var/opt/gitlab/git-data 1.1M /var/opt/gitlab/gitlab-rails 0 /var/opt/gitlab/gitlab-ci 15M /var/opt/gitlab/backups 660K /var/opt/gitlab/redis 20K /var/opt/gitlab/gitaly 497M /var/opt/gitlab/postgresql 52K /var/opt/gitlab/logrotate 8.0K /var/opt/gitlab/gitlab-workhorse 24K /var/opt/gitlab/nginx 0 /var/opt/gitlab/node-exporter 8.0K /var/opt/gitlab/gitlab-exporter 2.1G /var/opt/gitlab/prometheus 4.0K /var/opt/gitlab/alertmanager 16K /var/opt/gitlab/postgres-exporter 836K /var/opt/gitlab/grafana 16K /var/opt/gitlab/gitlab-kas 3.0G /var/opt/gitlab
du -d 1 -h /var/opt/gitlab/prometheus/data -a
[root@SV-MARS data]# du -d 1 -h /var/opt/gitlab/prometheus/data -a 20K /var/opt/gitlab/prometheus/data/queries.active 57M /var/opt/gitlab/prometheus/data/wal 7.5M /var/opt/gitlab/prometheus/data/chunks_head 97M /var/opt/gitlab/prometheus/data/01G96QKKPKSHAY3KXE30HAGCCV 97M /var/opt/gitlab/prometheus/data/01G9EESREPK85X1RRKT0J6A123 97M /var/opt/gitlab/prometheus/data/01G9T1JZMVQ7ET9KQ0YX28QS0Q 96M /var/opt/gitlab/prometheus/data/01G8Z0DE9AVJAX3S7KX1FGQNYS 97M /var/opt/gitlab/prometheus/data/01G9JACTJ9J9972P83XXM24Q16 96M /var/opt/gitlab/prometheus/data/01G9XX61ZQAF368KTN49H71RFG 98M /var/opt/gitlab/prometheus/data/01G98NDAJVRHZYHGDJ2YAW0GED 97M /var/opt/gitlab/prometheus/data/01G9GCKD4DPNK178820BCM4DPZ 97M /var/opt/gitlab/prometheus/data/01G9CH0B3G2SPYTFN73QD0ZWYT 97M /var/opt/gitlab/prometheus/data/01G90Y73HKMPBV4Y5ET5811S70 98M /var/opt/gitlab/prometheus/data/01G92W0H34JJQ0STM0F6K909TB 95M /var/opt/gitlab/prometheus/data/01GA1RS43J1E43C1XQSSRV3PBV 13M /var/opt/gitlab/prometheus/data/01GA56MN8QYJDS7C8PRBSTAGK7 97M /var/opt/gitlab/prometheus/data/01G9VZCHSVJE26RTAT7NTRMS8X 98M /var/opt/gitlab/prometheus/data/01G9AK6NVZCCQB15J8EPS4FP32 97M /var/opt/gitlab/prometheus/data/01G9P5ZXY15SNNR4EQQKBH25JD 97M /var/opt/gitlab/prometheus/data/01G9R3SFA5K2CKDC8VNYTJEZ25 98M /var/opt/gitlab/prometheus/data/01GA3PJS6FGB45W690NJ8SXF8T 34M /var/opt/gitlab/prometheus/data/01GA4ZTCJY6C43XMM79EWNEVD1 97M /var/opt/gitlab/prometheus/data/01G9ZTZNXJ7JDNZQG11F4VCTSA 34M /var/opt/gitlab/prometheus/data/01GA4B5SMAY121TCB99VHHMDSZ 97M /var/opt/gitlab/prometheus/data/01G94ST3HVMXEX6Z7TTCMH2SX2 14M /var/opt/gitlab/prometheus/data/01GA4RX7JHRKBVDKEKY8XPR5HK 0 /var/opt/gitlab/prometheus/data/lock 94M /var/opt/gitlab/prometheus/data/01G9M86JE6Q5AJV3SDHG0QFTV6 14M /var/opt/gitlab/prometheus/data/01GA4ZS04ZE4SRPR9JFVGQ30AK 2.1G /var/opt/gitlab/prometheus/data
ネットで情報を探す
検索すると、参考になりそうな以下のページが見つかりました。
GitLabの設定ファイルで、Prometheusを無効にする
vi /etc/gitlab/gitlab.rb
変更前
################################################################################ ## Prometheus ##! Docs: https://docs.gitlab.com/ee/administration/monitoring/prometheus/ ################################################################################ ###! **To enable only Monitoring service in this machine, uncomment ###! the line below.** ###! Docs: https://docs.gitlab.com/ee/administration/high_availability # monitoring_role['enable'] = true # prometheus['enable'] = true # prometheus['monitor_kubernetes'] = true # prometheus['username'] = 'gitlab-prometheus' # prometheus['group'] = 'gitlab-prometheus' # prometheus['uid'] = nil # prometheus['gid'] = nil # prometheus['shell'] = '/bin/sh' # prometheus['home'] = '/var/opt/gitlab/prometheus' # prometheus['log_directory'] = '/var/log/gitlab/prometheus' # prometheus['rules_files'] = ['/var/opt/gitlab/prometheus/rules/*.rules'] # prometheus['scrape_interval'] = 15 # prometheus['scrape_timeout'] = 15 # prometheus['external_labels'] = { } # prometheus['env_directory'] = '/opt/gitlab/etc/prometheus/env' # prometheus['env'] = { # 'SSL_CERT_DIR' => "/opt/gitlab/embedded/ssl/certs/" # } #
変更後
- prometheus['enable'] = false
- prometheus['monitor_kubernetes'] = false
- prometheus['flags'] の 'storage.tsdb.retention.time' => "1d"
1695 ################################################################################ 1696 ## Prometheus 1697 ##! Docs: https://docs.gitlab.com/ee/administration/monitoring/prometheus/ 1698 ################################################################################ 1699 1700 ###! **To enable only Monitoring service in this machine, uncomment 1701 ###! the line below.** 1702 ###! Docs: https://docs.gitlab.com/ee/administration/high_availability 1703 # monitoring_role['enable'] = true 1704 1705 prometheus['enable'] = false 1706 prometheus['monitor_kubernetes'] = false 1707 # prometheus['username'] = 'gitlab-prometheus' 1708 # prometheus['group'] = 'gitlab-prometheus' 1709 # prometheus['uid'] = nil 1710 # prometheus['gid'] = nil 1711 # prometheus['shell'] = '/bin/sh' 1712 # prometheus['home'] = '/var/opt/gitlab/prometheus' 1713 # prometheus['log_directory'] = '/var/log/gitlab/prometheus' 1714 # prometheus['rules_files'] = ['/var/opt/gitlab/prometheus/rules/*.rules'] 1715 # prometheus['scrape_interval'] = 15 1716 # prometheus['scrape_timeout'] = 15 1717 # prometheus['external_labels'] = { } 1718 # prometheus['env_directory'] = '/opt/gitlab/etc/prometheus/env' 1719 # prometheus['env'] = { 1720 # 'SSL_CERT_DIR' => "/opt/gitlab/embedded/ssl/certs/" 1721 # } 1722 #
1759 ### Custom Prometheus flags 1760 # 1761 prometheus['flags'] = { 1762 'storage.tsdb.path' => "/var/opt/gitlab/prometheus/data", 1763 'storage.tsdb.retention.time' => "1d", 1764 'config.file' => "/var/opt/gitlab/prometheus/prometheus.yml" 1765 }
GitLabの再構築と再起動
gitlab-ctl reconfigure
[root@SV-MARS data]# gitlab-ctl reconfigure [2022-08-11T10:54:51+09:00] INFO: Started Chef Infra Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook) Chef Infra Client, version 17.10.0 Patents: https://www.chef.io/patents Infra Phase starting [2022-08-11T10:54:52+09:00] INFO: *** Chef Infra Client 17.10.0 *** [2022-08-11T10:54:52+09:00] INFO: Platform: x86_64-linux [2022-08-11T10:54:52+09:00] INFO: Chef-client pid: 13826 [2022-08-11T10:55:27+09:00] INFO: Setting the run_list to ["recipe[gitlab]"] from CLI options [2022-08-11T10:55:27+09:00] INFO: Run List is [recipe[gitlab]] [2022-08-11T10:55:27+09:00] INFO: Run List expands to [gitlab] [2022-08-11T10:55:27+09:00] INFO: Starting Chef Infra Client Run for SV-MARS [2022-08-11T10:55:27+09:00] INFO: Running start handlers [2022-08-11T10:55:27+09:00] INFO: Start handlers complete. Resolving cookbooks for run list: ["gitlab"] [2022-08-11T10:55:28+09:00] INFO: Loading cookbooks [gitlab@0.0.1, package@0.1.0, logrotate@0.1.0, postgresql@0.1.0, redis@0.1.0, monitoring@0.1.0, registry@0.1.0, mattermost@0.1.0, consul@0.1.0, gitaly@0.1.0, praefect@0.1.0, gitlab-kas@0.1.0, gitlab-pages@0.1.0, letsencrypt@0.1.0, nginx@0.1.0, runit@5.1.3, acme@4.1.5, crond@0.1.0] Synchronizing cookbooks: - gitlab (0.0.1) - package (0.1.0) - logrotate (0.1.0) - postgresql (0.1.0)
gitlab-ctl restart
[root@SV-MARS data]# gitlab-ctl restart ok: run: alertmanager: (pid 14251) 0s ok: run: gitaly: (pid 14258) 1s ok: run: gitlab-exporter: (pid 14276) 1s ok: run: gitlab-kas: (pid 14278) 0s ok: run: gitlab-workhorse: (pid 14285) 0s ok: run: grafana: (pid 14292) 0s ok: run: logrotate: (pid 14296) 1s ok: run: nginx: (pid 14306) 0s ok: run: node-exporter: (pid 14308) 1s ok: run: postgres-exporter: (pid 14315) 0s ok: run: postgresql: (pid 14322) 1s ok: run: puma: (pid 14326) 0s ok: run: redis: (pid 14332) 1s ok: run: redis-exporter: (pid 14346) 0s ok: run: sidekiq: (pid 14352) 1s
walファイルの削除
[root@SV-MARS data]# rm -rf 01G*
[root@SV-MARS wal]# rm -f 00018654 [root@SV-MARS wal]# rm -f 00018655 [root@SV-MARS wal]# rm -f 00018656 [root@SV-MARS wal]# rm -rf checkpoint.00018653
削除後の確認
[root@SV-MARS data]# du -d 1 -h /var/opt/gitlab/prometheus/ -a 24K /var/opt/gitlab/prometheus/rules 8.0K /var/opt/gitlab/prometheus/prometheus.yml 12M /var/opt/gitlab/prometheus/data 12M /var/opt/gitlab/prometheus/
[root@SV-MARS data]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 28K 1.8G 1% /dev/shm tmpfs 1.8G 13M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/mapper/cl-root 13G 6.8G 6.1G 53% / /dev/sda2 976M 281M 629M 31% /boot /dev/sda1 599M 5.8M 594M 1% /boot/efi //sv-jupiter.planet.space.com/backup1/sv-mars_bk 3.7T 3.3T 391G 90% /win tmpfs 365M 0 365M 0% /run/user/1000
ディスク使用率も正常に戻り、もちろん、GitLabも正常に使用できています。
インフラエンジニアになるための勉強のやり方
私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
現在の会社で直接担当している業務の中では、決まった技術しか触れないけれど、
「他にも将来役に立ちそうなインフラ技術を勉強したい」「働きながらでもできる効率的なインフラエンジニアの勉強方法を知りたい」と考えている方のために、
①おすすめの書籍と、②おススメのオンライン学習サイトを紹介します。
働きながら勉強するための、おススメの書籍と、オンラインで学習できるサイトの紹介です。
インフラエンジニアの勉強ができるおススメ書籍
朝の通勤時や帰宅時の電車の中や、社外打合せへの移動中などに勉強するなら、やはり書籍が一番だと思います。
インフラエンジニアの教科書
LINE社に創業時から在籍しているインフラエンジニア・プロマネの「佐野裕」さんの本です。 twitter.com
膨大なトラフィックをさばくLINE社にて構築・保守を行っている現役エンジニアが記すITインフラの必須知識と経験の数々! サーバ、OS、ネットワーク機器、データセンター、購買と商談、障害対応、大規模インフラ、成長するために必要なスキルなど、基礎知識から実践まで言及。 ITインフラの世界が理解できる珠玉の1冊!
インフラエンジニアの教科書 (C&R研究所) 佐野裕 |
1週間でLPICの基礎が学べる本
Linuxの資格「LPIC」の試験対策を初心者向けに書いた入門書です。
Linuxの資格として広く知られているLPICですが、あまり知識の無いまま試験対策を始める人も多いのではないでしょうか。しかし、試験対策書は試験範囲についてのみ解説しているものが多く、初心者が理解するのは困難です。本書は、初心者がスムーズに試験対策を行えるよう、事前に基礎固めを行うLinux入門書です。試験情報や模擬問題も掲載しているので、資格取得を視野に入れた効率的な基礎学習が行えます。
1週間でLPICの基礎が学べる本 第3版 徹底攻略シリーズ (インプレス) 中島能和 |
インフラエンジニアの勉強ができるオンライン学習サイト
Udemy (オンライン動画学習サイト)
Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。
ITエンジニア系の講座もたくさん公開されています。
Udemyの特徴
- ユーザー登録すれば、第1回の講座は無料で視聴できる
- 無料のコンテンツもある
- 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい
以上、読んでいただきありがとうございました。