#3でLTをしてきた畑ケです。Prometheusは近年注目されるメトリクスモニタリングツールです。特徴としては非常にスケーラビリティが高く、Pull型でメトリクスを収集するため、Prometheusのインスタンス1つで1万インスタンスのサーバー群を監視できます。#3ではPrometheus本体というよりもそれを取り巻くエコシステムを対象としたミートアップでした。Labが出しているLokiというログ基盤を触ったことがあり、触った時の成果の一つがLTのネタになるのではないかとのことでLTに応募してみたところ、LTに採択されました。イベントの内容まず他の方のされた発表をご紹介します。Corporationコンテナを基盤とする環境でPrometheusを運用していると、例えば、k8sのクラスターを作り直したときにPrometheusで収集したメトリクスが消失してしまう問題があるそうです。このメトリクスがk8sクラスターに紐づいてしまっている問題を解消するのに永続化ストレージを採用し、永続化を試みていました。ThanosというPrometheusを高可用性にし、長期間のログ保存を可能にするソフトウェアを用いて方法をPrometheusで収集したメトリクスを永続化する方法を丹念に調査していた発表でした。MetricsというこちらもPrometheusで収集したメトリクスを長期間永続化するソフトウェアを使って、Prometheusを高負荷環境にも耐えられえるようにした試行錯誤を発表されていました。このソフトウェアにたどり着くまでにいくつかのPrometheus関連のメトリクス永続化ストレージを試されたそうです。VMInsert)に分かれており、そのうちVMStorageは持つデータによって状態を持つのでk8sではStatefulSetとしてデプロイする必要があるそうです。k8sのマルチテナント構成では合計1万Pod以上の監視を安定的に行えるようになったそうです。Lokiについての発表です。Lokiについてのデモを通じてどのようなソフトウェアなのかを解説するのが前半の発表でした。後半はpromtail特集でした。promtailはpromtail.yamlにてPrometheusの設定と同様の設定を流し込むことで設定できるそうです。Lokiも時系列データを保持するのにTSDBを使用しており、これに入れたデータをクエリするのにラベルが必要になるのですが、このラベル設計がうまくないと後に目的の時系列データをクエリするのに苦労するようです。以下は筆者が行ったLTの内容です。BitのGo製のLokiプラグインをフィードバックしてみた話をしました。Lokiに転送する方法をまとめたときに紹介しました。Lokiは開発が活発なソフトウェアということもあり、ドキュメントがあまり見当たりませんでした。BitのGo製Lokiプラグインとして仕上げました。cosmo0920LTではフリーソフトウェアにフィードバックする作法を軽く触れました。Lokiもフリーソフトウェアです。フリーソフトウェアの開発は通常開発者同士が同時に同じ場所に集まっているのではなく、住んでいる国や文化、ひいては暮らしているタイムゾーンも異なる場合があります。フィードバックするには言葉で説明しなければいけません。動機や今困っていることを説明します。この機能が必要か?なぜこの問題を報告したのか?このIssueチケットやプルリクエストでは何を問題にするのか?プルリクエストは小粒なtypo修正ではない限り、Issueチケットに関連付けられるものとして出す方が良いと筆者は考えています。この方針はプロジェクトによって異なります。プルリクエストを出す時はプロジェクトの方針を確認してみてください。プルリクエストでは方針を議論するよりも提出したパッチが前もって議論した方針に合っているか、このプロジェクトに受け入れられる品質となっているか?を議論する場だからです。プルリクエストやIssueチケットにチェックリストが付いているのであれば一通り確認すべきです。問題が発生している報告者の環境を開発者が再現するには十分な情報が書き込まれている必要があります。よいIssueチケットは開発者が見た時にどのようにすればこの問題が再現できるか?がチケットを見ただけで理解できるチケットです。レビュアーが見るべき箇所が発散しておらず、実現したい機能が実現できているか、パッチの変更は妥当かのレビューに集中できるものがよいプルリクエストです。BitのGo製プラグインをフィードバックしてみたところ、ユーザーもそこそこ出てきたようです。Loki自体は一個のバイナリですし、promtailもバイナリ一個で済みます。そのため、Dockerコンテナに載せやすいです。LokiはPrometheusファミリーということもありk8sと非常に親和性がよいです。k8sに載せるにはまずDockerコンテナ化しないといけないということで、Dockerコンテナ化の要望が新たにIssueチケットとして切られました。Lokiの公式イメージとして提供されることになりました。k8sでは複数のサービスを連携して動作させる必要がありますが、手動で連携させるには面倒な場合があります。この煩雑さを解決するソフトウェアはいくつか出ています。BitのGo製Lokiプラグインのレシピが提供されることになりました。筆者はこのhelmのレシピがきっかけでk8sをより深く理解することになりました。自身の成果をフリーソフトウェアにフィードバックするだけで終わりではなく、フィードバックすることにより学びのきっかけを頂けました。Lokiを題材にしてフリーソフトウェアの開発元にフィードバックする作法をLTしました。フリーソフトウェアの問題を手元で回避するのではなく、開発元にフィードバックするのはクリアコードが普段実践している開発スタイルです。フリーソフトウェアを普段使っている方でもフリーソフトウェアの開発元にフィードバックする方法が分からず、手元で問題を回避していたり、手元でパッチを持ったままになっている方もいると思います。Gateワークショップを開催しています。こちらも併せて検討してみてください。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。