著者:清水 赳
こんにちは、香川大学修士1年の清水です。2年ぶりの登板です。
今回から2回にわたり、OSSのシステム監視ツール「Prometheus」と「Itamae」というプロビジョニングツールを使って、サーバー監視システムを構築する方法を紹介します。今回は、Prometheusの配備とサーバー稼働状況の簡単な可視化について解説します。
シェルスクリプトマガジン Vol.63は以下のリンク先でご購入できます。
図5 「./cookbooks/prometheus/default.rb」ファイルに記述する内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
url_head = "https://github.com/prometheus/prometheus/releases/download" url_ver = "v2.13.1" origin_dir = "Prometheus-2.13.1.linux-amd64" install_dir = "/usr/local/bin" config_dir = "/etc/prometheus" ## Prometheusをダウンロードする execute "download prometheus" do cwd "/tmp" command "wget #{File.join(url_head, url_ver, origin_dir)}.tar.gz" end ## Prometheusを展開する execute "extract prometheus" do cwd "/tmp" command "tar xvfz #{origin_dir}.tar.gz" end ## Prometheusを所定のディレクトリに配置 execute "install prometheus" do cwd "/tmp" command "mv #{File.join(origin_dir, "prometheus")} #{install_dir}" end ## Systemd設定ファイルの転送 remote_file "/etc/systemd/system/prometheus.service" do owner "root" group "root" source "files/etc/systemd/system/prometheus.service" end ## Prometheusの設定ファイルを配置する remote_directory "/etc/prometheus" do owner "root" group "root" source "files/etc/prometheus" end ## Prometheusサービスの開始 service "prometheus" do action :restart end |
図6 「./cookbooks/prometheus/etc/systemd/system/prometh
eus.service」ファイルに記述する内容
1 2 3 4 5 6 7 8 9 10 11 |
[Unit] Description=Prometheus [Service] ExecStart=/usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles/ \ --web.console.libraries=/etc/prometheus/console_libraries/ [Install] WantedBy=multi-user.target |
図8 「./cookbooks/node_exporter/default.rb」ファイルに記述する内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
url_head = "https://github.com/prometheus/node_exporter/releases/download" url_ver = "v0.18.1" origin_dir = "node_exporter-0.18.1.linux-amd64" install_dir = "/usr/local/bin" ## node_exporterをダウンロードする execute "download node_exporter" do cwd "/tmp" command "wget #{File.join(url_head, url_ver, origin_dir)}.tar.gz" end ## node_exporterを展開する execute "extract node_exporter" do cwd "/tmp" command "tar xvfz #{origin_dir}.tar.gz" end ## node_exporterを所定のディレクトリに配置 execute "install node_exporter" do cwd "/tmp" command "mv #{File.join(origin_dir, "node_exporter")} #{install_dir}" end ## Systemd設定ファイルの転送 remote_file "/etc/systemd/system/node_exporter.service" do owner "root" group "root" source "files/etc/systemd/system/node_exporter.service" end ## node_exporterサービスの開始 service "node_exporter" do action :restart end |
図9 「./cookbooks/node_exporter/etc/systemd/system/node
_exporter.service」ファイルに記述する内容
1 2 3 4 5 6 7 8 |
[Unit] Description=NodeExporter [Service] ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target |
図10 「./cookbooks/prometheus/files/etc/prometheus/prome
theus.yml」ファイルの編集内容
1 2 3 4 5 6 7 8 9 |
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # ここから下を追加 - job_name: 'node' static_configs: - targets: ['192.168.100.12:9100'] |