Apache on UNIX based OS pattern causing error message detection Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ProblemServiceNow Store アプリケーション Discovery and Service Mapping Patterns を v1.25.0(またはそれ以前)から v1.28.0(またはそれ 以降)へアップグレードした後、OEM 版 Apache HTTP Server(例: 富士通 Enterprise Apache / FJSVahs、その他ベンダーバンドル版の Apache バイナリ)が稼働する収集対象サーバーにおいて、当該サー バーの OS 監視システムに以下のようなエラーメッセージが記録される 場合があります。 httpd[NNNNNNN]: UX:AHS: ERROR: xxxNNNnn: httpd: could not open configuration file /opt/FJSVahs/conf/httpd.conf: No such file or directory 同一時刻の Discovery ログでは、"Apache on UNIX based OS" パター ンの Step 19(Failover: Get version with sudo for IBM HTTP Server)が以下のコマンドを実行し、ステータス 1 で終了しているこ とが確認されます。 Executing SSH command: . /etc/apache2/envvars; sudo /opt/<ベンダー Apache パス>/bin/httpd -V ... Command failed with status 1. status 1 で終了しているにもかかわらず、Apache のバージョン情報 自体は正常に取得されています(コマンド出力中に "Server version: Apache/..." の行が含まれており、後続のパターンステップも正常に 完了し、CI には期待どおり version 値が設定されます)。 お客様視点での問題は、収集対象サーバー側の syslog/監視システム に記録されるエラーエントリであり、Discovery 機能としては正常に 動作しています。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Discovery 機能への影響はありません。Apache のバージョン情報は 正常に取得され、CI には期待どおり値が設定されます。収集対象サーバー側の syslog ノイズのみが事象です。記録されて いる syslog エントリは、当該ホスト上の Apache バイナリの動作 を正しく反映したものであり、「バイナリにハードコードされた デフォルト httpd.conf パスが、当該ホストのファイル配置と一致 していない」ことを示しています。ベンダーが配置パスを変更して いる Apache インストールでは、これは正常な状態です。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Yokohama / Zurich / Australia Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 原因(既存仕様 — Discovery 側の不具合ではありません)このメッセージは、ServiceNow Discovery ではなく、Apache バイナリ そのものによって出力されます。発生経緯は以下のとおりです。 "Discovery and Service Mapping Patterns" v1.28.0 において、 "Apache on UNIX based OS" パターンが拡張され、CI の version フィールドを自動取得するようになりました(PRB1856888)。バー ジョン取得のために、パターンは Apache 標準のイントロスペク ションコマンドを実行します。 httpd -V OEM/ベンダー版の httpd バイナリ(例:富士通 Enterprise Apache の /opt/FJSVftlo/mpahs/bin/httpd)は、ビルド時にハー ドコードされたデフォルトパスをバイナリ内部に持っています。 実際に本ケースで取得された httpd -V 出力からの抜粋: -D HTTPD_ROOT="/opt/FJSVahs" -D SERVER_CONFIG_FILE="conf/httpd.conf" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D DEFAULT_PIDLOG="logs/httpd.pid" ... Apache バイナリは、-V で起動された場合でも、内部の初期化/ イントロスペクション処理の一部としてビルド時定義の SERVER_CONFIG_FILE(HTTPD_ROOT 配下で解決され、結果として /opt/FJSVahs/conf/httpd.conf)の stat/open を試行します。 当該パスにファイルが存在しない場合(FJSV 系の構成では、実際 の設定ファイルは /opt/FJSVftlo/mpahs/conf/ 配下など、別パス に配置されているのが通常)、OS は "No such file or directory" を返却し、Apache バイナリは対応する "UX:AHS: ERROR" メッセージを syslog に書き出した上で、非ゼロのステー タスで終了します。Discovery は非ゼロ終了コードを検知し、"Command failed with status 1" としてログに記録します。しかし、Apache はファイル stat 失敗の前に "Server version: ..." のビルドバナーを標準 出力へ書き出し済みであるため、Discovery は出力からバージョン 情報を正常に解析でき、パターンは問題なく完走します。 Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Steps to Resolve 事象は Discovery 側(標準の httpd -V を実行)/Apache 側(コン パイル時のデフォルト設定ファイルパスを内部で stat)の双方で仕様 どおりの動作です。OEM 版 Apache バイナリが内部的に参照するパス は Discovery 側から制御できないため、Discovery 側でメッセージ 出力を抑制するパッチ/設定はありません。 syslog のノイズを抑制または排除するためには、収集対象サーバー 側で以下のいずれか(または複数)の対応を実施してください。 方法 A — ファイル不存在が想定どおりであることを確認した上で、 syslog 側で抑制する 当該パスにファイルが本当に存在しないことを確認します。 ls -l /opt/FJSVahs/conf/httpd.conf 実際に稼働中の Apache が読み込んでいる設定ファイルが、別の パスに存在することを確認します。 find / -name httpd.conf 2>/dev/null 富士通 Enterprise Apache の場合、有効な設定ファイルは通常 /opt/FJSVftlo/mpahs/conf/ 配下に配置されており、 /opt/FJSVahs/conf/ ではありません。Discovery ログ自体も、 先行ステップでこの点を裏付けています(例:"file /opt/FJSVftlo/mpahs/conf/httpd.conf was served from cache")。 ファイル不存在が想定どおりであることが確認できた後、当該 メッセージが既知の無害事象であるホストに対して、syslog/監視 システム側で "UX:AHS: ERROR ... could not open configuration file /opt/FJSVahs/conf/httpd.conf" の特定メッセージを抑制 するフィルタルールを追加してください。 方法 B — コンパイル時デフォルトパスに該当ファイル(または シンボリックリンク)を配置する ホスト側ポリシーで syslog 抑制が許容されない場合、OEM バイナリ が期待するパスに実体ファイルまたはシンボリックリンクを配置し、 stat を成功させる対応も考えられます。 # 以下はあくまで例示です。適用前に Apache/OS 管理者と必ず # 確認してください。 sudo mkdir -p /opt/FJSVahs/conf sudo ln -s /opt/FJSVftlo/mpahs/conf/httpd.conf \ /opt/FJSVahs/conf/httpd.conf 注意:これは OEM Apache バイナリを満たすためのホスト側の変更で す。ServiceNow が推奨する対応ではなく、Apache/OS 管理者による 検証が必須です。OEM ビルドの Apache がシンボリックリンクを許容 するか、組織のポリシーで禁止されていないかを確認した上でのみ 適用してください。 方法 C — メッセージがホスト側起因であることをコマンド単体で 確認する このメッセージが Discovery ではなく Apache バイナリ自身によって 出力されていることを確認するには、Discovery が実行しているのと 同じコマンドをホスト上で直接実行してください。 sudo /opt/FJSVftlo/mpahs/bin/httpd -V ServiceNow のコンポーネントを経由しない状態であっても、同じ "UX:AHS: ERROR" メッセージが syslog に出力されることが確認でき ます。これにより、事象がホスト/バイナリ側に起因することが切り 分けられます。