1
1
#!/usr/bin/env ruby
2
2
# frozen_string_literal: true
3
3
4
- # Copyright 2020 Scribd, Inc.
5
-
6
4
require 'logger'
7
5
require 'date'
8
6
require 'dogapi'
@@ -28,8 +26,8 @@ def lambda_handler(event: {}, context: {})
28
26
@event = event
29
27
log_context
30
28
31
- ssm_path = ENV . fetch ( 'SSM_PATH' , false )
32
- if ssm_path
29
+ # Optionally hydrate env from SSM
30
+ if ( ssm_path = ENV . fetch ( 'SSM_PATH' , false ) )
33
31
require 'aws-sdk-ssm'
34
32
resp = Aws ::SSM ::Client . new . get_parameters_by_path (
35
33
path : "/#{ ssm_path } /" ,
@@ -43,15 +41,19 @@ def lambda_handler(event: {}, context: {})
43
41
end
44
42
end
45
43
46
- unless defined? @slowlog_check
44
+ unless defined? ( @slowlog_check )
45
+ # Give Dogapi a stable hostname so it won't call the `hostname` binary
46
+ dd_hostname = ENV [ 'HOSTNAME' ] || "slowlog-check-#{ ENV . fetch ( 'ENV' , 'env' ) } -#{ ENV . fetch ( 'NAMESPACE' , 'ns' ) } "
47
+
48
+ dd_client = Dogapi ::Client . new (
49
+ ENV . fetch ( 'DATADOG_API_KEY' ) ,
50
+ ENV . fetch ( 'DATADOG_APP_KEY' ) ,
51
+ dd_hostname # 3rd arg = host
52
+ )
53
+
47
54
@slowlog_check = SlowlogCheck . new (
48
- ddog : Dogapi ::Client . new (
49
- ENV . fetch ( 'DATADOG_API_KEY' ) ,
50
- ENV . fetch ( 'DATADOG_APP_KEY' )
51
- ) ,
52
- redis : {
53
- host : ENV . fetch ( 'REDIS_HOST' )
54
- } ,
55
+ ddog : dd_client ,
56
+ redis : { host : ENV . fetch ( 'REDIS_HOST' ) } ,
55
57
namespace : ENV . fetch ( 'NAMESPACE' ) ,
56
58
env : ENV . fetch ( 'ENV' ) ,
57
59
metricname : ENV . fetch ( 'METRICNAME' , 'elasticache.slowlog' )
@@ -61,7 +63,6 @@ def lambda_handler(event: {}, context: {})
61
63
end
62
64
63
65
@slowlog_check . ship_slowlogs
64
-
65
66
nil
66
67
end
67
68
0 commit comments