Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ログモニタリングツールを自作した話
Search
Hiroki Takeda
September 13, 2016
Technology
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ログモニタリングツールを自作した話
社内LT用
Hiroki Takeda
September 13, 2016
More Decks by Hiroki Takeda
See All by Hiroki Takeda
書籍「絵で見てわかるWeb APIの仕組み」のご紹介
rhumie
0
55
PlaywrightによるE2Eテスト入門 / Introduction to E2E Testing with Playwright
rhumie
7
5.3k
未知の未知を既知の未知へ / Unknown unknowns to Known unknowns
rhumie
5
4.5k
ServeMuxの競合検知と性能
rhumie
1
150
エンジニアを目指す君たちはどう生きるか ~ソフトウェアアーキテクトのすゝめ~
rhumie
41
23k
An Encouragement of Flutter Golden Test
rhumie
1
1.1k
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム基盤
rhumie
0
87
Data Shipper Platform Beats
rhumie
0
170
Other Decks in Technology
See All in Technology
Claude起点の仕様駆動開発
tanakaseiya
0
300
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
220
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
850
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
280
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
160
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
220
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
150
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
2
220
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
320
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
190
AI Native Platform Engineering 〜PlatformとAgileで“作る速さ”を“価値”へ〜
uya116
0
610
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
5.1M
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Documentation Writing (for coders)
carmenintech
77
5.6k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
エンジニアに許された特別な時間の終わり
watany
109
250k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
Transcript
ログモニタリングツール を自作した話 Hiroki Takeda
各種サーバのログを一元的に管理し、可視化するブラウザ ベースのログモニタリングツール つくったもの 2
モチベーション • アプリ実行環境をマネージドサービスとして提供するため 利用者にSSHでログイン等はさせない世界観 ⇒利用者が各種ログを管理・閲覧できる仕組みが必要 3 ①サーバにSSH $ view /var/log/xxxx.log
②viewコマンド等でログを閲覧 オンプレの世界観 ①ブラウザからログを 選択するだけ PaaSの世界観
• シンプルかつオープンをコンセプト – データストアはelasticsearch – ログ収集エージェントはbeatsシリーズのfilebeat – REST APIはSpark Framework(Java)をベースに構築
– 画面はRiot.jsをベースに構築 アーキテクチャ 4 Client View HTTPS Websocket API Server REST API Data Store HTTPS HTTPS Log Agent
Elasticsearch構成 • 物理構成 – クラスタはプロジェクト単位 • 論理構成 – インデックス(RDBのデータベース相当)はログ収集対象の 各サーバ毎、年月日単位で作成
– タイプ(RDBのデーブル相当)はログファイル単位 – ドキュメント(RDBの行相当)はログファイルの1行単位 5 Elasticsearch インデックス =サーバ名_年月日 タイプ =ログの種類 ドキュメント =ログ1行 … …
特徴・機能 • 認証・認可(LDAP) • 多様なログ検索 – 文字列指定検索 – 日付・時刻指定検索 –
複数ログ同時検索 • ファイルダウンロード • リアルタイムログ出力(tail –fコマンド相当) • マテリアルデザイン・レスポンシブデザイン 6
Demo 7
裏話というか細かい話(1/2) • リアルタイムのログ出力では通信コストを低くし、リアル タイム性を向上させるためWebsocketを利用 ⇒ Client⇔APIサーバは双方向通信 ⇒ ElasticsearchがWebsocket対応していないため、 APIサーバ⇔Elasticsearch間は別スレッドでポーリング •
Elasticsearchのindexのサフィックス日付はUTC時刻で 決定されるため、日付検索で一部のログが引っかからない ⇒ 例えば日本時間の2016/8/10の03:00に出力されたログは、 xxxx-2016.08.10ではなくxxx-2016.08.09のインデックスに格納される ⇒ 日付指定検索時に指定された日付のみでインデックスを絞るとダメ ⇒ タイムゾーンオフセットを元に指定日付の前or後1日のインデックスも 検索対象に含める 8
裏話というか細かい話(2/2) • elasticsearchの@timestampフィールドはミリ秒まで しか保持できないため、時系列表示が完全に担保できない ⇒ ログファイル自体にナノ秒まで保持させ、logstashでパースして elasticsearchに食わせるか? ⇒ logstash使いたくないし、そもそもログ自体にナノ秒を保持できない ケースもある
⇒ filebeatのoffsetを利用 • ファイル行番号表示を実現しようとするとパフォーマンス が大幅に劣化する ⇒ filebeatではログデータの行番号は連携できない仕様 ⇒ 元ファイル通りに行番号を表示しようとすると1ファイル分のドキュメント を総なめして、ドキュメントIDと行番号の紐付きをキャッシュしておく 必要がある(条件検索で一部のログデータのみがヒットする場合も、連番 ではなく元ファイルの行番号を表示したいため) ⇒ ログが100万行とかあるといろいろキツイ ⇒ あきらめ(とりあえずoffsetを表示) 9
今後やりたいこと • オーケストレーションの実現 – 対象サーバ、ファイルパス等を入力して画面をポチると エージェント(filebeat)のインストール、設定が自動で実行 • エージェントレスな世界の実現 • ログ分析用のビュー
どなたか知見・アドバイスを・・・ 10