Aplaba Cloud Log Service Add-on for Splunk は、Alibaba Cloud Log Service (SLS) からログを収集し、Splunk に送信します。
アーキテクチャ
- Splunk に入力されたデータは、ログをプルし、SLS からのリアルタイムのログ消費をサポートする SLS コンシューマーグループを作成します。
- データ入力から Splunk インデクサーにログを転送するために、プライベートプロトコルとSplunk HEC の 2 つの代替プロトコルがあります。

メカニズム

- 各データ入力により、1 つのコンシューマーグループに属する 1 つのコンシューマーが作成されます。
- コンシューマーグループは複数のコンシューマーで構成されています。 コンシューマーグループのコンシューマーは、ログストアからデータを消費します。
- ログストアには複数のシャードがあります。
- 1 つのシャードは 1 つのコンシューマーにのみ割り当てることができます。
- 1 つのコンシューマーが複数のシャードでデータを消費することができます。
- すべてのコンシューマーの名前は、コンシューマーグループ、ホスト名、プロセス ID、およびイベントプロトコルの組み合わせであるため、コンシューマーグループ内で一意です。
SLS コンシューマーグループの詳細については、「コンシューマーグループ - 使用法」をご参照ください。
準備
- SLS 用の AccessKey を取得します。
Alibaba cloud RAMで SLS プロジェクトにアクセスするための AccessKey を取得する必要があります。詳細については、 「AccessKey」および「AccessKey ペアの設定」をご参照ください。
この目的で、Log Service コンソールの Log Service 権限アシスタントを使用することもできます。 典型的な RAM ポリシーを以下に示します。注 <Project name> を Log Service プロジェクトの名前に置き換えます。 <Logstore name> をソースログストアの名前に置き換えます。 * のようなあいまい一致のワイド文字を含めることもできます。{ "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 のバージョンとオペレーティングシステムのチェック
- 必ず最新のアドオンバージョンをご使用ください。
- オペレーティングシステム:Linux、Mac OS、Windows。
- Splunk のバージョン:Splunk heavy forwarder 8.0 以降、Splunk indexer 7.0 以降。
- Splunk Enterpriseで HTTP イベントコレクターを設定
HEC を使用して Splunk にイベントを取り込む場合は、HEC が有効になっていることをご確認ください。 Splunk Heavy Forwarder プライベートプロトコルを直接使用する場合は無視してください。注 現在、Event Collectorトークンを作成するときにインデクサー確認を有効にすることはサポートされていません。
アドオンのインストール
- 方法 1
をクリックします。
- [他のアプリを閲覧] をクリックします。
- キーワード [Alibaba Cloud Log Service Add-on for Splunk] を検索してアドオンを確認し、[インストール] をクリックします。
- インストールが完了したら、指示に従って Splunk サービスを再起動します。
- 方法 2
をクリックします。
- [ファイルからアプリをインストール] をクリックします。
- アプリのアップグレードボックスを選択し、[アップロード] をクリックします。
アプリ検索結果からダウンロードした .tgz ファイルをアップロードします。
- インストールが完了したら、指示に従って Splunk サービスを再起動します。
アドオンの設定
始動
- データを検索
最初に、上記のステップで設定されているデータ入力を有効にします。 Splunk Web UI から、[検索とレポート] をクリックして、アプリ: 検索とレポートページへ移動すると、Alibaba Cloud Log Service から収集されたログが表示されます。
- 内部ログ
index="_internal" | search "SLS info"
コマンドを使用して、SLS の稼働状況を取得します。index="_internal" | search "error"
コマンドを使用して、実行時エラーを取得します。
サイジングおよびセキュリティガイド
- パフォーマンスメトリクス
データ変換のパフォーマンスと全体は、次のようないくつかの要因によって大きく影響されます。
- SLS エンドポイント:パブリックネットワーク、クラシックネットワーク、VPC またはインターネットベースのグローバルアクセラレーションにサービスエンドポイントを使用します。 通常、ネットワークが許可する場合は、クラシックネットワークと VPC エンドポイントがパフォーマンスに最適です。 詳細については、「サービスエンドポイント」をご参照ください。
- 帯域幅:アドオンをホストする SLS と Splunk Heavy Forwarder 間のネットワークの帯域幅、および Splunk Heavy Forwarder とインデクサー間の帯域幅を指します。
- Splunk インデクサーの機能は、Splunk インデクサーの受信速度です。
- シャード数:SLS ログストアのシャードが多いほど、データ変換の機能が大きくなります。 シャードの数を指定することができます。 詳細については、「シャードの管理」をご参照ください。
- 設定されたデータ入力数: 1 つのログストアに対して同じコンシューマーグループ名で設定された入力が多いほど、スループットは大きくなります。
注 同時実行コンシューマーの数は、SLSログストアのシャードによって制限されます。
- Splunk ヘビーフォワーダーのメモリと CPU コアの数: 通常、単一の Splunk データ入力は最大 1〜2 G のメモリと最大 1 つの CPU コアを使用します。
上記の条件が満たされると、単一の Splunk データ入力が 1 つのコンシューマーを作成し、1〜2 M/s の生ログの消費速度を提供します。 生ログの生成率に基づいてシャードの数を決定する必要があります。
たとえば、ログストアの生ログの生成速度が 10 M/s の場合は、少なくともログストアの 10 個のシャードを分割し、アドオンと同じ設定で 10 個のデータ入力を設定する必要があります。 マシンには、シングルマシンデプロイモードで 10 個の空き CPU コアと 12 GB のメモリが必要です。
- 高可用性
コンシューマーグループは、チェックポイントをサーバーに格納します。 あるコンシューマーのデータ消費プロセスが停止すると、別のコンシューマーが自動的にプロセスを引き継ぎ、最後の消費のチェックポイントからプロセスを続行します。 Splunk データ入力を異なるサーバーに作成することができます。 サーバーが停止または破損した場合は、別のサーバー上の Splunk データ入力が消費プロセスを引き継ぎ、チェックポイントからプロセスを続行することができます。 十分なコンシューマーを用意するために、異なるサーバー上のシャードの数よりも多くの Splunk データ入力を作成することができます。
- HTTPS
- Log Service
HTTPS を使用してアドオンとログサービスの間で送信されるデータを暗号化するには、サービスエンドポイントのプレフィックスを https:// に設定する必要があります (例: https://cn-beijing.log.aliyuncs.com)。
GlobalSign が発行したサーバー証明書 *.aliyuncs.com です。 ほとんどの Linux および Windows サーバーは、デフォルトでこの証明書を信頼するように事前設定されています。 サーバーがこの証明書を信頼しない場合は、次の Web サイトにアクセスして、有効な証明書をダウンロードおよびインストールすることができます。「Install a trusted root CA or self-signed certificate」をご参照ください。
- Splunk
HEC が HTTPS 経由で再生および通信するようにするには、Splunk HEC グローバル設定の [SSLを有効にする] チェックボックスをオンにします。 詳細については、「Configure HTTP Event Collector on Splunk Enterprise」をご参照ください。
- Log Service
- AccessKey ストレージ保護
SLS の AccessKey や Splunk の HEC トークンなどのキー情報は、予期しない漏洩を防ぐために Splunk 機密ストレージに保存されます。
よくある質問
- 設定エラー
- Web コンソールでデータ入力を追加または変更するときに、いくつかの基本的な設定の検証があります。 詳細については、「表 1」をご参照ください。
- SLS 設定エラー: たとえば、コンシューマーグループの作成に失敗します。
- コマンド:
index="_internal" | search "error"
- 例外ログ:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: LogStoreNotExist, errorMessage: logstore xxxx does not exist
- ConsumerGroupQuotaExceed
SLS のログストアごとに最大 20 のコンシューマーグループを設定することができます。 Log Service コンソールにログインして、コンシューマーグループのステータスを事前に確認することを推奨します。 空き容量が不十分な場合は、不要になったコンシューマーグループを削除する必要があります。 コンシューマーグループの数が 20 を超えると、ConsumerGroupQuotaExceed エラーが報告されます。
- コマンド:
- 権限エラー
- Alibaba Cloud 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
- コマンド:
- HEC にアクセスする権限がない
- Command:
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 を使用する場合は、SSL を有効にする必要があります。
- イベントコレクタートークンのインデクサー確認が無効になっているかどうかを確認します。
- Command:
- Alibaba Cloud Log Service にアクセスする権限がない
- 消費の遅延
- サービスログ機能をオンにすると、次のことができます。
- Log Service コンソールにログインして、コンシューマーグループのステータスを表示することができます。 詳細については、「サービスログダッシュボード」をご参照ください。
- CloudMonitor を使用して、コンシューマーグループに関連付けられた遅延を表示し、警告を設定することができます。 詳細については、「アラームの設定」をご参照ください。
- サービスログ機能が有効になっていない場合は、Log Service コンソールでコンシューマーグループのステータスを表示することができます。 詳細については、「コンシューマーグループ - ステータス表示」をご参照ください。
パフォーマンスメトリクスを参照して、同じコンシューマーグループの下でより多くのシャードを分割したり、より多くのデータ入力を作成したりするなどの問題を解決します。
- サービスログ機能をオンにすると、次のことができます。
- ネットワークショック
- コマンド:
index="_internal" | search "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
通常は自動的に再試行します。 問題が解決しない場合は、チケットを起票し、サポートセンターへお問い合わせください。
- コマンド: