SQL クエリ

Structured Query Language を使用すると、ログファイルのソースにアクセスの上、操作することが可能です。

クエリを書くには、ログ監視ダッシュボードに表示されるクエリペインに次のように記述することができます。

Log Monitoring Dashboard

この操作は SELECT、WHERE、FROM、LIKE 等の主要な操作に対応しています。コマンドリストと使用例は以下のようになります。

SELECT

イベントクエリは、複数の引数とともに SELECT より始まります。

シンタックス:

SELECT count FROM log;

例:

SELECT count(*) from log

結果:

ログのレコード数が返されます。

WHERE

WHEREは、特定の条件を満たすレコードをフィルタするために使用します。

シンタックス:

SELECT count FROM log WHERE condition;

例:

Select count (*) from log where service = 'abcd'

結果:

service が 'abcd' となっている内で指定されたログのレコード数が返されます。

注記:

WHERE 句とともに以下の演算子が使用可能です。

  • 条件式での LIKE、IN などの比較演算子
  • AND、OR、NOTなどの論理演算子
  • . ?, +, *, |, {, }, [, ], (, ), および / または " 等のREGEXP演算子

FROM

シンタックス:

SELECT count From log;

例:

select count (*) from log;

結果:

指定されたソース 「log 」からのレコード数が返されます。

LIKE

LIKE は WHERE と共に使用され、指定されたパターンを列内で検索します。

シンタックス:

Select count From log Where condition Like pattern

例:

select count(*) from log where service='devtest' and message_message like '%Extranet%'

結果:

指定されたログ 「devtest 」から、message_message 列内で 「Extranet 」を含むレコード数が返されます。

ORDER

ORDER を使用すると、1つまたは複数のフィールドでクエリ結果の並び替えが可能です。

シンタックス:

Select field_name From log Order BY field_name desc

例:

Select message from log order BY timestamp desc

結果:

timestamp 列を持つログデモから、降順で 「message 」列を返します。

複雑なクエリ

集計値によるソート:

集計値によるソートを使用するクエリで Limit を使用すると、希望する件数の上位結果が表示されます。

例:

Select log_name, count(*) from log group by log_name order by count(*) limit 100;

ログから、ログ名によりログをグループ化し、グループ化されたレコードのカウントに従ってソート(デフォルトでは昇順)し、上位100レコードを表示します。

サブセレクトの使用:

サブセレクト(SELECT X FROM (SELECT Y)) の使用が適応されています。

例:

select * from (select message_first_name, message_last_name from log where message_last_name not like '%a%') where message_first_name like 'A%' order by 1;

「log」にて、姓に 「a」 という文字が含まれない姓と名を検索します。このクエリは、上記のサブセットに準じて、名が文字 「A 」で始まる記録と、レコードが最初の列の順番で並んでいるすべてのレコードを返します。

GROUP BY で TIME データ型を使用する

次の例のように、別のデータ型を返すスカラー関数でラップされている場合は、グループ化キーとして TIME データ型を使用することが可能です。

例:

SELECT count(*) FROM log GROUP BY MINUTE(timestamp);

タイムスタンプ(分)でグループ化されたログからのレコードの総数が返されます。

DISTINCT キーワードの使用

例:

select distinct service from (select * from log where message_message ='info');

このコマンドにより、メッセージに info を含むレコードを選択し、DISTINCT サービス名を表示します。

\<img alt=「ログ監視クエリ」 src={useBaseUrl('img/log-query-distinct.png')}. />

select message_level, count(*) from log where message_level in (select message_level from log where latnecy > 2000) group by message_level;

このクエリにより、2000以上のレイテンシーとメッセージレベルのカウントを持つレコードを返します。

Log monitoring query

サポートされているキーワード

以下は、クエリを構築するために使用可能な対応キーワードのリストです。大文字、小文字とも使用可能です。

キーワードキーワードキーワードキーワード
alterandasbetween
bycasecastconstraint
createcrosscubecurrent_date
current_timecurrent_timestampcurrent_userdeallocate
deletedescribedistinctdrop
elseendescapeexcept
executeexistsextractfalse
forfromfullgroup
groupinghavingininner
insertintersectintois
joinleftlikelocaltime
localtimestampnaturalnormalizenot
nullonororder
outerpreparerecursiveright
rollupselecttablethen
trueuescapeunionunnest
usingvalueswhenwhere
with

クエリの作成と実行の詳細は クエリの作成と実行 を参照ください。