2016-06-20 8 views
0

背景 Splunk Universal Forwarderを使用して、私たちのノード(OS Xラップトップ)からChefクライアントログをすべて取得しています。 Chef ServerのUIは最も簡単なものではないので、これらのログをいくつかのSplunkダッシュボードに入れています。 ポイントの横に少し:ログからログを取得してSplunkに取得する方法がわからないため、ノードから直接ログを取得しています。自動シェフ・クライアントの実行時にデフォルトで作成されシェフクライアントのすべてのノードのデフォルトログレベルを変更する方法

ゴール ログは、私のニーズに十分に冗長ではありません。 As outlined on Chef's documentationの場合、log_levelのデフォルト値はwarn(端末が使用可能な場合)または:info(端末が使用できない場合)として設定されます。これらの状況は後者に適合し、したがってinfo:として記録されます。私はむしろ彼らが常にロギングとしてログするよりはむしろ:warn。

残念ながら、私はドキュメントでこれを行う方法については何も見つかりません。 From their chef-client readme、属性node['chef_client']['log_level']を使用してこれを設定することは廃止されました。それはnode['chef_client']['config']を使用して設定を記述していますが、node['chef_client']['config']を使用してどこにでもドキュメンテーションが見つかりません。

ありがとうございました!

EDIT:私たちは、数百のノードを持っていると私はシェフが料理属性または(または何でも)からこれを行う方法をサポートする必要があります。私は入ることができず、手動でclient.rbファイルのlog_levelの値を変更することはできません(これはデフォルトの設定をどこで変更するか分かりません)。前述のように、node['chef_client']['log_level']を次のように設定しているようです:warnは現在廃止予定です。

+0

knife exec -E 'nodes.find("*") {|n| puts n.run_list << "recipe[my_company_chef-client]" unless n.run_list.include?("recipe[my_company_chef-client]"); n.save }' 

詳細、 ' chef-client' _cookbook_(コマンドラインプログラムの 'chef-client'とは別のもの)は' client.rb'設定ファイルを生成するのに使われますが、設定ファイルはナイフブートストラップまたは手動で行う。 – coderanger

答えて

2

だけchef-client -l warnを実行することです行うには単純なことが、あなたはおそらく既に考えられてきました。コードでこれを行うには

が、シェフ自体をハッキングすることなく、UTSLを再生するの数分は私を思ってしまう:それは/etc/chef/client.rbに次のように置くために働くかもしれない:私の視点で

Chef::Config[:log_level] = :warn 
+0

なぜ実際に実際のコンテキストで 'Chef :: Config'を使用しているのですか?設定ファイル( 'client.rb')は' Chef :: config'インスタンスとしてロードされ、 'log_level'はクラスを明示的に呼び出さずにすぐに利用できます。あなたがこのレシピにこれを入れて、この呼び出しの直後に設定をリロードすると、あなたのトリックが立つ。 – Tensibai

+0

要約すると、クライアントの設定でログレベルを次のように設定する方法: 'log_level:warn' – coderanger

+0

ありがとうございました!残念ながら私はすべてのコンピュータに入り、client.rbファイルを編集することはできません。シェフを使ってこれを行うためのプログラム的なやり方が必要であり、私は本当にそれを見つけることができません。以前はデフォルトの['chef_client'] ['log_level']属性(これは廃止予定)を変更するだけでした。これはclient.rbファイルの設定を変更するものです。 – kameghamegha

1

ベストの方法:

chef-client cookbookを包む料理を作る、のはmy_company_chef-client/metadata.rbに行を追加しますdepends 'chef-client', '~> 4.6'my_company_chef-client

それを呼びましょう。

私はこのクッキングブックの品質とアップグレードプロセスに非常に自信があるので、ここでマイナーアップグレードを可能にしておきます。自分の料理ブックと一緒に利用できるクッキングブックを味わいたいのですが、berkshelfはI知っているがそれについて議論することはこの答えの範囲外になるだろう。 my_company_chef-client/attributes/default.rb

my_company_chef-client/recipes/default.rb

default['chef-client']['config']['log_level'] = :warn 

include_recipe 'chef-client::config' 

それからちょうどすべてのノードのrunlistにmy_company_chef-clientを追加します。すべてのあなたのノードのための基本的な役割やラッパを持っていない場合はトリックがhereから撮影:明確にするための構成hereのシェフ・クライアント料理の使用here

+0

私のメインポストで述べたように、デフォルトの['chef-client'] ['log_level']は推奨されなくなりました。私は問題を抱えている主な理由ですが、node ['chef_client'] ['config']を使ってそれらを設定する方法を理解することはできませんが、それは彼らが示唆しているのは、これを設定する "新しい方法"です。 – kameghamegha

+0

間に設定を忘れて申し訳ありません。 – Tensibai

+1

ああ、大丈夫です!この属性はロールレベルで変更できますか? ['chef-client'] ['config'] ['log_level']?注:私たちは既に実行リストにchef-client cookbookを持っています。 – kameghamegha

関連する問題