株式会社ユーザベースの技術チームブログです。LogsをNewsPicksで試してみた話Tweetこんにちは、NewsPicks開発・運用を担当している木下です。Logsを利用した運用周りの改善について社内LTした内容をベースにブログにまとめました!NewsPicksはインフラを完全にAWS上で運用しています。SESを使用してメールにて通知、リソース監視はCloudWatchを利用しています。CloudWatchは任意のメトリクス(計測値)をアップロードし、それに対して閾値を設定し、AmazonSNSを利用してエラー通知をしたり、AutoScalingを利用してインスタンスを立ち上げたりといったアクションが取れます。AWSを利用すると、標準でEC2インスタンスのCPU使用率やネットワークトラフィック、SQSのキューサイズ、などなど必要最低限のメトリクスが自動でアップロードされます。CloudWatchはデフォルトで提供されているメトリクスの監視だけでなく、スクリプトを作成してカスタムメトリクスをアップロードすることもできます。NewsPicksでは、ディスク使用率、メモリ使用率、サーバーサイドがJavaを使用しているためVMの情報などをCloudWatchにアップロードし、適宜アラームを設定して監視を行っています。CloudWatchはAWSから標準で提供されているメトリクスのようなリソース監視には向いています。システム監視は定期的に発生するリソース監視だけでは不十分です。不定期に発生するイベントの監視をするにはCloudWatchだけで提供される機能では難しく、別のログ監視のシステムを利用するのが一般的かと思います。CloudWatchが提供しているアラーム機能は便利なため、カスタムメトリクスのアップロードスクリプトを工夫していたりもするかもしれません。Logsを試してみました。インストール既存サーバーへのインストールは、下記のpythonスクリプト実行で一発完了でした。north-east-1このスクリプトで、インストール、デーモン化、対話式でログアップロードの設定までできます。chkconfigで起動時設定に入れれば、インスタンスの起動時からログがアップロードされる設定が動きます。対話式で設定した内容は/var/awslogs/etc/awslogs.confに格納されます。access_log直接設定ファイルを変更して追記することもできます。Console上でログが確認できるようになります。Groupsの保持期間として1日〜10年、または有効期限なしが設定可能になりました。ログをアップロードするとなると、長く保持できるのは助かります。(ただし、後述するFilterによってアップロードされるメトリクスの保持期間は選べません)Filterの設定このアップロードされたログからFilterを作成すると、CloudWatchにメトリクスとしてアップロードされます。ログからERRORを抜き出すログから単純に文言をgrepするようなFilterです。HTTPステータスが200で、応答時間が1秒以上のログを抜き出すスペース区切りのログについては、パターン指定して値を抜き出すこともできます。Patternボタンを押すとどのログがヒットするかも事前にテストできるので、操作はとても簡単でした。このFilterの結果をCloudWatchメトリクスとしてアップロードすることができます。単純なgrepの場合は、事象が発生すると1とカウントされますが、パターン指定した場合はマッチしたパターンをメトリクスとすることもできるようです。(◯◯秒以上かかった処理時間のみをメトリクスとして記録、のような)メトリクスからアラームを作成する部分は、通常のCloudWatchと同様です。まとめログから事象を発生ベースでメトリクスとして記録する部分がかなり簡易化されました。今まで定常的なリソース監視に使用していたCloudWatchを、不定期に発生するイベントの監視としても使いやすくなりました。設定、操作もかなり簡単なので、今まで手作りのスクリプトで監視していた部分を一部移行できそうです。今後の改善要望としては、ログを時間でしか検索できない部分や、Filterがスペース区切りにしか対応していない部分(正規表現で後方参照したい・・・)などが改善されるとさらに使いやすくなると思います。NewsPicksではエンジニアを募集しています!各種AWSサービスを利用しながら、安定したサービス提供のための開発・運用を日々おこなっています。deploymentを実現するこんにちは、SPEEDAのSREチームの阿南です。〜PrometheusにGrafanaを...こんにちは、SPEEDAのSREチームの阿南です。»プロフィール『経済情報で、世界を変える』をミッションに、企業・業界情報プラットフォーム「SPEEDA」やソーシャル経済ニュース「NewsPicks」、ABMを強力にサポートする「FORCAS」、スタートアップの情報収集を圧倒的効率化「entrepedia」などを提供する株式会社ユーザベースの技術チームブログです。多国通貨」をハンズオンしたら快適で楽しかったGo言語でオブジェクト指向プログラミングの基本(型編)月別アーカイブ検索@Uzabase_Techさんのツイートスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。