TIPS & TRICKS

AmazonのElastic Container Service(ECS)でSplunkを実行する

SplunkがDockerでサポートされるようになったので、AmazonのECSでSplunkを実行することを検討してみましょう。2018年のAWS re:inventをチューニングした方や参加された方は、AWS Marketplace経由でSplunk dockerイメージも入手できることをご存知だと思います。

今回のブログでは、Splunkのスタンドアロンインスタンスを実行するための簡単なECSクラスタの設定について順を追って見ていきます。SplunkやECS、コンテナの世界に初めて触れる方には、以下のようなものがプロトタイプやテスト、開発に使えるのでおすすめです。ここでは、より複雑なSplunkの検証済みアーキテクチャやECSの高度な設定の詳細については触れていませんが、それはまた別の日のブログで。もっと詳細を知りたい方は github にあります

ここでは、4つの簡単なステップで始める方法をご紹介します。

ステップ1 - ECSクラスタ

AWS ECSでは、FargateとEC2の2つのプラットフォームを使ってコンテナを実行することができます。Fargateを使うと、EC2のサーバーやクラスタを気にせずにコンテナを実行でき、小規模なサービスを実行するのに適しています。EC2 を使用すると、ベースとなるコンピュートとストレージのプラットフォーム上でより高いレベルの計測が可能になります。これは Splunk に必要なので、今回はEC2 クラスタオプションを使用します。

ここでは、"EC2 Linux + ネットワーキング "オプションを選択します。

EC2 クラスタオプションの画面

ここでクラスタの設定を実行します。コンテナのEC2インスタンスタイプ、クラスタ内のインスタンス数、ネットワークなどを設定します。このブログの目的のために、ここではほとんどのデフォルト設定を使用します。

  • ストレージ: これはインスタンスのルートファイルシステムのためだけであることに注意してください。この設定は後ほど行います。
  • キーペア: 新しい鍵ペアを作成するか、既存の鍵ペアを選択してください。これにより、後から必要になった場合に EC2 インスタンスに ssh でアクセスできるようになります (例えば docker コマンドへのアクセスなど)。
  • セキュリティグループ:  Splunk が必要とするすべてのポートが利用可能であることを確認します (8000 や 9997 などの必須ポートに注意してください)。

プロビジョニングされた EC2 インスタンスには、作成時に EBS ストレージが割り当てられます。1つのボリュームはコンテナのルートファイルシステムに、もう1つはDocker Cluster自体に使用されます。このEBSボリュームは、コンテナ内で作成したすべてのボリュームにも使用されます。このEBSボリュームのデフォルトサイズは8Gのみです。

ボリュームサイズを変更するには、クラスタを選択し、[ECS Instances]を選択します。インスタンスのリンクをクリックします(1つずつ)。これにより、そのインスタンスの詳細が表示されたEC2ダッシュボードが開きます。

EC2ダッシュボード画面

ルートデバイスリンクの/dev/xvdaをクリックしてEBSボリュームに移動し、ボリュームをより大きなサイズ(8Gから300G)に変更します。300GのEBSでは900 IOPSが得られますが、これはシングルインスタンスのデプロイで推奨される最小値に近いことに注意してください。

保存してEC2 Dashboardに戻ります。EC2インスタンスを再起動します。(クラスタ内の他のEC2インスタンス/EBSボリュームについても繰り返します)

ステップ2 - Dockerイメージ

ここでは、クラスタ化されたデプロイメントではなく、シングルサーバーのSplunkインストールを作成します。メインのAWS ECSメニューに戻り、Task Definitionを選択し、Create a new Task Definitionを選択します。Launch typeとしてEC2を選択します。

メインAWS画面

タスク名を入力し、タスクの役割としてecsTaskExecutionRoleを選択します。ネットワークモードはデフォルトの設定を使用します。

タスクのメモリとCPUは、必要に応じて適切なサイズを選択します。

小さなテストインスタンスの場合、私はこれを 8GB と 4vCPU に設定しました。(これはSplunkの推奨サイズを下回っていますが、ECSではタスクごとに10vCPUという制限があることにも注意してください)。

コンテナを追加する前に、$SPLUNK_HOME/etc/に2つのボリュームを作成します。

この両方のためにボリュームを作成し(例えば splunk-etc-vol と splunk-var-vol という名前にします)、"Specify a volume drive" チェックボックスをクリックして、ボリュームのスコープを "shared" に変更できるようにして、自動プロビジョニングを有効にします。

ボリュームスコープ設定画面

Add Container "をクリックして名前を入力し、DockerHubにあるSplunkイメージから読み込むイメージを設定します: splunk/splunk:latestを使ってください。Marketplace版を使用したい場合は、ここでSplunkイメージを使用することに注意してください。
217273820646.dkr.ecr.us-east-1.amazonaws.com/00afcccb-7187-4e20-b391-afef9d004be5/cg-3264970572/splunk:7.2.0-latest

他の標準設定はデフォルトのままでも構いませんが、ホストとコンテナのポートマッピングを追加するようにしてください。私はサーチヘッドのUIに8000を、転送に9997を使用しています(必要に応じて他の設定を追加してください)。

コンテナ上に複数の Splunk インスタンスを作成している場合、同じ EC2 ホスト IP/ポートを共有するため、異なるポートマッピングが必要になります。

コンテナ詳細設定画面

コンテナの詳細設定を開きます。Healthcheckの設定はすべて設定なしのままでも構いません。(オプション - ホスト名を親しみやすい名前に変更します)。

ストレージとログセクションで、/opt/splunk/etcと/opt/splunk/varの2つのマウントポイントを追加し、先ほど設定したものと同じようにソースボリュームを選択します。

ストレージとログセクション画面

環境設定では、以下の環境変数を設定する必要があります。

SPLUNK_START_ARGS = --accept-license

SPLUNK_PASSWORD = <管理者のためのお好みのパスワード>

タスクを実行する際に、パスワード環境変数を入力することもできます。

AWSコンテナ画面

ここでの残りの情報はデフォルトのままにしておくことができるので、タスクを保存して作成します。

ステップ3 - タスクの実行

タスクを選択し(タスク定義リストから)、[アクション]、[タスクの実行]をクリックします。

EC2を選択し、先ほど作成したクラスタを選択して、1つのタスクのみを実行します。詳細オプションでは、パスワードなどいくつかのオプションを上書きすることができます。

コンテナタスク画面

完了するとコンテナタスクが実行され、Splunk が起動します。

Splunk起動画面

ステップ 4 - Splunk にログインする

コンテナインスタンスをクリックすると、IPアドレスとパブリックDNSが表示されるはずです。これをブラウザにコピーし、URL に 8000 番ポート (またはマッピングしたポート) を追加します。これでSplunkのログインページに移動します。

これでセットアップが完了したので、早速AWS環境をSplunkで可視化してみてはいかがでしょうか。Splunk がコンテナを使って出来ることをもっと知りたい方は、2018年の AWS re:invent での短いウェブキャストをご覧ください。

ありがとうございました。

ポール

このブログはこちらの英語ブログの翻訳です。

ブログ関連情報

毎月1回、Splunkブログの更新情報をメールでお届けします。ぜひMonthly Digest をこちらからご登録ください

Paul Davies
Posted by

Paul Davies

Paul is an Architect in EMEA, responsible for working closely with Splunk customers and partners to help them deliver solutions relating to ingesting data or running Splunk in the cloud. Previously, Paul worked at Cisco as a BDM for big data solutions, an Enterprise Architect at Oracle, and Consultant at Hitachi.

TAGS
Show All Tags
Show Less Tags