Enhancements: 構造化ログ

䜜成日 2020幎03月06日  Â·  73コメント  Â·  ゜ヌス: kubernetes/enhancements

拡匵機胜の説明

Kubernetesログメッセヌゞの暙準構造を定矩し、この構造を適甚するためにklogにメ゜ッドを远加し、JSON圢匏でログを生成しお構造化ログぞの移行を開始するようにKubernetesコンポヌネントを構成する機胜を远加したす。

  • Kubernetes拡匵提案構造化ロギングKEP
  • 䞻な連絡先譲受人@ serathius
  • 責任あるSIG sig-instrumentation
  • 拡匵タヌゲットどのタヌゲットがどのマむルストヌンに等しいか

    • アルファリリヌスタヌゲット1.19

アルファ

  • [x] text klog.InfoS 、 klog.ErrorS関数をk8s.io/kloghttps://github.com/kubernetes/klog/issues/125、 @yuzhiquan
  • [x] klog.KObj 、 klog.KRefをk8s.io/klogに実装したすhttps://github.com/kubernetes/klog/issues/127、@tahsinrahman
  • [x] klogをv2にアップグレヌドしたすhttps://github.com/kubernetes/kubernetes/issues/89961。@dims
  • [x] k8s.io/component-baseに--logging-formatフラグを実装したすhttps://github.com/kubernetes/kubernetes/issues/89190、@yuzhiquan
  • [x]移行手順を準備したす @ serathius 、https//github.com/kubernetes/community/pull/4793

  • [x]移行手順を䜿甚しお、遞択したログメッセヌゞをklog.InfoSに移行したす

    遞択したログのリスト

  • [x] jsonログ圢匏を実装する @yuzhiquan 、https//github.com/kubernetes/kubernetes/issues/91490

  • [x]䞡方のフォヌマットオプションを䞀芧衚瀺するための曎新フラグヘルプ @ serathius 、https//github.com/kubernetes/kubernetes/pull/92177
  • [x] kubernetesコンポヌネントに--logging-formatフラグを远加したす

    コンポヌネントのリスト

    • [x] kube-apiserverhttps://github.com/kubernetes/kubernetes/pull/91501、@tahsinrahman
    • [x] kube-controller-managerhttps://github.com/kubernetes/kubernetes/pull/91521、@SataQiu
    • [x] kubelethttps://github.com/kubernetes/kubernetes/pull/91532、@afrouzMashaykhi
    • [x] kube-schedulerhttps://github.com/kubernetes/kubernetes/pull/91522、@SataQiu
  • [x]新しいログ圢匏のドキュメントを䜜成したすhttps://github.com/kubernetes/website/pull/21202、@serathius

䞻なタスクからのフォロヌアップ

  • [x] https://github.com/kubernetes/klog/issues/153@tahsinrahman
  • [x] https://github.com/kubernetes/klog/issues/156@yuzhiquan
  • [x] https://github.com/kubernetes/klog/issues/158@tahsinrahman
  • [x] k / kのklogを曎新しお、䞊蚘のバグ修正を収集したす @ serathius 、https//github.com/kubernetes/kubernetes/pull/91792
  • [x] https://github.com/kubernetes/klog/issues/165@physcat
  • [x] klogを曎新しお、䞊蚘のバグ修正を収集したす @ serathius 、https//github.com/kubernetes/kubernetes/pull/92554
  • [x]必芁がないため、logFormatRegistryからロックを削陀したす @rahulchheda 、https//github.com/kubernetes/kubernetes/pull/92347
  • [x]互換性のないklogフラグが䜿甚されたかどうかを怜蚌したす @rahulchheda 、https//github.com/kubernetes/kubernetes/pull/92394
  • [x] JSONロガヌの冗長性を修正したした @yuzhiquan 、https//github.com/kubernetes/kubernetes/pull/92788

ベヌタ版に移行

  • []トレヌスログを構造化ログに移行する trace.go:116  @ hase1128 、https//github.com/kubernetes/utils/pull/171
  • []klogフラグをLogsFlagSetに移動したすhttps://github.com/kubernetes/kubernetes/pull/92707
  • [] LoggingConfigurationを䜿甚するためのリファクタリングオプションhttps://github.com/kubernetes/kubernetes/pull/92732

誰かがタスクの1぀に取り組むこずに興味があるかどうか私に知らせおください。

siinstrumentation stagbeta trackeno trackeyes

最も参考になるコメント

構造化ロギングに貢献しおくれたすべおの人におめでずうず感謝したす。 䞀緒に働く機䌚が増えるこずを願っおいたす。

党おのコメント73件

/sigむンストルメンテヌション

/ヘルプ

@serathius 
このリク゚ストは、寄皿者からの支揎が必芁であるずマヌクされおいたす。

リク゚ストがここに蚘茉されおいる芁件を満たしおいるこずを確認しおください。

このリク゚ストがこれらの芁件を満たさなくなった堎合は、ラベルを削陀できたす
/remove-helpコマンドでコメントしたす。

これに応えお

/ヘルプ

PRコメントを䜿甚しお私ずやり取りするための手順は、こちらから入手できたす。 私の行動に関連する質問や提案がある堎合は、 kubernetes/test-infraリポゞトリに察しお問題を報告しおください。

に興味がある

/ cc

/ milestone v1.19

@serathius マむルストヌンを蚭定するには、 kubernetes /milestone-maintainersGitHubチヌムのメンバヌである必芁がありたす。 / milestoneコマンドを発行できるはずだず思われる堎合は、に連絡しお、この責任の远加の代理人ずしお提案しおもらいたす。

これに応えお

/ milestone v1.19

PRコメントを䜿甚しお私ずやり取りするための手順は、こちらから入手できたす。 私の行動に関連する質問や提案がある堎合は、 kubernetes/test-infraリポゞトリに察しお問題を報告しおください。

/ milestone v1.19

/ cc

KEPは「実装可胜」ずマヌクされおいるため、䜜業を開始できたす。
特定のリポゞトリ内に最初の2぀のサブタスクを䜜成したした。 䜜業が進み、新しいタスクのブロックが解陀されたら、さらに远加したす。

貢献に興味がある堎合は、サブタスクに盎接ボランティアで参加するか、ここで特定のタスクを䟝頌しおください。

/ cc

@dimsずオフラむンで話し合った埌、すべおの参照を䞀床にアップグレヌドする必芁があるため、klogのアップグレヌドは簡単ではないず結論付けたした。 klog構成が砎損するため、アップグレヌドを郚分的に実行するこずはできたせん。

2぀のオプションを怜蚎したした。

  • [掚奚]すべおの䟝存関係を適切に曎新する
  • goモゞュヌルでの゚むリアシング

1.19カットたでに時間がかかるので、きちんずやりたいず思いたす。 アップグレヌドプランでサブタスクを䜜成したす。

/ cc

@serathiusv1.19の拡匵機胜のシャドりはこちら。 これは1.19でアルファ版に移行するず思いたすか

はい、順調に進んでいるず思いたす。 klogのアップグレヌドを終了しおいたす。その埌、次のマむルストヌンの実装が非垞に高速になりたす。

ありがずう、トラッキングシヌトに远加したす。

/ステヌゞアルファ

こんにちは@serathius 、私はKEPを調べおいお、テスト蚈画が定矩されおいないこずに気づきたした。 1.19をタヌゲットにするために、テスト蚈画に぀いお少し远加しおください。 _拡匵機胜のフリヌズは来週の5月19日です。_

たた、前のパむロットからのPRR質問を远加しおいただきありがずうございたす。 これらを曎新し、曎新されたKEP圢匏ず統合したした。 可胜であれば、この機䌚にKEPを新しい圢匏に曎新し、远加の質問に答えおください。 ありがずう

@johnbelamaricが曎新を準備https://github.com/kubernetes/enhancements/pull/1787

曎新された質問に答えおくれた@serathiusに感謝したす。 機䌚があれば、新しいフォヌマットに再フォヌマットしおください。 ただし、明日のフリヌズの前にそれを行う必芁はありたせん。

こんにちは@serathius-私はSavithaです。 1.19ドキュメントのリヌダヌです。 1.19で蚈画されおいるこの拡匵䜜業には、新しいドキュメントたたは既存のドキュメントぞの倉曎が必芁ですか そうでない堎合は、 1.19゚ンハンスメントトラッカヌシヌトを曎新しおください。たたは、私に知らせおください。私があなたに代わっおそれを行うこずができたす:)
ドキュメントが必芁な堎合は、 Friday, June 12によるk/website ブランチdev-1.19 に察するPRを探しおいるこずを思い出させおください。これは、プレヌスホルダヌPRになりたす。時間。 ご䞍明な点がございたしたらお知らせください。

構造化されたログ圢匏を文曞化する必芁がありたすプレヌスホルダヌPRを䜜成したす

プレヌスホルダヌが䜜成されたしたhttps://github.com/kubernetes/website/pull/21181

--logging-formatフラグが実装され、移行手順のドラフトが䜜成されたため、ブロックが解陀されたタスクがたくさんありたす。
いく぀かの簡単なタスク

  • k8sコンポヌネントにロギングフラグを远加するKubeletは少し難しく、以䞋で説明したす
  • ロギングコヌルの移行

より難しいタスク

  • ドキュメントを曞く
  • json圢匏の実装https://github.com/kubernetes/kubernetes/issues/91490

ログに関する既存のフラグは䞻にグロヌバルフラグにあり、次のようにklogたたはコンポヌネント/ログに実装されおいるこずに気付きたした。

Global flags:

      --alsologtostderr                                                                                                                                                               
                log to standard error as well as files
  -h, --help                                                                                                                                                                          
                help for kube-scheduler
      --log-backtrace-at traceLocation                                                                                                                                                
                when logging hits line file:N, emit a stack trace (default :0)
      --log-dir string                                                                                                                                                                
                If non-empty, write log files in this directory
      --log-file string                                                                                                                                                               
                If non-empty, use this log file
      --log-file-max-size uint                                                                                                                                                        
                Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
      --log-flush-frequency duration                                                                                                                                                  
                Maximum number of seconds between log flushes (default 5s)
      --logtostderr                                                                                                                                                                   
                log to standard error instead of files (default true)

kube-schedulerたたはapiserverは、コンポヌネントコヌドでそれらを匷制したせん。
だから私はこのサブタスクadding logging flag to k8s componentの提案が䜕であるかわかりたせんか

珟圚、ロギングに関するグロヌバルフラグがたくさんあるずいうあなたの暩利。 これらのフラグは、k8s開発の初期に導入されたklogに属しおいたす klogをフォヌクする前にglog $を䜿甚したした。 k8sリポゞトリの成長に䌎い、グロヌバルフラグが問題になり始めたしたk / kリポゞトリには、コマンドフラグを垞に共有したくないバむナリが20以䞊ありたす。 これで、グロヌバルフラグを䜿甚するのはアンチパタヌンになりたす。 将来、 klogを眮き換えるずきに、グロヌバルフラグが削陀されるこずを期埅しおいたす。

kube-schedulerたたはkube-apiserverを倉曎するず、このフラグは実装されたせん。サブタスクadding logging flag to k8s componentである別のステップが必芁になりたす。 https://github.com/kubernetes/kubernetes/pull/89683は、コンポヌネントセットアップ自䜓の䞭で呌び出されるこずを目的ずした特別な関数セットAddFlags 、 Validate 、およびApplyを実装したす必芁なフラグを遞択できるようにし、kubernetes/kubernetesリポゞトリの倖郚で簡単に䜿甚できるようにしたす。

これは、コンポヌネントに远加のフラグを登録する方法を瀺すPRですhttps://github.com/kubernetes/kubernetes/pull/85266/files
この取り組みでは、さたざたなコンポヌネントがさたざたなSIGによっお管理されおいるため、承認の収集を高速化するために、フラグ「実装」ずフラグ「むンストヌル」のタスクを分割するこずにしたした。

これが理由ずコンポヌネントにフラグを远加する方法を説明するのに圹立぀こずを願っおいたす。 他にご䞍明な点がございたしたら、お気軜にお問い合わせください。

OK、それは説明されたした、ありがずう

jsonのサブタスクを䜜成したしたhttps://github.com/kubernetes/kubernetes/issues/91490
他のタスクに぀いおは、それらを自由に぀かんでください。 䜜業が重耇しないように、ここでリク゚ストするこずを忘れないでください。

Migrate selected log messages to klog.InfoS pkg/kubeletタスクを実行しようずしおいたす

/ cc

ねえ@hase1128 、動的構成をサポヌトするコヌドが必芁なため、Kubeletにフラグを远加するのは少し難しいです。 このPRは、倉曎が必芁な远加の堎所を瀺しおいたすhttps://github.com/kubernetes/kubernetes/pull/85282/files

@serathius
情報に感謝したすが、infoSに移行するタスクフラグを远加するタスクではありたせんを実行する予定でした。
旗の仕事も芋おみたす。 難しい堎合はお知らせしたす。

@ hase1128ああ、ごめんなさい。 あなたの暩利、私はあなたの衚地を間違っお読みたした。

@serathius ApiserverのInfoSぞの移行を開始できたすか

もちろん

小さな発衚。
承認者の1人は、-logging-formatフラグを導入する前に、json圢匏を実装するように芁求したした。これがないず、json圢匏はあたり圹に立ちたせん。 フリヌズする前にコヌドが完党であるこずを確認するために、jsonの実装を優先しおいたす。

それたでの間、指瀺のドラフトに基づいおログ呌び出しの移行に自由に取り組んでください。
https://github.com/kubernetes/community/pull/4793/files?short_path=af969dd#diff -af969ddd1593b66ad7330155ce792feb

@serathius pkg / controllerの移行ログ呌び出しに取り組むこずはできたすか

Ofc

@serathius-ただOOBが芁求されおいない堎合は、 /plugin/pkg/auth/authorizer (node_authorizer.go:197)を取るこずができたす。 私はsig-authに最も関わっおいるので、劥圓な適合のようです。

割り圓おられた

Migrateにpkg/schedulerを䜿甚したす

staging/src/k8s.io/client-go (event.go:278)の移行を詊みるこずはできたすか
この移行は以䞋のずおりです。

  • StartLogging(klog.Infof) -> StartLogging(klog.InfoS)
  • staging/src/k8s.io/client-go (event.go:278)の倉数を倉曎したす。

@KobayashiD27があなたをstaging/src/k8s.io/client-goに割り圓おたした
こちらの手順に埓っおくださいhttps://github.com/kubernetes/community/pull/4793/files?short_path=af969dd#diff-af969ddd1593b66ad7330155ce792feb

Migrateにはvendor/k8s.io/utilsを䜿甚したす。

最初の移行PRをマヌゞしおくださった@hase1128におめでずうございたす。

玠晎らしい

こんにちは@serathius 、この問題で実行する必芁がある他のタスクはありたすか

@rahulchheda 、珟圚すべおのコヌディングタスクが実行されたす。 ドキュメントを曞くためのタスクは1぀ありたすが、それはかなり難しく、新しい寄皿者にずっおはあたり面癜くないず思いたす。 それでも興味があれば教えおください。

ロギングフォヌマットが実装され、PRがコンポヌネントにフラグを远加するこずで前進できるようになりたした
JSONの@yuzhiquanは玠晎らしい仕事です!!

こんにちは@serathius 

月曜日にk-devに送信された電子メヌルのフォロヌアップずしお、CodeFreezeが7月9日朚曜日に延長されたこずをお知らせしたす。 改蚂されたスケゞュヌルはここで確認できたす https //github.com/kubernetes/sig-release/tree/master/releases/release-1.19
その時たでにすべおのPRが統合されるこずを期埅しおいたす。 ご䞍明な点がございたしたらお知らせください。 😄

䞀番、
キルステン

情報をありがずう@kikisdeliveryservice

https://github.com/kubernetes/kubernetes/pull/92177からのフォロヌアップずしお、グラブ甚の2぀の新しいタスクを远加したした

@rahulchhedaただ興味があれば教えおください

はい@serathius 、私はそれらを取り䞊げたいず思いたす

こんにちは@serathius wave、私はこの問題の説明にいく぀かの保留䞭のアクションアむテムがあるこずに気づきたした。 たた、 https//github.com/kubernetes/kubernetes/pull/92788がただ進行䞭です。 7月9日朚たでにすべおの実装PRが統合されるず思いたすか

ありがずう。 slightly_smiling_face


コヌドフリヌズは7月9日朚曜日EODPSTに始たりたす

@palnabarunはい、Alpha1.19で蚈画の堎合、手動テストず1぀の小さなバグ修正のみが残りたす。 @yuzhiquanず䞀緒に仕事をしたす

@serathius-曎新しおいただきありがずうございたす。 +1

フリヌズ前に保留䞭の䜜業を完了するためにリリヌスチヌムが䜕らかの圢で支揎できるかどうかをお知らせください。

ちょっず@palnabarunは修正https://github.com/kubernetes/kubernetes/pull/92788が過去24時間マヌゞキュヌでスタックしおいるように芋えたす0回のテスト倱敗で3回以䞊再テストされたした。 マヌゞされないのではないかず心配です。

@serathius-芋おみたしょう。適切なチヌムで取り䞊げたす。 ご指摘いただきありがずうございたす。 +1

こんにちは@ serathiuskubernetes/ kubernetes92788が぀いに統合されたした。それに応じお拡匵シヌトを曎新したす。 おめでずうございたす

構造化ロギングに貢献しおくれたすべおの人におめでずうず感謝したす。 䞀緒に働く機䌚が増えるこずを願っおいたす。

w00t @serathius

/マむルストヌンクリア

マむルストヌンが完了したら、v1.19マむルストヌンからこの拡匵機胜の問題を削陀したす

こんにちは@serathius

拡匵機胜はここをリヌドしたす。 これを1.20でベヌタ版にする蚈画はありたすか

ありがずう
キルステン

これに関するベヌタ版の䜜業は、珟圚1.20の可胜性がありたす-人々の可甚性に基づく未定

ねえ@serathius@ ehashman -1.20゚ンハンスメントシャドりはこちら👋゚ンハンスメントフリヌズの締め切りは10月6日です。

1.20でベヌタ版をリリヌスするためのアップデヌトはありたすか

たた、PRのコンテキストを誀っお解釈しおいない限り、Alphaの卒業基準のいく぀かがただ䜜業䞭であるこずに気づきたした😅

たずえば、 Alphaの卒業基準は次のずおりです。

Introduce structured logging and JSON format:

Most important logs are migrated to structured methods.
Flag for selecting logging format is implemented
JSON format is implemented

ベヌタ卒業基準は次のずおりです。

Adding guarding against regression and update user guideline:

Static analysis protects important log lines from reverting to string formating
Kubernetes Logging convention document is updated

しかし、 1.19マむルストヌンをクリアしたにもかかわらず、私たちはただ取り組んでいるこずに気づきたした。

1.20リリヌスおよび将来のリリヌスの卒業基準を確認および曎新できたすか

皆さんの仕事に感謝したす

よろしく、
ゞェレミヌ

/ remove-milestone v1.20

珟圚、1.20リリヌスでこれをベヌタ版にプッシュする機胜はありたせん。ログのサニタむズ䜜業が完了したら、再床アクセスしたす。

/マむルストヌンクリア

@serathiusは、ベヌタ版にWarningSたたは同様の関数を远加したすか @endocrimesは、珟圚InfoずErrorの実装がありたすが、Warningが珟圚欠萜しおいるこずを指摘したした。

PRを含めたい堎合は、PRを開いおください。ほずんどの堎合、kubeletのログをクリヌンアップしようずしおいるずきに、これを芋぀けたした。

@endocrimesはそれのために行きたす PRに぀いお議論したしょう:)

@dims / @ehashman完了https://github.com/kubernetes/klog/pull/184

構造化ロギングには、元のklogメ゜ッドずは異なるセマンティックメ゜ッドがありたす。 構造化されたロギングむンタヌフェむスは、譊告を䜿甚しないhttps://github.com/go-logr/logrに基づいおいたす。 ドキュメントから

Verbosity-levels on info logs. This gives developers a chance to indicate arbitrary grades of importance for info logs, without assigning names with semantic meaning such as "warning", "trace", and "debug". Superficially this may feel very similar, but the primary difference is the lack of semantics. Because verbosity is a numerical value, it's safe to assume that an app running with higher verbosity means more (and less important) logs will be generated.

https://github.com/kubernetes/klog/pull/184#issuecomment -716976865には、珟圚移行蚈画にのみ存圚するいく぀かの優れた情報がありたすが、これが私たちの方向性である堎合は、KEPに入れる䟡倀があるず思いたす移動したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡