そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

GitLabで/var/opt/gitlab/prometheus/にあるwalファイルがディスク容量を圧迫

・GitLabサーバーで「/var/opt/gitlab/prometheus/」ディレクトリにあるwalファイルがディスク容量を圧迫している。
・対処方法を教えてほしい。

こういった疑問に答えます。

本記事の内容

  1. GitLabサーバーの/var/opt/gitlab/prometheus/ディレクトリにあるwalファイルがディスク容量を圧迫しているときの対処方法

サトナカ (@souiunogaii)

この記事を書いている私は、某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

ネットで情報を探す

検索すると、参考になりそうな以下のページが見つかりました。

qiita.com

gitlab.com

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

Udemyの特徴
  • ユーザー登録すれば、第1回の講座は無料で視聴できる
  • 無料のコンテンツもある
  • 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい

世界最大級のオンライン学習サイトUdemy

以上、読んでいただきありがとうございました。