Debian 10上のGitLabをMuninで監視する

やりたいこと

複数のサーバの負荷状況をmuninで可視化する。

  • muninデータのとりまとめは別サーバで行う
  • 本サーバではサーバの負荷状況&Gitlabの状況を監視する

muninのインストールと設定ファイルの変更

% sudo aptitude install munin munin-node

設定ファイルを修正し、muninの親サーバからアクセスできるようにする。

% cd /etc/munin
% sudo cp -p munin-node.conf munin-node.conf.org
% sudo vi munin-node.conf

変更場所は以下のとおり

% diff munin-node.conf.org munin-node.conf
37a38
> host_name hogehoge.localdomain  #このサーバのFQDNを記載
45c46,47
< allow ^::1$
---
> #allow ^::1$
> allow ^192\.168\.11\.100$  # muninの親サーバのIPアドレスを記載

監視対象の確認

% sudo munin-node-configure

ハードディスクの監視

Debian 9 (Stretch) - munin 各種監視追加! - mk-mode BLOGに従い、設定する。

smartmontoolsのインストール

% sudo apt install smartmontools

ハードディスク監視用の設定の記述。

% sudo touch /etc/munin/plugin-conf.d/hddtemp_smartctl
% sudo vi /etc/munin/plugin-conf.d/hddtemp_smartctl

監視対象とするハードディスクドライブのディスク情報を確認する。私の環境では /dev/sda が監視対象。

% df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             7.8G     0  7.8G    0% /dev
tmpfs            1.6G   17M  1.6G    2% /run
/dev/sda2        900G  6.9G  848G    1% /
tmpfs            7.9G   12K  7.9G    1% /dev/shm
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs            7.9G     0  7.9G    0% /sys/fs/cgroup
/dev/sda1        511M  5.1M  506M    1% /boot/efi
tmpfs            1.6G     0  1.6G    0% /run/user/1000

/etc/munin/plugin-conf.d/hddtemp_smartctlの中見

[hddtemp_smartctl]
user root
env.drives sda
env.smartctl /usr/sbin/smartctl
env.args_sda --all -d ata

プラグインを組み込む。

% sudo ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/

CPUや電源の監視

lm-sensorsと関連パッケージをインストールする。

% sudo apt -y install lm-sensors libsensors5 fancontrol

sensors-detect を実行する。いいなりにEnterキーをおし、最後の /etc/modulesへの書き込みはYesを選択する。

% sudo sensors-detect 

センサーのチェック

% sudo sensors

センサー監視用の設定ファイルを作成する。

% sudo touch /etc/munin/plugin-conf.d/sensors
% sudo vi /etc/munin/plugin-conf.d/sensors

/etc/munin/plugin-conf.d/sensorsの中見は以下の通り。

[sensors_*]
user root

プラグインを組み込む。

% sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt
% sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp
% sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan

GitLabの監視

GitHub - MatthiasLohr/munin-plugins-gitlab: Munin-plugins for monitoring a GitLab instanceで提供されているプラグインを利用する。Readmeに従い作業する。

関連するパッケージをインストールする。

% sudo apt install python-psycopg2

プラグインをクローンする。

% cd /usr/local/share
% sudo git clone https://github.com/MatthiasLohr/munin-plugins-gitlab.git
% ls -d munin-plugins-gitlab
munin-plugins-gitlab

プラグインの設定ファイルを作成する。

% sudo touch /etc/munin/plugin-conf.d/gitlab
% sudo vi /etc/munin/plugin-conf.d/gitlab

/etc/munin/plugin-conf.d/gitlabの中見は以下の通り。

[gitlab_*]
user git
env.gitlab_dir /var/opt/gitlab    # optional, defaults to GitLab omnibus package
 setup directory
 
## using a PostgreSQL database
env.db_engine postgresql          # optional, defaults to postgres, valid values
: postgresql. mysql
env.db_dsn host=/var/opt/gitlab/postgresql user=gitlab dbname=gitlabhq_productio
n  # optional, defaults to GitLab omnibus database
env.db_pg_search_path gitlab     # optional, set search_path before executing an
y query. Useful if not using GitLab omnibus package
  
## using a MySQL database
#env.db_engine mysql
#env.db_dsn host=localhost user=gitlab db=gitlabhq_production
  
[gitlab_redis_*]
user gitlab-redis
env.redis_socket /var/opt/gitlab/redis/redis.socket  # optional, defaults to Git
Lab omnibus redis instance
  
[gitlab_total_registry_size]
user registry

自分に必要そうなプラグインを導入する。今回は以下を導入した。

% sudo ln -s /usr/local/share/munin-plugins-gitlab/gitlab_redis_used_memory /etc/munin/plugins/
% sudo  ln -s /usr/local/share/munin-plugins-gitlab/gitlab_total_repo_count /etc/munin/plugins/
% sudo  ln -s /usr/local/share/munin-plugins-gitlab/gitlab_total_repo_size /etc/munin/plugins/
% sudo  ln -s /usr/local/share/munin-plugins-gitlab/gitlab_users /etc/munin/plugins/
% sudo  ln -s /usr/local/share/munin-plugins-gitlab/gitlab_users_active /etc/munin/plugins/

Readmeにかかれているとおりにして、Gitlabで使用しているnginxを監視する。

% sudo mkdir -p /etc/nginx/conf.d/
% sudo touch /etc/nginx/conf.d/status.conf
% sudo vi  /etc/nginx/conf.d/status.conf

/etc/nginx/conf.d/status.confの中見は以下の通り。

server  {
    listen *:80;
    listen [::]:80;
    server_name localhost;
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }
}

/etc/gitlab/gitlab.rb の該当部分を修正する。

# nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/example.conf;"
 nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/status.conf;"

設定を再読込する。

% sudo gitlab-ctl reconfigure

プラグインを導入する。

% ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins
% ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins

munin-nodeを再起動する。

% sudo systemctl restart munin-node

余談:Apacheの監視

% ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
% ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
% ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume