セマンティック・クラスタリングの例

nlpコマンドを使用して、文字列フィールドからキーワードを抽出したり、抽出したそれらのキーワードに基づいてレコードをクラスタ化したりできます。キーワード抽出は、カスタムNLPディクショナリを使用して制御できます。ディクショナリを指定しない場合、デフォルトのOracle定義ディクショナリが使用されます。

Linux Syslogログのカーネル・エラーのクラスタ化

次の問合せは、Linux Syslogログのカーネル・メッセージをクラスタ化します:

'Log Source' = 'Linux Syslog Logs' and kernel
| link cluster()
| where 'Potential Issue' = '1'
| nlp table = 'iSCSI Errors' cluster('Cluster Sample') as 'Cluster ID',
              keywords('Cluster Sample') as Summary
| sort 'Cluster ID'

前述の問合せで:

  • link cluster()は、従来のクラスタを実行し、Cluster Sampleフィールドを返します。

  • nlp cluster('Cluster Sample')は、各Cluster Sampleを処理し、クラスタIDを割り当てます。同様の意味を持つメッセージは、同じクラスタIDを取得します。

  • keywords('Cluster Sample')は、クラスタリングで使用されるキーワードを抽出します。これは、Summaryフィールドに返されます。

次の図は、返されたリンク結果を示しています:


カーネル・エラーに対するlinux syslogログのセマンティック・クラスタリング

  • 1行目と2行目は、類似していないため、異なるクラスタIDを取得します。

  • 3行目と4行目は、クラスタ・サンプルが類似しています。これは、Summaryフィールドに抽出されたキーワードの重複で確認できます。

  • デフォルトでは、クラスタの構成には70%の重複が必要です。これは、クラスタのsimilarityパラメータを使用してオーバーライドできます。

  • 生成されたクラスタIDは確定的です。そのため、クラスタIDは、Summary列に表示されるキーワードのリストのショートカットとして使用できます。

similarityを使用したクラスタ数の制御

デフォルト・ディクショナリおよび類似度の低いしきい値を使用してクラスタを実行すると、生成されるクラスタは少なくなります:

'Log Source' = 'Linux Syslog Logs' and kernel
| link cluster()
| where 'Potential Issue' = '1'
| nlp similarity=0.2 cluster('Cluster Sample') as 'Cluster ID',
                     keywords('Cluster Sample') as Summary
| sort 'Cluster ID'

一部の行が既存のクラスタにマージされ、クラスタ数が削減されました:


類似度に基づいてクラスタ数を削減した後のカーネル・エラーに対するlinux syslogログのセマンティック・クラスタリング

データベース・アラート・ログのクラスタ化

次の問合せは、Database Alert Logsのセマンティック・クラスタリングの例を示しています:

'Log Source' = 'Database Alert Logs'
| link cluster()
| nlp cluster('Cluster Sample') as 'Cluster ID',
      keywords('Cluster Sample') as Summary
| where Summary != null
| classify 'Start Time', Summary, 'Cluster ID' as 'Database Messages'

クラスタID 1188814328に対するデータベース・ログのセマンティック・クラスタリング


選択クラスタIDおよびキーワードの隣接サマリーに対するデータベース・ログのセマンティック・クラスタリング