AWS re:Invent 2014 breakout session 2日目
二日目もKeynoteとsessionがありました。メモを残しておきます。
参加したセッション
- SPOT305 -- Event-Driven Computing on Change Logs in AWS
- BDT401 -- Big Data Orchestra - Harmony within Data Analysis Tools
- APP303 -- Lightning Fast Deploys with Docker Containers and AWS
- GAM404 -- Gaming DevOps: Scopely's Continuous Deployment Pipeline
- SDD424 - Simplifying Scalable Distributed Applications Using DynamoDB Streams
新サービス類
気になったものだけ。
ECS: EC2 Container Service
- AWS | Amazon EC2 Container Service
- Expanding The Cloud - Introducing The Amazon EC2 Container Service - All Things Distributed
コンテナのマネジメントの仕組みを提供するもの。EC2インスタンスにあるものと同じように、containerに対してもIAM Roleやsecurity groupを適用したり、EBS volumeをできたりできる。apiではclusterの立ち上げと、taskとしてのcontainerの割り当てを行うことができ、高速にコンテナを扱うことができる。
Amazon Lambda
AWS Lambda - Run Code in the Cloud AWS Lambda
Lambdaはその名の通り、あのLambdaです。EC2インスタンスを自分で用意する必要もありません。手続きを定義して渡すのみ。そうするとそこに渡されたデータをよしなに扱うことができる。
所感
- これが今回の発表の中ではもっともdisruptiveなものだと思います。まだまだ取り組みの種の段階では有りますが、いわゆるworker側を簡単に、しかもfull managedなものとして提供できるようになったのは大きい。
- Kinesisが去年発表されたわけですが、Kinesis Applicationを自分で書いて、かつauto scalingの設定も自分でしないといけない。Kinesis Client Libraryにのっかると簡単にかけるものの、リソース管理をする必要はなくならない。それがこのLambdaだと、いわゆるLambdaを書けば動くわけです。
- また、今回、S3 notificationやDynamoDB Streamが追加されたことによって、いわゆるEventを受け取れるsoruceが増えました。例えばs3の特定のpathにfileがuploadされた際にその内容をparseして一部をDynamoDBにinsertする・・・というようなことが、EC2でworkerを立てなくてもできるわけです。
- fluentdからLambdaに渡してfilterとかexecっぽい処理はそっちに分離したいなぁと思ったり。
breakout session
SPOT305 -- Event-Driven Computing on Change Logs in AWS
it's all about timeliness and agility
最近のもろもろのupdateによってEvent-Drivenなcomputingが可能になってきたね!というセッション
- 写真共有サービスで登録しているユーザが画像をuploadするケースを考える
- event-drivenのanti pattern
- 全量をscanするような作りにはしないこと
- 1つ1つのイベントで大きな処理をしない
- 全量をscanするような作りにはしないこと
所感
- これは良い流れ、S3 notification便利っぽい
- DynamoDB Stream, S3 notification, Kinesis, SQSといったreal-timeな通知をする側と、そのeventを受け取る側(lambda, SQS, SNSなど)が今後拡充されていくんじゃないかと期待
- 例えばCloudTrailでs3に流れてきた
- batchでs3 bucketをscanしてその中にある何かを探して1つの小さなoperationしかやらない、みたいなopsを排除していきたい
BDT401 -- Big Data Orchestra - Harmony within Data Analysis Tools
SQSとかKinesisとかCloudSearchとか連携させて使うにはどういうarchitectureになるか、っていう話
所感
- 知ってる話ばっかりだったので割愛
APP303 -- Lightning Fast Deploys with Docker Containers and AWS
Dockerの中の人の発表
Dockerの基礎的な説明がメイン。今回のカンファレンスではコンテナに対する期待度が高かったようで、大人気のセッションだった。
- haproxy -> flask -> redisな構成をDockerでdeployするデモ
docker hosts
が便利- どんなことをしているのかは awsapp/deploy.sh at master · nathanleclaire/awsapp みればわかる
imageでrollbackできるのは便利
rollback) docker hosts active ${DOCKER_HOST_NAME} run_app_containers_from_image ${REMOTE_IMAGE}:$2 docker hosts active default
remote hostsでも
docker ps
で確認できる
所感
- Docker自体の説明とデプロイ方法の説明だった
- 内容はGitHubに載っているのであれだけど、デモが手際よくてエキサイティングだった
- FlaskからTornadoに切り替えるデモとかなかなかおもしろかったというか、その発想はなかった
GAM404 -- Gaming DevOps: Scopely's Continuous Deployment Pipeline
Scopelyというモバイルのゲーム会社
- ざっくりいうと、Blue/Green Deploymentはごりっとしてるから中間っぽい感じの方法でやってるよという話
- blue/green deployment
- 2つの完全なクラスタ
- 完全な受け入れテストができること
- 問題
- CYAN deployment
- greenとblueを混ぜてみた
- canary releaseみたいなもの
- acceptance testsの知識は完全ではない
- stagingで
- 1つのelbをつかう
- warm upいらない
- dns変更しなくていい
- 多くのものを動かさなくてもいい
- ビルドへのアプローチ
- golden ami approach
- 全てのソフトウェアをamiにいれておく
- 起動時にデプロイ
- base amiを用意するものの、起動後のインスタンスにprovisionする方式
- golden ami approach
所感
- ゲーム企業とかだとユーザ体験に直にかかわるので結構センシティブなんだろうなと思った
SDD424 - Simplifying Scalable Distributed Applications Using DynamoDB Streams
DynamoDB Streamの話がメイン
- 話としては前のセッションにも出てたんで割愛
所感
- cross region replicationしたい要望ってどれくらいあったんだろう
- streamのインタフェースをKinesisに整えたのは素敵
AWS re:Invent breakout session 1日目
re:Invent 2014 breakout session 1日目
個人的にメモっておきます。
Keynoteでは、AuroraがでたりConfigだったりCodeDeployだったりがでました。細かい機能の話は参照しておいて、所感中心で。
聴いたセッションは以下のとおり。
- SDD406 -- Amazon EC2 Instances Deep Dive
- SDD415 NEW LAUNCH: Amazon Aurora: Amazon’s New Relational Database Engine
- BDT403 - Netflix's Next Generation Big Data Platform
- BDT402 -- Performance Profiling in Production: Analyzing Web Requests at Scale Using Amazon Elastic MapReduce and Storm
- APP402 -- Serving Billions of Web Requests Each Day with Elastic Beanstalk
新サービス類
Aurora
AWSのためにre-designされた、速くてスケールするMySQLです。*1 まだPreviewでusでのみ限定公開になります。
所感
- 銀の弾丸ではない
- ストレージとログのレイヤを既存のMySQLの構造から切り出してAWSのアーキテクチャにフィットさせているあたりかっこよい
- キャッシュがDBのプロセスの外に出たのは嬉しい、restartしても残るわけだし
- マルチマスターにしなくてよいほどにwriteが安定して速いといいなぁ(安直にマルチマスターの機能を追加するよりは、パフォーマンスをどんどん上げる方向に向いていって欲しいなぁと思った
- 「MySQLよりパフォーマンスが5倍向上!」がひとり歩きして、まだリリースされていないのに大変だなと思った
- つまるところ使ってみないとわからん
Code ManagementとDeployのツールいろいろ
所感
- この領域きたかー
- Amazon本体のCIの話 The Story of Apollo - Amazon’s Deployment Engine - All Things Distributed がいい話だったんだけど、1年で5000万回デプロイとかしてて尋常じゃなかった。この背景があるとサービス化したのも、思想的にわかる。
In the past 12 months alone, Apollo was used for 50M deployments to development, testing, and production hosts.
- 実際にどれくらいのユーザが使うかはわからないけどCIサーバの運用しなくなるならいいなと思った
- でもおそらくOpsWorksじゃないけど、全てのユーザがこれに乗っかるようなものではないだろうなあとも思う
- そう、やはり使ってみないとわからん
セッション
SDD406 -- Amazon EC2 Instances Deep Dive
EC2 instanceの話。
- EC2 instanceのProduct ManagerのJohnさんとKernelとかOS周りやってるAnthonyさんのセッション
- とりあえずKernel 3.8以降使っとけって言ってた
- ウェアレベリング - Wikipedia とかこのへんの話
- t2.microのCPU burstなんかについて、どういう設計思想でつくったか、みたいな話もあった
- PV-HVMがなぜPVより速いか、あたりについての解説
SDD415 NEW LAUNCH: Amazon Aurora: Amazon’s New Relational Database Engine
機能周りは上に書いたのでQAのメモを貼っておく。立ち見でてた。
- RDS: MySQL -> auroraのマイグレートは簡単に
- バイナリフォーマットでコンバートできるように
- MySQLのコンパティビリティを壊してはいないから、既存ツールも動くはず
- Encryptionはサポート予定
- 開発用のローカルバージョンは出さない予定
- MySQL 5.6と変わらないからね
- MySQLの新しいバージョンにも追従していく予定
- Postgreサポートするか?
- 今日はないよw
- MySQLはユーザ多いからやった
- 可能だけどどこに今後サポートとするかによるかな
- スケーリングはシンプルに出来る
- dedicatedインスタンスは今後の展開次第
- network ioのコストは、殆どない。なぜならVPC内だから
- multi-masterはどう?
- それぞれのマスターノードしか用意出来てない
- 顧客の要望があるならやるかも?
- 現時点での見解としてはmulti-masterにする必要はないと思ってる
BDT403 - Netflix's Next Generation Big Data Platform
Netflixの解析基盤の話 in 2014。去年もごりごりいろんな発表合ったので、どんなupdateあるのかなと思いながらきいた。このセッションもほぼ満員だった
- 2013年と比較すると、Prestoの採用とHadoop 2への移行, Parquet FFへの移行というのが大きい話
- Parquet, Pig, Hive, Prestoにそれぞれcontributeした
- column position based access, Data type coercion, Null paddingなどなど
- Parquetへの移行の話
- 規模
- Hadoop 2への移行の作業について
- パッチあてた
- userのqueueを動的に階層化する
- 動的に公正な共有を行うようにした
- Genieからジョブをディスパッチする際に、Hadoop1と2を並行稼働させてそれぞれにジョブなげてた
- 今は全体をHadoop 2系に移行した。EMRだからmigrationはわりと楽だった。
- パッチあてた
- Prestoについて, アドホックな分析に利用してる。TBオーダでもインタラクティブに動く
- NetflixのPrestoへのコントリビュート: S3 filesystem対応、Parquet対応、ODBC driver改善、map / array改善、などなど
- Netflixがソフトウェアを選ぶ基準: ホワイトボックスであること
- なぜEMRを使うのか
所感
- 熱かった
BDT402 -- Performance Profiling in Production: Analyzing Web Requests at Scale Using Amazon Elastic MapReduce and Storm
Yelpのなかの人のパフォーマンスモニタリング話
所感
- EMRとStormの話はそんなに出てこなかった
APP402 -- Serving Billions of Web Requests Each Day with Elastic Beanstalk
ほんとはDataDogのDocker Containerのscaleとmonitoringに関するセッションにいこうと思ってたんだけど会場が満員で入れず・・・ということでこちらにきた。
ThinkNearというMobileのRTB事業者さんのセッション。
メモ
- Elastic Beanstalkをばりばりつかってる
- 構成
- networkまわり
- tomcatがだいたい1000-1200ファイルくらい常に開いてる
net.core.somaxconn
あげておく。4096にしてる。バーストしたらまずこれが枯渇する。net.ipv4.tcp_fin_timeout
大事。timeout大事。ELB側も合わせて調整すること。- ELBはConnection Drainingの設定しておく。timeoutしたときにスムーズに外せるように。
- ログ周り
- ディスク
- EBS遅いからraid0してる
- tomcatのログはephemeralに書いてる
というのを全部構成するための設定がGitHubに載ってる。Yeah!
所感
- Elastic Beanstalkでがんばるとかまじか・・・と思ったがまじだった
- Hotkey問題、あるあるだった
- Elasticacheは外部キャッシュとしてはやはり速い。そしてアプリケーションのキャッシュはさらに速い
- ちょっと考えさせられた
- try and errorいろいろあれど、beanstalkでそれなりにさばけるところまで持っていくの、それはそれで戦略だなと思った
- それにしても俺得セッションだった
*1:かなり適当にまとめています
今年もAWS re:Inventに行ってきます&興味のあるセッション一覧メモ
追記 2014/11/14: スライドがupされていたのでみつけたものを追加。出れてないセッションを中心に確認したい。
今年もAWS re:Inventに参加して来ます。去年いってみて、興味あるセッションを見きれなかったり、新サービスのセッションが急遽追加されたりしていて、なかなかボーリュウムが有りました。今年も例に漏れず見たいセッションがたくさんあるので、ここにメモしておきます。あとでビデオやらスライドで見返すかも、です。
ちなみに去年参加したセッションは以下の記事にまとめてあります。
AWS re:Invent 2013で参加したセッション&聴きたかったセッションまとめ - すずけんメモ http://suzuken.hatenablog.jp/entry/2013/11/19/014517
とりあえず興味をもったセッション一覧
セッションの説明だけみて興味もったもの。日付順です。
"セッション名","日付","開始時刻"
"DEV301 -- Advanced Usage of the AWS CLI" "11/12/14" "11:00"
(DEV301) Advanced Usage of the AWS CLI | AWS re:Invent 2014
"SDD406 -- Amazon EC2 Instances Deep Dive" "11/12/14" "11:00"
"PFC307 -- Auto Scaling: A Machine Learning Approach" "11/12/14" "11:00"
"APP306 -- Using AWS CloudFormation for Deployment and Management at Scale" "11/12/14" "11:00"
(APP306) Using AWS CloudFormation for Deployment and Management at Sc…
"SDD414 -- Amazon Redshift Deep Dive and What's Next" "11/12/14" "11:00"
"ARC307 -- Infrastructure as Code" "11/12/14" "13:15"
(ARC307) Infrastructure as Code | AWS re:Invent 2014
"BDT307 -- Running NoSQL on Amazon EC2" "11/12/14" "13:15"
(BDT307) Running NoSQL on Amazon EC2 | AWS re:Invent 2014
"PFC305 -- Embracing Failure: Fault-Injection and Service Reliability" "11/12/14" "13:15"
"BDT306 -- Mission-Critical Stream Processing with Amazon EMR and Amazon Kinesis" "11/12/14" "14:15"
"SDD403 -- Amazon RDS for MySQL Deep Dive" "11/12/14" "15:30"
"BDT402 -- Performance Profiling in Production: Analyzing Web Requests at Scale Using Amazon Elastic MapReduce and Storm" "11/12/14" "15:30"
(BDT402) Performance Profiling in Production: Analyzing Web Requests …
"PFC306 -- Performance Tuning Amazon EC2 Instances" "11/12/14" "15:30"
"SDD419 -- Amazon EC2 Networking Deep Dive and Best Practices" "11/12/14" "15:30"
"APP309 -- Running and Monitoring Docker Containers at Scale" "11/12/14" "16:30"
"PFC304 -- Effective Interprocess Communications in the Cloud: The Pros and Cons of Microservices Architectures" "11/12/14" "16:30"
"SDD421 -- Amazon EC2 Purchasing Deep Dive and Best Practices" "11/12/14" "16:30"
"WEB401 -- Optimizing Your Web Server on AWS" "11/13/14" "11:00"
"APP315 -- Coca-Cola: Migrating to AWS" "11/13/14" "11:00"
(APP315) Coca-Cola: Migrating to AWS | AWS re:Invent 2014
"PFC402 -- Bigger Faster: Performance Tips for High Speed and High Volume Applications" "11/13/14"
"ARC401 -- Black-Belt Networking for the Cloud Ninja" "11/13/14" "11:00"
"SPOT305 -- Event-Driven Computing on Change Logs in AWS" "11/13/14" "11:00"
"BDT401 -- Big Data Orchestra - Harmony within Data Analysis Tools" "11/13/14" "13:15"
"SDD423 -- Elastic Load Balancing Deep Dive and Best Practices" "11/13/14" "13:15"
"PFC303 -- Milliseconds Matter: Design Deploy and Operate Your Application for Best Possible Performance"
"APP303 -- Lightning Fast Deploys with Docker Containers and AWS" "11/13/14" "14:15"
"SDD405 -- Amazon Kinesis Deep Dive" "11/13/14" "14:15"
"SDD413 -- Amazon S3 Deep Dive and Best Practices" "11/13/14" "14:15"
"BDT303 -- Construct Your ETL Pipeline with AWS Data Pipeline Amazon EMR and Amazon Redshift"
"GAM404 -- Gaming DevOps: Scopely's Continuous Deployment Pipeline" "11/13/14" "15:15"
"BDT305 -- Lessons Learned and Best Practices for Running Hadoop on AWS" "11/13/14" "15:15"
"FIN401 -- Seismic Shift: Nasdaq's Migration to Amazon Redshift" "11/13/14" "15:15"
"SPOT303 -- Building Mission Critical Database Applications: A Conversation with AWS Customers about Best Practices" "11/13/14" "15:15"
"GAM402 -- Deploying a Low-Latency Multiplayer Game Globally: Loadout" "11/13/14" "16:30"
"SDD407 -- Amazon DynamoDB: Data Modeling and Scaling Best Practices" "11/13/14" "16:30"
"ADV403 -- Dynamic Ad Performance Reporting with Amazon Redshift: Data Science and Complex Queries at Massive Scale" "11/13/14" "16:30"
"SDD401 -- Amazon Elastic MapReduce Deep Dive and Best Practices" "11/13/14" "17:30"
"ADV303 -- MediaMath’s Data Revolution with Amazon Kinesis and Amazon EMR" "11/13/14" "17:30"
(ADV303) Beating the Speed of Light with Your Infrastructure in AWS |…
"ARC202 -- Real-World Real-Time Analytics" "11/13/14" "17:30"
"BDT308 -- Using Amazon Elastic MapReduce as Your Scalable Data Warehouse" "11/14/14" "9:00"
"ADV402 -- Beating the Speed of Light with Your Infrastructure in AWS" "11/14/14" "9:00"
"ARC303 -- Panning for Gold: Analyzing Unstructured Data" "11/14/14" "9:00"
Docker関連セッションとDevOpsまわり、それからDynamoDBのデータモデリングと広告インフラの話は外さずに聴きたいところです。あとはパフォーマンス周り全般を聞く予定。
それと余力あればハッカソンに遊びに行こうと思います。
追記: 見たセッション
上に載せてなかったけど見たセッションのスライドもみつけたらはっておく
サービス改善とログデータ解析について発表してきました
『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』の出版記念イベントで発表してきました。会場を提供していただいたGMOのみなさま、主催のTreasure Data / 技術評論社のみなさま、そして聴きに来てくださった方々、どうもありがとうございました。
http://eventdots.jp/event/137658
各特集の著者によるそれぞれの特集の導入が前半にあり、後半はnaoyaさんとのパネルディスカッションがありました。
養成読本、おかげさまで多くの方に読んでいただいており、嬉しい限りです。僕のところは導入の章ということで、「なぜログの分析をするのか?」という点に絞って発表しました。内容としてはざっくりいうと、
- ElasticsearchやFluentdを使いつつも、何をやりたいかによって使うツールは変えなければならない
- 分析するにはデータがなければならない。どんなデータが生じるかはサービスの設計と紐づく。なので分析はチームで行うものである。
というものでした。
パネルディスカッション
後半のパネルディスカッションでは、ざっくばらんにリラックスした雰囲気の中でログの分析について話をすることができました。楽しかったです。(楽しんでいただけたでしょうか・・・?)naoyaさんから事前に話すトピックが共有されており、それをピックアップしつつ話していきました。rebuild.fm スタイルなのだそうです。ちなみにどういう順番で話を進めるかは決まっておらず、その場のノリで決められていったのでした。
トピックが点々としたので自分でもうろ覚えなのですが、ポイントで。
- ログまわりのエンジニアリングをするのはインフラエンジニアなのか?というとharukasanの話にもあったように「趣味」でいれる、というか権限があるからインフラエンジニアから始めやすい、というのはあると思う
- でも、ちゃんと整備してETL整理してストアの選定してある程度使いやすく整備して分析するエンジニアのための環境をつくっていく、となると専任の人がいたほうがやりやすい
- BigQuery最強説
- DWHを使っていたり知っている、という方が会場に少なくて意外な印象を受けた
- Elasticsearchのインデックスのバックアップについて。これはうちだとsnapshotでdailyでやってる、んだけど全部やってるわけではない。保持期間が2,3日程度の運用だとそもそも古いログをElasticsearchにrestoreする必要があまりない。かつ、Elasticsearchをsource of truthとして使う、という運用は現状ではない。でもKibanaのdashboard設定はbackupしておいたほうがいいですよ。
- 「ログの分析やっても面白い革新的なサービスは出てこないんじゃないか」っていうのはまさにその通りで、あくまで既存のものの改善をするエンジニアリング。なのであんまりログエンジニアが増えても仕方ない、といわれるとまぁそうですね、という感じがある。
などなど。色々話しました。
四方山話
あと終わったあとに飲みながら話していたのですが、僕がそもそも分析周りのことに興味をもったのは、 https://trippiece.com を作っていた頃に遡ります。trippieceは「旅をつくる」サービスで、僕はそのサービスの設計とサーバサイドとフロントエンドのエンジニアリングを1年ほどしていました。最初はプロトタイプづくりに苦心し、リリースしたものの全然使われず、また作りなおして・・・というようなことを繰り返し繰り返しやっていく過程で、ユーザがどのようにサービスを使っているのか、ということばかり考えていたのです。そのときは自分がアプリケーションの実装の大部分をやっていたので、ログをしっかりまとめて管理して分析できるような状態にする、ということは全然できませんでした。とりあえずGoogle Analyticsをつかって動向を見守る、ということをしていました。でももっと細かく見たいものや、改善に使えそうなデータはあることはわかっているにもかかわらず、当時はどのようにアプローチしていけばわからなかったのです。なので新卒でVOYAGE GROUPに入社した時から、データ周りのことに携わり始めた、という背景が有ります。もし当時の僕だったら何を知りたかっただろうか、というのを思いながら書いたのでした。そういう意味では、今は改善する仕事をしているけれど、新しいものを生み出しているとは言えないのかもな、、などとパネルディスカッション中に思ったのでした。
Fluentd UIが出たので触ってみた
fluent/fluentd-ui https://github.com/fluent/fluentd-ui
Fluentd用のWeb UIが出たようです。試しに触ってみます。
インストール
READMEのとおりですが、
$ gem install fluentd-ui $ fluentd-ui start Open http://localhost:9292/ by your browser default account is username="admin" and password="changeme"
もしくは、
$ git clone https://github.com/treasure-data/fluentd-ui
$ cd fluentd-ui
$ bundle install
$ bundle exec rails s
です。
僕はbundlerでいれることにしました。
-> % bundle exec rails s => Booting Puma => Rails 4.1.4 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option) => Ctrl-C to shutdown server Puma 2.8.2 starting... * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://0.0.0.0:3000
起動するとログイン画面が出てきます。デフォルト設定はusername: admin, password: changeme です。
ログインするとこんな感じで立ち上がります。
早速触ってみます。まずはfluentdをインストールします。
インストールされましたね。続いて設定をしていきます。こんな感じに今Fluentdがどこからデータを読み取り、どこに出力しようとしているのかがわかりやすく表示されてます。
では実際にファイルの入力について編集していきます。入力の「ファイル」をクリックすると、どこからファイルを読み取るかを選択する画面が出てきます。
ここでは /var/log/system.log
を読み取ることにしました。こんな感じでログをpreviewすることができます。
次にファイルを読み取る際の設定をします。ここでは、「どんなフォーマットとしてログを読み取るか」という設定をすることができます。この画面はわかりやすくて便利ですね。今回はsyslog形式なので、formatをsyslog
にしています。
これで無事設定が変更されました。生成された設定は以下のとおりです。
<source> # http://docs.fluentd.org/articles/in_forward type forward port 24224 </source> <source> # http://docs.fluentd.org/articles/in_http type http port 9880 </source> <source> type monitor_agent port 24220 </source> <source> type debug_agent port 24230 </source> <match debug.*> # http://docs.fluentd.org/articles/out_stdout type stdout </match> <source> type tail path /var/log/system.log tag syslog.test format syslog time_format %b %d %H:%M:%S pos_file /tmp/fluentd--1406888587.pos </source>
更新するとfluentdが再起動されて設定がreloadされます。fluentd自体の起動logをみてみましょう。
ちゃんとtailされているようです。試しにMongoDBにいれてみます。デフォルトではプラグインは入っていないので、いれてみます。これもFluentd UI上から行うことができます。MongoDB用のプラグインをいれてみましょう。インストールボタンを押せば設定できます。
インストール済みのプラグインはこんな感じで閲覧できます。
設定も追加してみます。mongoの設定は画面から行うことができます。「ソースと出力先の設定」の画面から「MongoDB」をクリックするとこんな感じで設定画面が開きます。
設定は結果的にこんな感じになりました。
<match syslog.test> type mongo host 127.0.0.1 port 27017 database fluentd collection test capped capped_size 100m </match>
設定を追加すると勝手にfluentdがreloadされます。mongo側をみてみましょう。*1
-> % all output going to: /usr/local/var/log/mongodb/mongo.log mongo MongoDB shell version: 2.4.8 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: Fri Aug 1 19:49:01.275 [initandlisten] Fri Aug 1 19:49:01.275 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000 > show dbs; fluentd 0.140625GB
fluentdのdbができてますね。queryしてみます。
# 以下mongo shell > use fluentd; switched to db fluentd > db.test.find() { "_id" : ObjectId("53db72001df33a7e96000001"), "host" : "xxx", "ident" : "SystemUIServer", "pid" : "425", "message" : "Impossible to find range of h or H in date format.", "time" : ISODate("2014-08-01T10:54:34Z") } { "_id" : ObjectId("53db723d1df33a7e96000002"), "host" : "xxx", "ident" : "SystemUIServer", "pid" : "425", "message" : "Impossible to find range of h or H in date format.", "time" : ISODate("2014-08-01T10:55:34Z") } { "_id" : ObjectId("53db727a1df33a7e96000003"), "host" : "xxx", "ident" : "SystemUIServer", "pid" : "425", "message" : "Impossible to find range of h or H in date format.", "time" : ISODate("2014-08-01T10:56:34Z") }
ちゃんとはいってますね。*2
所感
- さくっとローカルにfluentdの環境作っていろいろプラグイン入れたりログを試しにいれてみたい、というときにさくっとできて良い
- fluentd本体のインストールやfluentdのプラグインも簡単に入れることができる
- アプリケーションログをつくるのは手間がかかるけれど、
- in_tailのUIが便利
- どんなログを読もうとしているかをプレビューしつつ、tailの設定を書くことができる
- 実際にどんな風にログが読み取られるかも見つつ、設定を調整することができる。素敵。
- http://fluentular.herokuapp.com/ で試せるようなこともFluentd UIの中でできます。
- どんなログを読もうとしているかをプレビューしつつ、tailの設定を書くことができる
- pluginがうまく入らなかった
- ものによる。fluentd-plugin-elasticsearchが入らなかった。依存gemをうまくもってこれてないのかもしれない。
Fluentdを触ったことがないという場合でも、さっくりセットアップと設定を行うことができるのではないか思います。ローカルでさくっと試す用途にもよいのではないでしょうか。まだversionも0.10ですので、今後使いやすくなっていくのが楽しみです。
supervisorのcommandで$()を使いたいとき
今日初めてsupervisorの設定をした。まだあまり使い勝手がわかっていない。
supervisorでは環境変数の展開以外、マクロ的なことができない。bash -lc
を使う。例えば以下のようにする。
[program:hoge] command=bash -lc '$(which hoge)/bin/fuga start'
splitしたwindowをもとのサイズに戻す
外付けディスプレイにTerminalを持っていったとかでサイズが変わった場合、splitしたvimのwindowのサイズも変わってしまうことが多々ある。そういった場合に、また均等に各windowのサイズを戻したい、という場合。
How to refresh vim layout when split - Super User http://superuser.com/questions/254286/how-to-refresh-vim-layout-when-split
C-w,=
すればよい。