2020年1月1日以降に「日付を誤認識」する不具合、Splunkが公開「2000年問題」はまだまだ続く

Splunkは、マシンデータ分析プラットフォーム「Splunk」で1カ月以内に発生する恐れがある不具合について公表し、原因と対策を説明した。パッチを適用するだけで解決できるものの、2020年1月以降にパッチ適用が遅れると誤ったデータを蓄積してしまう。

» 2019年12月02日 10時05分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Splunkは2019年11月27日(現地時間)、ITシステム運用管理のためのマシンデータ分析プラットフォーム「Splunk」で見つかった不具合の原因と対策について発表した。2020年に入ると同時に全製品で発生する恐れがある。特定の日付を過ぎると日付を誤認識して処理を誤るという点では「2000年問題」と同じパターンだといえる。

 Splunkによると、今回公開したパッチを適用していないSplunkプラットフォームでは2種類の不具合が発生する。

  1. 2020年1月1日から、Splunkプラットフォームインスタンスは、日付に2桁の年を含むイベントのタイムスタンプを認識できなくなる。この基準を満たすデータに対して、不正確なタイムスタンプを付けてインデックスを作成してしまう
  2. 2020年9月30日午後12時26分39秒(UTC:協定世界時)から、Splunkプラットフォームインスタンスは、UNIX時間に基づくイベントの日付タイムスタンプを認識できなくなる。タイムスタンプデータの解析が不正確になるからだ

 タイムスタンプを自動的に判別するように入力ソースを構成する一般的な設定を採っていると問題が発生し、次のような複数のトラブルが起きる。蓄積した各種ログデータをクエリに従って分析するというSplunkの魅力が半減してしまう。

  • 入力データの不正確なタイムスタンピング
  • 不正確なタイムスタンピングによるデータの不正確なロールオーバー
  • データの不正確な保持
  • 不正確なタイムスタンプでのデータ取り込みに起因する不正確な検索結果

 問題が発生したら、Splunkプラットフォームによるデータの取り込み後にタイムスタンプを修正する方法はない。

 2020年1月1日以降、パッチを適用していないSplunkプラットフォームインスタンスでデータを取り込んだ場合は、そのインスタンスにパッチを適用後、データの再取り込みが必要になる。

なぜ不具合が発生するのか

 Splunkプラットフォームの入力プロセッサは、入力データのタイムスタンプを正確に判別するために、「datetime.xml」ファイルを使う。このファイルは正規表現を使って、入力データから多様なタイプの日付とタイムスタンプを抽出する。

 パッチを適用していないSplunkプラットフォームインスタンスは、このファイルによって、2019年12月31日まで、「19」で始まる2桁の年データを抽出する。2020年1月1日からは、入力データの年のタイムスタンプが誤っていると判断してしまう。その結果、誤解釈した日付のタイムスタンプを追加してしまう。

ユーザーはどのように対応すればよいのか

 Splunk Cloudの顧客が使用するクラウド上のSplunkプラットフォームは課題が少ない。不具合が自動的に修正されるからだ。なお、アップグレードを実行する際に、Splunkのサポート担当者がSplunk Cloudの顧客にアドバイスを行う。これは重要なアップグレードであるため、顧客が延期することはできない。

 Splunkプラットフォームをオンプレミスで使っている顧客は、次の対策のいずれかを実行する必要がある。なお、オンプレミス対応をしなければならない顧客には、Splunk Cloudインスタンスにデータを送信するフォワーダーを使っている場合も含まれる。

  • datetime.xmlのアップデート版をダウンロードし、各Splunkプラットフォームインスタンスに適用する
  • 不具合のあるdatetime.xmlを一時的に修正版に置き換えるアプリをダウンロードし、デプロイする
  • Splunkプラットフォームインスタンス上の既存のdatetime.xmlに変更を加える
  • Splunkプラットフォームインスタンスを、datetime.xmlのアップデート版を含むバージョンにアップグレードする

 datetime.xmlの修正内容を次に示す。4種類のコードのうち、上側が修正すべき部分、下側が対策を取ったコードだ。

 この置換結果を見ると、年データの誤認識という問題を恒久的に解決する対策ではないことが分かる。今回の問題を10年間延期するだけだからだ。

 なお、2000年問題の対策においても問題が起きる年を後ろにずらす対応は少なくなかった。10年という対応期間があれば、より良い対策を取る余裕も生まれるだろう。

<text><![CDATA[(20\d\d|19\d\d|[901]\d(?!\d))]]></text>
<text><![CDATA[(20\d\d|19\d\d|[9012]\d(?!\d))]]></text>
<text><![CDATA[(?:^|source::).*?(?<!\d|\d\.|-)(?:20)?([901]\d)(0\d|1[012])([012]\d|3[01])(?!\d|-| {2,})]]></text>
<text><![CDATA[(?:^|source::).*?(?<!\d|\d\.|-)(?:20)?([9012]\d)(0\d|1[012])([012]\d|3[01])(?!\d|-| {2,})]]></text>
<text><![CDATA[(?:^|source::).*?(?<!\d|\d\.)(0\d|1[012])([012]\d|3[01])(?:20)?([901]\d)(?!\d| {2,})]]></text>
<text><![CDATA[(?:^|source::).*?(?<!\d|\d\.)(0\d|1[012])([012]\d|3[01])(?:20)?([9012]\d)(?!\d| {2,})]]></text>
<text><![CDATA[((?<=^|[\s#,"=\(\[\|\{])(?:1[012345]|9)\d{8}|^@[\da-fA-F]{16,24})(?:\.?(\d{1,6}))?(?![\d\(])]]></text>
<text><![CDATA[((?<=^|[\s#,"=\(\[\|\{])(?:1[0123456]|9)\d{8}|^@[\da-fA-F]{16,24})(?:\.?(\d{1,6}))?(?![\d\(])]]></text>

どのSplunkで問題が起こるのか

 今回の不具合は、どのOSで動作しているかにかかわらず、パッチを適用していない全タイプのSplunkプラットフォームインスタンスに影響する。

  • Splunk Cloud
  • Splunk Light
  • Splunk Enterprise
     インデクサー(クラスタ化されているかどうかを問わない)
     ヘビーフォワーダー
     サーチヘッド(クラスタ化されているかどうかを問わない)
     サーチヘッドデプロイヤー
     デプロイメントサーバ
     クラスタマスター
     ライセンスマスター
  • 次の条件を満たすSplunkユニバーサルフォワーダー
     props.confのINDEXED_EXTRACTIONSを使って、CSVやXML、JSONファイルのような構造化データを処理するように構成されている場合
     props.confのforce_local_processing設定を使って、データをローカルで処理するように構成されている場合
     モニター入力で構成されていて、その入力が未知のファイルタイプに遭遇した場合

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。