[和訳] Chef Analyticsプラットフォームとの出会い #getchef
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Meet the Chef Analytics Platform (2014/07/15) の和訳です。
Chef Analyticsについて詳しくは2014/9/17 10AM PSTのwebinarをご覧ください。
Chef AnalyticsプラットフォームはChefのプレミアム機能です。Chef Serverに起きていることをリアルタイムで可視化し、この機能の将来の新しいスイートではインフラの包括的な視点を提供します。Chef AnalyticsはChef Serverと別のハードウェア上で動作する、いくつものコンポーネントの集合体です。本日、Chefの動作を記録する機能を持った、Analyticsプラットフォームの最初のバージョンをリリースしました。長い期間をかけて、AnalyticsプラットフォームはChef ServerとClientのメトリクスとイベントデータを解析するための追加機能を提供していく予定です。
Chef Analyticsプラットフォームは何をしてくれるの?
AnalyticsはChef Serverの可視化、変更があった際の通知、適合性の検証を行います。
- 可視化: サーバに対して何を変更したか、誰が変更したか、いつ起きたのかをリアルタイムで見ることができます。
- 通知: HipChatのようなお好みの外部ツールとAnalyticsを統合できます。関係者やChef Serverに対する変更に関する自動化ツールに通知することで、リアルタイムに反応させることができます。
- 適合性: 一旦システムへの変更を可視化したら、内部統制に適合しているか検証することができます。
Actionログ
既存のEnterprise Chefの機能には、インフラの動作についてのビューや、chef-clientの動作中に起きたことを追跡するためのReportingを提供するマネジメントコンソールがあります。しかし、これまでChef Serverのポリシーが更新されたことを簡単に知る方法がなく、変更を監視するしかありませんでした。例えば、CookbookのバグでNodeの収束が止まったら、管理者はCookbookに最近加えられた変更が何か、アップロードされたのは何か、誰がしたのか、わかりませんでした。Chef Actionログは、Serverの状態を変更した作業のフィードをリアルタイムで提供することによって解決します。Actionはポリシーであり、Chef Serverに対して行われた管理的な変更です。Chef Serverは、Node Object、全Nodeの動作履歴、全Cookbookの履歴、バージョン、RoleやEnvironmentやData Bagのようなポリシーの設定、何が適用されたのか、何に適用したのか、個々のUserデータなどなど、たくさんのデータを収集しています。Actionは、ユーザのマネジメントコンソールの操作の結果、Knifeコマンドの結果、Chef Clientの動作の結果によって発生します。何が大元であるかに関係なく、すべてのActionはAnalyticsプラットフォームによって追跡され、Actionログに記録されます。結果は直感的な表示でリアルタイムに追跡できます。Actionログは次の疑問に答えてくれるでしょう。
- どのオブジェクトが変更された?
- どのような種類の変更が行われた?
- いつ変更が行われた?
- 誰が変更した?
例:
- ローカルのWorkstationからChef Serverに特定のUserがCookbookをアップロードした日時。
- Cookbookが動作しなくなる直前にシステムに加えられた変更。
- Nodeが作られた最初の時間がいつか、Chef Serverから登録を解除されて削除されたのはいつか。
この情報は、システム全体のどこが変更されたのかをすぐに特定し、その逆にどこが間違っているのかを特定する助けに、そして組織にとっての解決策は何かを見つける助けとなります。エラーが発生したら、1つ以上のchef-clientの実行が失敗するより前に起きたことを発見できるようになります。なぜならChefがすべてをリアルタイムで追跡しているので、すぐに起きたイベントに対して反応でき、発生した問題をただちに解決できます。
通知して!
これまでNodeの変更をリアルタイムに知るためには、Chef-Clientに独自のクライアントサイドのハンドラを組み込む必要がありました。Actionログなら、このロジックをサーバに移し、拡張して置換し、よりよくハンドラを中央集権化することができます。現在、ハンドラをSensuに、logstashをHipChatやPagerDutyにデプロイしているとします。Chef AnalyticsプラットフォームのこのリリースにおけるHipChat通知から、これらは通知によって置き換えられるでしょう。そして、必要な通知機能を迅速に繰り返しお届けする予定です。
パイプラインアーキテクチャ
各パブリックAPIにて発生した興味深いイベントについてのメッセージを発信するコンポーネントとして、出版-購読型(publish-subscribe; pub/sub)メッセージングプラットフォームを使っています。このpub/subプラットフォームは、データベースを格納するコンポーネントやウェブ表示を含む、情報の標準的な消費者を提供しています。データは検索可能であり、後の調査や監査の目的のために長期間保存されます。次図はどのように動作するかを表しています。
Chef ActionログUIからどんなことができますか?
現在、このUIでは次のことができます。
- ChefオブジェクトのActionの閲覧: バグを追跡するためのNodeやRoleへの変化を確認できます。
- Organizationに対するActionの閲覧: 日や週の異なる時間での変更点を計測するために、本番OrganizationでのすべてのActionを確認できます。
- Chefマネジメントコンソールへの案内: Chef Actionログページからワンクリックでマネジメントコンソールへのオブジェクトにアクセスできます。
- メッセージの出力: CookbookやRoleが更新されたときにChefからHipChatへ通知を送信できます。
- knife、chef-client、その他のクライアントの区別: 普通でない、予期しない動作を見つけるため、Chef Serverにアクセスするクライアントアプリケーションを区別して表示できます。
- 単一のクライアント起動からの呼び出しを関連付け: chef-clientやknifeといった単一のクライアントを起動している最中に起きたすべての事象をグループ化できます。
- 後の調査のためのActionの閲覧: 監査目的やイベント発生後の情報解析のために、永続的なログを保存できます。すべてのメッセージは変更不可能です。変更できないメッセージはActionデータベースに確実に届けられます。インフラの変更について信頼できるデータソースとして使うことができます。
あなたの考えを聞かせてください
あなたのご意見いただけると嬉しいです! Chef Actionログを#ChefConf2014でデモしたところ、たくさんのフィードバックや提案を受けました。あなたの営業担当者へアイディアを共有してください。Analyticsは新しい取り組みであるため、ユースケースが重要です。継続して新しい機能をリリースしていく計画です。どんなものが見たいか知らせてください。
インストール手順
本番のChef Serverと独立してChef Analyticsをスケールさせたいなら、Analyticsサーバはスタンドアロン設定で、Chef Serverと異なるホストにデプロイすべきです。Chefドキュメントサイトの手順に従って、analyticsパッケージを使ってChef Actionログをインストールします。Analyticsインストールの前提条件とAnalyticsインストールを参照し、またドキュメントも見てください。