このトピックでは、Alibaba Cloud Log Serviceアドオンfor Splunkを使用して、Simple Log ServiceからSplunkにログを送信する方法について説明します。
アーキテクチャ
次のリストでは、アドオンを使用してログを送信する方法について説明します。
Splunkデータ入力を使用してコンシューマーグループを作成し、コンシューマーグループを使用してSimple Log Serviceのログをリアルタイムで消費します。
Splunkヘビーフォワーダーは、SplunkプライベートプロトコルまたはHTTP Event Collector (HEC) を使用して、ログをSplunkインデクサーに転送します。
アドオンは、データの収集にのみ使用されます。 Splunkヘビーフォワーダーにアドオンをインストールする必要があります。 Splunkインデクサーや検索ヘッドにアドオンをインストールする必要はありません。
用語
データ入力は、ログを消費するコンシューマです。
消費者グループは、複数の消費者を含む。 コンシューマーグループ内の各コンシューマーは、Logstoreに保存されている異なるログを消費します。
Logstoreには複数のシャードが含まれています。
各シャードは1つのコンシューマーにのみ割り当てることができます。
コンシューマーは複数のシャードからデータを消費できます。
コンシューマーの名前には、コンシューマーが属するコンシューマーグループの名前、ホスト名、プロセス名、およびSplunkイベントの送信に使用されるプロトコルが含まれます。 この命名規則により、コンシューマグループ内の各コンシューマの名前が一意になります。
コンシューマーグループの詳細については、「コンシューマーグループを使用してデータを消費する」をご参照ください。
準備
Simple Log Serviceへのアクセスに使用されるAccessKeyペアを取得します。
Resource Access Management (RAM) ユーザーのAccessKeyペアを使用して、Simple Log Serviceプロジェクトにアクセスできます。 詳細については、「AccessKeyペア」および「AccessKeyペアを使用したデータへのアクセス」をご参照ください。
権限アシスタント機能を使用して、RAMユーザーに権限を付与できます。 詳細については、「権限アシスタント機能の設定」をご参照ください。 共通ポリシーの例を次に示します。
説明<Project name> は、Simple Log Serviceプロジェクトの名前を指定します。 <Logstore name> は、Simple Log Service Logstoreの名前を指定します。 値を実際の値に置き換えます。 ワイルドカード文字を使用して名前を指定でき、アスタリスク (*) がサポートされています。
{ "Version": "1", "Statement": [ { "Action": [ "log:ListShards", "log:GetCursorOrData", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup", "log:ConsumerGroupHeartBeat", "log:ConsumerGroupUpdateCheckPoint", "log:ListConsumerGroup", "log:CreateConsumerGroup" ], "Resource": [ "acs:log:*:*:project/<Project name>/logstore/<Logstore name>", "acs:log:*:*:project/<Project name>/logstore/<Logstore name>/*" ], "Effect": "Allow" } ] }
SplunkのバージョンとSplunkが実行されているオペレーティングシステムを確認します。
最新バージョンのアドオンが使用されていることを確認してください。
オペレーティングシステムがLinux、macOS、またはWindowsであることを確認してください。
Splunk heavy forwardersのバージョンが8.0以降で、Splunk indexersのバージョンが7.0以降であることを確認してください。
SplunkでHECを設定します。 詳細については、「Configure HTTP Event Collector on Splunk Enterprise」をご参照ください。
HECを使用してイベントをSplunkインデクサーに送信する場合は、HECがSplunkに設定されていることを確認してください。 Splunkプライベートプロトコルを使用してSplunkインデクサーにイベントを送信する場合は、この手順をスキップしてください。
説明HECトークンを作成するときは、トークンのインデクサー確認機能を有効にしないでください。
アドオンのインストール
Splunk webインターフェイスにログインして、アドオンをインストールできます。 アドオンをインストールするには、次のいずれかの方法を使用することを推奨します。
アドオンは、データの収集にのみ使用されます。 Splunkヘビーフォワーダーにアドオンをインストールする必要があります。 Splunkインデクサーや検索ヘッドにアドオンをインストールする必要はありません。
方法 1
アイコンをクリックします。
[アプリ] ページで、[その他のアプリを検索] をクリックします。
[その他のアプリの参照] ページで、Alibaba Cloud Log Serviceアドオンfor Splunkを検索し、[インストール] をクリックします。
アドオンのインストール後、プロンプトに従ってSplunkを再起動します。
方法 2
アイコンをクリックします。
[アプリ] ページで、[ファイルからアプリをインストール] をクリックします。
アプリのアップロードページで、アップロードするTGZファイルを選択し、[アップロード] をクリックします。
[アプリ検索結果] をクリックして、必要なTGZファイルをダウンロードします。
[インストール] をクリックします。
アドオンのインストール後、プロンプトに従ってSplunkを再起動します。
アドオンの設定
SplunkがElastic Compute Service (ECS) インスタンスで実行されていない場合、Alibaba CloudアカウントのAccessKeyペアを使用してSimple Log Serviceにアクセスできます。 手順:
Splunk webインターフェイスで、Alibaba Cloud Log Serviceアドオンfor Splunk.
グローバルアカウントを設定します。
表示されるページで、
を選択します。 [設定] ページで、[アカウント] タブをクリックします。 このタブで、[追加] をクリックします。 [アカウントの追加] ダイアログボックスで、Simple Log Serviceへのアクセスに使用できるAccessKeyペアを指定します。説明ユーザー名フィールドにAccessKey IDを入力し、パスワードフィールドに関連するAccessKeyシークレットを入力する必要があります。
アドオンログのレベルを指定します。
を選択します。 [設定] ページで、[ログ] タブをクリックします。 このタブで、[ログレベル] ドロップダウンリストからレベルを選択します。
データ入力を作成します。
入力を開きます。入力ページに移動します。
[新規入力の作成] をクリックします。 [sls_datainputの追加] ダイアログボックスで、データ入力のパラメーターを設定します。
表 1. データ入力のパラメータ
パラメーター
必須とデータ型
説明
例
名前
はい、文字列
データ入力の名前。 名前はグローバルに一意である必要があります。
なし。
間隔
はい、整数
プロセスが停止した後、Splunkデータ入力プロセスを再開するのに必要な時間。 単位は秒です。
デフォルト値は 10 です。
Index
はい、文字列
Splunkインデックス。
なし。
SLS AccessKey
はい、文字列
AccessKey IDとAccessKeyシークレットで構成されるAlibaba Cloud AccessKeyペア。
説明ユーザー名フィールドにAccessKey IDを入力し、パスワードフィールドに関連するAccessKeyシークレットを入力する必要があります。
グローバルアカウントを設定するときに入力するAccessKeyペア。
SLS endpoint
はい、文字列
Simple Log Serviceエンドポイント。 詳細については、「エンドポイント」をご参照ください。
cn-huhehaote.log.aliyuncs.com
https://cn-huhehaote.log.aliyuncs.com
SLS project
はい、文字列
Simple Log Serviceプロジェクトの名前。 詳細については、「プロジェクトの管理」をご参照ください。
なし。
SLS logstore
はい、文字列
Simple Log Service Logstoreの名前。 詳細については、「Logstoreの管理」をご参照ください。
なし。
SLS consumer group
はい、文字列
Simple Log Serviceコンシューマグループの名前。 複数のデータ入力を使用して、同じLogstoreに格納されているデータを使用する場合は、データ入力に同じコンシューマグループ名を指定する必要があります。 詳細については、「コンシューマーグループを使用したデータの消費」をご参照ください。
なし。
SLS cursor start time
はい、文字列
ログデータ消費の開始時刻。 このパラメーターは、新しいコンシューマーグループを使用する場合にのみ有効です。 既存のコンシューマーグループを使用する場合、データは最後のチェックポイントから消費されます。
説明開始時刻はログ受信時刻です。
有効な値: 開始、終了、およびISO 8601形式の時間値。 例: 2018-12-26 0:0:0 + 8:00。
SLS heartbeat interval
はい、整数
コンシューマーとサーバーの間でハートビートメッセージが送信される間隔。 単位は秒です。
デフォルト値: 0。
SLS data fetch interval
はい、整数
Simple Log Serviceからログを取得する間隔。 ログの生成頻度が低い場合は、このパラメーターを小さな値に設定しないことを推奨します。 単位は秒です。
デフォルト値は 1 です。
Topic filter
いいえ、文字列
トピックごとにログをフィルタリングするために使用される文字列。 複数のトピックはセミコロン (;) で区切ります。 ログのトピックが一致する場合、ログは無視され、Splunkに送信されません。
TopicA;TopicB。 この値は、トピックがTopicAまたはTopicBであるログを無視することを指定します。
Unfolded fields
いいえ、JSON
JSON形式のログのトピックとフィールドのリストの間のマッピング関係。 {"topicA": ["field_nameA1", "field_nameA2", ...], "topicB": ["field_nameB1", "field_nameB2", ...], ...}
{"actiontrail_audit_event": ["event"] } 。 この値は、トピックがactiontrail_audit_eventであるログで、指定されたフィールドのJSON文字列が展開され、イベントフィールドに格納されることを指定します。
Event source
いいえ、文字列
Splunkイベントのソース。
なし。
Event source type
いいえ、文字列
Splunkイベントのソースのタイプ。
なし。
Event retry times
いいえ、整数
ログデータを再試行した回数。
デフォルト値: 0。無制限の再試行を指定します。
Event protocol
はい、文字列
Splunkイベントの送信に使用されるプロトコル。 Splunkプライベートプロトコルを使用してSplunkイベントを送信する場合、テーブルで次のパラメーターを設定する必要はありません。
HEC の HTTP
HEC の HTTPS
プライベートプロトコル
HEC host
はい、文字列
HECホスト。 このパラメーターは、HECを使用してSplunkイベントを送信する場合にのみ有効です。 詳細については、「Splunk WebでのHTTPイベントコレクターの設定と使用」をご参照ください。
なし。
HEC port
はい、整数
HECポート。 このパラメーターは、HECを使用してSplunkイベントを送信する場合にのみ有効です。
なし。
HEC token
はい、文字列
HECトークン。 このパラメーターは、HECを使用してSplunkイベントを送信する場合にのみ有効です。 詳細については、「HEC token」をご参照ください。
なし。
HEC timeout
はい、整数
HECタイムアウト期間。 このパラメーターは、HECを使用してSplunkイベントを送信する場合にのみ有効です。 単位は秒です。
デフォルト値: 120
SplunkがECSインスタンスで実行されている場合、RAMロールをECSインスタンスにアタッチできます。 これにより、ECSインスタンスはRAMロールを引き受けてSimple Log Serviceにアクセスできます。 手順:
必要なRAMロールがアタッチされているECSインスタンスでSplunkが実行されていることを確認します。
RAMロールをECSインスタンスにアタッチします。
このステップでは、RAMロールを作成し、RAMロールに権限を付与してから、RAMロールをECSインスタンスにアタッチします。 詳細については、「インスタンスRAMロールの設定」をご参照ください。
RAMロールのポリシーの詳細については、「準備」のポリシーをご参照ください。
Splunk webインターフェイスで、Alibaba Cloud Log Serviceアドオンfor Splunk.
グローバルアカウントを設定します。
表示されるページで、ステップ1で作成されたRAMロールの名前を入力します。
を選択します。 [設定] ページで、[アカウント] タブをクリックします。 このタブで、[追加] をクリックします。 [アカウントの追加] ダイアログボックスで、ECSインスタンスにアタッチされているRAMロールを指定します。 この例では、UsernameフィールドにECS_RAM_ROLEを入力し、Passwordフィールドにデータ入力を作成します。
入力を開きます。入力ページに移動します。
[新規入力の作成] をクリックします。 [sls_datainputの追加] ダイアログボックスで、データ入力のパラメーターを設定します。
SLS AccessKeyパラメーターは、手順3で作成したグローバルアカウントに設定する必要があります。 その他のパラメーターの詳細については、「データ入力のパラメーター」をご参照ください。
関連する API 操作
クエリデータ
データ入力が有効状態であることを確認します。 Splunk webインターフェイスで、[検索とレポート] をクリックします。 [App: Search & Reporting] ページで、収集した監査ログを照会します。
Simple Log Serviceの操作ログの照会
検索ボックスに
index="_internal" | search "SLS info"
と入力して、Simple Log Serviceの情報ログを照会します。検索ボックスに
index="_internal" | search "error"
と入力し、Simple Log Serviceのエラーログを照会します。
パフォーマンスとセキュリティ
パフォーマンス
アドオンのパフォーマンスとデータ送信スループットは、次の要因によって異なります。
エンドポイント: パブリック、クラシックネットワーク、仮想プライベートクラウド (VPC) 、またはグローバルアクセラレーションエンドポイントを使用して、Simple Log Serviceにアクセスできます。 ほとんどの場合、クラシックネットワークエンドポイントまたはVPCエンドポイントを使用することを推奨します。 詳細については、「エンドポイント」をご参照ください。
帯域幅: Simple Log ServiceとSplunkヘビーフォワーダー間、およびSplunkヘビーフォワーダーとインデクサー間のデータ転送の帯域幅は、パフォーマンスに影響します。
Splunkインデクサーの処理機能: Splunkヘビーフォワーダーからデータを受信するインデクサーの機能は、パフォーマンスに影響します。
シャードの数: Logstore内のシャードの数が多いほど、データ転送機能が高いことを示します。 生ログが生成される速度に基づいてシャードの数を指定する必要があります。 詳細については、「シャードの管理」をご参照ください。
Splunkデータ入力の数: Logstore用に設定されているコンシューマーグループ内のデータ入力の数が多いほど、スループットが高くなります。
説明ログデータの同時消費は、Logstore内のシャードの数によって異なります。
Splunkヘビーフォワーダーが占有するCPUコアとメモリリソースの数: ほとんどの場合、1つのSplunkデータ入力で1 GB〜2 GBのメモリリソースと1 CPUコアが消費されます。
十分なメモリとCPUリソースが割り当てられている場合、1つのSplunkデータ入力で1秒あたり1 MBから2 MBの速度でログデータを消費できます。 生ログが生成される速度に基づいてシャードの数を指定する必要があります。
たとえば、ログが1秒あたり10 MBの速度でLogstoreに書き込まれる場合、Logstoreで少なくとも10個のシャードを作成し、アドオンで10個のデータ入力を設定する必要があります。 アドオンを単一のサーバーにデプロイする場合は、サーバーに10個のアイドルCPUコアと12 GBの使用可能なメモリリソースがあることを確認してください。
High availability
コンシューマーグループは、サーバー側にチェックポイントを保存します。 コンシューマーがデータの消費を停止すると、別のコンシューマーは最後のチェックポイントからデータを消費し続けます。 Splunkデータ入力は複数のサーバーに作成できます。 サーバーの実行が停止または破損した場合、別のサーバーのSplunkデータ入力は、最後のチェックポイントからのデータを消費し続けます。 理論的には、複数のサーバーで起動されるSplunkデータ入力の数は、シャードの数よりも多くなる可能性があります。これにより、例外が発生した場合に最後のチェックポイントからデータが消費されます。
HTTPSベースのデータ伝送
Simple Log Service
HTTPSを使用してプログラムとSimple Log Serviceの間で送信されるデータを暗号化するには、エンドポイントの先頭にhttps:// が付いていることを確認します。 例: https://cn-beijing.log.aliyuncs.com 。
* .aliyuncs.comサーバー証明書はGlobalSignによって発行されます。 デフォルトでは、ほとんどのLinuxおよびWindowsサーバーはこの証明書を信頼するように事前設定されます。 サーバーがこの証明書を信頼しない場合は、「信頼できるルートCAまたは自己署名証明書のインストール」をご参照ください。
Splunk
HTTPSベースのHECを使用するには、[グローバル設定] ダイアログボックスでHECを有効にしたときにSSL機能を有効にします。 詳細については、「Configure HTTP Event Collector on Splunk Enterprise」をご参照ください。
AccessKeyペアストレージ保護
Simple Log ServiceとHECトークンへのアクセスに使用するAccessKeyペアは暗号化され、Splunkに保存されます。 これにより、データリークを防ぎます。
よくある質問
設定エラーが発生した場合はどうすればよいですか?
データ入力を作成または変更するときに、データ入力で構成エラーが発生することがあります。 この場合、データ入力の基本構成を確認してください。 パラメーターの詳細については、「データ入力のパラメーター」をご参照ください。
Simple Log Serviceで設定エラーが発生する可能性があります。 たとえば、システムがコンシューマーグループの作成に失敗しました。 この場合は、Simple Log Serviceの設定を確認してください。
コマンド:
index="_internal" | search "error"
エラーログ:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: LogStoreNotExist, errorMessage: logstore xxxx does not exist
ConsumerGroupQuotaExceedエラー
1つのLogstoreに最大20のコンシューマグループを設定できます。 Simple Log Serviceコンソールでコンシューマーグループを表示し、不要になったコンシューマーグループを削除することを推奨します。 20を超えるコンシューマーグループがLogstoreに設定されている場合、ConsumerGroupQuotaExceedエラーが報告されます。
権限エラーが発生した場合はどうすればよいですか?
Simple Log Serviceにアクセスする権限がありません。 権限を確認します。
コマンド:
index="_internal" | search "error"
エラーログ:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: SignatureNotMatch, errorMessage: signature J70VwxYH0+W/AciA4BdkuWxK6W8= not match
ECSインスタンスのRAM認証に失敗しました。
コマンド:
index="_internal" | search "error"
エラーログ:
ユーザー設定で
ECS RAM Role detected in user config, but failed to get ECS RAM credentials. Please check if ECS instance and RAM role 'ECS-Role' are configured appropriately.
ECS-Roleは、作成するRAMロールです。 ECS-Role変数が実際の値として表示されます。
トラブルシューティング
データ入力のSLS AccessKeyパラメーターが、RAMロールを持つグローバルアカウントとして設定されているかどうかを確認します。
RAMロールがグローバルアカウントに適切に設定されているかどうかを確認します。 ユーザー名はECS_RAM_ROLEに設定し、パスワードはRAMロールの名前に設定する必要があります。
RAMロールがECSインスタンスにアタッチされているかどうかを確認します。
RAMロールの信頼できるエンティティタイプがAlibaba Cloud Serviceに設定されているかどうかを確認します。 選択した信頼できるサービスがECSかどうかを確認します。
RAMロールがアタッチされているECSインスタンスが、Splunkが実行されているECSインスタンスであるかどうかを確認します。
HECにアクセスする権限がありません。
コマンド:
index="_internal" | search "error"
エラーログ:
ERROR HttpInputDataHandler - Failed processing http input, token name=n/a, channel=n/a, source_IP=127.0.0.1, reply=4, events_processed=0, http_input_body_size=369 WARNING pid=48412 tid=ThreadPoolExecutor-0_1 file=base_modinput.py:log_warning:302 | SLS info: Failed to write [{"event": "{\"__topic__\": \"topic_test0\", \"__source__\": \"127.0.0.1\", \"__tag__:__client_ip__\": \"10.10.10.10\", \"__tag__:__receive_time__\": \"1584945639\", \"content\": \"goroutine id [0, 1584945637]\", \"content2\": \"num[9], time[2020-03-23 14:40:37|1584945637]\"}", "index": "main", "source": "sls log", "sourcetype": "http of hec", "time": "1584945637"}] remote Splunk server (http://127.0.0.1:8088/services/collector) using hec. Exception: 403 Client Error: Forbidden for url: http://127.0.0.1:8088/services/collector, times: 3
考えられる原因:
HECが設定または開始されていません。
データ入力のHEC関連パラメータは無効です。 たとえば、HTTPSベースのHECを使用する場合は、SSL機能を有効にする必要があります。
HECトークンのインデクサー承認機能は無効になっています。
消費レイテンシが存在する場合はどうすればよいですか?
消費者グループのステータスは、Simple Log Serviceコンソールで確認できます。 詳細については、「手順3: コンシューマーグループのステータスの表示」をご参照ください。
シャードの数を増やすか、同じコンシューマーグループでより多くのデータ入力を作成することをお勧めします。 詳細については、「パフォーマンスとセキュリティ」をご参照ください。
ネットワークジッタが発生した場合はどうすればよいですか?
コマンド:
index="_internal" | 検索 "SLS info: Failed to write"
エラーログ:
WARNING pid=58837 tid=ThreadPoolExecutor-0_0 file=base_modinput.py:log_warning:302 | SLS info: Failed to write [{"event": "{\"__topic__\": \"topic_test0\", \"__source__\": \"127.0.0.1\", \"__tag__:__client_ip__\": \"10.10.10.10\", \"__tag__:__receive_time__\": \"1584951417\", \"content2\": \"num[999], time[2020-03-23 16:16:57|1584951417]\", \"content\": \"goroutine id [0, 1584951315]\"}", "index": "main", "source": "sls log", "sourcetype": "http of hec", "time": "1584951417"}] remote Splunk server (http://127.0.0.1:8088/services/collector) using hec. Exception: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')), times: 3
ネットワークジッタが発生した場合、Splunkイベントは自動的に再送信されます。 問題が解決しない場合は、ネットワーク管理者に連絡してください。
消費の開始時間を変更するにはどうすればよいですか?
説明SLSカーソル開始時間パラメーターは、新しいコンシューマーグループを使用する場合にのみ有効です。 既存のコンシューマーグループを使用する場合、データは最後のチェックポイントから消費されます。
Splunk webインターフェイスの [入力] ページで、関連するデータ入力を無効にします。
Simple Log Serviceコンソールにログインします。 データが消費されたログストアを見つけ、[データ消費] セクションで関連するコンシューマーグループを削除します。
Splunk webインターフェイスの [入力] ページで、データ入力を見つけ、SLSカーソル開始時間パラメーターを変更します。 次に、データ入力を有効にします。
を選択します。 表示されるダイアログボックスで、