Web Server Agent インストール
Web Server Agent(exem-webserver-agent)は、Nginx・ApacheのWebサーバーのパフォーマンス指標を収集してエクセムワン収集サーバー(Receiver)に送信するモニタリングエージェントです。
Webサーバーモニタリングは2つの構成要素で成り立ちます。
- Web Server Agent — 収集サーバー(Receiver)と通信する中間エージェントです。BinaryまたはDocker方式でインストールします。
- Web Module — Webサーバーに直接搭載され、データを収集してWeb Server Agentに送信するモジュールです(Nginx ModuleまたはApache Module)。
[Nginx/Apache] ←→ [Web Module] → (TCP 12848) → [Web Server Agent] → (gRPC 9009) → [Receiver]
サポート環境
| 項目 | 内容 |
|---|---|
| OS | Linux |
| Runtime | JDK 17以上 (v3.0.20+はJRE内蔵配布のため別途インストール不要) |
| Platform | On-premise Docker |
| Library | protobuf-java juniversalchardet 1.0.3 Gson 2.10.1 gRPC 1.62.2 |
| Protocol | gRPC 9009 → Receiver module → webserver-agent TCP 12848 |
| Other | 1 agent ↔ N module(worker数に応じて調整) |
nginxモジュールのサポート環境
| 項目 | 内容 |
|---|---|
| OS | Linux Alpine Linux |
| Arch | 64bit |
| Protocol | module → webserver-agent TCP 12848 (exem_connect_ip(agent IP) / exem_connect_port(デフォルト12848)を設定) metric収集: webserver-agent → nginx TCP 12849 (nginx serverブロックのlisten(デフォルト12849)・server_name(自ホストIP)・location(/exem/v1/metrics、stub_status_exem)が、nginx起動時にmoduleを通じてagentに自動的に伝達されます — 実際のサーバー環境に合わせて正確に入力する必要があります。デフォルトは127.0.0.1:12849/exem/v1/metrics。listenポートのファイアウォール確認が必要です) |
| Target | 1.14.1 / 1.14.2 1.16.1 1.18.0 1.20.1 1.24.0 1.25.0 1.27.0 1.28.0 1.29.0 ~ 1.29.3 1.28.2(v3.0.10以上) 1.29.4 ~ 1.29.7 / 1.30.0 / 1.30.1 / 1.31.0(v3.0.10.4以上) 1.29.8 / 1.30.2 / 1.31.1(v3.0.10.5以上) |
| Other | --with-compat --with-http_stub_status_module バージョン別専用.soを提供(例: ngx_http_exem_module_1.18.0.so) nginxバージョンと.soバージョンの一致が必要 ビルドフラグが一致しない場合、not binary compatibleエラーが発生 nginx -Vに--with-compatが含まれていない場合、カスタムビルド後に配布が必要 |
httpdモジュールのサポート環境
| 項目 | 内容 |
|---|---|
| OS | Linux Oracle Solaris (SunOS) |
| Arch | 64bit |
| Protocol | module → webserver-agent TCP 12848 (ExEmConnectIP(agent IP) / ExEmConnectPort(デフォルト12848)を設定) metric収集: webserver-agent → httpd TCP 12849 (ExEmMetricAddr(デフォルト127.0.0.1:12849) + ExEmMetricLocation(/exem/v1/metrics)。httpd側のListen 12849 + VirtualHostのSetHandler exem-metrics設定が必要です。listenポートのファイアウォール確認が必要です) |
| Target | Apache httpd 2.4 |
| Prereq | httpd.confにIncludeディレクティブを追加 |
| Other | mod_exem_24_linux_64.so .binインストーラー(interactive / silent / default) |
通信ポート
インストール前にファイアウォールで以下の2つのポートを開放しておく必要があります。
| 方向 | ポート | プロトコル | 用途 |
|---|---|---|---|
| Web Server Agent → Receiver | 9009 | gRPC | 収集データの送信 |
| Web Module → Web Server Agent | 12848 | TCP | モジュール → エージェントのデータ送信 |
エージェントを登録する
Web Server Agentをインストールする前に、エクセムワンのWeb UIでエージェントを先に登録しておく必要があります。登録時に発行されるエージェントIDとアクセストークンはインストール段階で必要になるため、必ず記録しておいてください。
- 左側メニューで[プロフィール > 環境設定]に移動します。
- [管理 > エージェント]メニューを選択します。
- 上部の[エージェント追加]ボタンをクリックします。
- エージェントタイプを「Webサーバー」として選択し、エージェント名を入力します。
- [更新]ボタンをクリックして、エージェントIDとアクセストークンを発行します。
- [保存]ボタンをクリックします。
エージェント一覧に新しい項目が表示されれば登録完了です。
インストール方法
Web Server AgentはDockerとBinaryの2つの方式でインストールできます。環境に合った方式を選択してください。
| インストール方式 | 適合環境 | 必須条件 |
|---|---|---|
| Docker | Docker環境 | Dockerのインストール |
| Binary | 物理サーバー、VM環境 | JDK 17以上 |
Dockerでインストールする
exem-webserver-agent-package.tar.gzファイルを解凍します。Dockerイメージをロードします。
docker load -i exemone-webserver-agent-v3.0.12.tar.gzexem-webserver-agent-package/.envファイルを開いて実行環境を設定します。# 実行ユーザーID
EXEMONE_USER_UID=1000
EXEMONE_USER_GID=1000
# パッケージ実行パス
EXEMONE_WEBSERVER_AGENT_PATH=exem-webserver-agent-package
# Dockerイメージおよびバージョン
WEBSERVER_AGENT_IMAGE=maxgauge/exemone-webserver-agent
WEBSERVER_AGENT_VERSION=v3.0.16exem-webserver-agent-package/configs/.envファイルを開いてエージェント情報を入力します。エージェント登録時に発行された値を使用します。WEB_AGENT_NAME=<エージェント名>
WEB_AGENT_ID=<エージェントID>
WEB_AGENT_ACCESS_TOKEN=<アクセストークン>
WEB_AGENT_RECEIVER_ADDR=<Receiver IP>:9009exem-webserver-agent-package/docker-compose.ymlのports項目に12848ポートを追加します。インストールスクリプトに実行権限を付与します。
chmod +x exem-webserver-agent-package/install.shWeb Server Agentを起動します。
cd exem-webserver-agent-package
./scripts/restart.sh
コンテナが正常に起動すればインストール完了です。
Binaryでインストールする
JDK 17以上がインストールされている必要があります。JDK 17未満の環境では、同梱されているzulu17パッケージを先にインストールしてください。
exem-webserver-agent_${VERSION}.binインストールファイルを準備します。実行権限を付与します。
chmod +x exem-webserver-agent_${VERSION}.binインストールファイルを実行します。
./exem-webserver-agent_${VERSION}.binインストールメニューで[1]を入力してインストールを開始します。JAVA 17以上がインストールされているかの確認プロンプトで[y]を入力します。
エージェント情報入力プロンプトで、エージェント登録時に発行されたToken、Agent ID、Agent Name、Receiver IPを入力します。
インストールディレクトリを入力します。入力したパスの下に
webserverフォルダが自動的に作成されます。インストールが完了したら、
<インストールパス>/webserver/bin/ディレクトリでエージェントを起動します。./startAgent.sh
startAgent.shに入力した情報が自動的に反映されていれば、インストール完了です。
設定方法
Web Server Agentのインストール後、モニタリング対象のWebサーバーにWeb Moduleをインストールして設定します。
Nginxモジュールを設定する
- Nginxがインストールされている必要があります。
- Web Server Agentが起動している必要があります。
- サポートするNginxバージョン: 1.14.1, 1.14.2, 1.18.0, 1.20.1, 1.24.0, 1.27.0, 1.28.0
Nginxのバージョンを確認します。
nginx -Vsetup_exem-nginx-module_{Version}.binインストールファイルを実行します。./setup_exem-nginx-module_{Version}.binインストール中に以下の項目を入力します。
プロンプト 入力値 Install Nginx Version モニタリング対象のNginxバージョン Install Directory インストールパス(デフォルト値: /home/exemone/nginx-module)nginx module config filename 設定ファイル名(デフォルト値: exem_ngx_mod.conf)Do you want to fix the 'unique id'? yesを推奨。固定しない場合、Nginx再起動時に新しい項目として登録されますGroup ID to register 使用するグループID Module Name to register 画面に表示するWebサーバー名(デフォルト値: hostname) インストール完了後に出力される
nginx.conf追加案内を確認し、モニタリング対象Nginxのnginx.confに以下の内容を追加します。load_module "<インストールパス>/modules/ngx_http_exem_module_<バージョン>.so";
http {
include <インストールパス>/conf/exem_ngx_mod.conf;
}<インストールパス>/conf/exem_ngx_mod.confファイルでWeb Server Agent IPを設定します。Web Server Agentが別のサーバーにある場合のみ変更が必要です。exem_connect_ip <Web Server Agent IP>;
# exem_connect_port 12848; # デフォルト値を使用する場合はコメントのままNginxを再起動します。
nginx -s reload
Nginx実行中にモジュール互換性エラーが発生した場合は、以下のコマンドを実行してください。
setenforce 0
Nginx Masterがroot、Workerがnginxで実行されている環境では、nginxモジュールをroot権限でインストールして実行する必要があります。
Nginx Module 設定オプション
| オプション | デフォルト値 | 説明 |
|---|---|---|
exem_unique_id | Random | Webサーバーを1つの項目としてまとめるID。未設定の場合、再起動のたびに新しい項目として登録されます |
exem_group_id | なし | 画面で登録されたグループID |
exem_module_name | hostname | 画面に表示されるWebサーバー名 |
exem_bid | hostname | 連携するホストエージェントと同じ値に設定する必要があります |
exem_log_level | none | ログレベル(none < error < warning < info < debug) |
exem_log_path | logs/mod.log | ログファイルパス |
exem_log_max_size | 10 | ログファイルの最大サイズ(MB)。超過すると新規作成されます |
exem_connect_ip | 127.0.0.1 | Web Server Agent IP |
exem_connect_port | 12848 | Web Server Agentポート |
Apacheモジュールを設定する
- Apache 2.4がインストールされている必要があります。
- Web Server Agentが起動している必要があります。
Apacheのバージョンを確認します。
apache2 -v # Debian/Ubuntu
httpd -v # Red Hat系setup_exem-httpd-module_{Version}.binインストールファイルを実行します。./setup_exem-httpd-module_{Version}.binインストール中に以下の項目を入力します。
プロンプト 入力値 Install HTTPD Version 2.4Install Directory インストールパス ExEm Connect IP Web Server Agent IP(デフォルト値: 127.0.0.1)ExEm Connect Port Web Server Agentポート(デフォルト値: 12848)Group ID to register 使用するグループID Module Name to register 画面に表示するWebサーバー名(デフォルト値: hostname) Do you want to fix the 'unique id'? yesを推奨インストール完了後に出力される
httpd.conf追加案内を確認し、モニタリング対象Apacheの設定ファイルに以下の内容を追加します。# exem module
Include <インストールパス>/conf/exem_httpd_mod.confApache設定ファイルの場所は環境によって異なります。
環境 設定ファイルパス Debian/Ubuntu /etc/apache2/apache2.confRed Hat系 /etc/httpd/conf/httpd.confApacheを再起動します。
apachectl graceful
Apache Module 設定オプション
| オプション | デフォルト値 | 説明 |
|---|---|---|
ExEmUniqueID | Random | Webサーバーを1つの項目としてまとめるID。未設定の場合、再起動のたびに新しい項目として登録されます |
ExEmGroupID | "default" | 収集対象として管理されるグループID |
ExEmModuleName | hostname | 画面に表示されるWebサーバー名 |
ExEmBID | hostname | ホストエージェントとの連携に必要なID |
ExEmDump | false | デバッグ用パケットダンプオプション |
ExEmConnectIP | 127.0.0.1 | Web Server Agent IP |
ExEmConnectPort | 12848 | Web Server Agentポート |
ExEmConnectReconnectSec | 5 | 接続切断時の再接続待機時間(秒) |
ExEmLogPath | logs/mod_exem.log | ログファイルパス |
ExEmLogLevel | info | ログレベル(none < error < warning < info < debug) |
ExEmLogMaxSize | 10 | ログファイルの最大サイズ(MB)。超過すると新規作成されます |
ExEmMetricAddr | 127.0.0.1 | エージェントのメトリック収集接続アドレス |
ExEmMetricLocation | 12829 | エージェントのメトリック収集接続URI |
CPU/メモリ指標を連携する
Webサーバー画面でProcess CPU、Process Memoryなどのプロセス使用量を併せて確認するには、Web Moduleとホストエージェントの BID を同じ値に設定する必要があります。
Web Moduleがインストールされているサーバーにhost-agentがインストールされている必要があります。
Web Module設定ファイルでBIDを設定します。
- Nginx:
exem_ngx_mod.confのexem_bidオプション - Apache:
exem_httpd_mod.confのExEmBIDオプション
- Nginx:
host-agent設定ファイルで同一のBID値を設定します。
設定が完了すると、Webサーバー画面のMetricタブでProcessタグが付いたCPU・Memory指標を確認できます。
infrastructureに同一のhostnameが既に存在する場合、hostnameの代わりに固有のBID値を直接指定しないと、連携が正常に行われません。