56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/fluent/plugin/kubernetes_metadata_common.rb', line 56
def parse_pod_metadata(pod_object)
labels = ''
labels = syms_to_strs(pod_object[:metadata][:labels].to_h) unless (@skip_labels || @skip_pod_labels)
annotations = match_annotations(syms_to_strs(pod_object[:metadata][:annotations].to_h))
container_meta = {}
begin
pod_object[:status][:containerStatuses].each do |container_status|
container_id = (container_status[:containerID]||"").sub(%r{^[-_a-zA-Z0-9]+://}, '')
key = container_status[:name]
container_meta[key] = if @skip_container_metadata
{
'name' => container_status[:name]
}
else
{
'name' => container_status[:name],
'image' => container_status[:image],
'image_id' => container_status[:imageID],
:containerID => container_id
}
end
end if pod_object[:status] && pod_object[:status][:containerStatuses]
rescue StandardError=>e
log.warn("parsing container meta information failed for: #{pod_object[:metadata][:namespace]}/#{pod_object[:metadata][:name]}: #{e}")
end
controller_meta = {}
begin
pod_object[:metadata][:ownerReferences].each do |owner_reference|
controller_meta['kind'] = owner_reference[:kind]
controller_meta['name'] = owner_reference[:name]
if owner_reference[:kind] == "ReplicaSet"
controller_meta['name'] = owner_reference[:name].rpartition('-').first
end
break if owner_reference[:controller]
end if pod_object[:metadata][:ownerReferences]
rescue StandardError=>e
log.warn("parsing ownerReferences information failed for: #{pod_object[:metadata][:namespace]}/#{pod_object[:metadata][:name]}: #{e}")
end
kubernetes_metadata = {
'namespace_name' => pod_object[:metadata][:namespace],
'pod_id' => pod_object[:metadata][:uid],
'pod_name' => pod_object[:metadata][:name],
'pod_ip' => pod_object[:status][:podIP],
'containers' => syms_to_strs(container_meta),
'controller' => syms_to_strs(controller_meta),
'host' => pod_object[:spec][:nodeName]
}
kubernetes_metadata['annotations'] = annotations unless annotations.empty?
kubernetes_metadata['labels'] = labels unless labels.empty?
kubernetes_metadata['master_url'] = @kubernetes_url unless @skip_master_url
kubernetes_metadata
end
|