New Relic Now+ New Relic’s most transformative platform update yet with 20+ product launches.
Watch the event on-demand now.
プロセス起動監視アラートの作成

New Relicのアラートコンディションでは、信号喪失の設定を使ってプロセスが停止したことやインスタンスが停止したことを行っていただけます。ただし、この設定は停止したことが検出できることとなり、ホスト起動時に起動していないことを検出することはできません。プロセスがホスト起動後に正常に起動し、起動し続けることを確認するためのアラートコンディションの例をご紹介します。

今回は、httpdというプロセスを例にした、アラートのNRQLクエリーは以下のようになります。

FROM SystemSample, ProcessSample 
SELECT filter(count(*), WHERE eventType() = 'ProcessSample' AND processDisplayName = 'httpd' ) 
FACET entityGuid 
WHERE hostname = 'myHost' 

クエリーの主なポイントは、以下の3つになります。

  1. FROM句SystemSample, ProcessSampleの両方を記載している
  2. filterを使って対象のProcessSampleの数を集計する
  3. FACET句entityGuidを指定して同じホスト上のデータを同一のシグナルにて処理している

New Relicのアラートは、ストリーミング・アラートとなっており、集計対象のデータが存在して初めて集計が動作します。プロセスが起動していない場合、対象のProcessSampleのイベントもありません。そのためアラートの集計を行うために何らか追加のデータが必要となりますが、何でも良いというわけにはいきません。そのため、同一ホストのSystemSampleProcessSampleがない状態でも集計を動作させるために利用します。そのため、FROMにSystemSample追加し、FACET句でentityGuidを指定しています。また、集計としては、対象のProcessのProcessSampleのみを集計したいため、filter()を使っています。

上記クエリーを設定の上、しきい値の設定で equal to 0 あるいは、below or equal to 0 に設定すれば、基本的には他の項目は任意でも、プロセスが起動しなかった場合にアラートを発生させていただくことができるかと思います。

また、その他追加で設定したほうが良いと思われる項目も記載します。

Evaluation delay

対象のシグナルの判定開始を遅らせる設定です。ホスト起動直後は不安定なことがあり、誤判定する可能性があるので、こちらを有効にして、少し判定開始を遅らせることをおすすめします。

Open new "lost signal" incident. Notification sent based on issue creation preference

信号喪失時にIncidentを発生させるための設定です。プロセス監視の観点では不要ですが、ホスト自体が予期せぬ終了をした場合に、Incidentを発生させたい場合は、有効にするとよいかと思われます。

なお、 Do not open "lost signal" incident on expected termination の設定も合わせて有効化していただくことを推奨します。対応しているOSをご利用の場合は、正常終了時に信号喪失による違反検出を発生させないようにしていただけます。

for at least

また、その他しきい値の設定で、「at least once in」と「for at least」の設定がありますが、こちら、「for at least」にして、Window durationに対して少し長めに設定することをおすすめします。こちらが短い場合、シャットダウン時にホストより先にプロセスが終了した場合に誤検出が発生するリスクがあるかと思われます。

アラートの具体的な設定例

最後に参考までに、全体の設定内容の例を以下に記載します。

基本的にはNRQLクエリーのプロセス名を変更したり、WHERE句(filter()内のWHEREではなく外側のWHERE)で監視対象を絞ったりして頂ければそのまま使っていただけると思います。お客様の要件により、カスタマイズしてご利用ください。