【インターンレポート】 LINEを支えるインフラのメンテナンスと監視環境の改善を行いました

はじめに

LINEの夏のインターンシップに参加しました平野孝徳です。
インターンシップではLINEを支えるインフラを設計・構築・運用をしているサービスネットワークチームに8/13~9/13の期間所属し、インフラのメンテナンスと監視環境の改善を行いましたので、その内容を紹介します。

テーマ1. LINEで利用しているネットワーク機器のアップデート

1つ目のタスクはLINEのデータセンターで実際に稼働中のネットワーク機器のバージョンアップを行うというタスクです。  
LINEのデータセンターではたくさんのネットワーク機器を運用しています。  
それらの実際に稼働しているネットワーク機器をネットワークから切り離し、バージョンアップを行いました。

最先端の仕組みのデータセンターを体験

LINEのデータセンターではCLOS Networkという、OSI参照モデルのLayer 2を排除したネットワークになっており、サーバーまでeBGPの経路情報が流れています。  
そのため、ToR(Top of Rack)のスイッチのアップデートでもBGPの経路を調整することで簡単に切り離すことが可能です。  
それらの切り離しを実際に行ったため、CLOS Networkの特徴である経路収束の速さを実際に体感することができました。  

監視

実際に稼働しているネットワークなので一歩間違えれば大きな障害を発生することになってしまいます。そのため、作業はとても気を使います。  
迂回ができているかのチェック、アップデート中に経路がおかしくなっていないかのチェック、その他様々なチェックを行いながら、作業を進めていきました。
監視には既存の監視ツールや自分で簡易的なスクリプトを書いたりなど、様々な方法で監視を行いました。

テーマ2. LINEで運用しているネットワーク機器からのログ監視ツールの作成

2つ目のタスクはLINEで利用しているたくさんのネットワーク機器から送信されるsyslogを監視するツールの作成でした。  
もともと、監視しているツールはあったのですが、監視ルールのきめ細かい設定ができないため、ツールの作成を行いました。  

設計

LINEで利用しているネットワーク機器はとてもたくさんあり、それらのsyslogを監視しなければならないため、処理しなければいけないsyslogの数も非常に多いです。
また、一定期間ログを保存しておかなければならないため、保存しなければならないログの量もとても多くなります。
また、それらのsyslogを保存し、検索などすることが求められます。そのため、バックエンドのデータベースにはElasticsearchを利用しました。
ログデータ以外の保存にはmysql,一時的なデータストアとしてredisを利用しました。
それ以外にも、チーム内だけが利用するわけではないのでアクセスコントロールの機能など様々な機能の設計を行いました。

テスト環境への投入

LINEのネットワークにはテストネットワークが存在するため、作成したツールを試しにテストネットワークに投入しました。  
テストネットワークでは様々な機器からのフォーマットが違うsyslogを見事処理することができました。
また、一時的にテストネットワークで発生した大量のsyslogも処理しきることも成功しました。
処理速度に関しては開発中に検証することができていなかったので処理できたときは非常に嬉しかったです!
実際に稼働させてみたところ、統計情報の表示やルールのチェック機能、フィルターされたsyslogのエクスポート機能など様々な機能があると便利だというフィードバックを受け、追加で実装もしました。
自分で実装している中では気づくことのできない機能が多く、運用している方々の視点を学ぶことができました!

まとめ

本記事では、インターンシップで取り組んだ内容を紹介させていただきました。
今回のインターンシップでは、LINEの大規模で最新のネットワークを感じることができて非常に楽しかったです!
インターンシップに引き続きアルバイトも行うので、今後もツールの開発、本番環境での動作などを進めていこうと思います。

Related Post