私はSplunkフォワーダ/opt/splunkforwarder/etc/apps/search/local/inputs.confファイルを、特定のホストが持つ役割に基づいて設定しています。私は、(明らかに)JSONとして格納されているモニター、インデックス、およびソースタイプのロール固有の値を定義しました。シェフ:default.rbの代わりにjsonをロールに使用
ほとんどの例は、テンプレートリソースに渡された引数がattributes/default.rbファイルのエントリとして格納されているレシピのテンプレートリソースを使用してファイルを作成する方法を示しています。
今私はhereを実行しようとしているものに近い質問を見つけましたが、属性はJSONではなくハッシュであると仮定しています。
このアプローチを使用する際の私の躊躇は、フォーマットがJSONではなくハッシュであるだけでなく、必要なホスト上で実行されている各アプリケーションのモニタ、インデックス、ソースタイプに複数のエントリがあるという事実Splunkインデクサーに送信します。したがって、template.ergはJSONを繰り返し処理し、各アプリケーションログに新しいエントリを追加する必要があります。 JSONの役割の小さな例を以下に示します。
{
"chef_type": "role",
"default_attributes": {
"gateway_common_input": {
"monitor": "/home/app/logs/common",
"index": "gateway_common",
"sourcetype": "common" },
"gateway_recv_counter_input": {
"monitor": "/home/app/logs/recv_counter",
"index": "gateway_recv_counter",
"sourcetype": "recv_counter" },
"gateway_send_counter_input": {
"monitor": "/home/app/logs/send_counter",
"index": "gateway_send_counter",
"sourcetype": "send_counter" }
},
"description": "Role for Gateway hosts",
"env_run_lists": {},
"json_class": "Chef::Role",
"name": "rgateway",
"override_attributes": {},
"run_list": [
"role[gateway]",
"recipe[gateway_dimensions]"
]
}
編集: ファイルinputs.confのSplunkフォワーダに追加する必要が3件のアプリケーションログがある「rgateway」の役割を定義する上でJSONでの事項を明確に支援すること。 gateway_common_input、gateway_recv_counter_input、およびgateway_send_counter_inputそれぞれに、「monitor」、「index」、および「sourcetype」の独自の設定があります。
inputs.confファイルは、次のように3つのエントリを持っているでしょう:
[monitor:///home/app/logs/common/]
disabled = false
index = gateway_common
sourcetype = common
[monitor:///home/app/logs/recv_counter/]
disabled = false
index = gateway_recv_counter
sourcetype = recv_counter
[monitor:///home/app/logs/send_counter]
disabled = false
index = gateway_send_counter
sourcetype = send_counter
その他の役割は、5つのエントリか一つだけを有することができます。
私はJSONを出力するのではなく、テンプレートリソースを使用してファイルを構築するときに役割の属性を読み込みます。シェフサーバーにJSONとして保存されているロール属性を持つテンプレートリソースを使用してファイルを作成する明確な例は見つかりませんでした。それは、残念ながら私の問題です。 – user3481957
あなたは "ロール属性"を直接使用せず、シェフの実行開始時にノード属性にマージされ、他のすべてのノード属性と同様に通常の 'node'オブジェクトを通じてアクセスします。 – coderanger
それでも、2つの問題が残る: 1.これは、ノードが最初に収束してからロール属性を読み取ることができるということです。 2。レシピは、すべてのロールのすべての属性を知るか、実行時に属性を検出する方法が必要です(私がOPで言及したJSONを反復する問題)。 – user3481957