SplunkがDockerでサポートされるようになったので、AmazonのECSでSplunkを実行することを検討してみましょう。2018年のAWS re:inventをチューニングした方や参加された方は、AWS Marketplace経由でSplunk dockerイメージも入手できることをご存知だと思います。
今回のブログでは、Splunkのスタンドアロンインスタンスを実行するための簡単なECSクラスタの設定について順を追って見ていきます。SplunkやECS、コンテナの世界に初めて触れる方には、以下のようなものがプロトタイプやテスト、開発に使えるのでおすすめです。ここでは、より複雑なSplunkの検証済みアーキテクチャやECSの高度な設定の詳細については触れていませんが、それはまた別の日のブログで。もっと詳細を知りたい方は github にあります。
ここでは、4つの簡単なステップで始める方法をご紹介します。
AWS ECSでは、FargateとEC2の2つのプラットフォームを使ってコンテナを実行することができます。Fargateを使うと、EC2のサーバーやクラスタを気にせずにコンテナを実行でき、小規模なサービスを実行するのに適しています。EC2 を使用すると、ベースとなるコンピュートとストレージのプラットフォーム上でより高いレベルの計測が可能になります。これは Splunk に必要なので、今回はEC2 クラスタオプションを使用します。
ここでは、"EC2 Linux + ネットワーキング "オプションを選択します。
ここでクラスタの設定を実行します。コンテナのEC2インスタンスタイプ、クラスタ内のインスタンス数、ネットワークなどを設定します。このブログの目的のために、ここではほとんどのデフォルト設定を使用します。
プロビジョニングされた EC2 インスタンスには、作成時に EBS ストレージが割り当てられます。1つのボリュームはコンテナのルートファイルシステムに、もう1つはDocker Cluster自体に使用されます。このEBSボリュームは、コンテナ内で作成したすべてのボリュームにも使用されます。このEBSボリュームのデフォルトサイズは8Gのみです。
ボリュームサイズを変更するには、クラスタを選択し、[ECS Instances]を選択します。インスタンスのリンクをクリックします(1つずつ)。これにより、そのインスタンスの詳細が表示されたEC2ダッシュボードが開きます。
ルートデバイスリンクの/dev/xvdaをクリックしてEBSボリュームに移動し、ボリュームをより大きなサイズ(8Gから300G)に変更します。300GのEBSでは900 IOPSが得られますが、これはシングルインスタンスのデプロイで推奨される最小値に近いことに注意してください。
保存してEC2 Dashboardに戻ります。EC2インスタンスを再起動します。(クラスタ内の他のEC2インスタンス/EBSボリュームについても繰り返します)
ここでは、クラスタ化されたデプロイメントではなく、シングルサーバーのSplunkインストールを作成します。メインのAWS ECSメニューに戻り、Task Definitionを選択し、Create a new Task Definitionを選択します。Launch typeとしてEC2を選択します。
タスク名を入力し、タスクの役割として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 = <管理者のためのお好みのパスワード>
タスクを実行する際に、パスワード環境変数を入力することもできます。
ここでの残りの情報はデフォルトのままにしておくことができるので、タスクを保存して作成します。
タスクを選択し(タスク定義リストから)、[アクション]、[タスクの実行]をクリックします。
EC2を選択し、先ほど作成したクラスタを選択して、1つのタスクのみを実行します。詳細オプションでは、パスワードなどいくつかのオプションを上書きすることができます。
完了するとコンテナタスクが実行され、Splunk が起動します。
ステップ 4 - Splunk にログインする
コンテナインスタンスをクリックすると、IPアドレスとパブリックDNSが表示されるはずです。これをブラウザにコピーし、URL に 8000 番ポート (またはマッピングしたポート) を追加します。これでSplunkのログインページに移動します。
これでセットアップが完了したので、早速AWS環境をSplunkで可視化してみてはいかがでしょうか。Splunk がコンテナを使って出来ることをもっと知りたい方は、2018年の AWS re:invent での短いウェブキャストをご覧ください。
ありがとうございました。
ポール
このブログはこちらの英語ブログの翻訳です。
毎月1回、Splunkブログの更新情報をメールでお届けします。ぜひMonthly Digest をこちらからご登録ください!
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。