fluent-plugin-google-cloud 0.6.7 → 0.6.8.pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/fluent-plugin-google-cloud.gemspec +1 -1
- data/lib/fluent/plugin/out_google_cloud.rb +287 -189
- data/test/plugin/base_test.rb +254 -2
- data/test/plugin/constants.rb +146 -13
- metadata +4 -4
data/test/plugin/base_test.rb
CHANGED
@@ -503,7 +503,7 @@ module BaseTest
|
|
503
503
|
end
|
504
504
|
params = CONTAINER_FROM_METADATA_PARAMS.merge(
|
505
505
|
labels: CONTAINER_FROM_METADATA_PARAMS[:labels].merge(
|
506
|
-
"#{
|
506
|
+
"#{GKE_CONSTANTS[:service]}/container_name" =>
|
507
507
|
URI.decode(encoded_name)),
|
508
508
|
log_name: encoded_name)
|
509
509
|
verify_log_entries(0, params, 'textPayload')
|
@@ -830,7 +830,7 @@ module BaseTest
|
|
830
830
|
d.run
|
831
831
|
end
|
832
832
|
expected_params = CONTAINER_FROM_TAG_PARAMS.merge(
|
833
|
-
labels: { "#{
|
833
|
+
labels: { "#{GKE_CONSTANTS[:service]}/stream" => 'stderr' }
|
834
834
|
) { |_, oldval, newval| oldval.merge(newval) }
|
835
835
|
verify_log_entries(1, expected_params) do |entry, i|
|
836
836
|
verify_default_log_entry_text(entry['textPayload'], i, entry)
|
@@ -1106,6 +1106,197 @@ module BaseTest
|
|
1106
1106
|
end
|
1107
1107
|
end
|
1108
1108
|
|
1109
|
+
# Metadata Agent related tests.
|
1110
|
+
|
1111
|
+
# Test enable_metadata_agent not set or set to false.
|
1112
|
+
def test_configure_enable_metadata_agent_default_and_false
|
1113
|
+
setup_gce_metadata_stubs
|
1114
|
+
[create_driver, create_driver(DISABLE_METADATA_AGENT_CONFIG)].each do |d|
|
1115
|
+
assert_false d.instance.instance_variable_get(:@enable_metadata_agent)
|
1116
|
+
end
|
1117
|
+
end
|
1118
|
+
|
1119
|
+
# Test enable_metadata_agent set to true.
|
1120
|
+
def test_configure_enable_metadata_agent_true
|
1121
|
+
new_stub_context do
|
1122
|
+
setup_gce_metadata_stubs
|
1123
|
+
setup_metadata_agent_stubs
|
1124
|
+
d = create_driver(ENABLE_METADATA_AGENT_CONFIG)
|
1125
|
+
assert_true d.instance.instance_variable_get(:@enable_metadata_agent)
|
1126
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1127
|
+
end
|
1128
|
+
end
|
1129
|
+
|
1130
|
+
# Test that an implicit monitored resource can be retrieved from Metadata
|
1131
|
+
# Agent with an empty string as the local_resource_id.
|
1132
|
+
def test_retrieve_implicit_monitored_resource
|
1133
|
+
# GCE metadata stubs has VM_ID and ZONE, while the Metadata Agent stub has
|
1134
|
+
# METADATA_VM_ID and METADATA_ZONE.
|
1135
|
+
new_stub_context do
|
1136
|
+
setup_gce_metadata_stubs
|
1137
|
+
setup_metadata_agent_stubs
|
1138
|
+
setup_logging_stubs do
|
1139
|
+
d = create_driver(ENABLE_METADATA_AGENT_CONFIG)
|
1140
|
+
d.emit('message' => log_entry(0))
|
1141
|
+
d.run
|
1142
|
+
end
|
1143
|
+
verify_log_entries(1, COMPUTE_PARAMS_WITH_METADATA_VM_ID_AND_ZONE)
|
1144
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1145
|
+
end
|
1146
|
+
end
|
1147
|
+
|
1148
|
+
# Docker Container.
|
1149
|
+
|
1150
|
+
# Test textPayload logs from Docker container stdout / stderr.
|
1151
|
+
def test_docker_container_stdout_stderr_logs_text_payload
|
1152
|
+
[1, 2, 3, 5, 11, 50].each do |n|
|
1153
|
+
new_stub_context do
|
1154
|
+
setup_gce_metadata_stubs
|
1155
|
+
setup_metadata_agent_stubs
|
1156
|
+
setup_logging_stubs do
|
1157
|
+
d = create_driver(DOCKER_CONTAINER_CONFIG)
|
1158
|
+
n.times do |i|
|
1159
|
+
d.emit(docker_container_stdout_stderr_log_entry(log_entry(i)))
|
1160
|
+
end
|
1161
|
+
d.run
|
1162
|
+
end
|
1163
|
+
verify_log_entries(n, DOCKER_CONTAINER_PARAMS)
|
1164
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1165
|
+
assert_requested_metadata_agent_stub("container.#{DOCKER_CONTAINER_ID}")
|
1166
|
+
end
|
1167
|
+
end
|
1168
|
+
end
|
1169
|
+
|
1170
|
+
# Test jsonPayload logs from Docker container stdout / stderr.
|
1171
|
+
def test_docker_container_stdout_stderr_logs_json_payload
|
1172
|
+
[1, 2, 3, 5, 11, 50].each do |n|
|
1173
|
+
new_stub_context do
|
1174
|
+
setup_gce_metadata_stubs
|
1175
|
+
setup_metadata_agent_stubs
|
1176
|
+
setup_logging_stubs do
|
1177
|
+
d = create_driver(DOCKER_CONTAINER_CONFIG)
|
1178
|
+
n.times do
|
1179
|
+
d.emit(docker_container_stdout_stderr_log_entry(
|
1180
|
+
'{"msg": "test log entry ' \
|
1181
|
+
"#{n}" \
|
1182
|
+
'", "tag2": "test", "data": ' \
|
1183
|
+
'5000, "severity": "WARNING"}'))
|
1184
|
+
end
|
1185
|
+
d.run
|
1186
|
+
end
|
1187
|
+
verify_log_entries(n, DOCKER_CONTAINER_PARAMS, 'jsonPayload') do |entry|
|
1188
|
+
fields = get_fields(entry['jsonPayload'])
|
1189
|
+
assert_equal 3, fields.size, entry
|
1190
|
+
assert_equal "test log entry #{n}", get_string(fields['msg']), entry
|
1191
|
+
assert_equal 'test', get_string(fields['tag2']), entry
|
1192
|
+
assert_equal 5000, get_number(fields['data']), entry
|
1193
|
+
end
|
1194
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1195
|
+
assert_requested_metadata_agent_stub("container.#{DOCKER_CONTAINER_ID}")
|
1196
|
+
end
|
1197
|
+
end
|
1198
|
+
end
|
1199
|
+
|
1200
|
+
# Test logs from applications running in Docker containers. These logs have
|
1201
|
+
# the label "logging.googleapis.com/local_resource_id" set in the format of
|
1202
|
+
# "containerName.<container_name>".
|
1203
|
+
def test_docker_container_application_logs
|
1204
|
+
new_stub_context do
|
1205
|
+
setup_gce_metadata_stubs
|
1206
|
+
setup_metadata_agent_stubs
|
1207
|
+
setup_logging_stubs do
|
1208
|
+
# Metadata Agent is not enabled. Will call Docker Remote API for
|
1209
|
+
# container info.
|
1210
|
+
d = create_driver(ENABLE_METADATA_AGENT_CONFIG)
|
1211
|
+
d.emit(docker_container_application_log_entry(log_entry(0)))
|
1212
|
+
d.run
|
1213
|
+
end
|
1214
|
+
verify_log_entries(1, DOCKER_CONTAINER_PARAMS_NO_STREAM)
|
1215
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1216
|
+
assert_requested_metadata_agent_stub(
|
1217
|
+
"containerName.#{DOCKER_CONTAINER_NAME}")
|
1218
|
+
end
|
1219
|
+
end
|
1220
|
+
|
1221
|
+
# Test that the 'time' field from the json record is extracted and set to
|
1222
|
+
# entry.timestamp for Docker container logs.
|
1223
|
+
def test_time_field_extraction_for_docker_container_logs
|
1224
|
+
new_stub_context do
|
1225
|
+
setup_gce_metadata_stubs
|
1226
|
+
setup_metadata_agent_stubs
|
1227
|
+
setup_logging_stubs do
|
1228
|
+
d = create_driver(ENABLE_METADATA_AGENT_CONFIG)
|
1229
|
+
d.emit(docker_container_application_log_entry(log_entry(0)))
|
1230
|
+
d.run
|
1231
|
+
end
|
1232
|
+
verify_log_entries(1, DOCKER_CONTAINER_PARAMS_NO_STREAM) do |entry, i|
|
1233
|
+
verify_default_log_entry_text(entry['textPayload'], i, entry)
|
1234
|
+
# Timestamp in 'time' field from log entry should be set properly.
|
1235
|
+
assert_equal DOCKER_CONTAINER_SECONDS_EPOCH,
|
1236
|
+
entry['timestamp']['seconds'], entry
|
1237
|
+
assert_equal DOCKER_CONTAINER_NANOS,
|
1238
|
+
entry['timestamp']['nanos'], entry
|
1239
|
+
end
|
1240
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1241
|
+
assert_requested_metadata_agent_stub(
|
1242
|
+
"containerName.#{DOCKER_CONTAINER_NAME}")
|
1243
|
+
end
|
1244
|
+
end
|
1245
|
+
|
1246
|
+
# Test that the 'source' field is properly extracted from the record json and
|
1247
|
+
# set as a common label 'stream'.
|
1248
|
+
def test_source_for_docker_container_logs
|
1249
|
+
{
|
1250
|
+
docker_container_stdout_stderr_log_entry(
|
1251
|
+
log_entry(0), DOCKER_CONTAINER_STREAM_STDOUT) =>
|
1252
|
+
DOCKER_CONTAINER_PARAMS,
|
1253
|
+
docker_container_stdout_stderr_log_entry(
|
1254
|
+
log_entry(0), DOCKER_CONTAINER_STREAM_STDERR) =>
|
1255
|
+
DOCKER_CONTAINER_PARAMS_STREAM_STDERR,
|
1256
|
+
docker_container_application_log_entry(log_entry(0)) =>
|
1257
|
+
DOCKER_CONTAINER_PARAMS_NO_STREAM,
|
1258
|
+
docker_container_application_log_entry(log_entry(0)) \
|
1259
|
+
.merge('severity' => 'warning') =>
|
1260
|
+
DOCKER_CONTAINER_PARAMS_NO_STREAM
|
1261
|
+
}.each do |log_entry, expected_params|
|
1262
|
+
new_stub_context do
|
1263
|
+
setup_gce_metadata_stubs
|
1264
|
+
setup_metadata_agent_stubs
|
1265
|
+
setup_logging_stubs do
|
1266
|
+
d = create_driver(DOCKER_CONTAINER_CONFIG)
|
1267
|
+
d.emit(log_entry)
|
1268
|
+
d.run
|
1269
|
+
end
|
1270
|
+
verify_log_entries(1, expected_params)
|
1271
|
+
end
|
1272
|
+
end
|
1273
|
+
end
|
1274
|
+
|
1275
|
+
# Test GKE container logs. These logs have the label
|
1276
|
+
# "logging.googleapis.com/local_resource_id" set in the format of
|
1277
|
+
# "gke_containerName.<namespace_id>.<pod_name>.<container_name>".
|
1278
|
+
def test_gke_container_logs
|
1279
|
+
[1, 2, 3, 5, 11, 50].each do |n|
|
1280
|
+
new_stub_context do
|
1281
|
+
setup_gce_metadata_stubs
|
1282
|
+
setup_container_metadata_stubs
|
1283
|
+
setup_metadata_agent_stubs
|
1284
|
+
setup_logging_stubs do
|
1285
|
+
d = create_driver(ENABLE_METADATA_AGENT_CONFIG)
|
1286
|
+
n.times do |i|
|
1287
|
+
d.emit(gke_container_log_entry(log_entry(i)))
|
1288
|
+
end
|
1289
|
+
d.run
|
1290
|
+
end
|
1291
|
+
verify_log_entries(n, CONTAINER_FROM_APPLICATION_PARAMS)
|
1292
|
+
assert_requested_metadata_agent_stub(IMPLICIT_LOCAL_RESOURCE_ID)
|
1293
|
+
assert_requested_metadata_agent_stub(
|
1294
|
+
"gke_containerName.#{CONTAINER_NAMESPACE_ID}.#{CONTAINER_POD_NAME}." \
|
1295
|
+
"#{CONTAINER_CONTAINER_NAME}")
|
1296
|
+
end
|
1297
|
+
end
|
1298
|
+
end
|
1299
|
+
|
1109
1300
|
private
|
1110
1301
|
|
1111
1302
|
def stub_metadata_request(metadata_path, response_body)
|
@@ -1221,6 +1412,33 @@ module BaseTest
|
|
1221
1412
|
Prometheus::Client.registry.instance_variable_set('@metrics', {})
|
1222
1413
|
end
|
1223
1414
|
|
1415
|
+
# Metadata Agent.
|
1416
|
+
|
1417
|
+
def metadata_request_url(local_resource_id)
|
1418
|
+
"#{DEFAULT_METADATA_AGENT_URL}/monitoredResource/#{local_resource_id}"
|
1419
|
+
end
|
1420
|
+
|
1421
|
+
# Provide a stub context that initializes @logs_sent, executes the block and
|
1422
|
+
# resets WebMock at the end.
|
1423
|
+
def new_stub_context
|
1424
|
+
@logs_sent = []
|
1425
|
+
yield
|
1426
|
+
WebMock.reset!
|
1427
|
+
end
|
1428
|
+
|
1429
|
+
def setup_metadata_agent_stubs
|
1430
|
+
MONITORED_RESOURCE_STUBS.each do |local_resource_id, resource|
|
1431
|
+
stub_request(:get, metadata_request_url(local_resource_id))
|
1432
|
+
.to_return(status: 200, body: resource)
|
1433
|
+
end
|
1434
|
+
end
|
1435
|
+
|
1436
|
+
def assert_requested_metadata_agent_stub(local_resource_id)
|
1437
|
+
assert_requested :get, metadata_request_url(local_resource_id)
|
1438
|
+
end
|
1439
|
+
|
1440
|
+
# GKE Container.
|
1441
|
+
|
1224
1442
|
def container_tag_with_container_name(container_name)
|
1225
1443
|
"kubernetes.#{CONTAINER_POD_NAME}_#{CONTAINER_NAMESPACE_NAME}_" \
|
1226
1444
|
"#{container_name}"
|
@@ -1253,6 +1471,40 @@ module BaseTest
|
|
1253
1471
|
}
|
1254
1472
|
end
|
1255
1473
|
|
1474
|
+
def gke_container_log_entry(log)
|
1475
|
+
{
|
1476
|
+
log: log,
|
1477
|
+
LOCAL_RESOURCE_ID_KEY =>
|
1478
|
+
"gke_containerName.#{CONTAINER_NAMESPACE_ID}" \
|
1479
|
+
".#{CONTAINER_POD_NAME}.#{CONTAINER_CONTAINER_NAME}"
|
1480
|
+
}
|
1481
|
+
end
|
1482
|
+
|
1483
|
+
# Docker Container.
|
1484
|
+
|
1485
|
+
def docker_container_stdout_stderr_log_entry(
|
1486
|
+
log, stream = DOCKER_CONTAINER_STREAM_STDOUT)
|
1487
|
+
severity = if stream == DOCKER_CONTAINER_STREAM_STDOUT
|
1488
|
+
'INFO'
|
1489
|
+
else
|
1490
|
+
'ERROR'
|
1491
|
+
end
|
1492
|
+
{
|
1493
|
+
log: log,
|
1494
|
+
source: stream,
|
1495
|
+
severity: severity,
|
1496
|
+
LOCAL_RESOURCE_ID_KEY => "container.#{DOCKER_CONTAINER_ID}"
|
1497
|
+
}
|
1498
|
+
end
|
1499
|
+
|
1500
|
+
def docker_container_application_log_entry(log)
|
1501
|
+
{
|
1502
|
+
log: log,
|
1503
|
+
time: DOCKER_CONTAINER_TIMESTAMP,
|
1504
|
+
LOCAL_RESOURCE_ID_KEY => "containerName.#{DOCKER_CONTAINER_NAME}"
|
1505
|
+
}
|
1506
|
+
end
|
1507
|
+
|
1256
1508
|
def cloudfunctions_log_entry(i)
|
1257
1509
|
{
|
1258
1510
|
stream: 'stdout',
|
data/test/plugin/constants.rb
CHANGED
@@ -14,7 +14,9 @@
|
|
14
14
|
|
15
15
|
# Constants used by unit tests for Google Cloud Logging plugin.
|
16
16
|
module Constants
|
17
|
-
include Fluent::GoogleCloudOutput::
|
17
|
+
include Fluent::GoogleCloudOutput::ServiceConstants
|
18
|
+
include Fluent::GoogleCloudOutput::ConfigConstants
|
19
|
+
include Fluent::GoogleCloudOutput::InternalConstants
|
18
20
|
|
19
21
|
# Generic attributes.
|
20
22
|
HOSTNAME = Socket.gethostname
|
@@ -26,6 +28,10 @@ module Constants
|
|
26
28
|
FULLY_QUALIFIED_ZONE = 'projects/' + PROJECT_ID + '/zones/' + ZONE
|
27
29
|
VM_ID = '9876543210'
|
28
30
|
|
31
|
+
# Attributes used for the Metadata Agent resources.
|
32
|
+
METADATA_ZONE = 'us-central1-c'
|
33
|
+
METADATA_VM_ID = '0123456789'
|
34
|
+
|
29
35
|
# Attributes used for custom (overridden) configs.
|
30
36
|
CUSTOM_PROJECT_ID = 'test-custom-project-id'
|
31
37
|
CUSTOM_ZONE = 'us-custom-central1-b'
|
@@ -51,6 +57,16 @@ module Constants
|
|
51
57
|
MANAGED_VM_BACKEND_NAME = 'default'
|
52
58
|
MANAGED_VM_BACKEND_VERSION = 'guestbook2.0'
|
53
59
|
|
60
|
+
# Docker Container labels.
|
61
|
+
DOCKER_CONTAINER_ID = '0d0f03ff8d3c42688692536d1af77a28cd135c0a5c531f25a31'
|
62
|
+
DOCKER_CONTAINER_NAME = 'happy_hippo'
|
63
|
+
DOCKER_CONTAINER_STREAM_STDOUT = 'stdout'
|
64
|
+
DOCKER_CONTAINER_STREAM_STDERR = 'stderr'
|
65
|
+
# Timestamp for 1234567890 seconds and 987654321 nanoseconds since epoch.
|
66
|
+
DOCKER_CONTAINER_TIMESTAMP = '2009-02-13T23:31:30.987654321Z'
|
67
|
+
DOCKER_CONTAINER_SECONDS_EPOCH = 1_234_567_890
|
68
|
+
DOCKER_CONTAINER_NANOS = 987_654_321
|
69
|
+
|
54
70
|
# Container Engine / Kubernetes specific labels.
|
55
71
|
CONTAINER_CLUSTER_NAME = 'cluster-1'
|
56
72
|
CONTAINER_NAMESPACE_ID = '898268c8-4a36-11e5-9d81-42010af0194c'
|
@@ -149,6 +165,20 @@ module Constants
|
|
149
165
|
monitoring_type prometheus
|
150
166
|
)
|
151
167
|
|
168
|
+
ENABLE_METADATA_AGENT_CONFIG = %(
|
169
|
+
enable_metadata_agent true
|
170
|
+
)
|
171
|
+
|
172
|
+
DISABLE_METADATA_AGENT_CONFIG = %(
|
173
|
+
enable_metadata_agent false
|
174
|
+
)
|
175
|
+
|
176
|
+
DOCKER_CONTAINER_CONFIG = %(
|
177
|
+
enable_metadata_agent true
|
178
|
+
label_map { "source": "#{DOCKER_CONSTANTS[:service]}/stream" }
|
179
|
+
detect_json true
|
180
|
+
)
|
181
|
+
|
152
182
|
CUSTOM_METADATA_CONFIG = %(
|
153
183
|
project_id #{CUSTOM_PROJECT_ID}
|
154
184
|
zone #{CUSTOM_ZONE}
|
@@ -205,6 +235,8 @@ module Constants
|
|
205
235
|
)
|
206
236
|
|
207
237
|
# Service configurations for various services.
|
238
|
+
|
239
|
+
# GCE.
|
208
240
|
COMPUTE_PARAMS = {
|
209
241
|
resource: {
|
210
242
|
type: COMPUTE_CONSTANTS[:resource_type],
|
@@ -219,7 +251,16 @@ module Constants
|
|
219
251
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
220
252
|
}
|
221
253
|
}
|
254
|
+
COMPUTE_PARAMS_WITH_METADATA_VM_ID_AND_ZONE = COMPUTE_PARAMS.merge(
|
255
|
+
resource: COMPUTE_PARAMS[:resource].merge(
|
256
|
+
labels: {
|
257
|
+
'instance_id' => METADATA_VM_ID,
|
258
|
+
'zone' => METADATA_ZONE
|
259
|
+
}
|
260
|
+
)
|
261
|
+
)
|
222
262
|
|
263
|
+
# GAE.
|
223
264
|
VMENGINE_PARAMS = {
|
224
265
|
resource: {
|
225
266
|
type: APPENGINE_CONSTANTS[:resource_type],
|
@@ -237,12 +278,13 @@ module Constants
|
|
237
278
|
}
|
238
279
|
}
|
239
280
|
|
281
|
+
# GKE Container.
|
240
282
|
CONTAINER_TAG = "kubernetes.#{CONTAINER_POD_NAME}_" \
|
241
283
|
"#{CONTAINER_NAMESPACE_NAME}_#{CONTAINER_CONTAINER_NAME}"
|
242
284
|
|
243
285
|
CONTAINER_FROM_METADATA_PARAMS = {
|
244
286
|
resource: {
|
245
|
-
type:
|
287
|
+
type: GKE_CONSTANTS[:resource_type],
|
246
288
|
labels: {
|
247
289
|
'cluster_name' => CONTAINER_CLUSTER_NAME,
|
248
290
|
'namespace_id' => CONTAINER_NAMESPACE_ID,
|
@@ -255,10 +297,10 @@ module Constants
|
|
255
297
|
log_name: CONTAINER_CONTAINER_NAME,
|
256
298
|
project_id: PROJECT_ID,
|
257
299
|
labels: {
|
258
|
-
"#{
|
300
|
+
"#{GKE_CONSTANTS[:service]}/namespace_name" =>
|
259
301
|
CONTAINER_NAMESPACE_NAME,
|
260
|
-
"#{
|
261
|
-
"#{
|
302
|
+
"#{GKE_CONSTANTS[:service]}/pod_name" => CONTAINER_POD_NAME,
|
303
|
+
"#{GKE_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
|
262
304
|
"label/#{CONTAINER_LABEL_KEY}" => CONTAINER_LABEL_VALUE,
|
263
305
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
264
306
|
}
|
@@ -268,7 +310,7 @@ module Constants
|
|
268
310
|
# namespace and pod names.
|
269
311
|
CONTAINER_FROM_TAG_PARAMS = {
|
270
312
|
resource: {
|
271
|
-
type:
|
313
|
+
type: GKE_CONSTANTS[:resource_type],
|
272
314
|
labels: {
|
273
315
|
'cluster_name' => CONTAINER_CLUSTER_NAME,
|
274
316
|
'namespace_id' => CONTAINER_NAMESPACE_NAME,
|
@@ -281,14 +323,56 @@ module Constants
|
|
281
323
|
log_name: CONTAINER_CONTAINER_NAME,
|
282
324
|
project_id: PROJECT_ID,
|
283
325
|
labels: {
|
284
|
-
"#{
|
326
|
+
"#{GKE_CONSTANTS[:service]}/namespace_name" =>
|
285
327
|
CONTAINER_NAMESPACE_NAME,
|
286
|
-
"#{
|
287
|
-
"#{
|
328
|
+
"#{GKE_CONSTANTS[:service]}/pod_name" => CONTAINER_POD_NAME,
|
329
|
+
"#{GKE_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
|
288
330
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
289
331
|
}
|
290
332
|
}
|
291
333
|
|
334
|
+
CONTAINER_FROM_APPLICATION_PARAMS = {
|
335
|
+
resource: {
|
336
|
+
type: GKE_CONSTANTS[:resource_type],
|
337
|
+
labels: {
|
338
|
+
'cluster_name' => CONTAINER_CLUSTER_NAME,
|
339
|
+
'namespace_id' => CONTAINER_NAMESPACE_ID,
|
340
|
+
'instance_id' => VM_ID,
|
341
|
+
'pod_id' => CONTAINER_POD_ID,
|
342
|
+
'container_name' => CONTAINER_CONTAINER_NAME,
|
343
|
+
'zone' => ZONE
|
344
|
+
}
|
345
|
+
},
|
346
|
+
log_name: 'redis',
|
347
|
+
project_id: PROJECT_ID,
|
348
|
+
labels: {
|
349
|
+
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
350
|
+
}
|
351
|
+
}
|
352
|
+
|
353
|
+
# Docker Container.
|
354
|
+
DOCKER_CONTAINER_PARAMS = {
|
355
|
+
resource: {
|
356
|
+
type: DOCKER_CONSTANTS[:resource_type],
|
357
|
+
labels: {
|
358
|
+
'container_id' => DOCKER_CONTAINER_ID,
|
359
|
+
'location' => ZONE
|
360
|
+
}
|
361
|
+
},
|
362
|
+
log_name: 'test',
|
363
|
+
project_id: PROJECT_ID,
|
364
|
+
labels: {
|
365
|
+
"#{DOCKER_CONSTANTS[:service]}/stream" => DOCKER_CONTAINER_STREAM_STDOUT
|
366
|
+
}
|
367
|
+
}
|
368
|
+
DOCKER_CONTAINER_PARAMS_STREAM_STDERR = DOCKER_CONTAINER_PARAMS.merge(
|
369
|
+
labels: DOCKER_CONTAINER_PARAMS[:labels].merge(
|
370
|
+
"#{DOCKER_CONSTANTS[:service]}/stream" => DOCKER_CONTAINER_STREAM_STDERR
|
371
|
+
)
|
372
|
+
)
|
373
|
+
DOCKER_CONTAINER_PARAMS_NO_STREAM = DOCKER_CONTAINER_PARAMS.merge(labels: {})
|
374
|
+
|
375
|
+
# Cloud Functions.
|
292
376
|
CLOUDFUNCTIONS_TAG = "kubernetes.#{CLOUDFUNCTIONS_POD_NAME}_" \
|
293
377
|
"#{CLOUDFUNCTIONS_NAMESPACE_NAME}_" \
|
294
378
|
"#{CLOUDFUNCTIONS_CONTAINER_NAME}"
|
@@ -305,8 +389,8 @@ module Constants
|
|
305
389
|
project_id: PROJECT_ID,
|
306
390
|
labels: {
|
307
391
|
'execution_id' => CLOUDFUNCTIONS_EXECUTION_ID,
|
308
|
-
"#{
|
309
|
-
"#{
|
392
|
+
"#{GKE_CONSTANTS[:service]}/instance_id" => VM_ID,
|
393
|
+
"#{GKE_CONSTANTS[:service]}/cluster_name" =>
|
310
394
|
CLOUDFUNCTIONS_CLUSTER_NAME,
|
311
395
|
"#{COMPUTE_CONSTANTS[:service]}/resource_id" => VM_ID,
|
312
396
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
@@ -325,8 +409,8 @@ module Constants
|
|
325
409
|
log_name: 'cloud-functions',
|
326
410
|
project_id: PROJECT_ID,
|
327
411
|
labels: {
|
328
|
-
"#{
|
329
|
-
"#{
|
412
|
+
"#{GKE_CONSTANTS[:service]}/instance_id" => VM_ID,
|
413
|
+
"#{GKE_CONSTANTS[:service]}/cluster_name" =>
|
330
414
|
CLOUDFUNCTIONS_CLUSTER_NAME,
|
331
415
|
"#{COMPUTE_CONSTANTS[:service]}/resource_id" => VM_ID,
|
332
416
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
@@ -334,6 +418,7 @@ module Constants
|
|
334
418
|
}
|
335
419
|
}
|
336
420
|
|
421
|
+
# Cloud Dataflow.
|
337
422
|
DATAFLOW_PARAMS = {
|
338
423
|
resource: {
|
339
424
|
type: DATAFLOW_CONSTANTS[:resource_type],
|
@@ -353,6 +438,7 @@ module Constants
|
|
353
438
|
}
|
354
439
|
}
|
355
440
|
|
441
|
+
# Cloud Dataproc.
|
356
442
|
DATAPROC_PARAMS = {
|
357
443
|
resource: {
|
358
444
|
type: DATAPROC_CONSTANTS[:resource_type],
|
@@ -371,6 +457,7 @@ module Constants
|
|
371
457
|
}
|
372
458
|
}
|
373
459
|
|
460
|
+
# Cloud ML.
|
374
461
|
ML_PARAMS = {
|
375
462
|
resource: {
|
376
463
|
type: ML_CONSTANTS[:resource_type],
|
@@ -481,4 +568,50 @@ module Constants
|
|
481
568
|
'' => '_'
|
482
569
|
}
|
483
570
|
ALL_TAGS = VALID_TAGS.merge(INVALID_TAGS)
|
571
|
+
|
572
|
+
# Stub value for Monitored resources from Metadata Agent.
|
573
|
+
# Map from the local_resource_id to the retrieved monitored resource.
|
574
|
+
MONITORED_RESOURCE_STUBS = {
|
575
|
+
# Implicit GCE instance.
|
576
|
+
IMPLICIT_LOCAL_RESOURCE_ID =>
|
577
|
+
{
|
578
|
+
'type' => COMPUTE_CONSTANTS[:resource_type],
|
579
|
+
'labels' => {
|
580
|
+
'zone' => METADATA_ZONE,
|
581
|
+
'instance_id' => METADATA_VM_ID
|
582
|
+
}
|
583
|
+
}.to_json,
|
584
|
+
# Docker container stderr / stdout logs.
|
585
|
+
"container.#{DOCKER_CONTAINER_ID}" =>
|
586
|
+
{
|
587
|
+
'type' => DOCKER_CONSTANTS[:resource_type],
|
588
|
+
'labels' => {
|
589
|
+
'location' => ZONE,
|
590
|
+
'container_id' => DOCKER_CONTAINER_ID
|
591
|
+
}
|
592
|
+
}.to_json,
|
593
|
+
# Docker container application logs.
|
594
|
+
"containerName.#{DOCKER_CONTAINER_NAME}" =>
|
595
|
+
{
|
596
|
+
'type' => DOCKER_CONSTANTS[:resource_type],
|
597
|
+
'labels' => {
|
598
|
+
'location' => ZONE,
|
599
|
+
'container_id' => DOCKER_CONTAINER_ID
|
600
|
+
}
|
601
|
+
}.to_json,
|
602
|
+
# GKE container logs.
|
603
|
+
"gke_containerName.#{CONTAINER_NAMESPACE_ID}.#{CONTAINER_POD_NAME}." \
|
604
|
+
"#{CONTAINER_CONTAINER_NAME}" =>
|
605
|
+
{
|
606
|
+
'type' => GKE_CONSTANTS[:resource_type],
|
607
|
+
'labels' => {
|
608
|
+
'cluster_name' => CONTAINER_CLUSTER_NAME,
|
609
|
+
'container_name' => CONTAINER_CONTAINER_NAME,
|
610
|
+
'instance_id' => VM_ID,
|
611
|
+
'namespace_id' => CONTAINER_NAMESPACE_ID,
|
612
|
+
'pod_id' => CONTAINER_POD_ID,
|
613
|
+
'zone' => ZONE
|
614
|
+
}
|
615
|
+
}.to_json
|
616
|
+
}
|
484
617
|
end
|