背景 我们使用Splunk Universal Forwarder从我们的节点(OS X笔记本电脑)中获取所有主厨客户端日志。我们将这些日志放入多个Splunk仪表板中,因为Chef Server UI不是最容易使用的。 有点不重要:我正在直接从节点中获取日志,因为我不确定是否有更好的方法来获取日志并将它们导入Splunk。
目标 默认情况下,在自动厨师 - 客户端运行期间创建的日志并不足以满足我的需求。 As outlined on Chef's documentation,log_level的默认值设置为:warn(当终端可用时)或:info(当终端不可用时)。这些情况适合后者,因此记录为:info。我宁愿他们总是记录为:警告。
不幸的是,我在他们的文档中找不到有关如何执行此操作的任何内容。 From their chef-client readme,我发现现在不推荐使用属性node['chef_client']['log_level']
进行设置。它提到使用node['chef_client']['config']
设置它们,但我无法在使用node['chef_client']['config']
的任何地方找到文档。
谢谢!
编辑:我们有数百个节点,我需要一个Chef支持的方法来从属性或菜谱(或其他)中执行此操作。我无法进入并手动更改client.rb文件上的log_level值(无论如何都会改变回来,除非我找出设置的位置更改默认值)。如上所述,将node['chef_client']['log_level']
设置为:warn现已弃用。
答案 0 :(得分:2)
简单的做法就是运行chef-client -l warn
,但您可能已经考虑过了。
要在代码中执行此操作,但没有黑客主厨本身,花几分钟玩UTSL让我想知道:将{>> 1}}中的以下内容放在一起可能会有效:
/etc/chef/client.rb
答案 1 :(得分:1)
我认为最好的方法:
制作一本包裹chef-client cookbook的食谱,我们称之为my_company_chef-client
在depends 'chef-client', '~> 4.6'
中添加一行my_company_chef-client/metadata.rb
。
我可以在这里留下次要的升级,因为我对这本食谱质量和升级过程非常有信心,将食谱与您自己的食谱一起提供是一个品味问题,berkshelf是最常用的据我所知,但讨论它将超出这个答案的范围。
在my_company_chef-client/attributes/default.rb
:
default['chef-client']['config']['log_level'] = :warn
在my_company_chef-client/recipes/default.rb
:
include_recipe 'chef-client::config'
然后只需将my_company_chef-client
添加到所有节点运行列表中。如果您没有所有节点的基本角色或包装器,则从here获取技巧:
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 }'