Logpushジョブの管理
IBM Cloud® Internet Services エンタープライズレベルのプランでは、、DNS、レンジリクエストの詳細なログ、およびドメインのファイアウォールイベントにアクセスできます。 HTTP これらのログは、デバッグや分析に役立ちます。特に、起点の Ingress のログやアプリケーション・サーバーのログなどの他のデータ・ソースと組み合わせると有用です。
開始前に
UIを使用してLogpushジョブを作成する前に、以下の情報を確認し、前提条件を満たしてください
-
現在、 CIS のUIは以下のデスティネーションをサポートしています
- IBM Cloud Logs
- Cloud Object Storage
- Splunk
-
Logpush を使用する前に、 ログの保存を有効にしておく ことを確認してください。
-
Cloud Object Storage を使用する場合は、 IBM Cloud アカウント
cislogp@us.ibm.com
に Object Writer アクセス権が付与されたバケットを持つ Cloud Object Storage インスタンスが必要です。 これにより、 CIS は Cloud Object Storage バケットにリクエストログを書き込むことができます。 -
Logpush で得られるデータは、Logpull で得られるデータと同じです。 しかし、リクエストログをダウンロードできるLogpullとは異なり、Logpushではリクエストログをプッシュすることができます。
-
DNS、レンジ、ファイアウォールのイベントログは、 HTTP / HTTPS ログには含まれず、別のジョブが必要です。 これらのジョブは同じ宛先に送信できます。 ただし、 Cloud Object Storage を使用する場合は、別のパスを指定する必要があります。
-
Logpushは、 Cloud Object Storage 用の公開アクセス可能な HTTPS エンドポイントを使用しており、移動中のログデータが確実に暗号化されるようになっています。
-
Splunk にログを送信する際、 CIS はIPアドレスのアクセス可能性とポートをチェックし、 HTTP 受信ログソースの証明書を検証します。 すべてのパラメータが有効であれば、Logpushが作成されます。 その後、Logpushは HTTP イベントコレクター( Splunk )にイベントの送信を開始します。
-
CIS が明示的にサポートしていない宛先の場合でも、カスタムの HTTP 宛先を使用することで、Logpushでアクセスできる可能性があります。 これには、お客様独自のカスタム HTTP ログサーバーも含まれます。
エラーを回避するため、宛先が
test.txt.gz
という名前のgzip圧縮ファイルのアップロードを受け入れられることを確認してください。このファイルには、{"content":"tests"}
という圧縮コンテンツが含まれています。 -
Cloud Object Storage を使用する際は、Logpush ジョブを作成後に所有権の確認を行う必要があります。 この作業については、以下の手順で説明する。
コンソールでLogpushジョブを作成する
コンソールでLogpushジョブを作成するには、以下の手順に従ってください:
-
「アカウント」 > 「ログ」 を選択し 、「作成」 をクリックします。
-
選択したサービス:
- 利用可能なオプションからご希望のサービスタイプをお選びください。
- データセットの種類を選択します。
- オプション:説明と名前を入力します。
- **「次へ」**を選択します。
-
宛先を設定:
- IBM Cloud Logs
-
IBM Cloud インスタンスID、インスタンスの地域、APIキー(ユーザー管理)を入力します。
IBM Cloud LogsインスタンスがセットアップされているアカウントのAPIキーが必要です。 ユーザーAPIキーまたはサービスID APIキーのいずれかを使用できます。 このキーは、Logpush ジョブ用の無記名トークンを生成するために使用されます。 APIキーは、 Update a Logpush job APIを 使用してローテーションすることができます。
IBM Cloud Logs サービスでは、ユーザーまたはサービスID にSender IAMロールを付与する必要があります。
- Cloud Object Storage
-
Cloud Object Storage インスタンス、バケット情報(名前と地域)、バケットパス(オプション)を入力します。 次に、ログを日ごとのフォルダに整理します(オプション)。
Cloud Object Storage の宛先値は一意でなければなりません。 競合を避けるために、バケットパスを使用することをお勧めします。
- Splunk
- Splunk エンドポイント、チャネルID、認証トークンを入力します。
安全性の低い認証方法を選択することもできますが、これはお勧めできません。
- カスタム HTTP 宛先
-
HTTP エンドポイントを入力してください。
エンドポイントが適切に URL エンコードされていること、および必要なリクエストヘッダーが「header_*」という形式の URL パラメータとして追加されていることを確認してください(例:
header_Authorization
)。
-
Cloud Object Storage の求人情報のみ、所有権を確認してください。 そのためには、バケットで受け取ったオブジェクトをダウンロードし、Ownership tokenのテキストエリアにトークンを貼り付けます。 そして、「次へ」 をクリックします。
トラブルシューティングのセクションからファイルを再送信するか、バケツのパスが間違っている場合は前のステップに戻ることができます。
-
ログフィールドを選択:
-
Logpushの詳細が正しいことを確認する。
-
タイムスタンプフォーマットと周波数メニューからLogpush設定を選択します。
-
Enablementスイッチ をオンに切り替えることで、Logpushジョブを有効にするかどうかを選択します。
-
Logpushジョブに含めるログフィールドを選択します。
スイッチを使用して、 すべてのフィールドを選択するか、 すべてのフィールドを展開することができます。 デフォルト設定に戻すこともできます。
-
完了をクリックして、Logpush ジョブを作成します。
-
CLI から Logpush ジョブを作成する
CLIを使用して ibmcloud cis logpush-job-create
CLIを使用してLogpushジョブを作成できます。
特定のドメインの Logpush ジョブを作成し、ジョブを有効にするには、以下のコマンドを実行します。
ibmcloud cis logpush-job-create DNS_DOMAIN_ID --destination PATH --name JOB_NAME --fields all --enable true
ここで、
-destination
:目的地までのパスを指定します。 サポートされている宛先へのパスは以下の通りです
IBM Cloud Logs |
---|
ibmcl://<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=<IBM_API_KEY>
例えば LogsインスタンスがセットアップされているアカウントのAPIキーが必要です。 IBM Cloud ユーザーAPIキーまたはサービスID APIキーのいずれかを使用できます。 このキーは、Logpush ジョブ用の無記名トークンを生成するために使用されます。 APIキーは、 Update a Logpush job APIを 使用してローテーションすることができます。 重要: ユーザーまたはサービス ID は、 IBM Cloud Logs サービスで Sender IAM ロールを付与されている必要があります。 |
Cloud Object Storage |
---|
cos://<BUCKET_OBJECT_PATH>?region=<REGION>&instance-id=<IBM_ClOUD_OBJECT_STORAGE_INSTANCE_ID>
例えば: |
カスタム HTTP |
---|
https://<HOSTNAME>?header_Authorization=Basic%20REDACTED&tags=host:<DOMAIN_NAME>,dataset:<LOGPUSH_DATASET>
例えば: |
--name
:Logpushジョブ名を指定します。
--fields
:ログファイルに含めるログフィールドのリストを指定します。 複数のフィールドを区切るには、コンマを使用します。 利用可能なログフィールドの包括的なリストを得るには、コマンド ibmcloud cis logpush-available-fields DNS_DOMAIN_ID --dataset DATASET
を使うか、ログファイルに利用可能なすべてのフィールドを含めるには、 all
を使う。
--enable
:Logpush ジョブを有効または無効にするフラグです。 有効な値は、true
または false
(デフォルト) です。
Cloud Object Storage: 所有権の確認
Cloud Object Storage にログを送信する Logpush ジョブを作成した後、所有権を検証する必要があります。
指定した Cloud Object Storage バケット内のファイルにチャレンジトークンを書き込む場合は、以下の手順に従います
- Cloud Object Storage バケットからファイルをダウンロードし、開く。
- ファイルからチャレンジトークンをコピーし、コマンドプロンプトに貼り付けて所有権チャレンジを解決します。
CIS が所有権のチャレンジを検証した後、Logpushのジョブは正常に作成されます。 このジョブは、リクエストログを30秒ごとに、または100,000件のレコードに達した時点で、いずれか早いタイミングで、 Cloud Object Storage のバケットにプッシュします。 30秒間または100,000レコードごとに複数のファイルがプッシュされる可能性があることにご注意ください。
また、バケットパスに {DATE}
トークンを使用して、Logpushログを日々のフォルダに整理することもできます。 例えば:cos://mybucket/cislog/{DATE}?region=us-south&instance-id=c84e2a79-ce6d-3c79-a7e4-7e7ab3054cfe
コマンドの例
サポート対象のデスティネーションのCLIの例:
- IBM Cloud Logs
-
例
ibmcloud cis logpush-job-create 601b728b86e630c744c81740f72570c3 --destination "ibmcl://604a309c-585c-4a42-955d-76239ccc1905.ingress.us-south.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=xxxxxxxx" --name logpushJobGen --enable true --fields RayID --dataset http_requests --frequency high -i 1a9174b6-0106-417a-844b-c8eb43a72f63
- Cloud Object Storage
-
例
ibmcloud cis logpush-job-create 31984fea73a15b45779fa0df4ef62f9b --destination cos://cis-test-bucket/logs?region=us&instance-id=f75e6d90-4212-4026-851c-d572071146cd --name logpushcreate --enable true --fields all --timestamps rfc3339 --dataset http_requests --frequency low -i cis-demo --output JSON
- カスタム HTTP
-
例
ibmcloud cis logpush-job-create 601b728b86e630c744c81740f72570c3 --destination https://logs.example.com?header_Authorization=a64VuywesDu5Aq" --name logpushJobGen --enable true --fields RayID --dataset http_requests --frequency high -i 1a9174b6-0106-417a-844b-c8eb43a72f63
APIを使ったLogpushジョブの作成
IBM Cloud ログ、 Cloud Object Storage、または Splunk を使用している場合は、 Logpush ジョブを作成する API を使用して Logpush ジョブを作成できます。
APIでデータセットの使用可能なログフィールドを取得する
ログフィールドは、Logpushジョブの logpull_options
で指定し、送信先に送信される内容をカスタマイズすることができます。 Logpush データセットで利用可能なログフィールドを取得するには、以下の手順に従います
-
正しい変数を使用して API 環境をセットアップします。
-
API コマンドで使用する以下の値を変数に格納します。
CRN
: サービス・インスタンスの URL エンコードされた完全な CRN。ZONE_ID
: ドメイン ID。DATASET
: 検査中のLogpushデータセット。http_requests
,range_events
,dns_logs
,firewall_events
のいずれか。 -
すべての変数が開始されたら、Logpush ジョブを作成します。
curl -X GET https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/datas/$DATASET/fields \ --header "Content-Type: application/json" \ --header "X-Auth-User-Token: Bearer $IAM_TOKEN"'
ログを送信先に送信するためのログプッシュジョブの作成
宛先( IBM Cloud Logs、 Cloud Object Storage、または Splunk )にLogpushジョブを作成するには、以下の手順に従います
-
正しい変数を使用して API 環境をセットアップします。
-
API コマンドで使用する以下の値を変数に格納します。
CRN
: サービスインスタンスの完全な URL エンコードされたクラウドリソース名(CRN)。ZONE_ID
: ドメイン ID。--request body
: Logpush ジョブ本体を作成するための情報 (logpush_job_DESTINATION_req
)DESTINATION
は以下の値のいずれかですIBM Cloud ログの送信先 IBM Cloud Logs ibmcl
:データがプッシュされる IBM Cloud Logs インスタンスを識別するための情報。ibmcl
オブジェクト内のフィールドは以下の通りです。instance_id
: IBM Cloud LogsインスタンスのID。region
: IBM Cloud Logsインスタンスの地域(例:us-south
)。api_key
: IBM Cloud Logsインスタンスが設定されているアカウントのAPIキーが必要です。 ユーザーAPIキーまたはサービスID APIキーのいずれかを使用できます。 このキーは、Logpush ジョブ用の無記名トークンを生成するために使用されます。 APIキーは 、Update a Logpush job API を使用してローテーションすることができます。
重要: ユーザーまたはサービスIDには、 IBM Cloud ログサービス上で送信者IAMロールを付与する必要があります。
ibmcl_names
: IBM Cloud のログで使用されるアプリケーション名とサブシステム名をカスタマイズするためのオプションフィールド。ibmcl_names
オブジェクト内のフィールドは次のとおりです。application_name
: ジョブのカスタムアプリケーション名。subsystem_name
: ジョブのカスタムサブシステム名。
Cloud Object Storage 目的地 Cloud Object Storage cos
: データがプッシュされる Cloud Object Storage バケットを識別するための情報。cos
オブジェクト内のフィールドは以下の通りです。bucket_name
:ログが送信されるお客様のCOSバケットの名前(例:cos-bucket001
)。region
: Cloud Object Storage インスタンスの地域(例:us-south
)。id
:COSインスタンスのID。
Splunk 目的地 Splunk splunk
: データがプッシュされる Splunk HTTP イベントコレクター(HEC)を識別するための情報。splunk
オブジェクト内のフィールドは以下の通りです。endpoint_url
: URL of the Splunk HEC.channel_id
: ログプッシュを一意に識別するためのランダムな GUID。skip_verify
: HTTP イベントコレクター証明書の検証をスキップするためのブール値フラグ。 HECが自己署名証明書を使用している場合にのみ、これをtrue
に設定します。source_type
: Splunk ソースの種類(例:cloudflare:json
)。auth_token
: Splunk 認証トークン。
カスタム HTTP 宛先 カスタム HTTP destination_conf
: データをプッシュするカスタム HTTP の宛先を設定するための情報。 Logpushで使用するヘッダーは、クエリパラメータの前にheader_
を付加して指定することができます(例:header_Authorization=XXXX
)。name
: Logpush ジョブの名前。enabled
: ジョブが有効かどうか。true
またはfalse
。logpull_options
: 構成ストリング。 例えば、fields=RayID,ZoneID×tamps=rfc3339
です。dataset
: プルされるデータ・セット。http_requests
,dns_logs
,range_events
,firewall_events
のいずれか。frequency
: CIS がユーザーの宛先にログのバッチを送信する頻度。high
またはlow
。 -
すべての変数が開始されたら、Logpush ジョブを作成します。
IBM Cloud Logs
curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \ --header "Content-Type: application/json" \ --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \ --data '{ "ibmcl": { "instance_id": "f8k3309c-585c-4a42-955d-76239cccf8k3", "region": "us-south", "api_key": "f8k3NQI22dPwNVCcmS62YFL1tm9vaehY6C9jxdtnf8k3" }, "ibmcl_names": { "application_name": "cis-edge-logs", "subsystem_name": "stage-firewall-logs" } "dataset": "http_requests", "enabled": true, "logpull_options": "fields=RayID,ZoneID×tamps=rfc3339", "name": "CIS-Edge-Requests", "frequency": "low" }'
Cloud Object Storage
curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \ --header "Content-Type: application/json" \ --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \ --data '{ "cos": { "bucket_name": "example_bucket", "path": "temp/", "id": "cos_instance_id", "region": "us-east" }, "dataset": "firewall_events", "enabled": false, "name": "CIS-Firewall-COS", "frequency": "low", "logpull_options": "fields=RayID,ZoneID×tamps=rfc3339", "ownership_challenge": "xxxxxxx" }'
Splunk
curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \ --header "Content-Type: application/json" \ --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \ --data '{ "splunk": { "endpoint_url": "example.splunkcloud.com:8088/services/collector/raw", "channel_id": "def3c136-7a01-4655-b17f-8e25a780ef2c", "skip_verify": false, "source_type": "cloudflare:json", "auth_token": "Splunk fake3585-0f38-4d62-8b43-c4b78584fake" }, "dataset": "http_requests", "enabled": true, "name": "CIS-Splunk-Logpush", "frequency": "high", "logpull_options": "fields=RayID,CacheResponseBytes,CacheResponseStatus,CacheCacheStatus×tamps=rfc3339" }'
カスタム HTTP
curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \ --header "Content-Type: application/json" \ --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \ --data '{ "destination_conf": "https://logs.example.com?header_Authorization=a64VuywesDu5Aq", "dataset": "http_requests", "enabled": true, "name": "CIS-Custom-Logpush", "frequency": "high", "logpull_options": "fields=RayID,CacheResponseBytes,CacheResponseStatus,CacheCacheStatus×tamps=rfc3339" }'