データ パイプライン

システム管理

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

データ パイプラインを使用すると、Jira、Confluence、または Bitbucket からデータをエクスポートして、既存のデータ プラットフォーム (Tableau PowerBI など) に簡単にフィードできます。これによって、次を行えます。
  • 内容がより豊富なレポートを生成して、サイト アクティビティを視覚化する
  • チームがどのようにアプリケーションを使用しているかをより詳しく理解する
  • 組織における Jira または Confluence の使用の最適化に関してより適切な決定を下す

アプリケーションの管理コンソールまたは REST API を使用で、データ エクスポートをトリガーできます。データは CSV 形式でエクスポートされます。一度に実行できるデータ エクスポートは 1 つだけです。

 エクスポートされたデータのスキーマの詳細については、「データ パイプライン エクスポート スキーマ」を参照してください。

データ パイプラインは、次の製品の Data Center 版で提供されます。

  • Jira 8.14 以降
  • Confluence 7.12 以降
  • Bitbucket 7.13 以降

On this page:

要件

データ パイプラインを使用してデータをエクスポートするには、次の手順に従います。

Considerations

開始する前に、多数のセキュリティとパフォーマンスへの影響を考慮する必要があります。

セキュリティ

エクスポートには、PII (個人情報) と制限されたコンテンツを含むすべてのデータが含まれます。これはできる限り多くのデータを提供するためであり、フィルターや変換を行ってインサイトを生成できます。

セキュリティと機密性に基づいてデータを除外する必要がある場合は、データをエクスポートした後に行う必要があります。

エクスポートされたファイルは共有ホーム ディレクトリに保存されるため、このファイルが適切に保護されていることも確認できます。 

エクスポート パフォーマンス

大規模なインスタンスでは、データのエクスポートに時間がかかることがあります。サイトへのパフォーマンスの影響を 5% というしきい値未満に保つために、意図的に制限された速度でデータをエクスポートします。エクスポートが進行中でない限り、パフォーマンスに影響はないことに注意してください。

エクスポートのスケジュールを設定するときは、次のことをお勧めします。

  • fromDate パラメーターを使用してエクスポートするデータの量を制限します。日付が古すぎるとより多くのデータがエクスポートされるため、データのエクスポートに要する時間が長くなります。
  • エクスポート中にパフォーマンスの低下が見られる場合は、アクティビティが少ない時間帯またはアクティビティのないノードでエクスポートをスケジュールします。

テストの結果、おおよその実行時間は以下のようになりました。

エクスポート スコープ

おおよそのエクスポート時間
課題 1,000,000 件課題 7,000,000 件
Jira Software
  • カスタム フィールドなし
  • 課題の履歴なし
15 分2 時間
  • カスタム フィールドあり
  • 課題の履歴なし
1 時間9 時間
  • カスタム フィールドあり
  • 課題の履歴あり
5 時間22 時間
Jira Software と Jira Service Management
  • カスタム フィールドなし
  • 課題の履歴なし
30 分から 2 時間3 ~ 6 時間

テスト パフォーマンス対本番環境の比較

ここで紹介するデータは、当社独自の内部回帰テストに基づいています。データ エクスポートに要する実際の時間と、お客様の環境にもたらす影響は、次の条件に基づいて異なる場合があります。

  • インフラストラクチャ、構成、負荷
  • インストールしているアプリケーション (Jira Software と Jira Service Management)
  • エクスポートするカスタム フィールドと課題の履歴データの量

Jira パフォーマンス テストを使用して、AWS 上の Jira Data Center 環境でデータ エクスポートのパフォーマンスをテストしました。この環境には 1 つの c5.9xlarge Jira ノードと 1 つの PostgreSQL データベースがありました。ユーザーの負荷をテストするために、2 つの仮想ユーザー ノード全体で 24 人の仮想ユーザーを使用しました。

データ パイプラインにアクセスする

データ パイプラインにアクセスするには、次の手順に従います。

  1. 上部のナビゲーション バーから [管理者 ] > [システム] を選択します。 
  2. [データ パイプライン] を選択します。

定期エクスポートをスケジュール

データ パイプラインの価値を最大限に引き出す方法は、定期エクスポートをスケジュールすることです。データ パイプラインではフル エクスポートが毎回実行されるため、大規模なサイトがある場合は週に 1 回だけエクスポートすることをお勧めします。

エクスポート スケジュールを設定するには、次の手順に従います。

  1. データ パイプラインの画面で [スケジュールの設定] を選択します。
  2. [定期エクスポートをスケジュール] チェックボックスをオンにします。
  3. データを含める日付を選択します。この日付より前のデータは含まれません。通常、12 か月以下に設定されます。
  4. エクスポートを繰り返す頻度を選択します。
  5. エクスポートを開始する時刻を選択します。勤務時間外にエクスポートが実行されるようにスケジュールすることをお勧めします。
  6. 使用するスキーマ バージョンを選択します (使用可能なスキーマが複数ある場合)。
  7. スケジュールを保存します。

タイムゾーンと反復するエクスポート

エクスポートをスケジュールするときは、サーバーのタイムゾーンを使用します (アプリケーションでサーバーの時刻を上書きした場合はシステムのタイムゾーンを使用します)。タイムゾーンを変更しても、エクスポート スケジュールは更新されません。タイムゾーンを変更する必要がある場合は、スケジュールを編集してエクスポート時刻を再入力する必要があります。

エクスポートは必要な頻度で実行するようにスケジュールできます。複数の曜日にエクスポートすることを選択した場合、最初のエクスポートはスケジュールを保存した後の直近の曜日に行われます。上のスクリーンショットの例では、木曜日にスケジュールを設定した場合は最初のエクスポートは土曜日に、2 回目のエクスポートは月曜日に行われます。週の始まりを待ちません。

エクスポート スキーマ

エクスポート スキーマでは、エクスポートの構造を定義します。エクスポートが以前のエクスポートと同じ構造になることがわかるように、スキーマのバージョンを管理します。これによって、このデータに基づいてダッシュボードまたはレポートを作成した場合の問題を回避できます。

フィールドの削除などの重大な変更やデータの構造化方法の変更が発生した場合にのみ、新しいスキーマ バージョンを導入します。新しいフィールドは、最新のスキーマ バージョンにのみ追加されます。

古いスキーマ バージョンは「非推奨」としてマークされて、将来のバージョンで削除される可能性があります。これらのバージョンを使用して引き続きエクスポートできますが、新しいフィールドではこれらのバージョンは更新されませんのでご注意ください。

エクスポートのステータスを確認する

[データ パイプライン] 画面で、エクスポートのステータスを確認して、前回のエクスポートが実行された日時を表示できます。 

[エクスポートの詳細] テーブルには、最新のエクスポートと現在のステータスが表示されます。

[] > [詳細を表示] の順に選択すると、エクスポートの詳細が JSON 形式で表示されます。詳細には、エクスポート パラメーター、ステータス、すべての返されたエラー (エクスポートが失敗した場合) が含まれます。

失敗したエクスポートまたはキャンセルされたエクスポートの解決については、「データ パイプラインのトラブルシューティング」をご参照ください。 

エクスポートをキャンセルする

進行中のエクスポートをキャンセルするには、次の手順に従います。
  • [データ パイプライン] 画面に移動します。
  • エクスポートの横にある 、エクスポートの [キャンセル] の順に選択します。
  • エクスポートのキャンセルを確定します。

プロセスが終了するまでに数分かかることがあります。すでに書き込まれたファイルは、エクスポート ディレクトリに残ります。これらのファイルが不要なら削除できます。

自動データ エクスポート キャンセル

データ エクスポートを実行しているノードをシャット ダウンすると、エクスポートはキャンセルされます。ただし、クラッシュまたはハードウェア レベルの障害が発生した後で JVM に通知されなかった場合、エクスポート プロセスはロックされることがあります。この場合は、エクスポートをキャンセル済みとして手動でマークする必要があります (UI を使用するか、REST API で DELETE リクエストを作成します)。これによって、プロセスのロックが解除されて別のデータ エクスポートを実行できるようになります。

プロジェクトをエクスポートから除外する

初期設定では、アーカイブされたプロジェクトはエクスポートから除外されます。

また、プロジェクトをオプトアウト リストに追加することで、エクスポートから除外できます。これは、特定のプロジェクトでは報告が不要、または機密情報が含まれているのでエクスポートしない場合に役立ちます。

プロジェクトをオプトアウト リストに追加するには、POST リクエストを <base-url>/rest/datapipeline/1.0/config/optout に行って、次のようにプロジェクト キーを渡します。

{ 
 "type": "PROJECT", 
 "keys": ["HR","TEST"] 
}

これらのプロジェクトは、今後すべてのエクスポートから除外されます。オプトアウトの機能はデータ パイプラインのバージョン 2.3.0 以降で導入されたことにご注意ください。

プロジェクトをオプトアウト リストから削除する方法を含む完全な詳細については「データ パイプライン REST API のリファレンス」をご参照ください。 

データ エクスポートを設定する

次のシステム プロパティを使用して、エクスポート データの形式を設定できます。

既定値説明
plugin.data.pipeline.embedded.line.break.preserve
false

埋め込まれた改行を出力ファイルに保持するかどうかを指定します。Hadoop などのツールでは、改行が問題になる場合があります。

このプロパティはデフォルトで False に設定されています。つまり、改行はエスケープされます。

plugin.data.pipeline.embedded.line.break.escape.char
\\n

埋め込まれた改行の文字をエスケープします。デフォルトでは、\n を埋め込まれた改行ごとに出力します。

plugin.data.pipeline.minimum.usable.disk.space.after.export
5 GB

ディスク領域が不足するのを防ぐため、データ パイプラインはエクスポートの前と最中に 5GB 以上の空きディスク領域があるかどうかを確認します。

制限を増減するには、このプロパティを GB 単位で設定します。このチェックを無効にするには、このプロパティを -1 に設定します (非推奨)。

機能フラグを使用して、特定のタイプのデータを除外するようにエクスポートを詳細に設定できます。機能フラグの使用方法については、「How to manage dark features in Jira Server and Data Center (Jira Server と Data Center でダーク機能を管理する方法)」を参照してください。

既定値説明
data.pipeline.feature.jira.all.exportable.custom.fields.enabled
Enabled

カスタム フィールド データをエクスポートに含めるかどうかを指定します。カスタム フィールド データをエクスポートすると、カスタム フィールド データの量によってはエクスポートに掛かる時間が長くなる場合があります。 

.enabled サフィックスを .disabled に変更して、エクスポートからカスタム フィールド データを除外します。

data.pipeline.feature.jira.issue.history.export.enabled
Enabled

課題の履歴データをエクスポートに含めるかどうかを指定します。履歴データをエクスポートすると、エクスポートに掛かる時間が大幅に増加します。 

.enabled サフィックスを .disabled に変更して、エクスポートから課題の履歴を除外します。

data.pipeline.feature.jira.archived.issue.export.enabled
Disabled

アーカイブされた課題をエクスポートに含める必要があるかどうかを指定します。

アーカイブされた課題をエクスポートに含めるには、.enabled サフィックスの付いたフラグを追加します。

データ パイプライン REST API を使用する

データ パイプライン REST API を使用してデータをエクスポートできます。

データ パイプラインをエクスポートし始めるには、<base-url>/rest/datapipeline/latest/export に対する POST リクエストを実行します。

認証に cURL と個人アクセス トークンを使用するリクエストの例を次に示します。

curl -H "Authorization:Bearer ABCD1234" -H "X-Atlassian-Token: no-check" 
-X POST https://myexamplesite.com/rest/datapipeline/latest/
export?fromDate=2020-10-22T01:30:11Z

また、API を使用して、ステータスを確認、エクスポート場所を変更、エクスポートをスケジュール設定またはキャンセルできます。 

詳細については「データ パイプライン REST API のリファレンス」をご参照ください。 

出力ファイル 

データ エクスポートを実行するたびに、数値ジョブ ID をタスクに割り当てます (最初のデータ エクスポートに対して 1 から開始)。このジョブ ID は、エクスポートされたデータを含むファイルのファイル名と場所で使用されます。  

エクスポートされたファイルの場所 

エクスポートされたデータは個別の CSV ファイルとして保存されます。ファイルは次のディレクトリに保存されます。

  • <shared-home>/data-pipeline/export/<job-id> (クラスターで Jira を実行する場合)
  • <local-home>/data-pipeline/export/<job-id> クラスタ化されていない Jira を使用している

<job-id> ディレクトリ内には次のファイルが表示されます。

  • issues_<job_id>_<schema_version>_<timestamp>.csv 

  • issue_fields_<job_id>_<schema_version>_<timestamp>.csv 

  • issue_history_<job_id>_<schema_version>_<timestamp>.csv 

  • issue_links_<job_id>_<schema_version>_<timestamp>.csv

  • sla_cycles_<job_id>_<schema_version>_<timestamp>.csv (Jira Service Management のみ)

  • users_<job_id>_<schema_version>_<timestamp>.csv

このエクスポートのデータを読み込んで変換するには、そのスキーマを理解する必要があります。各ファイルの内容に関する概要については「データ パイプライン エクスポート スキーマ」をご参照ください。

カスタム エクスポート パスを設定する

デフォルトでは、データ パイプラインはファイルをホーム ディレクトリにエクスポートしますが、REST API を使用するとカスタム エクスポート パスを設定できます。

ルート エクスポート パスを変更するには、<base-url>/rest/datapipeline/1.0/config/export-pathPUT リクエストを実行します。

リクエストの本文で、優先するディレクトリに対する絶対パスを渡します。 

既定のパスに戻す方法を含む詳細については「データ パイプライン REST API のリファレンス」をご参照ください。 

データ パイプラインのデータを分析する

エクスポートをスケジュールして CSV ファイルを取得すると、分析用にこれらのファイルをデータベースまたはデータ レイクにインポートできます。 

DevOps ダッシュボードのサンプル

利用開始できるように、Jira データを使用する Tableau と Microsoft PowerBI 用の DevOps ダッシュボード テンプレートを作成しました。これらによって、チームのエンジニアリングの健全性を把握できます。 

DevOps ダッシュボードでデータ パイプラインを最大限に活用する

Spark と Hadoop のインポート設定の例

既存の Spark インスタンスまたは Hadoop インスタンスがある場合、次の参照を使用し、さらに変換するためにデータをインポートする方法を設定します。

Spark/Databricks

Notebook の設定例
%python
# File location
file_location = "/FileStore/**/export_2020_09_24T03_32_18Z.csv" 

# Automatically set data type for columns
infer_schema = "true"
# Skip first row as it's a header
first_row_is_header = "true"
# Ignore multiline within double quotes
multiline_support = "true"

# The applied options are for CSV files. For other file types, these will be ignored. Note escape & quote options for RFC-4801 compliant files
df = spark.read.format("csv") \
  .option("inferSchema", infer_schema) \
  .option("header", first_row_is_header) \
  .option("multiLine", multiline_support) \
  .option("quote", "\"") \
  .option("escape", "\"") \
  .option("encoding", "UTF-8").load(file_location)

display(df)

Hadoop

テーブル スクリプトを作成する
CREATE EXTERNAL TABLE IF NOT EXISTS some_db.datapipeline_export (
  `id` string,
  `instance_url` string,
  `key` string,
  `url` string,
  `project_key` string,
  `project_name` string,
  `project_type` string,
  `project_category` string,
  `issue_type` string,
  `summary` string,
  `description` string,
  `environment` string,
  `creator_id` string,
  `creator_name` string,
  `reporter_id` string,
  `reporter_name` string,
  `assignee_id` string,
  `assignee_name` string,
  `status` string,
  `status_category` string,
  `priority_sequence` string,
  `priority_name` string,
  `resolution` string,
  `watcher_count` string,
  `vote_count` string,
  `created_date` string,
  `resolution_date` string,
  `updated_date` string,
  `due_date` string,
  `estimate` string,
  `original_estimate` string,
  `time_spent` string,
  `parent_id` string,
  `security_level` string,
  `labels` string,
  `components` string,
  `affected_versions` string,
  `fix_versions` string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  "escapeChar" = "\\",
  'quoteChar' = '"',
  'separatorChar' = ','
) LOCATION 's3://my-data-pipeline-bucket/test-exports/'
TBLPROPERTIES ('has_encrypted_data'='false');

データ エクスポートに関する課題のトラブルシューティング

検索インデックスが最新でない場合など、さまざまな理由でエクスポートが失敗することがあります。一般的な障害に関するガイダンスとその解決方法については、ナレッジ ベースの「データ パイプラインのトラブルシューティング」をご参照ください。 

最終更新日: 2024 年 2 月 15 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.