我无法从docker容器访问主机上的datadog代理。我正在使用EC2容器服务来托管我的docker容器。我已经在datadog配置中设置了选项non_local_traffic : yes
。我的配置如下所示:
[Main]
apm_enabled: true
# The host of the Datadog intake server to send Agent data to
dd_url: https://app.datadoghq.com
# If you need a proxy to connect to the Internet, provide the settings here (default: disabled)
# proxy_host: my-proxy.com
# proxy_port: 3128
# proxy_user: user
# proxy_password: password
# To be used with some proxys that return a 302 which make curl switch from POST to GET
# See http://stackoverflow.com/questions/8156073/curl-violate-rfc-2616-10-3-2-and-switch-from-post-to-get
# proxy_forbid_method_switch: no
# If you run the agent behind haproxy, you might want to enable this
# skip_ssl_validation: no
# The Datadog api key to associate your Agent's data with your organization.
# Can be found here:
# https://app.datadoghq.com/account/settings
# This can be a comma-separated list of api keys.
# (default: None, the agent doesn't start without it)
api_key: KEY
# Force the hostname to whatever you want. (default: auto-detected)
# hostname: mymachine.mydomain
# Set the host's tags (optional)
tags: environment:staging, pod:, role:generic
# Set timeout in seconds for outgoing requests to Datadog. (default: 20)
# When a request timeout, it will be retried after some time.
# It will only be deleted if the forwarder queue becomes too big. (30 MB by default)
# forwarder_timeout: 20
# Set timeout in seconds for integrations that use HTTP to fetch metrics, since
# unbounded timeouts can potentially block the collector indefinitely and cause
# problems!
# default_integration_http_timeout: 9
# Add one "dd_check:checkname" tag per running check. It makes it possible to slice
# and dice per monitored app (= running Agent Check) on Datadog's backend.
# create_dd_check_tags: no
# Collect AWS EC2 custom tags as agent tags (requires an IAM role associated with the instance)
# collect_ec2_tags: no
# Incorporate security-groups into tags collected from AWS EC2
# collect_security_groups: no
# Enable Agent Developer Mode
# Agent Developer Mode collects and sends more fine-grained metrics about agent and check performance
# developer_mode: no
# In developer mode, the number of runs to be included in a single collector profile
# collector_profile_interval: 20
# use unique hostname for GCE hosts, see http://dtdg.co/1eAynZk
# when not specified, default: no
gce_updated_hostname: yes
# Set the threshold for accepting points to allow anything
# within recent_point_threshold seconds (default: 30)
# recent_point_threshold: 30
# Use mount points instead of volumes to track disk and fs metrics
# DEPRECATED: use conf.d/disk.yaml instead to configure it
# use_mount: no
# Forwarder listening port
# listen_port: 17123
# Graphite listener port
# graphite_listen_port: 17124
# Additional directory to look for Datadog checks (optional)
# additional_checksd: /etc/dd-agent/checks.d/
# Allow non-local traffic to this Agent
# This is required when using this Agent as a proxy for other Agents
# that might not have an internet connection
# For more information, please see
# https://github.com/DataDog/dd-agent/wiki/Network-Traffic-and-Proxy-Configuration
non_local_traffic: yes
# Select the Tornado HTTP Client to be used in the Forwarder,
# between curl client and simple http client (default: simple http client)
# use_curl_http_client: no
# The loopback address the Forwarder and Dogstatsd will bind.
# Optional, it is mainly used when running the agent on Openshift
# bind_host: localhost
# If enabled the collector will capture a metric for check run times.
# check_timings: no
# If you want to remove the 'ww' flag from ps catching the arguments of processes
# for instance for security reasons
# exclude_process_args: no
# histogram_aggregates: max, median, avg, count
# histogram_percentiles: 0.95
# ========================================================================== #
# Service Discovery #
# See https://github.com/DataDog/dd-agent/wiki/Service-Discovery for details #
# ========================================================================== #
#
# Service discovery allows the agent to look for running services
# and load a configuration object for the one it recognizes.
# This feature is disabled by default.
# Uncomment this line to enable it (works for docker containers only for now).
# service_discovery_backend: docker
#
# Define which key/value store must be used to look for configuration templates.
# Default is etcd. Consul is also supported.
# sd_config_backend: etcd
#
# Settings for connecting to the service discovery backend.
# sd_backend_host: 127.0.0.1
# sd_backend_port: 4001
#
# By default, the agent will look for the configuration templates under the
# `/datadog/check_configs` key in the back-end. If you wish otherwise, uncomment this option
# and modify its value.
# sd_template_dir: /datadog/check_configs
#
# ========================================================================== #
# Other #
# ========================================================================== #
#
# In some environments we may have the procfs file system mounted in a
# miscellaneous location. The procfs_path configuration paramenter allows
# us to override the standard default location '/proc'
# procfs_path: /proc
# ========================================================================== #
# DogStatsd configuration #
# DogStatsd is a small server that aggregates your custom app metrics. For #
# usage information, check out http://docs.datadoghq.com/guides/dogstatsd/ #
# ========================================================================== #
# If you don't want to enable the DogStatsd server, set this option to no
# use_dogstatsd: yes
# Make sure your client is sending to the same port.
# dogstatsd_port: 8125
# By default dogstatsd will post aggregate metrics to the Agent (which handles
# errors/timeouts/retries/etc). To send directly to the datadog api, set this
# to https://app.datadoghq.com.
# dogstatsd_target: http://localhost:17123
# If you want to forward every packet received by the dogstatsd server
# to another statsd server, uncomment these lines.
# WARNING: Make sure that forwarded packets are regular statsd packets and not "dogstatsd" packets,
# as your other statsd server might not be able to handle them.
# statsd_forward_host: address_of_own_statsd_server
# statsd_forward_port: 8125
# you may want all statsd metrics coming from this host to be namespaced
# in some way; if so, configure your namespace here. a metric that looks
# like `metric.name` will instead become `namespace.metric.name`
# statsd_metric_namespace:
# By default, dogstatsd supports only plain ASCII packets. However, most
# (dog)statsd client support UTF8 by encoding packets before sending them
# this option enables UTF8 decoding in case you need it.
# However, it comes with a performance overhead of ~10% in the dogstatsd
# server. This will be taken care of properly in the new gen agent core.
# utf8_decoding: false
# ========================================================================== #
# Service-specific configuration #
# ========================================================================== #
# -------------------------------------------------------------------------- #
# Ganglia #
# -------------------------------------------------------------------------- #
# Ganglia host where gmetad is running
# ganglia_host: localhost
# Ganglia port where gmetad is running
# ganglia_port: 8651
# -------------------------------------------------------------------------- #
# Dogstream (log file parser) #
# -------------------------------------------------------------------------- #
# Comma-separated list of logs to parse and optionally custom parsers to use.
# The form should look like this:
#
# dogstreams: /path/to/log1:parsers_module:custom_parser, /path/to/log2, /path/to/log3, ...
#
# Or this:
#
# dogstreams: /path/to/log1:/path/to/my/parsers_module.py:custom_parser, /path/to/log2, /path/to/log3, ...
dogstreams: /var/log/audit/audit.log:/opt/datadog-logstream/audit.py:parse
#
# Each entry is a path to a log file and optionally a Python module/function pair
# separated by colons.
#
# Custom parsers should take a 2 parameters, a logger object and
# a string parameter of the current line to parse. It should return a tuple of
# the form:
# (metric (str), timestamp (unix timestamp), value (float), attributes (dict))
# where attributes should at least contain the key 'metric_type', specifying
# whether the given metric is a 'counter' or 'gauge'.
#
# Unless parsers are specified with an absolute path, the modules must exist in
# the Agent's PYTHONPATH. You can set this as an environment variable when
# starting the Agent. If the name of the custom parser function is not passed,
# 'parser' is assumed.
#
# If this value isn't specified, the default parser assumes this log format:
# metric timestamp value key0=val0 key1=val1 ...
#
# ========================================================================== #
# Custom Emitters #
# ========================================================================== #
# Comma-separated list of emitters to be used in addition to the standard one
#
# Expected to be passed as a comma-separated list of colon-delimited
# name/object pairs.
#
# custom_emitters: /usr/local/my-code/emitters/rabbitmq.py:RabbitMQEmitter
#
# If the name of the emitter function is not specified, 'emitter' is assumed.
# ========================================================================== #
# Logging
# ========================================================================== #
log_level: ERROR
# collector_log_file: /var/log/datadog/collector.log
# forwarder_log_file: /var/log/datadog/forwarder.log
# dogstatsd_log_file: /var/log/datadog/dogstatsd.log
# if syslog is enabled but a host and port are not set, a local domain socket
# connection will be attempted
#
# log_to_syslog: yes
# syslog_host:
# syslog_port:
要从docker实例访问主机,我在docker容器中使用此URL:http://169.254.169.254/latest/meta-data/local-ipv4/,这里讨论:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
这个URL为我提供了主机的IP,然后将其传递给在docker机器上运行的python datadog客户端。
在您的问题中,我在使用端口8125或8126端口方面寻找您的目的。 8125端口用于stasd度量,8126用于APM(跟踪)数据。
因此,如果你想使用8125,重要的是要有non_local_traffic : yes
。所以还有另一个我还不知道的问题。
但是如果您的目的是使用APM /跟踪端口:默认情况下,8126仅绑定到localhost。您应该通过bind_host: 0.0.0.0
配置使其监听任何网络接口。目前,它将拒绝来自容器的请求,因为它们不是来自localhost。
我有类似的问题,这页帮助了我:https://github.com/DataDog/ansible-datadog/issues/149