真司(201)1432143件のシェア(ちょっぴり話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。2015』の17日目のエントリです。Kinesis』でした。このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。Service』です。2015/10/1にリリースと約2ヶ月半前にリリースされたサービスなので再入門と呼ぶには少し微妙な感じはありますが。ServiceはElasticsearchのAWSマネージドサービスです。Serviceの説明に入る前に簡単にElasticsearchの概要をご紹介します。Luceneベースの検索・分析エンジンApacheプロジェクトのLucene(全文検索エンジン)をベースとしたOSSの検索・分析ソフトウェアです。高拡張性/高可用性Elasticの名の通り、高い拡張性・可用性を提供します。拡張性ElasticsearchはデータをShardという単位でデータを保持します。このShardを複数のノードに分散して保持することで、分散処理により高負荷な環境でもスケールすることでボトルネックへの対策が可能です。NodeといったNodeTypeがあり、Elasticsearchの利用用途に応じて役割を分けることで負荷低減、パフォーマンス向上を行うことができます。可用性Shardはレプリカを持つことができ、異なるノードへレプリカを保持することで、ノードがダウンした場合もレプリカが昇格し、アプリケーションを継続することができます。スキーマレスドキュメント指向のスキーマレスモデルが採用されています。テンプレート機能を利用すれば、事前にインデックス/タイプにスキーマ定義することも可能です。APIによる操作RESTfulに則ったAPIで操作が可能です。INPUT/OUTPUTがJSON形式ですのでシステムに組み込みやすいです。豊富な検索オプションAggregationを利用した集計したり、IPアドレスから位置情報を取得したり、座標から距離を計算したり、非常に多くの検索オプションが用意されています。APIのドキュメントが一番ボリュームが多いです。素敵な周辺ツールLogstashログ処理ツールです。下記、3つのステップに分けて、多種多様なプラグインからデータを処理することができます。INPUTFILTEROUTPUT任意の入力プラグインで色々なソースから取得したデータを、任意のフィルタープラグインでデータを処理し、任意の出力プラグインでデータを出力することができます。アクセスログをファイルインプットプラグインでtailしながら、grokフィルタープラグインでメッセージをJSON形式に変換し、ElsticsearchアウトプットプラグインでElasticsearchに取り込む、といったことが可能です。フィルタープラグインは複数適用することも可能です。KibanaElasticsearchのデータを可視化/分析するツールです。Kibanaで可視化したいからElasticsearchを利用したい方もいるのではないでしょうか?多様な表示形式で多次元にデータを可視化、分析することができます。4.2からPluginにも対応し、更に豊富な可視化を実現できるようになりました。利用者によってPluginを実装することもできます。Platformつい1ヶ月前ぐらいに、1.0GAがリリースされました。Packetbeatというトラフィックを取得するツールがありました。Platformとして展開されました。Golangで書かれ、軽量なフットプリントが魅力です。Serviceの特徴Elasticsearchの素敵な感じはなんとなくご理解いただけましたでしょうか。Serviceを利用することで得られる恩恵をご紹介します。AWSマネージドサービスなんといってもこれですね。構築、運用に関する多くのことが簡略化されています。画面操作、APIによるデプロイ、スケールマネジメントコンソールから数クリックするだけでデプロイできます。awscliなどのAPIを活用すればコマンドワンライナーでデプロイすることが可能です。そのためOS、アプリケーションのインストール、設定が不要です。運用中にパフォーマンス、ディスク容量に不安を感じた場合も、インスタンスタイプ、インスタンス数、ディスクサイズの変更をマネジメントコンソールからの数クリック、APIによりスケールアップ、スケールアウトが可能です。Nodeを任意のインスタンスタイプ、インスタンス数で指定できます。Nodeを分けずに同居させることも可能です。ReplicaシャードをMultiAZで持つことができ、AZレベルの障害にもアプリケーションを継続できます。障害の自動検出、ノード交換ノードの監視はAWSが担当します。ノードに障害が発生した場合、AWSが新しいノードと差し替えてくれます。運用に手がかかりません。自動スナップショット毎日指定した時間にスナップショットを取得します。スナップショットはユーザー管理外の領域に取得され、ユーザーの操作ではリストアはできません。手動スナップショットも可能です。APIをリクエストすることで任意のタイミングでスナップショットを取得でき、任意のタイミングでリストアできます。)、Watcherによってリソースのモニタリング、および監視・通知を行うことができました。ServiceはCloudWatchが対応しており、リソースのモニタリング、監視、通知をCloudWatchにより行うことができます。Serviceのセッションのスライドの一部です。APIはIAMを通して、Elasticsearchに届けられます。それにより以下のアクセス制御が可能となっています。Logsへログ出力します。ServiceへINPUTしてくれます。FunctionのソースコードはAWSが用意していて、自動生成されるため、自ら実装する必要がありません。Lambdaなどはテキスト形式で出力されます。Functionへプッシュする際にJSON形式に変換して渡すことが可能です。Serviceへ転送する上では一切のコーディングを必要としません。デフォルトで利用可能なプラグインよく利用されるプラグインは最初から利用可能です。料金は初期費用は必要なく、インスタンスタイプ、インスタンス数などに応じた従量制の課金体系です。料金はこちらのサイトをご参照ください。ElasticsearchやKibanaでやりたいことができるのかを触ってみたいという方には持ってこいのサービスです。Serviceの制限事項ここまでメリットばかりで選択しない理由がないのではないか、となりますが、制限事項もあります。StartedLaunch機能を説明したところでLaunchしてみましょう。Serviceのサービス画面へ遷移してください。Serviceのドメインが表示されます。domain」を選択します。Elasticsearchのドメイン名前を設定します。ドメイン名は文字数が3〜28、利用可能な文字は英小文字、数字、-(ハイフン)のみです。インスタンスタイプ、インスタンス数を指定します。Nodeのインスタンスタイプ、インスタンス数を指定します。インスタンス数はスプリットブレインを回避するために3以上が推奨されます。awareness」をチェックします。ストレージタイプを選択します。EBSから選択可能です。EBSを選択した場合、ボリュームタイプを選択、ディスクサイズを指定します。IOPSから選択可能です。Storeを選択した場合、インスタンスタイプに応じたディスクサイズとなります。自動スナップショットの取得時間を選択します。毎日指定した時間にスナップショットを取得します。他にも詳細設定として、本来、ElasticsearchのYAMLファイルで設定可能な項目も2つ指定可能です。rest.action.multi.allow_explicit_indexはサブリソースの指定を強制させたいのであれば、falseを選択してください。indices.fielddata.cache.sizeはfielddataに利用可能なヒープサイズを指定します。続いて、アクセス制御です。JSON形式でアクセスポリシーを記載します。Serviceのアクセスポリシーはテンプレートが用意されています。自動でアクセスポリシーが生成されます。確認画面で設定内容を確認します。