サーバーに mackerel-agent をインストールしてもホストが登録されない場合は、このページの内容を確認してください。
mackerel-agent が起動しているか
mackerel-agent のサービスが起動しているか確認してください。サービスが起動していない場合は起動をお試しください。
サービス状態の確認方法
- Linux の場合
- sudo systemctl status mackerel-agent
- 「Active: active (running)」になっているか
- sudo systemctl status mackerel-agent
- Windows の場合
- コントロールパネル > 管理ツール > サービス
- mackerel-agent の状態が「実行中」になっているか
- コントロールパネル > 管理ツール > サービス
次に行うこと
- サービスの起動に失敗したり、サービスを起動してもすぐに停止したりする場合
- 「設定内容に問題がないか」以降を確認してください。
- サービスが起動しているにもかかわらず、ホストが登録されない場合
- mackerel-agent.conf に記載されている apikey の値が、登録先オーガニゼーションの API キーであるかを確認してください。異なる場合は API キーを登録先オーガニゼーションで発行した正しいものに差し替え、mackerel-agent を再起動してください。
- API キーには Read および Write 権限が必要です。
- API キーが異なる場合、別のオーガニゼーションにホストが登録されている可能性があります。誤って登録されたホストは退役してください。
- API キーに問題がない場合は「エラーが発生していないか」以降を確認してださい。
- mackerel-agent.conf に記載されている apikey の値が、登録先オーガニゼーションの API キーであるかを確認してください。異なる場合は API キーを登録先オーガニゼーションで発行した正しいものに差し替え、mackerel-agent を再起動してください。
設定内容に問題がないか
mackerel-agent.conf ファイルの内容に問題がある場合はサービスの起動に失敗します。以下の手順でmackerel-agent.conf ファイルの内容をチェックしてください。
mackerel-agent.conf のチェック方法
- Linux 環境
- sudo mackerel-agent configtest
- Windows 環境
- コマンドプロンプトを起動
- ディレクトリの移動
- mackerel-agent のバージョンが 0.68.0 以降の場合
- cd /d C:\Program Files\Mackerel\mackerel-agent
- mackerel-agent のバージョンが 0.67.1 以前の場合
- cd /d C:\Program Files (x86)\Mackerel\mackerel-agent
- mackerel-agent のバージョンが 0.68.0 以降の場合
- mackerel-agent configtest を実行
設定内容に問題がない場合は SUCCESS と出力されます。設定内容に問題がある場合は failed to test config に続いてエラーメッセージが表示されますので、エラーメッセージに従ってファイルの内容を修正し、mackerel-agent の起動をお試しください。
通信が許可されているか
mackerel-agent は「サービスがホストされているIPアドレスとポート番号を教えて下さい」に記載の IP アドレスに対して、443 番ポートの通信を行います。通信できない場合はホストの登録ができませんので、通信を許可してください。
エラーが発生していないか
ここまでの内容で解決できない場合は「mackerel-agentのログを取得する」の内容を参考に mackerel-agent のログを確認してください。後述のエラーメッセージを含むログが出力されている場合は、エラーの内容に応じた対処を行ってください。
ホスト ID が重複している
- エラーメッセージ
- failed to find this host on mackerel (You may want to delete file "idファイルのパス" to register this host to an another organization)
- 原因
- Mackerel がホストを識別するための id は、ホストの初回登録時にサーバーにファイルとして保存されます。一度退役したホストを id ファイルが残ったままで再度ホスト登録する場合や、すでにホストとして登録済みのサーバーを複製して、別のホストとして登録する場合などに発生します。
- 対処方法
- id ファイルを削除して mackerel-agent を再起動します(新規のホストとして登録されます)。id ファイルの保存場所は以下の通りです。
- Linux の場合
- /var/lib/mackerel-agent/id
- Windows の場合
- mackerel-agent バージョン 0.68.0 以降
- C:\Program Files\Mackerel\mackerel-agent\id
- mackerel-agent バージョン 0.67.1 以前
- C:\Program Files (x86)\Mackerel\mackerel-agent\id
- mackerel-agent バージョン 0.68.0 以降
- Linux の場合
- id ファイルを削除して mackerel-agent を再起動します(新規のホストとして登録されます)。id ファイルの保存場所は以下の通りです。
ホスト ID と custom_identifier の不整合が発生している
- エラーメッセージ
- custom identifiers mismatch: this host = "custom_identifier", the host whose id is "既存ホストの ID" on mackerel.io = "別ホストの custom_identifier" (File "idファイルのパス" may be copied from another host. Try deleting it and restarting agent)
- 原因
- Amazon EC2、Azure Virtual Machine、Google Compute Engine において、ホスト登録を行ったことがある仮想マシンの複製や、ホスト登録を行ったことがある仮想マシンのイメージから仮想マシンを起動して、新たにホスト登録を行おうとした場合に発生します。
- 対処方法
- id ファイルを削除して mackerel-agent を再起動します(新規のホストとして登録されます)。
- ホスト登録を行ったことがあるサーバーを複製する際は、複製されたサーバーの id ファイルを削除してから mackerel-agent を起動するようにしてください。
- ホスト登録を行ったことがあるサーバーのマシンイメージを作成する際は、マシンイメージに id ファイルを含まないように注意してください。
- custom_identifier とは
- Amazon EC2、Azure Virtual Machine、Google Compute Engine の仮想マシンでは、ホスト ID の他にホストごとに一意の custom_identifier という識別子が生成されます。custom_identifier にはインスタンス ID など固有の情報が値として使用されます。そのため、複製されたサーバーの custom_identifier は必ず複製元のサーバーと異なる値になります。Mackerel ではホスト ID と custom_identifier を紐づけて管理しており、複製元のサーバーの id ファイルが残っていると、ホスト ID と custom_identifier の不整合が発生し、mackerel-agent の起動に失敗します。
名前解決に失敗している
- エラーメッセージ
- dial tcp: lookup api.mackerelio.com: no such host
- dial tcp: lookup api.mackerelio.com on IPアドレス:53: server misbehaving
- 原因
- mackerel-agent の通信先である Mackerel の API エンドポイントの名前解決に失敗した場合に発生します。
- 対処方法
- mackerel-agent が Mackerel の API エンドポイントの名前解決を行える状態にしてください。
- Mackerel の API エンドポイントは以下の通りです。
- api.mackerelio.com
- kcps-mackerel.io(KCPS 環境)
ネットワークに問題がある
- エラーメッセージ
- context deadline exceeded (Client.Timeout exceeded while awaiting headers)
- 原因
- mackerel-agent から Mackerel の API エンドポイントに対する通信がタイムアウトした場合に発生します。
- 対処方法
- Mackerel の API エンドポイントに対して通信可能な状態か確認してください。プロキシサーバーが必要なネットワーク環境においては、mackerel-agent.conf の proxy を設定してください。
プロキシサーバーとの通信に失敗している
- エラーメッセージ
- proxyconnect tcp: dial tcp: lookup プロキシサーバー名: no such host
- proxyconnect tcp: dial tcp IPアドレス:ポート番号: connect: connection refused
- 原因
- mackerel-agent がプロキシサーバーとの通信に失敗した場合に発生します。
- 対処方法
- mackerel-agent.conf の proxy に指定したプロキシサーバーの名前解決ができるか、プロキシサーバーが停止していないかなど、プロキシサーバーが利用可能な状態であることを確認してください。
API キーが正しくない
- エラーメッセージ
- API request failed: Authentication failed. Please try with valid Api Key.
- 原因
- API キーが正しくない場合に発生します。
- 対処方法
- mackerel-agent.conf に 記載されている apikey の値が、登録先オーガニゼーションの API キーであるかを確認してください。異なる場合は API キーを登録先オーガニゼーションで発行した正しいものに差し替え、mackerel-agent を再起動してください。
- API キーには Read および Write 権限が必要です。
- mackerel-agent.conf に 記載されている apikey の値が、登録先オーガニゼーションの API キーであるかを確認してください。異なる場合は API キーを登録先オーガニゼーションで発行した正しいものに差し替え、mackerel-agent を再起動してください。