我在Google Container Engine(gke)的kubernetes內部運行了多個python應用程序作爲副本集。在他們旁邊,我創建了Datadog DaemonSet,它在羣集中的每個節點上啓動一個dd-agent。訪問dogstatsd(datadog)Pod從adjecent Kubernetes Pods
現在我想使用代理dogstatsd從python應用程序進行日誌記錄,並嘗試新的Datadog APM。 如果我僅僅安裝ddtrace Python包,並使用它像記錄它填補了我的日誌與
[2017-02-24 14:09:15,199] [5] [ddtrace.writer] [ERROR] cannot send spans: [Errno 110] Connection timed out
[2017-02-24 14:11:23,660] [5] [ddtrace.writer] [ERROR] cannot send spans: [Errno 110] Connection timed out
顯然,沒有神奇的方式猜測如何訪問ddagent莢端口7777分之8126。
香港專業教育學院嘗試創建其中暴露的端口服務:
---
apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/scrape: 'true'
labels:
app: datadog-statsd
name: datadog-statsd
spec:
ports:
- name: dogstatsd
port: 8125
targetPort: dogstatsdport
protocol: UDP
- name: ddapm
port: 8126
targetPort: ddtraceport
protocol: TCP
selector:
app: dd-agent
但我的Python豆莢似乎仍然不被例如os.environ['DATADOG_STATSD_PORT_8126_TCP_ADDR']
和.._PORT
能夠訪問。 他們被定義和所有,我只是仍然連接超時。如果我連接到DD-劑吊艙,使tcpdump的我還沒有看到端口8126等
的DD-劑DaemonSet是這樣定義的任何TRAFIC:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: dd-agent
spec:
template:
metadata:
labels:
app: dd-agent
name: dd-agent
spec:
containers:
- image: datadog/docker-dd-agent:latest
imagePullPolicy: Always
name: dd-agent
ports:
- containerPort: 8125
name: dogstatsdport
protocol: UDP
- containerPort: 8126
name: ddtraceport
protocol: TCP
env:
- name: API_KEY
value: .....
- name: KUBERNETES
value: "yes"
- name: SD_BACKEND
value: docker
- name: DD_APM_ENABLED
value: "true"
volumeMounts:
- name: dockersocket
mountPath: /var/run/docker.sock
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
volumes:
- hostPath:
path: /var/run/docker.sock
name: dockersocket
- hostPath:
path: /proc
name: procdir
- hostPath:
path: /sys/fs/cgroup
name: cgroups
'kubectl get endpoints/datadog-statsd -n'顯示任何端點嗎?它應該與部署守護程序集的節點的端點數相同。 –
rwehner
它的確如此。我想我終於明白了 – svrist