Interval 60

# Explicitly set hostname to "" to indicate the default resource.
Hostname {{ fqdn }}

# The Stackdriver agent does not use fully qualified domain names.
FQDNLookup false

LoadPlugin syslog
<Plugin "syslog">
  LogLevel "info"
</Plugin>
# if you uncomment this, you will get collectd logs separate from syslog
#LoadPlugin logfile
#<Plugin "logfile">
#  LogLevel "info"
#  File "/var/log/collectd.log"
#  Timestamp true
#</Plugin>

# LoadPlugin docker
LoadPlugin df
<Plugin "df">
  FSType "devfs"
  IgnoreSelected true
  ReportByDevice true
  ValuesPercentage true
</Plugin>

LoadPlugin cpu
<Plugin "cpu">
  ValuesPercentage true
  ReportByCpu false
</Plugin>
LoadPlugin swap
<Plugin "swap">
  ValuesPercentage true
</Plugin>
LoadPlugin interface
LoadPlugin disk
LoadPlugin load
LoadPlugin memory
<Plugin "memory">
  ValuesPercentage true
</Plugin>
LoadPlugin processes
LoadPlugin tcpconns
LoadPlugin write_gcm
LoadPlugin match_regex
LoadPlugin match_throttle_metadata_keys
LoadPlugin stackdriver_agent

<Plugin "processes">
  ProcessMatch "all" ".*"
  Detail "ps_cputime"
  Detail "ps_disk_octets"
  Detail "ps_rss"
  Detail "ps_vm"
</Plugin>

<Plugin "disk">
  # No config - collectd fails parsing configuration if tag is empty.
</Plugin>

<Plugin "tcpconns">
  AllPortsSummary true
</Plugin>

LoadPlugin exec
# Monitor the Stackdriver Logging agent. This should fail gracefully if for any
# reason the metrics endpoint for the Logging agent isn't reachable.
<Plugin "exec">
  # The script doesn't need any privileges, so run as 'nobody'.
  Exec "nobody" "/opt/stackdriver/collectd/bin/stackdriver-read_agent_logging" "http://localhost:24231/metrics"
</Plugin>

LoadPlugin aggregation
LoadPlugin "match_regex"
<Plugin "memory">
  ValuesPercentage true
</Plugin>

<Plugin "write_gcm">
  CloudProvider "gcp"
  Instance {{ hostname }}
  Project {{ project_name }}
  Zone {{ zone_name }}
  PrettyPrintJSON false
  # EnableMetadataAgent true
</Plugin>

PostCacheChain "PostCache"
<Chain "PostCache">
  <Rule "processes">
    <Match "regex">
      Plugin "^processes$"
      Type "^(ps_cputime|disk_octets|ps_rss|ps_vm)$"
    </Match>
    <Target "jump">
      Chain "MaybeThrottleProcesses"
    </Target>
    Target "stop"
  </Rule>

  <Rule "otherwise">
    <Match "throttle_metadata_keys">
      OKToThrottle false
    </Match>
    <Target "write">
       Plugin "write_gcm"
    </Target>
  </Rule>
</Chain>

<Chain "MaybeThrottleProcesses">
  <Rule "default">
    <Match "throttle_metadata_keys">
      OKToThrottle true
      TrackedMetadata "processes:pid"
      TrackedMetadata "processes:command"
      TrackedMetadata "processes:command_line"
      TrackedMetadata "processes:owner"
    </Match>
    <Target "write">
       Plugin "write_gcm"
    </Target>
  </Rule>
</Chain>

# if you have other config, especially for plugins, you can drop them
# into this directory
Include "/opt/stackdriver/collectd/etc/collectd.d"
Include "/etc/stackdriver/collectd.d"

