问题描述
我想做什么?
我正在尝试在我的 Kubernetes 集群中部署 Telegraf,以便我可以使用 Telegraf 的 Prometheus 输入插件从特定 URL 读取数据(指标)并使用 Telegraf 的将指标写入文件中输出文件插件。
我做了什么?
我使用了 Telegraf helm chart 在 kubernetes 上部署了 Telegraf。 我更改了以下配置更改。 原始电报 yaml 文件:
config:
agent:
interval: "10s"
round_interval: true
metric_batch_size: 1000
metric_buffer_limit: 10000
collection_jitter: "0s"
flush_interval: "10s"
flush_jitter: "0s"
precision: ""
debug: false
quiet: false
logfile: ""
hostname: "$HOSTNAME"
omit_hostname: false
processors:
- enum:
mapping:
field: "status"
dest: "status_code"
value_mappings:
healthy: 1
problem: 2
critical: 3
outputs:
- influxdb:
urls:
- "http://influxdb.monitoring.svc:8086"
database: "telegraf"
inputs:
- statsd:
service_address: ":8125"
percentiles:
- 50
- 95
- 99
metric_separator: "_"
allowed_pending_messages: 10000
percentile_limit: 1000
我对其所做的更改:
config:
outputs:
- file:
files:
- "stdout"
- "metrics.out"
data_format: influx
inputs:
- prometheus:
- urls:
url: "http://ipaddr:80/metrics"
当我应用掌舵图以及我得到的更改时 错误:服务“telegraf”无效:spec.ports:必需值,我的部署失败。
chandhana@Azure:~/clouddrive/PromExpose$ helm install telegraf influxdata/telegraf -f telegraf-values.yaml
Error: Service "telegraf" is invalid: spec.ports: required value
如果我在更改的 YAML 配置上犯了任何错误,请帮助我,因为我没有找到任何有关 Telegraf 输入和输出插件的 yaml 格式的资源。 补充链接供参考: telegraf .conf file
解决方法
您忘记在 values.yaml 中启用指标,默认情况下是禁用的。 正确的部分是
metrics:
health:
enabled: true
collect_memstats: false
将您的 telegraf-values.yaml
更改为
config:
agent:
interval: "10s"
round_interval: true
metric_batch_size: 1000
metric_buffer_limit: 10000
collection_jitter: "0s"
flush_interval: "10s"
flush_jitter: "0s"
precision: ""
debug: false
quiet: false
logfile: ""
hostname: "$HOSTNAME"
omit_hostname: false
processors:
- enum:
mapping:
field: "status"
dest: "status_code"
value_mappings:
healthy: 1
problem: 2
critical: 3
outputs:
- file:
files:
- "stdout"
- "metrics.out"
data_format: influx
inputs:
- prometheus:
- urls:
url: "http://ipaddr:80/metrics"
metrics:
health:
enabled: true
collect_memstats: false
结果:
helm install telegraf influxdata/telegraf -f values.yaml
NAME: telegraf
LAST DEPLOYED: Fri Jun 25 10:35:05 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
To open a shell session in the container running Telegraf run the following:
kubectl exec -i -t --namespace default $(kubectl get pods --namespace default -l app.kubernetes.io/name=telegraf -o jsonpath='{.items[0].metadata.name}') /bin/sh
To view the logs for a Telegraf pod,run the following:
kubectl logs -f --namespace default $(kubectl get pods --namespace default -l app.kubernetes.io/name=telegraf -o jsonpath='{ .items[0].metadata.name }')