fluentdのプラグイン書いてみた。
kut-arika/fluent-plugin-addinfo · GitHub
作り方までまとめたかったけど、後日。できたら。
elasticsearch 勉強会 第6回
Aggregationあれこれ
- Facetはdeprecated。2.X系でなくなるらしい
- Group by color : Bucket
検索結果のドキュメントを分類 - Count(color) : Metric
Bucket内のドキュメントのデータをもとに計算
ドキュメント数、平均値や最大値など - shard毎にAggsして、最終的にノードがマージする
検索と同じ仕組み、クエリフェーズで実行 - post_filterはAggsの影響を受けない
- filterr aggsはAggsのみに影響して、検索結果には影響しない
- Bucket
- terms Facetの代わり、結果は近似値
shard毎で最初に足切りされている。shard_sizeを使うとチューニングできる - significant terms
異常検知、レコメンドなどに利用? - keydクエリ
結果にkeyをつけて名前がわかりすくできる
- terms Facetの代わり、結果は近似値
- Metric
秒間3万の広告配信ログをElasticsearchでリアルタイム集計してきた戦いの記録
- ディスプレイ広告配信DSP Smalgo
- 広告主 -> DSP -> アドネットワーク/SSP -> ユーザ
- impression / click / conversion それぞれでログを出しており
FluentdでElasticsearchに入れる - mark 行動履歴もログに落とし込んでElasticsearchに入れる
fluentd 10node -> ELB -> | Elasticsearch coordinate Node (write) 2node r3.large kibana -> ELB -> | Elasticsearch Data Node (read) 2node r3.large | Elasticsearch searchNode 28node | 12shard 1replica r3.xlarge / 1GB SSD
- kibanaはエグイクエリを発行するので使いすぎると負荷が上がるw
- 柔軟だがインデックスとドキュメントの設計は大事
- 1日1.5TB (primary & replica)
- データドライブのEBSをSSDに変更して高速化
- 検索処理のキャッシュ化(ElastiCache)
- バージョンアップの話はうちでも使えそう
- indexingのパフォーマンスアップ -> johtaniさんのブログ
Elasticsearch日本語スキーマレス環境構築と、ついでに多言語対応
- dynamic templates & index templates を駆使する
- dynamic templates
- 最初にマッチしたtemplatesが使われる
- index templates
- nodeの再起動は必要なく、新規で作成したインデックスのみに適用される
- _analyzer path langage
-> 多言語対応の部分は後で見たい
elasticsearchソースコード読みはじめてみた
非常に勇気をもらえた。
おらでもソースを読めそうだ!?
- クエリを受けて結果を返す部分から読むのがベター と言われたものたどりつくのも大変!
- ノード起動から導入した時のお話
reroute APIを使用してシャードの配置を制御する (LT)
- 複数シャード移動のはまりどころ
自動再配置に注意!自動再配置を抑止するべし。 - Bonsai is cool !!
- shardの移動でRemoteTransportExceptionが頻発
(shardが多すぎる?)
タグを振って配置することもできる(whereness?)
検索のダウンタイム0でバックアップからIndexをリストアする方法 (LT)
サーバ・インフラエンジニア養成読本 ログ収集~可視化編 勉強会
最近、行ってきたブログばかり。。。
もうちょいがんばりたい。。。
サービス改善はログデータ解析から
すずけんさん @suzu_v adingo
- 分析はコアだ
- データの分析はチームで作るもの
そして、データを活かせるようにするエンジニアが必要 - 収集、変換、保存、分析、表示、運用
- 「ログ分析は後にして機能追加をしましょう」ありがち
- とりあえずやってると何とかなる
可視化してから考えよう - チームとして「データを活かそう」というスタンスにならないと進まない
Fluentd
よしけんさん @yoshi_ken y-ken リブセンス
- 再送処理など、ネットワーク周りの例外は任せられる
- Rubyを用いたプラグイン記述のハードルは低い
- ログ収集コストの最小化
時差もなくなる - tailプラグインはファイルのローテーションにも対応
- レイテンシの改善、帯域バーストの緩和
- ファイルやDBといった複数データストアへの保存も可能
- QoS レベル At Most One
- 変更のないシンプルな処理のみを担うといい
- 各ノードは単一責任がいい
- 転送元ノード
- 集約ノード(Aggregator)
- Processor
- Watcher
- シングル構成や複数構成も組める
- 固い運用には向き不向きがある
Elasticsearchもうちょっと入門
@johtaniさん
- サジェストもあるんだ
- クラスタの監視もできる?
- Logstash 1回 Redisにため込む!?
- aggregation
- 階層的な集計、グループ化
- 動的な集計、グループ化
- Bucket ドキュメントのある値ごとに結果をグルーピング
男性、女性など - Metric ドキュメントの持つ値を集計
ツイートの文字数の平均、最大値最小値とか
Kibana
みちいしゅんすけさん @harukasan pixiv
- 17回/1日 デプロイ
- グロースチーム
- サービスのグロースのためになんでもやる人たち
- 可視化も継続的デリバリーの手段の一つ
- fluent-plugin-elasticsearch作者
- 3割くらいが使っている
- クエリ:ログを検索
- フィルタ:すべてのクエリに適用
- パネル:どう表示するか
- Dashboard
見たい数値が1画面に収まっている
1つのデータに対して複数の面から分析する
毎日・毎週継続して変化をみることができる - タグ deployとかイベントを
Trends 1週間前との傾向
つくってから「Share」で一時URL
ミーティングなどで見るようにする- GoogleBigQueryを間にかましてデータ量を絞る
パネルディスカッション
サーバ/インフラエンジニア?
- 趣味でいれた
- ログエンジニアがいた
ログ解析
- システムモニタリング
- ビジネス側の話
前はGoogleAnalyticsとか、体系化された方法があったわけではないと。
- GrowthForecastとか
- DataWareHouse / BI (たぶろー)
- EFK は DataWareHouseのモダン版
データどうしてる?
- ため込んだやつ消してます or 閉じてしまう
- 生データはS3
- 直近版と長期版2段階構成が定番
A・Bテストしてたら数値しか見なくなった
直感というか感覚も大事。数値は一つの指標Elasticsearch使うならmemoryはつめ!
認証方法
YAPC::Asia Tokyo 2014 行ってきました。
YAPC::Asia
YAPC::Asiaとは、YetAnotherPerlConferenceの略らしい。
@miyagawaさんのpodcast rebuild.fmでこのお祭りがあることを知って、
Perlオンリーではないとのこともあり参加してみました。
全体的な感想
Perlさわったことない人でも全然参加すべき!お祭り感楽しい!
わからない人にもわかりやすく説明してくれるしトークもうまいし、さすが熟練発表者さま。
はじめてmiyagawaさんとnaoyaさんを生で見れたので感激(ミーハー)
1年目、2年目のような人がガンガンLTしてた。すげぇかっこいい。負けてられん。
かき氷すすめすぎ!!たくさん食べた!!
こういうお祭りはやっぱりモチベーションあがる!
でもキャパ超え過ぎ!床座り見、立ち見疲れた。。。
質問系の時間がなさ過ぎて。。。もうちょい。こう。なんか。
ともあれ、皆様ありがとうございました!!
徒然なるままに・・・
こういうお祭りにうちの会社の人はどのくらい参加するのだろう。 親会社含めてとんがっている人は、ごくわずかなのかなぁ。 外にアピールしてる人が少なくてアンテナに引っかからないのかなぁ。 ジャンルがちょっと違うからひっかからないのかなぁ。 でもまぁとんがってればいいって訳ではない。 今回、YAPCに行くまでは、ほかの会社がよく見えた。 自分たちでサービスをつくってユーザ体験思考でモノづくりをしたり、 最新技術をガンガン取り入れていったり、本当にうらやましい。 やる気に満ちあふれた人ばかりだし。職業プログラマはいなそうな。 なんでうちの会社でそうじゃないのか、そうできないのか。 でもちょっと領域が違うのか、と感じた。 どこも素敵なサービスを提供しているけども、 うちの会社が相手にするところとはちょっと領域が違う。 うちの会社でしかできないことがあって、その領域をもっとよくすると、 なんかこう、基盤をよくすることができるのかな? 正直技術がすごい好きって分けでもない、元々職業プログラマだった訳で。 そんな人がわりかし多い、うちの会社をなんとかどうこう少しでも変えられたら楽しくないか? というのが最近のモチベーション。
以下、メモ
インフラエンジニアは死んだ(狭義)
memo
Lineの中の人。 プログラミングスキルのないインフラエンジニアは死ぬのか? 自称○○エンジニア→自分のやるべきこと、使命的な 目の前にある問題を解決するために必要ならば書く・読む まず解決すべき問題は何なのか?を考える 過去の自分は他人! 同じ悩みを共有できる仲間、刺激を与えられる仲間。
one's impression
意識高い系!!みんながみんなこんな意識高ければ苦労しないぜ。 懇親会でちょっとお話しさせてもらったけど、LINEさんには意識低い系はいないらしい。 意識高い系だらけばかりっていうのも大変とのこと。そうねぇ。 でも職業プログラマばかりも大変よ。
最近のウェブサービスの検索機能やその先の話
memo
はてなの @yanbe さん 期間指定ができる検索 お気に入り(フォローしているユーザのブックマーク)から検索→ノイズが少ない サブドメインをお横断して検索 Presso モバイルアプリ 検索ミドルウェアの歴史 2007 MySQL Like検索 2008 サービス規模を増やしたい。1100万エントリ、3300万ブックマーク 2008 Sedue 導入 2009 関連エントリ機能 あるページに関連するページ MySQL + Senna スケールしない 2012 Sedue -> Solr 2013 秋 Elasticsearch検討 親子ドキュメント、わかりやすいクエリ JSON APIがモダンでいいよね Aggregation API で ブクマカウント マッピングの更新は同じ構成のマシンを用意して、ブルーグリーンデプロイメント!!
one's impression
Elasticsearchは自分も使って運用しているので興味あり。 MySQL + Sennaとかちょっと懐かしかった。使用しているものはそこまでかわらないんだなぁ。 懇親会でもうちょい詳しくきいた。 どうやら「しぇいばのん」とあったらしい!! バージョン的には0.90系からで、いまは10台,SSD、シャード数6、レプリカ2で運用していると。 データストアがMySQL?で検索エンジンとしてElasticsearch。うんうん。 kibanaも使っているらしく2週間分のデータを保持して利用している。 aggregationsマジおすすめって言われた。
開発合宿!!!!
memo
yasuhiro_onishi はてな チーフエンジニア サービス開発本部長 はてなブックマークは開発合宿でつくられた 3日間の合宿でつくって、持ってかえっていきなりβリリース。はやい Pros お祭り感!非日常感! Cons 飲み過ぎる 企画とテーマ決めが大変 幹事、宿、食事、旅のしおり 宿選び 優先、無線LAN 1日中作業できるか? 会議室、プロジェクタ 持ち込みとか 無線LAN HUB ,電源タップとかとか
one's impression
開発合宿楽しそー!!!とあらためて感じることができた。 うちの会社でもやりたいが、これをやるためのお金とかはでないんだろうなぁ。。。 自腹でやってみたい人集めてやるとかになってしまいそうじゃ。 おすすめの宿をいくつか聞きたかったけど質問が多くて聞けんかった。
懇親会
初めての懇親会。あんまり記憶がないよ。頑張って話しかけたよ。でも何話していいかわからないよ。
面白法人カヤックの方 2人 Chefで自動構築、オートスケールはやってない pixivは小文字の人 pixiv は phpらしい。rubyは性能面であきらめた 450台で運用していて、スケールアウトは簡単にしないで なるべくリソースを使い切るということをいわれるらしい。すごいぞなもし。 ログはS3で運用。
突然ITインフラを任された人のための監視設計入門
memo
ハートビーツ Yuichiro SAITO なんで監視するのか いち早く障害発生を確認できるようにする 復旧にいち早く取りかかれるようにする なにを監視 死活監視 動いているかどうか メトリクス監視 閾値の範囲内かどうか 外形・デーモン・リソース・サーバ ps を眺める。 閾値 非機能要求から決める 平常値の2・3倍 ntp/smtp 誤報が出ないように見直す、誤報慣れをしない 連絡体制 責任分担を決める Nagiosはconfigでの操作しかしない。 Zabbixはmysqlのバックアップでやってるところもある。
one's impression
うちもちゃんとやれることはやっているではないか!よかよか、と再認識。 Zabbixの設定をどう構成管理したらいいかでちょっと質問させてもらった。 mysqldumpでって言うのはちょっと無理あるか。。。も。。。 設定変更したものを構成管理ができるか?って観点でOSSを選ぶのも大事なことなのか。な。
Google BigQuery で DWH 構築
memo
Naoya Ito さん 120億レコード5秒 ログ解析。DatawareHouse.。 SQLを分散処理。 スキーマレスではない。 すべてフルスキャン、インデックスとかない。 MPP Query Engine : Presto Impala GoogleEngine アクセスログの保存、調査 S3より安い アプリケーションログの解析 ABテストの優位さ判定
one's impression
BigQueryってなにもの?っってレベルで参加した(Rebuildでファンになったっていうのもありつつ) やはり説明がうまいなー。資料も見やすくてわかりやすいなー。 S3よりやすくて解析もできるなんて、うちのログも突っ込んでみればよくね?と思ってしまった・・・。 他社サービスを使うことに非常に障壁があるうちの会社だけど、今の流れならば乗っかれる気がする・・・!!
いくつか自分が見なおしたい資料
- perlあるある
- そんなにビッグでもないデータ処理手法の話
- 開発合宿!
- dockerであそんでみよっかー
- YAPC::Asia Tokyo 2014 前夜祭 pplog
- TDD
- BigQueryの話
- Mobile App Development for Perl Mongers
- 突然ITインフラを任された人のための…監視設計入門
メモメモメモメモメモメモ
完成されたシステムなどない。
memo
なんかスピリチュアルな感じのトークだった。 めちゃめちゃ壇上をうろうろするなぁと感じて「kenjiskywalker」さんって言う名前を見て納得していた。 理想論で語られていたので、それはそうやねぇ。と思って聞いていた。 もうちょい現実路線でどう試行錯誤しているのか的なことが聞けたらよかったな。 トーク後のtagomorisさんからの質問で「現実はどうなんだ!」っていうのが面白かった。
ランチセッション
memo
DeNA @yosuke_furukawa QuizNow Node.jsユーザグループ代表 思いつきを意識する その場ののりは大事 モバミ 自分のスペシャリティをシェアする ios1 serversside2 front1 design1 勉強会スタイルでよいサイクルをまわそう
gitによるツール開発
memo
motemen はてなの人 mackerel gitのテクい話 ghq git help -a
DeNA自動化
memo
モバゲプラットフォーム開発をやってきた デプロイ自動化、その背景 安全工学 システムをいかに安全に運用し続けるか 早く安全に届ける 問題が早めに発見されるシステムはいいシステム 巨大なコンテナ->意味のある小さなサービスに分割 マイクロサービス的な 自動化できる条件 ソースコードのバージョン管理 ユニットテスト、受け入れテスト 自動テスト、CI データベースバージョン管理 環境を問わない簡易なデプロイツール 開発と本番でなるべく差異をなくす デプロイメントパイプライン Jenkinsをつかっている -> ビルドパイプライン ユニットテスト -> ビルド -> デプロイ -> 結合テスト zeroデプロイ テストケースの時間、依存関係、並列化・高速化
WHERE狙いのキー、ORDER BY狙いのキー
memo
yoku0825さん みんなExplainしてるー? kuso-query As A Code table scan とらんぷの一番上からしたまで ちゃんと狙っていけ
ウェッブエンジニアのローレベルプログラミング
memo
立ち見 OSとか人がつくったものから解き放たれて自然界を相手にするここちよさ! トークがすごい楽しそうでいい雰囲気だった
How's startup life? - working as CTO in Japan
memo
スタートアップって何?ファイナンシャル、エンジニア、デザイナー。 Ansible pythonを意識しないところがいい chef ruby臭がつよい Rethink the risk ベンチャーは先端技術とか面白いことができる
Mobile Application Development for Perl Mongers
memo
[ninjinkun x gfx] mvvm angularとか Reactive Programming reactiveCocoa Fablic -> Elasticsearch Bots ios ci
インデックスに割り当てられるシャードをノード毎にいい感じしたい
仮にノードが4台のクラスタで、プライマリ10シャード、レプリカ1の場合は
curl -XPUT localhost:9200/test/_settings -d '{ "index.routing.allocation.total_shards_per_node" : 5 }'
こんな感じにすると1つのインデックスにシャードが5個割り当てられていい感じになる。
特定のインデックスがでっかくなるのでバランシングしたい!ってときにはいいのではないか?
DevOpsを考える
開発から運用へ
今まではアプリ開発のメンバとしてずっとやってきたのだけど
いろいろとあってインフラ開発・運用のリーダとして仕事をすることになった。
上司からはDevOpsを求められている。
運用の現場
運用に入って正直驚いた。
チケットは1行「作業完了」といって解決にしているし、
リポジトリにコミットせずに、なぜか部の共有ディレクトリにファイルをあげている。
そこには「XXXX_201407XX.txt」なんて対比されているファイルもある。
と思えば、リポジトリにはチケットの作業ログがあげられている。
特にレビューも作業結果も確認せずにクローズされているチケット。
ただ、運用メンバに加わることで見えてくることもあった。
- 「人のせい」にしないで「プロセスのせい」にして、ちゃんとした振り返りを作業後に行っている。Good
- 複数のプロジェクトの運用を行っているため、コンテキストスイッチが多くなかなかつらい。
- 実工数分しか発注されていないため、そもそも運用改善をする時間が取れない。
- 「何のために」をちゃんと教わっていなそう
現場を見て、DevOpsに悩む
個人的な理想 DevOps。
運用と開発をがっちゃんこした一つのチームにして運用も開発もみんなができるようになって。
なんてことが本当にできるのか?
やはり「運用」としての人材としてきてもらっている人にいきなりコード書けは敷居が高すぎるし
運用メンバには負担でしかないのではないか?
DevOpsと言いはじめたとき、運用メンバも開発やるのか・・・勉強しなきゃって不安があるという噂を聞いた。
開発メンバは開発効率が下がるだーなんだーいって、運用をやりたくないことしか伝わらない。
そもそもプロセスが全く違うしどうやって一つのチームとしてまとめるんだろう?
数週間頭が痛いのが続いた。
正直会社にも行きたくねーってなった。(あ、これは普段通りかもw)
上司、開発リーダからの助言
運用にコードを書けとは言わない。もっと他にもやることがあるだろう。
DevOpsだからといって一つのチームでということではない。
いろいろなDevOpsの体系があるんだから焦らずに、中長期的に見据えていこう。
DevOpsについて学ぶ
固まっていた思考がだいぶほぐれた気がした。
というかそもそもDevOpsについて勉強していなかった。
勝手にそういうもんだと思い込んでいた。
DevOpsはキーワードは知っていたけど、勉強していなかったのでほんとうに「にわか」ダッタと思う。
いまでも「にわか」だけど前よりはましになっただろう。
今日、その辺りの資料をいろいろと読んでみた。
そもそも開発は変更を加えたいと運用は安定かどうさせたいというミッションの違いがあることから対立がおきている。
そこでビジネスゴールという共通の目標をたてて、同じ方向を向き、クリアするためにどうするか。
なんかアジャイルを勉強していたときに聞いた話だった。
結局は、
素早く、お客さんに黄金体験(ゴールドエクスペリエンス)を提供する
あくまでこれが大前提であることがわかった気がする。
アジャイルと同じでDevOpsに形はない。チームにあった自分たちのやり方を考えるんだ。
自分はよく手段を目的にしてしまうことがあるので、「何のために」を先に考えることが必要。
さて、今後どうしていくか。