Prometheus: Linuxからメトリクスを取得する
Node Exporterを使用してPrometheusでLinuxサーバーのメトリクスを取得する方法
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供するPrometheusクラウドソリューションを提供しています。主な利点は以下の通りです:
Alert Managerが含まれており、Slack、Mattermost、PagerDutyなどにアラートを送信できます。- 無制限のメールアラートを送信できる専用メールサーバー。
BlackboxでHTTP、ICMP、TCPなどをプローブ。- オンライン設定ファイルエディタによる簡単な設定。
- ワンクリックでの手間いらずの更新。
- プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティ。
時間を節約し、生活を簡素化:StackheroのPrometheusクラウドホスティングソリューションを試すのに5分しかかかりません!
Prometheus Node Exporterとは
Node Exporterは、*NIXカーネル(Linux、OpenBSD、FreeBSD、またはDarwin)にインストールして、Prometheusにシステムメトリクスを公開するためのソフトウェアです。サーバーのパフォーマンスとインフラの健全性を監視するための重要なコンポーネントです。
Prometheusの用語では、Node Exporterはエクスポーターとして機能し、Prometheusの設定でターゲットとして追加されます。Prometheusは、HTTPを介して定期的にTCPポート9100を使用してNode Exporterに接続し、メトリクスを取得します。
要約すると、Node ExporterはLinuxベースのシステムを監視することができます。 Windowsシステムの場合は、Windows Exporterを使用できます。
Stackhero for Prometheusの全体図
LinuxサーバーにPrometheus Node Exporterをインストールする
Node Exporterは、そのGitHubリリースページからダウンロードできます。これは、システム上で直接実行されるバイナリとして配布されています。継続的に実行されるように設計されているため、サーバーの起動時に自動的に起動するように設定することをお勧めします。
デフォルトでは、Node Exporterは認証や暗号化なしでポート9100を世界に公開します。認証とTLS暗号化(以下参照)を追加し、ファイアウォールを設定してポート9100へのアクセスを制限し、Prometheusサーバーまたは他の許可されたIPアドレスのみが接続できるようにすることを強くお勧めします。
UbuntuにPrometheus Node Exporterをインストールする方法
Ubuntuで以下の手順を実行できます:
# 最新のバージョン番号を取得するには、https://github.com/prometheus/node_exporter/releasesにアクセスしてください。
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"
# node_exporterをダウンロードしてインストールする
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v${node_exporter_version}/node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
tar xvfa node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
sudo mv node_exporter-${node_exporter_version}.${node_exporter_release}/node_exporter /usr/local/bin/
rm -rf node_exporter-${node_exporter_version}.${node_exporter_release} node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
# "node_exporter"というユーザーを作成する
sudo useradd -rs /bin/false node_exporter
# 起動時にnode_exporterを自動的に開始するsystemdサービスを作成する
sudo bash -c 'cat << EOF > /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.config=/etc/prometheus_node_exporter/configuration.yml
[Install]
WantedBy=multi-user.target
EOF'
# 設定ディレクトリとファイルを作成する
sudo mkdir -p /etc/prometheus_node_exporter/
sudo touch /etc/prometheus_node_exporter/configuration.yml
sudo chmod 700 /etc/prometheus_node_exporter
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
# node_exporterデーモンを開始し、そのステータスを確認する
sudo systemctl start node_exporter
sudo systemctl status node_exporter
この時点で、node_exporterバイナリはサーバー上で実行されているはずです。動作を確認するには、接続してメトリクスが返されるか確認できます:
curl http://localhost:9100/metrics
Node Exporterはポート9100をパブリックネットワークに公開します。つまり、誰でも接続してサーバーのメトリクスを取得できます! 最低限、認証とTLS暗号化を追加し(以下参照)、Prometheusサーバー以外のIPからのポート9100へのリクエストをブロックするファイアウォールを設定することを強くお勧めします。
DebianにPrometheus Node Exporterをインストールする方法
DebianでのNode Exporterのインストールプロセスは、上記のUbuntuの方法と同じです。同じ手順に従ってください。
他のシステムにPrometheus Node Exporterをインストールする方法
Node Exporterのインストール手順は、使用するシステムによって異なります。すべてのプラットフォームの詳細なドキュメントは提供されていませんが、基本的な手順は、システムに合ったバイナリをダウンロードし、起動時に開始するように設定することです。
Prometheus Node Exporterに認証を追加する
デフォルトでは、Node Exporterは認証を行わないため、誰でも公開されたメトリクスを取得できます。アクセスを保護するために、ユーザーに対して基本認証を追加できます。
ランダムパスワードの生成
次のコマンドを使用してパスワードを生成します:
password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Prometheusサーバー用に保持するクリアパスワード: ${password}"
htpasswdバイナリがない場合は、apt-get install --no-install-recommends apache2-utilsを使用してDebian/Ubuntuにインストールできます。
クリアパスワードを安全に保管してください。Prometheusの設定時に必要になります。
ユーザーの追加とNode Exporterの再起動
生成されたパスワードハッシュを持つ"prometheus"というユーザーを追加するために、設定ファイルに次の行を追加します:
sudo cat << EOF >> /etc/prometheus_node_exporter/configuration.yml
basic_auth_users:
prometheus: ${passwordHashed}
EOF
# Node Exporterを再起動する
sudo systemctl restart node_exporter
最後に、認証が正しく機能していることを確認します:
curl http://localhost:9100/metricsを実行すると"Unauthorized"が返されるはずです。curl -u prometheus:${password} http://localhost:9100/metricsを実行するとメトリクスのリストが返されるはずです。
Prometheus Node ExporterにTLS暗号化を追加する
デフォルトでは、Node Exporterは通信を暗号化しません。これにより、前述のパスワードを含む資格情報が平文で送信されます。通信を保護するために、次のようにTLS暗号化を有効にできます。
TLS証明書の作成
次のコマンドを実行してTLS証明書とキーを作成します:
# TLS証明書を作成する
cd /tmp
sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
-keyout /etc/prometheus_node_exporter/tlsCertificate.key \
-out /etc/prometheus_node_exporter/tlsCertificate.crt \
-subj "/CN=`hostname`" \
-addext "subjectAltName = DNS:`hostname`"
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
設定の更新
TLS設定を追加するために設定ファイルに次の行を追加し、Node Exporterを再起動します:
sudo cat << 'EOF' >> /etc/prometheus_node_exporter/configuration.yml
tls_server_config:
cert_file: /etc/prometheus_node_exporter/tlsCertificate.crt
key_file: /etc/prometheus_node_exporter/tlsCertificate.key
EOF
# Prometheus Node Exporterを再起動する
sudo systemctl restart node_exporter
次のコマンドを使用してHTTPS経由で接続することでTLSがアクティブであることを確認できます:
curl -k -u prometheus:${password} https://localhost:9100/metrics
この方法はCA証明書を使用しないため、cURLで証明書検証をバイパスするために"-k"オプションを渡す必要があります。
Prometheusサーバーを設定してNode Exporterからデータを取得する
Node Exporterをインストールして保護した後、Prometheusサーバーを設定して定期的にメトリクスを取得します。
Stackheroで、Prometheusサービスを選択し、「Prometheus configuration」URLに移動します。次に、scrape_configsセクションに以下を追加します:
scrape_configs:
- job_name: "My servers pool"
static_configs:
- targets: [ "<yourLinuxServerDomain>:9100" ]
basic_auth:
username: "prometheus"
password: "<password>"
scheme: https
tls_config:
insecure_skip_verify: true
# "instance"をリラベルして":9100"部分を削除する
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '([^:]+)(:[0-9]+)?'
replacement: '${1}'
ファイルを保存し、Prometheusのログを確認して正常にリロードされたことを確認します(StackheroダッシュボードからPrometheusサービスを選択し、「Logs」タブをクリックしてログを表示できます)。
最後に、StackheroダッシュボードのPrometheus UIにアクセスし、Status > Targetsに移動して、Prometheusがメトリクスを取得していることを確認します。LinuxサーバーがターゲットリストにUPとして表示されるはずです。
ターゲット"myLinuxServer"がUPです
Prometheusでデータを表示する
Node Exporterから取得したメトリクスを表示するには、Stackheroダッシュボードを介して「Prometheus UI」URLを使用してPrometheusにログインするか、直接https://<prometheusDomain>/にアクセスします。
「Expression」フィールドにnode_memory_MemTotal_bytesと入力し、Enterキーを押します。すべてが正しく構成されている場合、サーバーの合計RAMがバイト単位で表示されます。
このサーバーの合計RAMは4068794368バイトで、3.78GBです
Grafanaを設定してNode Exporterから取得したPrometheusデータを表示する
Grafanaは、Prometheusデータに基づいてダッシュボードを簡単に生成できます。Grafanaを設定してPrometheusデータを表示する詳細な手順については、Grafanaのドキュメントを参照してください。
Prometheus Node Exporterデータに基づいてGrafanaが生成したダッシュボードの例