Merge ~sergiodj/ubuntu/+source/telegraf:bug1916305-telegraf-conf into ~sergiodj/ubuntu/+source/telegraf:master

Proposed by Sergio Durigan Junior
Status: Superseded
Proposed branch: ~sergiodj/ubuntu/+source/telegraf:bug1916305-telegraf-conf
Merge into: ~sergiodj/ubuntu/+source/telegraf:master
Diff against target: 1213536 lines (+1039352/-109689) (has conflicts)
1907 files modified
.circleci/config.yml (+103/-91)
.gitattributes (+1/-0)
.github/ISSUE_TEMPLATE/Bug_report.md (+1/-0)
.github/ISSUE_TEMPLATE/Feature_request.md (+1/-0)
.github/ISSUE_TEMPLATE/Support.md (+22/-0)
.gitignore (+5/-0)
CHANGELOG.md (+410/-100)
CONTRIBUTING.md (+5/-0)
EXTERNAL_PLUGINS.md (+16/-1)
Makefile (+33/-15)
README.md (+16/-1)
agent/tick_test.go (+6/-4)
appveyor.yml (+1/-1)
build_version.txt (+1/-0)
cmd/telegraf/telegraf_windows.go (+4/-6)
config/aws/credentials.go (+4/-2)
config/config.go (+409/-1015)
config/config_test.go (+27/-6)
config/testdata/telegraf-agent.toml (+0/-8)
debian/changelog (+24/-0)
debian/patches/adjust-etc-telegraf.conf.patch (+50/-0)
debian/patches/series (+1/-1)
debian/repack-telegraf-with-vendor.sh (+5/-3)
dev/null (+0/-68)
docker-compose.yml (+5/-2)
docs/AGGREGATORS_AND_PROCESSORS.md (+3/-3)
docs/CONFIGURATION.md (+38/-0)
docs/DATA_FORMATS_INPUT.md (+2/-4)
docs/DATA_FORMATS_OUTPUT.md (+2/-3)
docs/EXTERNAL_PLUGINS.md (+46/-0)
docs/INPUTS.md (+4/-2)
docs/LICENSE_OF_DEPENDENCIES.md (+15/-1)
docs/OUTPUTS.md (+12/-6)
docs/PROCESSORS.md (+23/-0)
docs/TEMPLATE_PATTERN.md (+1/-0)
docs/TLS.md (+2/-0)
etc/telegraf.conf (+734/-69)
go.mod (+36/-29)
go.sum (+132/-56)
input.go (+5/-2)
internal/globpath/globpath_test.go (+35/-19)
internal/http.go (+35/-0)
internal/internal_test.go (+2/-2)
internal/snmp/wrapper.go (+9/-1)
logger/event_logger.go (+23/-10)
logger/event_logger_test.go (+6/-7)
metric/series_grouper.go (+48/-23)
metric/series_grouper_test.go (+37/-0)
models/log.go (+4/-1)
models/running_aggregator.go (+1/-1)
models/running_input.go (+1/-1)
models/running_output.go (+1/-1)
models/running_processor.go (+1/-1)
models/running_processor_test.go (+19/-18)
output.go (+5/-2)
plugin.go (+3/-1)
plugins/aggregators/basicstats/README.md (+6/-3)
plugins/aggregators/basicstats/basicstats.go (+51/-18)
plugins/aggregators/basicstats/basicstats_test.go (+77/-2)
plugins/aggregators/merge/merge.go (+1/-7)
plugins/aggregators/merge/merge_test.go (+68/-1)
plugins/common/encoding/decoder_reader.go (+2/-1)
plugins/common/kafka/config.go (+94/-0)
plugins/common/kafka/sasl.go (+84/-0)
plugins/common/kafka/scram_client.go (+36/-0)
plugins/common/proxy/proxy.go (+24/-0)
plugins/common/shim/README.md (+1/-1)
plugins/common/shim/config.go (+9/-1)
plugins/common/shim/config_test.go (+35/-0)
plugins/common/shim/testdata/processor.conf (+2/-0)
plugins/common/tls/config.go (+13/-5)
plugins/common/tls/config_test.go (+8/-0)
plugins/inputs/aerospike/README.md (+70/-1)
plugins/inputs/aerospike/aerospike.go (+358/-33)
plugins/inputs/aerospike/aerospike_test.go (+435/-9)
plugins/inputs/all/all.go (+9/-0)
plugins/inputs/apcupsd/apcupsd_test.go (+1/-1)
plugins/inputs/bcache/README.md (+10/-10)
plugins/inputs/bcache/bcache.go (+10/-3)
plugins/inputs/bcache/bcache_test.go (+2/-0)
plugins/inputs/bcache/bcache_windows.go (+3/-0)
plugins/inputs/bind/README.md (+2/-1)
plugins/inputs/bind/bind.go (+15/-4)
plugins/inputs/bind/bind_test.go (+13/-3)
plugins/inputs/bind/json_stats.go (+1/-1)
plugins/inputs/bind/xml_stats_v2.go (+1/-1)
plugins/inputs/bind/xml_stats_v3.go (+1/-1)
plugins/inputs/burrow/README.md (+1/-1)
plugins/inputs/cassandra/cassandra_test.go (+4/-4)
plugins/inputs/ceph/README.md (+2/-2)
plugins/inputs/ceph/ceph_test.go (+4/-4)
plugins/inputs/clickhouse/README.md (+85/-4)
plugins/inputs/clickhouse/clickhouse.go (+307/-35)
plugins/inputs/clickhouse/clickhouse_test.go (+427/-1)
plugins/inputs/clickhouse/dev/docker-compose.yml (+14/-3)
plugins/inputs/clickhouse/dev/part_log.xml (+12/-0)
plugins/inputs/clickhouse/dev/telegraf.conf (+1/-1)
plugins/inputs/clickhouse/dev/telegraf_ssl.conf (+1/-1)
plugins/inputs/clickhouse/dev/test_dictionary.xml (+63/-0)
plugins/inputs/clickhouse/dev/text_log.xml (+12/-0)
plugins/inputs/clickhouse/dev/zookeeper.xml (+19/-0)
plugins/inputs/cloud_pubsub/README.md (+4/-4)
plugins/inputs/cloudwatch/README.md (+8/-1)
plugins/inputs/cloudwatch/cloudwatch.go (+98/-77)
plugins/inputs/cloudwatch/cloudwatch_test.go (+14/-24)
plugins/inputs/consul/README.md (+24/-2)
plugins/inputs/consul/consul.go (+28/-5)
plugins/inputs/consul/consul_test.go (+59/-0)
plugins/inputs/couchbase/README.md (+1/-1)
plugins/inputs/cpu/cpu.go (+2/-2)
plugins/inputs/dcos/client.go (+2/-2)
plugins/inputs/dcos/client_test.go (+1/-1)
plugins/inputs/dcos/dcos.go (+1/-1)
plugins/inputs/disk/disk_test.go (+6/-5)
plugins/inputs/docker/docker_test.go (+6/-6)
plugins/inputs/docker/docker_testdata.go (+2/-2)
plugins/inputs/dovecot/README.md (+1/-1)
plugins/inputs/ecs/README.md (+1/-2)
plugins/inputs/ecs/ecs.go (+0/-1)
plugins/inputs/ethtool/README.md (+6/-6)
plugins/inputs/ethtool/ethtool.go (+4/-3)
plugins/inputs/ethtool/ethtool_linux.go (+5/-6)
plugins/inputs/ethtool/ethtool_test.go (+17/-16)
plugins/inputs/exec/README.md (+1/-1)
plugins/inputs/exec/exec_test.go (+5/-0)
plugins/inputs/execd/execd_test.go (+4/-7)
plugins/inputs/execd/shim/example/cmd/main.go (+1/-58)
plugins/inputs/execd/shim/goshim.go (+2/-0)
plugins/inputs/execd/shim/shim_posix_test.go (+0/-5)
plugins/inputs/file/file_test.go (+5/-0)
plugins/inputs/filecount/filecount_test.go (+5/-0)
plugins/inputs/filecount/filesystem_helpers_test.go (+10/-5)
plugins/inputs/filestat/filestat_test.go (+43/-35)
plugins/inputs/github/README.md (+19/-1)
plugins/inputs/github/github.go (+66/-11)
plugins/inputs/github/github_test.go (+4/-4)
plugins/inputs/gnmi/README.md (+1/-1)
plugins/inputs/gnmi/gnmi.go (+12/-9)
plugins/inputs/gnmi/gnmi_test.go (+26/-2)
plugins/inputs/graylog/graylog.go (+4/-3)
plugins/inputs/haproxy/haproxy.go (+8/-5)
plugins/inputs/haproxy/haproxy_test.go (+7/-4)
plugins/inputs/http/README.md (+3/-0)
plugins/inputs/http/http.go (+18/-5)
plugins/inputs/http_listener_v2/http_listener_v2.go (+3/-1)
plugins/inputs/http_listener_v2/http_listener_v2_test.go (+21/-0)
plugins/inputs/http_response/README.md (+23/-15)
plugins/inputs/http_response/http_response.go (+39/-12)
plugins/inputs/http_response/http_response_test.go (+218/-24)
plugins/inputs/icinga2/README.md (+1/-1)
plugins/inputs/influxdb/README.md (+24/-1)
plugins/inputs/influxdb_v2_listener/README.md (+56/-0)
plugins/inputs/influxdb_v2_listener/influxdb_v2_listener.go (+344/-0)
plugins/inputs/influxdb_v2_listener/influxdb_v2_listener_benchmark_test.go (+108/-0)
plugins/inputs/influxdb_v2_listener/influxdb_v2_listener_test.go (+539/-0)
plugins/inputs/intel_powerstat/README.md (+204/-0)
plugins/inputs/intel_powerstat/dto.go (+37/-0)
plugins/inputs/intel_powerstat/file.go (+154/-0)
plugins/inputs/intel_powerstat/file_mock_test.go (+132/-0)
plugins/inputs/intel_powerstat/intel_powerstat.go (+486/-0)
plugins/inputs/intel_powerstat/intel_powerstat_notlinux.go (+3/-0)
plugins/inputs/intel_powerstat/intel_powerstat_test.go (+494/-0)
plugins/inputs/intel_powerstat/msr.go (+207/-0)
plugins/inputs/intel_powerstat/msr_mock_test.go (+61/-0)
plugins/inputs/intel_powerstat/msr_test.go (+134/-0)
plugins/inputs/intel_powerstat/rapl.go (+238/-0)
plugins/inputs/intel_powerstat/rapl_mock_test.go (+66/-0)
plugins/inputs/intel_powerstat/rapl_test.go (+115/-0)
plugins/inputs/intel_powerstat/unit_converter.go (+49/-0)
plugins/inputs/intel_rdt/README.md (+115/-0)
plugins/inputs/intel_rdt/intel_rdt.go (+552/-0)
plugins/inputs/intel_rdt/intel_rdt_test.go (+277/-0)
plugins/inputs/intel_rdt/intel_rdt_windows.go (+3/-0)
plugins/inputs/intel_rdt/processes.go (+40/-0)
plugins/inputs/intel_rdt/publisher.go (+171/-0)
plugins/inputs/intel_rdt/publisher_test.go (+444/-0)
plugins/inputs/internal/README.md (+1/-1)
plugins/inputs/ipmi_sensor/README.md (+17/-0)
plugins/inputs/ipmi_sensor/connection.go (+10/-5)
plugins/inputs/ipmi_sensor/connection_test.go (+38/-2)
plugins/inputs/ipmi_sensor/ipmi.go (+43/-1)
plugins/inputs/ipmi_sensor/ipmi_test.go (+12/-8)
plugins/inputs/jenkins/README.md (+7/-3)
plugins/inputs/jenkins/jenkins.go (+29/-8)
plugins/inputs/jenkins/jenkins_test.go (+71/-0)
plugins/inputs/jolokia/jolokia.go (+3/-1)
plugins/inputs/jolokia/jolokia_test.go (+3/-3)
plugins/inputs/jolokia2/README.md (+1/-0)
plugins/inputs/jolokia2/client.go (+4/-0)
plugins/inputs/jolokia2/examples/kafka-connect.conf (+90/-0)
plugins/inputs/kafka_consumer/README.md (+26/-1)
plugins/inputs/kafka_consumer/kafka_consumer.go (+29/-55)
plugins/inputs/kafka_consumer/kafka_consumer_test.go (+35/-22)
plugins/inputs/kibana/kibana.go (+3/-1)
plugins/inputs/kube_inventory/README.md (+7/-3)
plugins/inputs/kube_inventory/node.go (+4/-2)
plugins/inputs/kube_inventory/node_test.go (+9/-7)
plugins/inputs/kube_inventory/pod.go (+38/-18)
plugins/inputs/kube_inventory/pod_test.go (+220/-0)
plugins/inputs/lanz/README.md (+3/-3)
plugins/inputs/leofs/leofs_test.go (+11/-4)
plugins/inputs/logparser/logparser_test.go (+39/-35)
plugins/inputs/lustre2/lustre2.go (+14/-3)
plugins/inputs/lustre2/lustre2_test.go (+4/-2)
plugins/inputs/lustre2/lustre2_windows.go (+3/-0)
plugins/inputs/mcrouter/mcrouter.go (+3/-1)
plugins/inputs/minecraft/README.md (+1/-1)
plugins/inputs/mock_Plugin.go (+8/-0)
plugins/inputs/modbus/README.md (+12/-1)
plugins/inputs/modbus/modbus.go (+65/-0)
plugins/inputs/modbus/modbus_test.go (+60/-0)
plugins/inputs/mongodb/mongodb_data.go (+1/-0)
plugins/inputs/mongodb/mongodb_data_test.go (+1/-0)
plugins/inputs/mongodb/mongostat.go (+3/-0)
plugins/inputs/monit/README.md (+2/-0)
plugins/inputs/monit/monit.go (+7/-5)
plugins/inputs/monit/monit_test.go (+5/-5)
plugins/inputs/mqtt_consumer/mqtt_consumer.go (+9/-1)
plugins/inputs/mqtt_consumer/mqtt_consumer_test.go (+1/-1)
plugins/inputs/mysql/README.md (+10/-1)
plugins/inputs/mysql/mysql.go (+185/-0)
plugins/inputs/mysql/mysql_test.go (+2/-0)
plugins/inputs/neptune_apex/README.md (+2/-2)
plugins/inputs/net/NET_README.md (+2/-2)
plugins/inputs/net_response/net_response.go (+5/-0)
plugins/inputs/net_response/net_response_test.go (+1/-0)
plugins/inputs/nginx/README.md (+3/-3)
plugins/inputs/nginx_plus/README.md (+3/-3)
plugins/inputs/nginx_plus_api/README.md (+3/-3)
plugins/inputs/nginx_upstream_check/README.md (+2/-2)
plugins/inputs/nginx_vts/README.md (+3/-3)
plugins/inputs/nsd/README.md (+176/-0)
plugins/inputs/nsd/nsd.go (+167/-0)
plugins/inputs/nsd/nsd_test.go (+244/-0)
plugins/inputs/nvidia_smi/README.md (+4/-2)
plugins/inputs/nvidia_smi/nvidia_smi.go (+9/-1)
plugins/inputs/nvidia_smi/nvidia_smi_test.go (+4/-0)
plugins/inputs/opcua/README.md (+143/-0)
plugins/inputs/opcua/opcua_client.go (+549/-0)
plugins/inputs/opcua/opcua_client_test.go (+257/-0)
plugins/inputs/opcua/opcua_util.go (+332/-0)
plugins/inputs/openldap/README.md (+3/-1)
plugins/inputs/openldap/openldap.go (+4/-0)
plugins/inputs/passenger/passenger_test.go (+34/-17)
plugins/inputs/phpfpm/phpfpm.go (+14/-21)
plugins/inputs/phpfpm/phpfpm_test.go (+15/-5)
plugins/inputs/ping/README.md (+8/-4)
plugins/inputs/ping/ping.go (+161/-235)
plugins/inputs/ping/ping_test.go (+117/-24)
plugins/inputs/postfix/postfix.go (+4/-0)
plugins/inputs/postfix/postfix_test.go (+2/-0)
plugins/inputs/postfix/postfix_windows.go (+3/-0)
plugins/inputs/postgresql/README.md (+1/-1)
plugins/inputs/postgresql_extensible/README.md (+7/-2)
plugins/inputs/postgresql_extensible/postgresql_extensible.go (+29/-1)
plugins/inputs/postgresql_extensible/postgresql_extensible_test.go (+9/-0)
plugins/inputs/powerdns/README.md (+1/-1)
plugins/inputs/powerdns/powerdns_test.go (+7/-4)
plugins/inputs/powerdns_recursor/powerdns_recursor_test.go (+2/-2)
plugins/inputs/processes/processes_notwindows.go (+0/-2)
plugins/inputs/processes/processes_test.go (+13/-61)
plugins/inputs/procstat/README.md (+3/-9)
plugins/inputs/procstat/native_finder.go (+1/-1)
plugins/inputs/procstat/pgrep.go (+3/-5)
plugins/inputs/procstat/procstat.go (+30/-8)
plugins/inputs/procstat/procstat_test.go (+17/-0)
plugins/inputs/prometheus/README.md (+1/-1)
plugins/inputs/prometheus/parser.go (+18/-194)
plugins/inputs/prometheus/prometheus.go (+11/-2)
plugins/inputs/proxmox/README.md (+66/-0)
plugins/inputs/proxmox/proxmox.go (+291/-0)
plugins/inputs/proxmox/proxmox_test.go (+143/-0)
plugins/inputs/proxmox/structs.go (+69/-0)
plugins/inputs/rabbitmq/README.md (+0/-1)
plugins/inputs/rabbitmq/rabbitmq.go (+0/-13)
plugins/inputs/rabbitmq/rabbitmq_test.go (+0/-3)
plugins/inputs/ras/README.md (+60/-0)
plugins/inputs/ras/ras.go (+341/-0)
plugins/inputs/ras/ras_notlinux.go (+3/-0)
plugins/inputs/ras/ras_test.go (+255/-0)
plugins/inputs/redfish/redfish.go (+1/-0)
plugins/inputs/redfish/redfish_test.go (+2/-17)
plugins/inputs/redis/README.md (+8/-3)
plugins/inputs/redis/redis.go (+46/-0)
plugins/inputs/redis/redis_test.go (+43/-0)
plugins/inputs/rethinkdb/rethinkdb_server.go (+4/-0)
plugins/inputs/riemann_listener/README.md (+42/-0)
plugins/inputs/riemann_listener/riemann_listener.go (+399/-0)
plugins/inputs/riemann_listener/riemann_listener_test.go (+55/-0)
plugins/inputs/sensors/README.md (+1/-1)
plugins/inputs/smart/README.md (+107/-52)
plugins/inputs/smart/smart.go (+532/-59)
plugins/inputs/smart/smart_test.go (+890/-292)
plugins/inputs/snmp/README.md (+30/-13)
plugins/inputs/snmp/snmp.go (+67/-9)
plugins/inputs/snmp/snmp_mocks_generate.go (+1/-0)
plugins/inputs/snmp/snmp_mocks_test.go (+1/-0)
plugins/inputs/snmp/snmp_test.go (+145/-6)
plugins/inputs/snmp_legacy/snmp_legacy.go (+3/-0)
plugins/inputs/snmp_trap/README.md (+3/-2)
plugins/inputs/snmp_trap/snmp_trap.go (+7/-3)
plugins/inputs/snmp_trap/snmp_trap_test.go (+8/-5)
plugins/inputs/socket_listener/socket_listener.go (+1/-0)
plugins/inputs/socket_listener/socket_listener_test.go (+7/-1)
plugins/inputs/solr/README.md (+1/-1)
plugins/inputs/sqlserver/README.md (+174/-38)
plugins/inputs/sqlserver/azuresqlqueries.go (+1198/-0)
plugins/inputs/sqlserver/sqlqueriesV1.go (+1408/-0)
plugins/inputs/sqlserver/sqlqueriesV2.go (+1384/-0)
plugins/inputs/sqlserver/sqlserver.go (+133/-61)
plugins/inputs/sqlserver/sqlserver_test.go (+10/-10)
plugins/inputs/sqlserver/sqlserverqueries.go (+1246/-0)
plugins/inputs/statsd/README.md (+4/-0)
plugins/inputs/statsd/datadog_test.go (+4/-4)
plugins/inputs/statsd/statsd.go (+87/-34)
plugins/inputs/statsd/statsd_test.go (+67/-6)
plugins/inputs/suricata/suricata_test.go (+1/-1)
plugins/inputs/synproxy/README.md (+2/-2)
plugins/inputs/syslog/nontransparent_test.go (+2/-1)
plugins/inputs/syslog/octetcounting_test.go (+2/-1)
plugins/inputs/syslog/rfc5426_test.go (+13/-3)
plugins/inputs/syslog/syslog.go (+6/-1)
plugins/inputs/syslog/syslog_test.go (+12/-7)
plugins/inputs/systemd_units/README.md (+1/-1)
plugins/inputs/systemd_units/systemd_units_linux.go (+2/-2)
plugins/inputs/tail/README.md (+17/-0)
plugins/inputs/tail/multiline.go (+135/-0)
plugins/inputs/tail/multiline_test.go (+235/-0)
plugins/inputs/tail/tail.go (+115/-11)
plugins/inputs/tail/tail_test.go (+190/-8)
plugins/inputs/tail/testdata/test-patterns (+3/-0)
plugins/inputs/tail/testdata/test_multiline.log (+7/-0)
plugins/inputs/tcp_listener/tcp_listener_test.go (+3/-2)
plugins/inputs/teamspeak/README.md (+1/-1)
plugins/inputs/vsphere/README.md (+2/-2)
plugins/inputs/vsphere/endpoint.go (+14/-9)
plugins/inputs/webhooks/particle/README.md (+1/-1)
plugins/inputs/webhooks/particle/particle_webhooks.go (+8/-2)
plugins/inputs/webhooks/particle/particle_webhooks_test.go (+45/-1)
plugins/inputs/win_eventlog/README.md (+218/-0)
plugins/inputs/win_eventlog/event.go (+70/-0)
plugins/inputs/win_eventlog/syscall_windows.go (+39/-0)
plugins/inputs/win_eventlog/util.go (+155/-0)
plugins/inputs/win_eventlog/util_test.go (+200/-0)
plugins/inputs/win_eventlog/win_eventlog.go (+532/-0)
plugins/inputs/win_eventlog/win_eventlog_notwindows.go (+5/-0)
plugins/inputs/win_eventlog/win_eventlog_test.go (+136/-0)
plugins/inputs/win_eventlog/zsyscall_windows.go (+151/-0)
plugins/inputs/win_perf_counters/README.md (+9/-9)
plugins/inputs/win_perf_counters/win_perf_counters.go (+40/-30)
plugins/inputs/win_services/README.md (+2/-1)
plugins/inputs/win_services/win_services.go (+27/-9)
plugins/inputs/win_services/win_services_integration_test.go (+11/-2)
plugins/inputs/win_services/win_services_test.go (+32/-8)
plugins/inputs/x509_cert/README.md (+4/-1)
plugins/inputs/x509_cert/x509_cert.go (+25/-9)
plugins/inputs/x509_cert/x509_cert_test.go (+64/-4)
plugins/inputs/zfs/README.md (+21/-2)
plugins/inputs/zfs/zfs.go (+16/-6)
plugins/inputs/zfs/zfs_freebsd.go (+53/-2)
plugins/inputs/zfs/zfs_freebsd_test.go (+54/-0)
plugins/inputs/zookeeper/zookeeper.go (+1/-1)
plugins/outputs/all/all.go (+5/-0)
plugins/outputs/azure_monitor/azure_monitor.go (+2/-5)
plugins/outputs/cloud_pubsub/README.md (+3/-3)
plugins/outputs/cloud_pubsub/pubsub.go (+1/-1)
plugins/outputs/dynatrace/README.md (+47/-0)
plugins/outputs/dynatrace/dynatrace.go (+305/-0)
plugins/outputs/dynatrace/dynatrace_test.go (+331/-0)
plugins/outputs/elasticsearch/README.md (+4/-0)
plugins/outputs/elasticsearch/elasticsearch.go (+25/-0)
plugins/outputs/graphite/graphite_test.go (+18/-10)
plugins/outputs/http/README.md (+6/-1)
plugins/outputs/http/http.go (+7/-0)
plugins/outputs/influxdb/README.md (+1/-1)
plugins/outputs/influxdb/http.go (+8/-6)
plugins/outputs/influxdb/influxdb.go (+2/-1)
plugins/outputs/influxdb_v2/README.md (+1/-1)
plugins/outputs/influxdb_v2/http.go (+67/-27)
plugins/outputs/influxdb_v2/http_internal_test.go (+27/-0)
plugins/outputs/influxdb_v2/influxdb.go (+2/-2)
plugins/outputs/influxdb_v2/influxdb_test.go (+5/-5)
plugins/outputs/kafka/README.md (+28/-6)
plugins/outputs/kafka/kafka.go (+76/-113)
plugins/outputs/kafka/kafka_test.go (+7/-4)
plugins/outputs/logzio/README.md (+43/-0)
plugins/outputs/logzio/logzio.go (+175/-0)
plugins/outputs/logzio/logzio_test.go (+94/-0)
plugins/outputs/nats/README.md (+4/-0)
plugins/outputs/nats/nats.go (+8/-0)
plugins/outputs/nats/nats_test.go (+1/-0)
plugins/outputs/opentsdb/README.md (+1/-1)
plugins/outputs/socket_writer/socket_writer_test.go (+5/-0)
plugins/outputs/sumologic/README.md (+69/-0)
plugins/outputs/sumologic/sumologic.go (+350/-0)
plugins/outputs/sumologic/sumologic_test.go (+652/-0)
plugins/outputs/timestream/README.md (+152/-0)
plugins/outputs/timestream/timestream.go (+608/-0)
plugins/outputs/timestream/timestream_internal_test.go (+92/-0)
plugins/outputs/timestream/timestream_test.go (+742/-0)
plugins/outputs/warp10/warp10.go (+6/-1)
plugins/outputs/wavefront/README.md (+6/-0)
plugins/outputs/wavefront/wavefront.go (+43/-5)
plugins/outputs/yandex_cloud_monitoring/README.md (+26/-0)
plugins/outputs/yandex_cloud_monitoring/yandex_cloud_monitoring.go (+259/-0)
plugins/outputs/yandex_cloud_monitoring/yandex_cloud_monitoring_test.go (+96/-0)
plugins/parsers/collectd/README.md (+1/-1)
plugins/parsers/collectd/parser_test.go (+40/-40)
plugins/parsers/csv/README.md (+5/-1)
plugins/parsers/csv/parser.go (+24/-3)
plugins/parsers/csv/parser_test.go (+74/-0)
plugins/parsers/graphite/README.md (+1/-1)
plugins/parsers/graphite/parser.go (+22/-2)
plugins/parsers/graphite/parser_test.go (+75/-0)
plugins/parsers/grok/parser_test.go (+1/-1)
plugins/parsers/influx/README.md (+1/-1)
plugins/parsers/influx/parser.go (+2/-2)
plugins/parsers/influx/parser_test.go (+15/-0)
plugins/parsers/json/README.md (+7/-5)
plugins/parsers/json/parser.go (+27/-17)
plugins/parsers/json/parser_test.go (+415/-4)
plugins/parsers/prometheus/README.md (+17/-0)
plugins/parsers/prometheus/common/helpers.go (+36/-0)
plugins/parsers/prometheus/parser.go (+200/-0)
plugins/parsers/prometheus/parser_test.go (+451/-0)
plugins/parsers/registry.go (+11/-0)
plugins/processors/converter/converter_test.go (+2/-1)
plugins/processors/enum/README.md (+2/-2)
plugins/processors/enum/enum.go (+72/-26)
plugins/processors/enum/enum_test.go (+48/-13)
plugins/processors/execd/execd.go (+36/-0)
plugins/processors/execd/execd_test.go (+50/-0)
plugins/processors/ifname/ifname_test.go (+2/-1)
plugins/processors/ifname/ttl_cache.go (+10/-0)
plugins/processors/port_name/README.md (+13/-3)
plugins/processors/port_name/port_name.go (+68/-8)
plugins/processors/port_name/port_name_test.go (+100/-7)
plugins/processors/reverse_dns/rdnscache.go (+4/-4)
plugins/processors/reverse_dns/reversedns_test.go (+8/-2)
plugins/processors/starlark/README.md (+57/-1)
plugins/processors/starlark/builtins.go (+13/-0)
plugins/processors/starlark/logging.go (+47/-0)
plugins/processors/starlark/starlark.go (+23/-0)
plugins/processors/starlark/starlark_test.go (+252/-0)
plugins/processors/starlark/testdata/compare_metrics.star (+25/-0)
plugins/processors/starlark/testdata/drop_fields_with_unexpected_type.star (+30/-0)
plugins/processors/starlark/testdata/drop_string_fields.star (+14/-0)
plugins/processors/starlark/testdata/fail.star (+13/-0)
plugins/processors/starlark/testdata/json.star (+18/-0)
plugins/processors/starlark/testdata/logging.star (+19/-0)
plugins/processors/starlark/testdata/multiple_metrics.star (+26/-0)
plugins/processors/starlark/testdata/multiple_metrics_with_json.star (+26/-0)
plugins/processors/streamingprocessor.go (+3/-0)
plugins/processors/topk/README.md (+26/-30)
plugins/serializers/carbon2/README.md (+39/-6)
plugins/serializers/carbon2/carbon2.go (+117/-30)
plugins/serializers/carbon2/carbon2_test.go (+216/-42)
plugins/serializers/prometheusremotewrite/README.md (+44/-0)
plugins/serializers/prometheusremotewrite/prometheusremotewrite.go (+341/-0)
plugins/serializers/prometheusremotewrite/prometheusremotewrite_test.go (+674/-0)
plugins/serializers/registry.go (+26/-3)
plugins/serializers/splunkmetric/splunkmetric.go (+0/-4)
plugins/serializers/splunkmetric/splunkmetric_test.go (+5/-5)
processor.go (+17/-7)
scripts/alpine.docker (+4/-0)
scripts/buster.docker (+15/-0)
scripts/check-deps.sh (+6/-0)
scripts/check-dynamic-glibc-versions.sh (+82/-0)
scripts/ci-1.14.docker (+1/-1)
scripts/ci-1.15.docker (+1/-6)
scripts/local_circleci.sh (+6/-0)
scripts/release.sh (+70/-0)
scripts/stretch.docker (+4/-0)
testutil/accumulator.go (+10/-2)
vendor/github.com/Shopify/sarama/.gitignore (+2/-0)
vendor/github.com/Shopify/sarama/.golangci.yml (+77/-0)
vendor/github.com/Shopify/sarama/CHANGELOG.md (+162/-0)
vendor/github.com/Shopify/sarama/Makefile (+25/-50)
vendor/github.com/Shopify/sarama/README.md (+1/-1)
vendor/github.com/Shopify/sarama/Vagrantfile (+2/-8)
vendor/github.com/Shopify/sarama/acl_create_request.go (+4/-0)
vendor/github.com/Shopify/sarama/acl_create_response.go (+5/-1)
vendor/github.com/Shopify/sarama/acl_delete_request.go (+4/-0)
vendor/github.com/Shopify/sarama/acl_delete_response.go (+5/-1)
vendor/github.com/Shopify/sarama/acl_describe_request.go (+4/-0)
vendor/github.com/Shopify/sarama/acl_describe_response.go (+5/-1)
vendor/github.com/Shopify/sarama/add_offsets_to_txn_request.go (+4/-0)
vendor/github.com/Shopify/sarama/add_offsets_to_txn_response.go (+4/-0)
vendor/github.com/Shopify/sarama/add_partitions_to_txn_request.go (+4/-0)
vendor/github.com/Shopify/sarama/add_partitions_to_txn_response.go (+4/-0)
vendor/github.com/Shopify/sarama/admin.go (+304/-60)
vendor/github.com/Shopify/sarama/alter_configs_request.go (+4/-0)
vendor/github.com/Shopify/sarama/alter_configs_response.go (+6/-2)
vendor/github.com/Shopify/sarama/alter_partition_reassignments_request.go (+130/-0)
vendor/github.com/Shopify/sarama/alter_partition_reassignments_response.go (+157/-0)
vendor/github.com/Shopify/sarama/api_versions_request.go (+4/-0)
vendor/github.com/Shopify/sarama/api_versions_response.go (+5/-1)
vendor/github.com/Shopify/sarama/async_producer.go (+58/-12)
vendor/github.com/Shopify/sarama/balance_strategy.go (+26/-18)
vendor/github.com/Shopify/sarama/broker.go (+130/-43)
vendor/github.com/Shopify/sarama/client.go (+111/-12)
vendor/github.com/Shopify/sarama/compress.go (+125/-6)
vendor/github.com/Shopify/sarama/config.go (+81/-11)
vendor/github.com/Shopify/sarama/config_resource_type.go (+11/-15)
vendor/github.com/Shopify/sarama/consumer.go (+27/-5)
vendor/github.com/Shopify/sarama/consumer_group.go (+49/-40)
vendor/github.com/Shopify/sarama/consumer_metadata_request.go (+4/-0)
vendor/github.com/Shopify/sarama/consumer_metadata_response.go (+4/-0)
vendor/github.com/Shopify/sarama/create_partitions_request.go (+4/-0)
vendor/github.com/Shopify/sarama/create_partitions_response.go (+4/-0)
vendor/github.com/Shopify/sarama/create_topics_request.go (+4/-0)
vendor/github.com/Shopify/sarama/create_topics_response.go (+4/-0)
vendor/github.com/Shopify/sarama/decompress.go (+1/-1)
vendor/github.com/Shopify/sarama/delete_groups_request.go (+4/-0)
vendor/github.com/Shopify/sarama/delete_groups_response.go (+4/-0)
vendor/github.com/Shopify/sarama/delete_records_request.go (+4/-0)
vendor/github.com/Shopify/sarama/delete_records_response.go (+4/-0)
vendor/github.com/Shopify/sarama/delete_topics_request.go (+4/-0)
vendor/github.com/Shopify/sarama/delete_topics_response.go (+4/-0)
vendor/github.com/Shopify/sarama/describe_configs_request.go (+4/-0)
vendor/github.com/Shopify/sarama/describe_configs_response.go (+8/-1)
vendor/github.com/Shopify/sarama/describe_groups_request.go (+4/-0)
vendor/github.com/Shopify/sarama/describe_groups_response.go (+4/-0)
vendor/github.com/Shopify/sarama/describe_log_dirs_request.go (+4/-0)
vendor/github.com/Shopify/sarama/describe_log_dirs_response.go (+10/-0)
vendor/github.com/Shopify/sarama/dev.yml (+1/-1)
vendor/github.com/Shopify/sarama/docker-compose.yml (+134/-0)
vendor/github.com/Shopify/sarama/encoder_decoder.go (+5/-0)
vendor/github.com/Shopify/sarama/end_txn_request.go (+4/-0)
vendor/github.com/Shopify/sarama/end_txn_response.go (+4/-0)
vendor/github.com/Shopify/sarama/errors.go (+16/-0)
vendor/github.com/Shopify/sarama/fetch_request.go (+139/-14)
vendor/github.com/Shopify/sarama/fetch_response.go (+68/-11)
vendor/github.com/Shopify/sarama/find_coordinator_request.go (+4/-0)
vendor/github.com/Shopify/sarama/find_coordinator_response.go (+4/-0)
vendor/github.com/Shopify/sarama/go.mod (+17/-11)
vendor/github.com/Shopify/sarama/go.sum (+49/-29)
vendor/github.com/Shopify/sarama/gssapi_kerberos.go (+3/-3)
vendor/github.com/Shopify/sarama/heartbeat_request.go (+4/-0)
vendor/github.com/Shopify/sarama/heartbeat_response.go (+4/-0)
vendor/github.com/Shopify/sarama/init_producer_id_request.go (+4/-0)
vendor/github.com/Shopify/sarama/init_producer_id_response.go (+4/-0)
vendor/github.com/Shopify/sarama/interceptors.go (+43/-0)
vendor/github.com/Shopify/sarama/join_group_request.go (+4/-0)
vendor/github.com/Shopify/sarama/join_group_response.go (+4/-0)
vendor/github.com/Shopify/sarama/kerberos_client.go (+5/-10)
vendor/github.com/Shopify/sarama/leave_group_request.go (+4/-0)
vendor/github.com/Shopify/sarama/leave_group_response.go (+4/-0)
vendor/github.com/Shopify/sarama/list_groups_request.go (+4/-0)
vendor/github.com/Shopify/sarama/list_groups_response.go (+4/-0)
vendor/github.com/Shopify/sarama/list_partition_reassignments_request.go (+98/-0)
vendor/github.com/Shopify/sarama/list_partition_reassignments_response.go (+169/-0)
vendor/github.com/Shopify/sarama/message.go (+0/-1)
vendor/github.com/Shopify/sarama/metadata_request.go (+4/-0)
vendor/github.com/Shopify/sarama/metadata_response.go (+4/-1)
vendor/github.com/Shopify/sarama/mockbroker.go (+26/-14)
vendor/github.com/Shopify/sarama/mockkerberos.go (+1/-1)
vendor/github.com/Shopify/sarama/mockresponses.go (+378/-50)
vendor/github.com/Shopify/sarama/offset_commit_request.go (+4/-0)
vendor/github.com/Shopify/sarama/offset_commit_response.go (+4/-0)
vendor/github.com/Shopify/sarama/offset_fetch_request.go (+4/-0)
vendor/github.com/Shopify/sarama/offset_fetch_response.go (+4/-0)
vendor/github.com/Shopify/sarama/offset_manager.go (+17/-6)
vendor/github.com/Shopify/sarama/offset_request.go (+5/-1)
vendor/github.com/Shopify/sarama/offset_response.go (+4/-0)
vendor/github.com/Shopify/sarama/packet_decoder.go (+6/-0)
vendor/github.com/Shopify/sarama/packet_encoder.go (+7/-0)
vendor/github.com/Shopify/sarama/prep_encoder.go (+49/-0)
vendor/github.com/Shopify/sarama/produce_request.go (+6/-0)
vendor/github.com/Shopify/sarama/produce_response.go (+39/-16)
vendor/github.com/Shopify/sarama/produce_set.go (+23/-8)
vendor/github.com/Shopify/sarama/real_decoder.go (+96/-2)
vendor/github.com/Shopify/sarama/real_encoder.go (+52/-0)
vendor/github.com/Shopify/sarama/records.go (+0/-1)
vendor/github.com/Shopify/sarama/request.go (+25/-5)
vendor/github.com/Shopify/sarama/response_header.go (+8/-1)
vendor/github.com/Shopify/sarama/sarama.go (+4/-0)
vendor/github.com/Shopify/sarama/sasl_authenticate_request.go (+4/-0)
vendor/github.com/Shopify/sarama/sasl_authenticate_response.go (+4/-0)
vendor/github.com/Shopify/sarama/sasl_handshake_request.go (+4/-0)
vendor/github.com/Shopify/sarama/sasl_handshake_response.go (+4/-0)
vendor/github.com/Shopify/sarama/sync_group_request.go (+4/-0)
vendor/github.com/Shopify/sarama/sync_group_response.go (+4/-0)
vendor/github.com/Shopify/sarama/txn_offset_commit_request.go (+4/-0)
vendor/github.com/Shopify/sarama/txn_offset_commit_response.go (+4/-0)
vendor/github.com/Shopify/sarama/utils.go (+12/-7)
vendor/github.com/Shopify/sarama/zstd.go (+2/-1)
vendor/github.com/aws/aws-sdk-go/aws/config.go (+5/-4)
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go (+2/-0)
vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go (+3/-2)
vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go (+24/-0)
vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/web_identity_provider.go (+51/-7)
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go (+4/-4)
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go (+18/-1)
vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go (+1/-1)
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go (+1560/-128)
vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go (+13/-3)
vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go (+2/-1)
vendor/github.com/aws/aws-sdk-go/aws/session/doc.go (+17/-0)
vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go (+10/-0)
vendor/github.com/aws/aws-sdk-go/aws/session/session.go (+59/-2)
vendor/github.com/aws/aws-sdk-go/aws/types.go (+23/-0)
vendor/github.com/aws/aws-sdk-go/aws/version.go (+1/-1)
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/reader.go (+14/-1)
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go (+9/-0)
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go (+14/-0)
vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go (+29/-7)
vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go (+5/-4)
vendor/github.com/aws/aws-sdk-go/service/cloudwatch/api.go (+188/-48)
vendor/github.com/aws/aws-sdk-go/service/dynamodb/api.go (+397/-115)
vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/decode.go (+7/-7)
vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/doc.go (+1/-1)
vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/encode.go (+11/-4)
vendor/github.com/aws/aws-sdk-go/service/kinesis/api.go (+473/-98)
vendor/github.com/aws/aws-sdk-go/service/kinesis/errors.go (+7/-4)
vendor/github.com/aws/aws-sdk-go/service/sts/api.go (+5/-1)
vendor/github.com/aws/aws-sdk-go/service/sts/doc.go (+5/-81)
vendor/github.com/aws/aws-sdk-go/service/timestreamwrite/api.go (+4408/-0)
vendor/github.com/aws/aws-sdk-go/service/timestreamwrite/doc.go (+40/-0)
vendor/github.com/aws/aws-sdk-go/service/timestreamwrite/errors.go (+92/-0)
vendor/github.com/aws/aws-sdk-go/service/timestreamwrite/service.go (+109/-0)
vendor/github.com/bmizerany/assert/.gitignore (+7/-0)
vendor/github.com/bmizerany/assert/README.md (+47/-0)
vendor/github.com/bmizerany/assert/assert.go (+76/-0)
vendor/github.com/containerd/containerd/LICENSE (+191/-0)
vendor/github.com/containerd/containerd/NOTICE (+16/-0)
vendor/github.com/containerd/containerd/errdefs/errors.go (+93/-0)
vendor/github.com/containerd/containerd/errdefs/grpc.go (+147/-0)
vendor/github.com/dgrijalva/jwt-go/v4/.gitignore (+4/-0)
vendor/github.com/dgrijalva/jwt-go/v4/.travis.yml (+7/-5)
vendor/github.com/dgrijalva/jwt-go/v4/LICENSE (+8/-0)
vendor/github.com/dgrijalva/jwt-go/v4/MIGRATION_GUIDE.md (+101/-0)
vendor/github.com/dgrijalva/jwt-go/v4/README.md (+101/-0)
vendor/github.com/dgrijalva/jwt-go/v4/VERSION_HISTORY.md (+141/-0)
vendor/github.com/dgrijalva/jwt-go/v4/claim_strings.go (+47/-0)
vendor/github.com/dgrijalva/jwt-go/v4/claims.go (+64/-0)
vendor/github.com/dgrijalva/jwt-go/v4/doc.go (+4/-0)
vendor/github.com/dgrijalva/jwt-go/v4/ecdsa.go (+173/-0)
vendor/github.com/dgrijalva/jwt-go/v4/ecdsa_utils.go (+70/-0)
vendor/github.com/dgrijalva/jwt-go/v4/errors.go (+204/-0)
vendor/github.com/dgrijalva/jwt-go/v4/go.mod (+5/-0)
vendor/github.com/dgrijalva/jwt-go/v4/go.sum (+2/-0)
vendor/github.com/dgrijalva/jwt-go/v4/hmac.go (+97/-0)
vendor/github.com/dgrijalva/jwt-go/v4/keyfunc.go (+21/-0)
vendor/github.com/dgrijalva/jwt-go/v4/map_claims.go (+83/-0)
vendor/github.com/dgrijalva/jwt-go/v4/none.go (+54/-0)
vendor/github.com/dgrijalva/jwt-go/v4/parser.go (+168/-0)
vendor/github.com/dgrijalva/jwt-go/v4/parser_option.go (+74/-0)
vendor/github.com/dgrijalva/jwt-go/v4/rsa.go (+115/-0)
vendor/github.com/dgrijalva/jwt-go/v4/rsa_pss.go (+138/-0)
vendor/github.com/dgrijalva/jwt-go/v4/rsa_utils.go (+105/-0)
vendor/github.com/dgrijalva/jwt-go/v4/signing_method.go (+37/-0)
vendor/github.com/dgrijalva/jwt-go/v4/signing_option.go (+38/-0)
vendor/github.com/dgrijalva/jwt-go/v4/time.go (+78/-0)
vendor/github.com/dgrijalva/jwt-go/v4/token.go (+110/-0)
vendor/github.com/dgrijalva/jwt-go/v4/validation_helper.go (+151/-0)
vendor/github.com/docker/distribution/registry/api/errcode/errors.go (+267/-0)
vendor/github.com/docker/distribution/registry/api/errcode/handler.go (+44/-0)
vendor/github.com/docker/distribution/registry/api/errcode/register.go (+138/-0)
vendor/github.com/docker/docker/AUTHORS (+142/-14)
vendor/github.com/docker/docker/LICENSE (+1/-1)
vendor/github.com/docker/docker/NOTICE (+1/-1)
vendor/github.com/docker/docker/api/common.go (+2/-2)
vendor/github.com/docker/docker/api/common_unix.go (+1/-1)
vendor/github.com/docker/docker/api/swagger.yaml (+1727/-547)
vendor/github.com/docker/docker/api/types/client.go (+26/-1)
vendor/github.com/docker/docker/api/types/configs.go (+7/-0)
vendor/github.com/docker/docker/api/types/container/config.go (+1/-1)
vendor/github.com/docker/docker/api/types/container/container_changes.go (+1/-1)
vendor/github.com/docker/docker/api/types/container/container_create.go (+1/-1)
vendor/github.com/docker/docker/api/types/container/container_top.go (+4/-2)
vendor/github.com/docker/docker/api/types/container/container_update.go (+1/-1)
vendor/github.com/docker/docker/api/types/container/container_wait.go (+1/-1)
vendor/github.com/docker/docker/api/types/container/host_config.go (+23/-5)
vendor/github.com/docker/docker/api/types/filters/parse.go (+22/-48)
vendor/github.com/docker/docker/api/types/image/image_history.go (+1/-1)
vendor/github.com/docker/docker/api/types/mount/mount.go (+2/-1)
vendor/github.com/docker/docker/api/types/network/network.go (+19/-0)
vendor/github.com/docker/docker/api/types/plugin.go (+3/-0)
vendor/github.com/docker/docker/api/types/port.go (+1/-1)
vendor/github.com/docker/docker/api/types/seccomp.go (+3/-2)
vendor/github.com/docker/docker/api/types/stats.go (+2/-2)
vendor/github.com/docker/docker/api/types/swarm/config.go (+6/-1)
vendor/github.com/docker/docker/api/types/swarm/container.go (+3/-0)
vendor/github.com/docker/docker/api/types/swarm/runtime.go (+8/-0)
vendor/github.com/docker/docker/api/types/swarm/swarm.go (+11/-1)
vendor/github.com/docker/docker/api/types/swarm/task.go (+8/-4)
vendor/github.com/docker/docker/api/types/time/timestamp.go (+9/-2)
vendor/github.com/docker/docker/api/types/types.go (+32/-4)
vendor/github.com/docker/docker/api/types/volume.go (+4/-1)
vendor/github.com/docker/docker/api/types/volume/volume_create.go (+7/-4)
vendor/github.com/docker/docker/api/types/volume/volume_list.go (+5/-4)
vendor/github.com/docker/docker/client/README.md (+1/-1)
vendor/github.com/docker/docker/client/build_cancel.go (+16/-0)
vendor/github.com/docker/docker/client/build_prune.go (+19/-4)
vendor/github.com/docker/docker/client/checkpoint_create.go (+2/-1)
vendor/github.com/docker/docker/client/checkpoint_delete.go (+1/-1)
vendor/github.com/docker/docker/client/checkpoint_list.go (+2/-2)
vendor/github.com/docker/docker/client/client.go (+71/-159)
vendor/github.com/docker/docker/client/client_deprecated.go (+23/-0)
vendor/github.com/docker/docker/client/client_unix.go (+1/-1)
vendor/github.com/docker/docker/client/config_create.go (+2/-2)
vendor/github.com/docker/docker/client/config_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/config_list.go (+2/-2)
vendor/github.com/docker/docker/client/config_remove.go (+2/-2)
vendor/github.com/docker/docker/client/config_update.go (+1/-1)
vendor/github.com/docker/docker/client/container_attach.go (+1/-1)
vendor/github.com/docker/docker/client/container_commit.go (+2/-2)
vendor/github.com/docker/docker/client/container_copy.go (+5/-4)
vendor/github.com/docker/docker/client/container_create.go (+2/-6)
vendor/github.com/docker/docker/client/container_diff.go (+2/-2)
vendor/github.com/docker/docker/client/container_exec.go (+2/-2)
vendor/github.com/docker/docker/client/container_export.go (+1/-2)
vendor/github.com/docker/docker/client/container_inspect.go (+3/-3)
vendor/github.com/docker/docker/client/container_kill.go (+1/-2)
vendor/github.com/docker/docker/client/container_list.go (+2/-2)
vendor/github.com/docker/docker/client/container_logs.go (+4/-4)
vendor/github.com/docker/docker/client/container_pause.go (+1/-1)
vendor/github.com/docker/docker/client/container_prune.go (+2/-2)
vendor/github.com/docker/docker/client/container_remove.go (+2/-2)
vendor/github.com/docker/docker/client/container_rename.go (+1/-2)
vendor/github.com/docker/docker/client/container_resize.go (+1/-1)
vendor/github.com/docker/docker/client/container_restart.go (+1/-1)
vendor/github.com/docker/docker/client/container_start.go (+1/-2)
vendor/github.com/docker/docker/client/container_stats.go (+1/-1)
vendor/github.com/docker/docker/client/container_stop.go (+8/-3)
vendor/github.com/docker/docker/client/container_top.go (+2/-2)
vendor/github.com/docker/docker/client/container_unpause.go (+1/-1)
vendor/github.com/docker/docker/client/container_update.go (+2/-3)
vendor/github.com/docker/docker/client/container_wait.go (+1/-2)
vendor/github.com/docker/docker/client/disk_usage.go (+2/-2)
vendor/github.com/docker/docker/client/distribution_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/errors.go (+17/-12)
vendor/github.com/docker/docker/client/events.go (+1/-2)
vendor/github.com/docker/docker/client/hijack.go (+15/-104)
vendor/github.com/docker/docker/client/image_build.go (+16/-8)
vendor/github.com/docker/docker/client/image_create.go (+1/-2)
vendor/github.com/docker/docker/client/image_history.go (+2/-2)
vendor/github.com/docker/docker/client/image_import.go (+1/-2)
vendor/github.com/docker/docker/client/image_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/image_list.go (+2/-2)
vendor/github.com/docker/docker/client/image_load.go (+1/-2)
vendor/github.com/docker/docker/client/image_prune.go (+2/-2)
vendor/github.com/docker/docker/client/image_pull.go (+3/-4)
vendor/github.com/docker/docker/client/image_push.go (+3/-4)
vendor/github.com/docker/docker/client/image_remove.go (+2/-2)
vendor/github.com/docker/docker/client/image_save.go (+1/-2)
vendor/github.com/docker/docker/client/image_search.go (+4/-4)
vendor/github.com/docker/docker/client/image_tag.go (+1/-1)
vendor/github.com/docker/docker/client/info.go (+2/-2)
vendor/github.com/docker/docker/client/interface.go (+9/-5)
vendor/github.com/docker/docker/client/interface_experimental.go (+2/-1)
vendor/github.com/docker/docker/client/login.go (+2/-6)
vendor/github.com/docker/docker/client/network_connect.go (+2/-1)
vendor/github.com/docker/docker/client/network_create.go (+3/-3)
vendor/github.com/docker/docker/client/network_disconnect.go (+2/-1)
vendor/github.com/docker/docker/client/network_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/network_list.go (+2/-2)
vendor/github.com/docker/docker/client/network_prune.go (+2/-2)
vendor/github.com/docker/docker/client/network_remove.go (+2/-2)
vendor/github.com/docker/docker/client/node_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/node_list.go (+2/-2)
vendor/github.com/docker/docker/client/node_remove.go (+2/-3)
vendor/github.com/docker/docker/client/node_update.go (+1/-1)
vendor/github.com/docker/docker/client/options.go (+172/-0)
vendor/github.com/docker/docker/client/ping.go (+45/-11)
vendor/github.com/docker/docker/client/plugin_create.go (+1/-4)
vendor/github.com/docker/docker/client/plugin_disable.go (+1/-1)
vendor/github.com/docker/docker/client/plugin_enable.go (+1/-1)
vendor/github.com/docker/docker/client/plugin_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/plugin_install.go (+3/-3)
vendor/github.com/docker/docker/client/plugin_list.go (+2/-2)
vendor/github.com/docker/docker/client/plugin_push.go (+1/-2)
vendor/github.com/docker/docker/client/plugin_remove.go (+2/-2)
vendor/github.com/docker/docker/client/plugin_set.go (+1/-1)
vendor/github.com/docker/docker/client/plugin_upgrade.go (+1/-1)
vendor/github.com/docker/docker/client/request.go (+36/-17)
vendor/github.com/docker/docker/client/secret_create.go (+2/-2)
vendor/github.com/docker/docker/client/secret_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/secret_list.go (+2/-2)
vendor/github.com/docker/docker/client/secret_remove.go (+2/-2)
vendor/github.com/docker/docker/client/secret_update.go (+1/-1)
vendor/github.com/docker/docker/client/service_create.go (+4/-4)
vendor/github.com/docker/docker/client/service_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/service_list.go (+2/-2)
vendor/github.com/docker/docker/client/service_logs.go (+3/-3)
vendor/github.com/docker/docker/client/service_remove.go (+2/-2)
vendor/github.com/docker/docker/client/service_update.go (+5/-3)
vendor/github.com/docker/docker/client/swarm_get_unlock_key.go (+2/-2)
vendor/github.com/docker/docker/client/swarm_init.go (+2/-2)
vendor/github.com/docker/docker/client/swarm_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/swarm_join.go (+2/-1)
vendor/github.com/docker/docker/client/swarm_leave.go (+1/-2)
vendor/github.com/docker/docker/client/swarm_unlock.go (+2/-1)
vendor/github.com/docker/docker/client/swarm_update.go (+1/-1)
vendor/github.com/docker/docker/client/task_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/task_list.go (+2/-2)
vendor/github.com/docker/docker/client/task_logs.go (+1/-2)
vendor/github.com/docker/docker/client/version.go (+2/-2)
vendor/github.com/docker/docker/client/volume_create.go (+3/-3)
vendor/github.com/docker/docker/client/volume_inspect.go (+2/-2)
vendor/github.com/docker/docker/client/volume_list.go (+4/-4)
vendor/github.com/docker/docker/client/volume_prune.go (+2/-2)
vendor/github.com/docker/docker/client/volume_remove.go (+2/-2)
vendor/github.com/docker/docker/errdefs/defs.go (+69/-0)
vendor/github.com/docker/docker/errdefs/doc.go (+8/-0)
vendor/github.com/docker/docker/errdefs/helpers.go (+227/-0)
vendor/github.com/docker/docker/errdefs/http_helpers.go (+191/-0)
vendor/github.com/docker/docker/errdefs/is.go (+107/-0)
vendor/github.com/docker/docker/pkg/stdcopy/stdcopy.go (+1/-1)
vendor/github.com/go-ping/ping/.editorconfig (+16/-0)
vendor/github.com/go-ping/ping/.gitignore (+2/-0)
vendor/github.com/go-ping/ping/.golangci.yml (+6/-0)
vendor/github.com/go-ping/ping/.goreleaser.yml (+46/-0)
vendor/github.com/go-ping/ping/LICENSE (+21/-0)
vendor/github.com/go-ping/ping/Makefile (+32/-0)
vendor/github.com/go-ping/ping/README.md (+130/-0)
vendor/github.com/go-ping/ping/go.mod (+5/-0)
vendor/github.com/go-ping/ping/go.sum (+10/-0)
vendor/github.com/go-ping/ping/ping.go (+669/-0)
vendor/github.com/go-redis/redis/.travis.yml (+2/-2)
vendor/github.com/go-redis/redis/CHANGELOG.md (+25/-0)
vendor/github.com/go-redis/redis/Makefile (+3/-1)
vendor/github.com/go-redis/redis/README.md (+20/-17)
vendor/github.com/go-redis/redis/cluster.go (+346/-288)
vendor/github.com/go-redis/redis/command.go (+987/-67)
vendor/github.com/go-redis/redis/commands.go (+422/-14)
vendor/github.com/go-redis/redis/internal/error.go (+21/-16)
vendor/github.com/go-redis/redis/internal/hashtag/hashtag.go (+3/-3)
vendor/github.com/go-redis/redis/internal/pool/conn.go (+32/-15)
vendor/github.com/go-redis/redis/internal/pool/pool.go (+99/-39)
vendor/github.com/go-redis/redis/internal/pool/pool_single.go (+167/-17)
vendor/github.com/go-redis/redis/internal/pool/pool_sticky.go (+5/-5)
vendor/github.com/go-redis/redis/internal/proto/reader.go (+67/-105)
vendor/github.com/go-redis/redis/internal/proto/writer.go (+159/-0)
vendor/github.com/go-redis/redis/internal/util.go (+10/-0)
vendor/github.com/go-redis/redis/internal/util/safe.go (+4/-0)
vendor/github.com/go-redis/redis/internal/util/unsafe.go (+10/-0)
vendor/github.com/go-redis/redis/iterator.go (+3/-2)
vendor/github.com/go-redis/redis/options.go (+36/-9)
vendor/github.com/go-redis/redis/pipeline.go (+21/-0)
vendor/github.com/go-redis/redis/pubsub.go (+226/-111)
vendor/github.com/go-redis/redis/redis.go (+140/-57)
vendor/github.com/go-redis/redis/result.go (+1/-1)
vendor/github.com/go-redis/redis/ring.go (+174/-44)
vendor/github.com/go-redis/redis/sentinel.go (+186/-114)
vendor/github.com/go-redis/redis/tx.go (+9/-3)
vendor/github.com/go-redis/redis/universal.go (+66/-37)
vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go (+101/-0)
vendor/github.com/gogo/protobuf/types/any.go (+140/-0)
vendor/github.com/gogo/protobuf/types/any.pb.go (+723/-0)
vendor/github.com/gogo/protobuf/types/api.pb.go (+2169/-0)
vendor/github.com/gogo/protobuf/types/doc.go (+35/-0)
vendor/github.com/gogo/protobuf/types/duration.go (+100/-0)
vendor/github.com/gogo/protobuf/types/duration.pb.go (+546/-0)
vendor/github.com/gogo/protobuf/types/duration_gogo.go (+100/-0)
vendor/github.com/gogo/protobuf/types/empty.pb.go (+491/-0)
vendor/github.com/gogo/protobuf/types/field_mask.pb.go (+767/-0)
vendor/github.com/gogo/protobuf/types/protosize.go (+34/-0)
vendor/github.com/gogo/protobuf/types/source_context.pb.go (+553/-0)
vendor/github.com/gogo/protobuf/types/struct.pb.go (+2067/-0)
vendor/github.com/gogo/protobuf/types/timestamp.go (+130/-0)
vendor/github.com/gogo/protobuf/types/timestamp.pb.go (+566/-0)
vendor/github.com/gogo/protobuf/types/timestamp_gogo.go (+94/-0)
vendor/github.com/gogo/protobuf/types/type.pb.go (+3396/-0)
vendor/github.com/gogo/protobuf/types/wrappers.pb.go (+2756/-0)
vendor/github.com/gogo/protobuf/types/wrappers_gogo.go (+300/-0)
vendor/github.com/golang/protobuf/descriptor/descriptor.go (+93/-0)
vendor/github.com/golang/protobuf/jsonpb/jsonpb.go (+1290/-0)
vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go (+1/-1)
vendor/github.com/google/go-cmp/cmp/cmpopts/ignore.go (+4/-5)
vendor/github.com/google/go-cmp/cmp/cmpopts/struct_filter.go (+12/-7)
vendor/github.com/google/go-cmp/cmp/compare.go (+55/-28)
vendor/github.com/google/go-cmp/cmp/export_panic.go (+1/-1)
vendor/github.com/google/go-cmp/cmp/export_unsafe.go (+15/-5)
vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go (+21/-1)
vendor/github.com/google/go-cmp/cmp/internal/value/name.go (+157/-0)
vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go (+10/-0)
vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go (+10/-0)
vendor/github.com/google/go-cmp/cmp/options.go (+4/-1)
vendor/github.com/google/go-cmp/cmp/path.go (+4/-3)
vendor/github.com/google/go-cmp/cmp/report.go (+4/-1)
vendor/github.com/google/go-cmp/cmp/report_compare.go (+168/-32)
vendor/github.com/google/go-cmp/cmp/report_references.go (+264/-0)
vendor/github.com/google/go-cmp/cmp/report_reflect.go (+207/-85)
vendor/github.com/google/go-cmp/cmp/report_slices.go (+125/-10)
vendor/github.com/google/go-cmp/cmp/report_text.go (+65/-21)
vendor/github.com/google/go-github/v32/AUTHORS (+121/-0)
vendor/github.com/google/go-github/v32/github/actions.go (+12/-0)
vendor/github.com/google/go-github/v32/github/actions_artifacts.go (+164/-0)
vendor/github.com/google/go-github/v32/github/actions_runners.go (+277/-0)
vendor/github.com/google/go-github/v32/github/actions_secrets.go (+299/-0)
vendor/github.com/google/go-github/v32/github/actions_workflow_jobs.go (+149/-0)
vendor/github.com/google/go-github/v32/github/actions_workflow_runs.go (+235/-0)
vendor/github.com/google/go-github/v32/github/actions_workflows.go (+138/-0)
vendor/github.com/google/go-github/v32/github/activity.go (+7/-7)
vendor/github.com/google/go-github/v32/github/activity_events.go (+217/-0)
vendor/github.com/google/go-github/v32/github/activity_notifications.go (+9/-9)
vendor/github.com/google/go-github/v32/github/activity_star.go (+13/-10)
vendor/github.com/google/go-github/v32/github/activity_watching.go (+6/-5)
vendor/github.com/google/go-github/v32/github/admin.go (+18/-0)
vendor/github.com/google/go-github/v32/github/admin_orgs.go (+89/-0)
vendor/github.com/google/go-github/v32/github/admin_stats.go (+2/-2)
vendor/github.com/google/go-github/v32/github/admin_users.go (+133/-0)
vendor/github.com/google/go-github/v32/github/apps.go (+349/-0)
vendor/github.com/google/go-github/v32/github/apps_installation.go (+25/-10)
vendor/github.com/google/go-github/v32/github/apps_manifest.go (+53/-0)
vendor/github.com/google/go-github/v32/github/apps_marketplace.go (+45/-28)
vendor/github.com/google/go-github/v32/github/authorizations.go (+40/-194)
vendor/github.com/google/go-github/v32/github/checks.go (+71/-66)
vendor/github.com/google/go-github/v32/github/code-scanning.go (+117/-0)
vendor/github.com/google/go-github/v32/github/doc.go (+2/-1)
vendor/github.com/google/go-github/v32/github/event.go (+17/-207)
vendor/github.com/google/go-github/v32/github/event_types.go (+233/-72)
vendor/github.com/google/go-github/v32/github/gists.go (+21/-15)
vendor/github.com/google/go-github/v32/github/gists_comments.go (+7/-7)
vendor/github.com/google/go-github/v32/github/git_commits.go (+71/-5)
vendor/github.com/google/go-github/v32/github/git_refs.go (+23/-66)
vendor/github.com/google/go-github/v32/github/git_tags.go (+1/-4)
vendor/github.com/google/go-github/v32/github/git_trees.go (+69/-6)
vendor/github.com/google/go-github/v32/github/github-accessors.go (+6903/-3487)
vendor/github.com/google/go-github/v32/github/github.go (+172/-90)
vendor/github.com/google/go-github/v32/github/gitignore.go (+3/-3)
vendor/github.com/google/go-github/v32/github/interactions.go (+28/-0)
vendor/github.com/google/go-github/v32/github/interactions_orgs.go (+80/-0)
vendor/github.com/google/go-github/v32/github/interactions_repos.go (+80/-0)
vendor/github.com/google/go-github/v32/github/issues.go (+48/-52)
vendor/github.com/google/go-github/v32/github/issues_assignees.go (+3/-3)
vendor/github.com/google/go-github/v32/github/issues_comments.go (+12/-10)
vendor/github.com/google/go-github/v32/github/issues_events.go (+32/-15)
vendor/github.com/google/go-github/v32/github/issues_labels.go (+11/-41)
vendor/github.com/google/go-github/v32/github/issues_milestones.go (+4/-4)
vendor/github.com/google/go-github/v32/github/issues_timeline.go (+10/-5)
vendor/github.com/google/go-github/v32/github/licenses.go (+1/-1)
vendor/github.com/google/go-github/v32/github/messages.go (+60/-45)
vendor/github.com/google/go-github/v32/github/migrations.go (+15/-11)
vendor/github.com/google/go-github/v32/github/migrations_source_import.go (+9/-33)
vendor/github.com/google/go-github/v32/github/migrations_user.go (+7/-7)
vendor/github.com/google/go-github/v32/github/misc.go (+6/-6)
vendor/github.com/google/go-github/v32/github/orgs.go (+268/-0)
vendor/github.com/google/go-github/v32/github/orgs_hooks.go (+21/-10)
vendor/github.com/google/go-github/v32/github/orgs_members.go (+25/-31)
vendor/github.com/google/go-github/v32/github/orgs_outside_collaborators.go (+5/-5)
vendor/github.com/google/go-github/v32/github/orgs_projects.go (+4/-4)
vendor/github.com/google/go-github/v32/github/orgs_users_blocking.go (+6/-6)
vendor/github.com/google/go-github/v32/github/packages.go (+101/-0)
vendor/github.com/google/go-github/v32/github/projects.go (+179/-33)
vendor/github.com/google/go-github/v32/github/pulls.go (+126/-28)
vendor/github.com/google/go-github/v32/github/pulls_comments.go (+24/-10)
vendor/github.com/google/go-github/v32/github/pulls_reviewers.go (+6/-5)
vendor/github.com/google/go-github/v32/github/pulls_reviews.go (+115/-11)
vendor/github.com/google/go-github/v32/github/reactions.go (+238/-20)
vendor/github.com/google/go-github/v32/github/repos.go (+512/-91)
vendor/github.com/google/go-github/v32/github/repos_collaborators.go (+31/-17)
vendor/github.com/google/go-github/v32/github/repos_comments.go (+7/-6)
vendor/github.com/google/go-github/v32/github/repos_commits.go (+64/-36)
vendor/github.com/google/go-github/v32/github/repos_community_health.go (+1/-1)
vendor/github.com/google/go-github/v32/github/repos_contents.go (+52/-30)
vendor/github.com/google/go-github/v32/github/repos_deployments.go (+54/-28)
vendor/github.com/google/go-github/v32/github/repos_forks.go (+14/-7)
vendor/github.com/google/go-github/v32/github/repos_hooks.go (+57/-31)
vendor/github.com/google/go-github/v32/github/repos_invitations.go (+3/-12)
vendor/github.com/google/go-github/v32/github/repos_keys.go (+6/-26)
vendor/github.com/google/go-github/v32/github/repos_merging.go (+1/-1)
vendor/github.com/google/go-github/v32/github/repos_pages.go (+96/-18)
vendor/github.com/google/go-github/v32/github/repos_prereceive_hooks.go (+2/-2)
vendor/github.com/google/go-github/v32/github/repos_projects.go (+4/-4)
vendor/github.com/google/go-github/v32/github/repos_releases.go (+106/-34)
vendor/github.com/google/go-github/v32/github/repos_stats.go (+8/-8)
vendor/github.com/google/go-github/v32/github/repos_statuses.go (+17/-16)
vendor/github.com/google/go-github/v32/github/repos_traffic.go (+8/-8)
vendor/github.com/google/go-github/v32/github/search.go (+84/-51)
vendor/github.com/google/go-github/v32/github/teams.go (+850/-0)
vendor/github.com/google/go-github/v32/github/teams_discussion_comments.go (+118/-30)
vendor/github.com/google/go-github/v32/github/teams_discussions.go (+116/-28)
vendor/github.com/google/go-github/v32/github/teams_members.go (+121/-52)
vendor/github.com/google/go-github/v32/github/users.go (+43/-51)
vendor/github.com/google/go-github/v32/github/users_administration.go (+11/-6)
vendor/github.com/google/go-github/v32/github/users_blocking.go (+4/-4)
vendor/github.com/google/go-github/v32/github/users_emails.go (+9/-8)
vendor/github.com/google/go-github/v32/github/users_followers.go (+9/-6)
vendor/github.com/google/go-github/v32/github/users_gpg_keys.go (+17/-28)
vendor/github.com/google/go-github/v32/github/users_keys.go (+12/-10)
vendor/github.com/google/go-github/v32/github/users_projects.go (+68/-0)
vendor/github.com/google/uuid/README.md (+1/-1)
vendor/github.com/google/uuid/marshal.go (+4/-3)
vendor/github.com/google/uuid/version1.go (+6/-6)
vendor/github.com/google/uuid/version4.go (+6/-1)
vendor/github.com/gopcua/opcua/.gitignore (+3/-0)
vendor/github.com/gopcua/opcua/.goreleaser.yml (+26/-0)
vendor/github.com/gopcua/opcua/LICENSE (+2/-2)
vendor/github.com/gopcua/opcua/Makefile (+17/-0)
vendor/github.com/gopcua/opcua/README.md (+145/-0)
vendor/github.com/gopcua/opcua/client.go (+796/-0)
vendor/github.com/gopcua/opcua/config.go (+418/-0)
vendor/github.com/gopcua/opcua/debug/debug.go (+46/-0)
vendor/github.com/gopcua/opcua/doc.go (+6/-0)
vendor/github.com/gopcua/opcua/errors/errors.go (+37/-0)
vendor/github.com/gopcua/opcua/generate.go (+7/-0)
vendor/github.com/gopcua/opcua/generate.sh (+19/-0)
vendor/github.com/gopcua/opcua/go.mod (+10/-0)
vendor/github.com/gopcua/opcua/go.sum (+13/-0)
vendor/github.com/gopcua/opcua/id/id_gen.go (+10717/-0)
vendor/github.com/gopcua/opcua/node.go (+271/-0)
vendor/github.com/gopcua/opcua/server.go (+20/-0)
vendor/github.com/gopcua/opcua/subscription.go (+263/-0)
vendor/github.com/gopcua/opcua/ua/buffer.go (+326/-0)
vendor/github.com/gopcua/opcua/ua/datatypes.go (+256/-0)
vendor/github.com/gopcua/opcua/ua/decode.go (+165/-0)
vendor/github.com/gopcua/opcua/ua/diagnostic_info.go (+115/-0)
vendor/github.com/gopcua/opcua/ua/doc.go (+8/-0)
vendor/github.com/gopcua/opcua/ua/encode.go (+138/-0)
vendor/github.com/gopcua/opcua/ua/enums.go (+124/-0)
vendor/github.com/gopcua/opcua/ua/enums_gen.go (+1441/-0)
vendor/github.com/gopcua/opcua/ua/enums_strings_gen.go (+1443/-0)
vendor/github.com/gopcua/opcua/ua/expanded_node_id.go (+88/-0)
vendor/github.com/gopcua/opcua/ua/extension_object.go (+132/-0)
vendor/github.com/gopcua/opcua/ua/extobjs_gen.go (+2668/-0)
vendor/github.com/gopcua/opcua/ua/node_id.go (+419/-0)
vendor/github.com/gopcua/opcua/ua/qualified_name.go (+14/-0)
vendor/github.com/gopcua/opcua/ua/register_extobjs_gen.go (+298/-0)
vendor/github.com/gopcua/opcua/ua/request_header.go (+39/-0)
vendor/github.com/gopcua/opcua/ua/service.go (+53/-0)
vendor/github.com/gopcua/opcua/ua/service_gen.go (+94/-0)
vendor/github.com/gopcua/opcua/ua/status_gen.go (+508/-0)
vendor/github.com/gopcua/opcua/ua/typereg.go (+80/-0)
vendor/github.com/gopcua/opcua/ua/uadoc.md (+306/-0)
vendor/github.com/gopcua/opcua/ua/variant.go (+766/-0)
vendor/github.com/gopcua/opcua/uacp/conn.go (+369/-0)
vendor/github.com/gopcua/opcua/uacp/doc.go (+23/-0)
vendor/github.com/gopcua/opcua/uacp/endpoint.go (+35/-0)
vendor/github.com/gopcua/opcua/uacp/uacp.go (+183/-0)
vendor/github.com/gopcua/opcua/uapolicy/cert_utils.go (+28/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_aes.go (+63/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_hmac.go (+32/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_key.go (+60/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_none.go (+26/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_pkcs1v15.go (+113/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_rsaoaep.go (+98/-0)
vendor/github.com/gopcua/opcua/uapolicy/crypto_rsapss.go (+48/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyAes128Sha256RsaOaep.go (+121/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyAes256Sha256RsaPss.go (+125/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyBasic128Rsa15.go (+110/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyBasic256.go (+109/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyBasic256Sha256.go (+122/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyNone.go (+52/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyPubSubAes128CTR.go (+32/-0)
vendor/github.com/gopcua/opcua/uapolicy/policyPubSubAes256CTR.go (+34/-0)
vendor/github.com/gopcua/opcua/uapolicy/securitypolicy.go (+172/-0)
vendor/github.com/gopcua/opcua/uasc/asymmetric_security_header.go (+64/-0)
vendor/github.com/gopcua/opcua/uasc/config.go (+136/-0)
vendor/github.com/gopcua/opcua/uasc/doc.go (+7/-0)
vendor/github.com/gopcua/opcua/uasc/header.go (+75/-0)
vendor/github.com/gopcua/opcua/uasc/message.go (+135/-0)
vendor/github.com/gopcua/opcua/uasc/secure_channel.go (+847/-0)
vendor/github.com/gopcua/opcua/uasc/secure_channel_crypto.go (+229/-0)
vendor/github.com/gopcua/opcua/uasc/sequence_header.go (+48/-0)
vendor/github.com/gopcua/opcua/uasc/symmetric_security_header.go (+48/-0)
vendor/github.com/gosnmp/gosnmp/.gitignore (+75/-0)
vendor/github.com/gosnmp/gosnmp/.golangci.yml (+57/-0)
vendor/github.com/gosnmp/gosnmp/AUTHORS.md (+88/-0)
vendor/github.com/gosnmp/gosnmp/CHANGELOG.md (+92/-0)
vendor/github.com/gosnmp/gosnmp/Dockerfile (+39/-0)
vendor/github.com/gosnmp/gosnmp/LICENSE (+57/-0)
vendor/github.com/gosnmp/gosnmp/Makefile (+10/-0)
vendor/github.com/gosnmp/gosnmp/README.md (+272/-0)
vendor/github.com/gosnmp/gosnmp/asn1ber_string.go (+37/-0)
vendor/github.com/gosnmp/gosnmp/build_tests.sh (+10/-0)
vendor/github.com/gosnmp/gosnmp/go.mod (+8/-0)
vendor/github.com/gosnmp/gosnmp/go.sum (+20/-0)
vendor/github.com/gosnmp/gosnmp/goimports2 (+21/-0)
vendor/github.com/gosnmp/gosnmp/goimports2_all (+6/-0)
vendor/github.com/gosnmp/gosnmp/gosnmp.go (+621/-0)
vendor/github.com/gosnmp/gosnmp/helper.go (+810/-0)
vendor/github.com/gosnmp/gosnmp/interface.go (+340/-0)
vendor/github.com/gosnmp/gosnmp/local_tests.sh (+7/-0)
vendor/github.com/gosnmp/gosnmp/marshal.go (+1164/-0)
vendor/github.com/gosnmp/gosnmp/snmp_users.sh (+50/-0)
vendor/github.com/gosnmp/gosnmp/snmperror_string.go (+16/-0)
vendor/github.com/gosnmp/gosnmp/snmpv3authprotocol_string.go (+30/-0)
vendor/github.com/gosnmp/gosnmp/snmpv3privprotocol_string.go (+30/-0)
vendor/github.com/gosnmp/gosnmp/trap.go (+400/-0)
vendor/github.com/gosnmp/gosnmp/trap.md (+100/-0)
vendor/github.com/gosnmp/gosnmp/v3.go (+486/-0)
vendor/github.com/gosnmp/gosnmp/v3_testing_credentials.go (+162/-0)
vendor/github.com/gosnmp/gosnmp/v3_usm.go (+916/-0)
vendor/github.com/gosnmp/gosnmp/walk.go (+115/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/LICENSE.txt (+27/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/internal/BUILD.bazel (+23/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/internal/errors.pb.go (+189/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/internal/errors.proto (+26/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/BUILD.bazel (+85/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go (+291/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go (+318/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/doc.go (+5/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go (+186/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/fieldmask.go (+89/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go (+212/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_httpbodyproto.go (+43/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_json.go (+45/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_jsonpb.go (+262/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_proto.go (+62/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshaler.go (+55/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshaler_registry.go (+99/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go (+300/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go (+262/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto2_convert.go (+80/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go (+106/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go (+406/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/utilities/BUILD.bazel (+21/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/utilities/doc.go (+2/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/utilities/pattern.go (+22/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/utilities/readerfactory.go (+20/-0)
vendor/github.com/grpc-ecosystem/grpc-gateway/utilities/trie.go (+177/-0)
vendor/github.com/hashicorp/go-uuid/uuid.go (+20/-2)
vendor/github.com/jmespath/go-jmespath/.travis.yml (+13/-2)
vendor/github.com/jmespath/go-jmespath/Makefile (+14/-7)
vendor/github.com/jmespath/go-jmespath/go.mod (+1/-1)
vendor/github.com/jmespath/go-jmespath/go.sum (+4/-4)
vendor/github.com/karrick/godirwalk/README.md (+137/-32)
vendor/github.com/karrick/godirwalk/azure-pipelines.yml (+4/-7)
vendor/github.com/karrick/godirwalk/bench.sh (+7/-0)
vendor/github.com/karrick/godirwalk/dirent.go (+38/-24)
vendor/github.com/karrick/godirwalk/doc.go (+7/-2)
vendor/github.com/karrick/godirwalk/go.mod (+2/-0)
vendor/github.com/karrick/godirwalk/inoWithIno.go (+0/-1)
vendor/github.com/karrick/godirwalk/readdir.go (+14/-34)
vendor/github.com/karrick/godirwalk/readdir_unix.go (+131/-0)
vendor/github.com/karrick/godirwalk/readdir_windows.go (+66/-0)
vendor/github.com/karrick/godirwalk/reclenFromNamlen.go (+9/-0)
vendor/github.com/karrick/godirwalk/reclenFromReclen.go (+9/-0)
vendor/github.com/karrick/godirwalk/scandir_unix.go (+71/-45)
vendor/github.com/karrick/godirwalk/scandir_windows.go (+65/-24)
vendor/github.com/karrick/godirwalk/scanner.go (+2/-2)
vendor/github.com/karrick/godirwalk/walk.go (+98/-35)
vendor/github.com/klauspost/compress/fse/bitreader.go (+21/-6)
vendor/github.com/klauspost/compress/fse/bytereader.go (+2/-11)
vendor/github.com/klauspost/compress/fse/fse.go (+19/-18)
vendor/github.com/klauspost/compress/huff0/README.md (+3/-3)
vendor/github.com/klauspost/compress/huff0/bitreader.go (+235/-21)
vendor/github.com/klauspost/compress/huff0/bitwriter.go (+25/-1)
vendor/github.com/klauspost/compress/huff0/compress.go (+55/-25)
vendor/github.com/klauspost/compress/huff0/decompress.go (+852/-111)
vendor/github.com/klauspost/compress/huff0/huff0.go (+24/-9)
vendor/github.com/klauspost/compress/zstd/README.md (+149/-128)
vendor/github.com/klauspost/compress/zstd/bitreader.go (+20/-5)
vendor/github.com/klauspost/compress/zstd/blockdec.go (+52/-25)
vendor/github.com/klauspost/compress/zstd/blockenc.go (+70/-44)
vendor/github.com/klauspost/compress/zstd/bytebuf.go (+2/-2)
vendor/github.com/klauspost/compress/zstd/bytereader.go (+16/-2)
vendor/github.com/klauspost/compress/zstd/decoder.go (+77/-15)
vendor/github.com/klauspost/compress/zstd/decoder_options.go (+16/-0)
vendor/github.com/klauspost/compress/zstd/dict.go (+122/-0)
vendor/github.com/klauspost/compress/zstd/enc_base.go (+155/-0)
vendor/github.com/klauspost/compress/zstd/enc_better.go (+595/-0)
vendor/github.com/klauspost/compress/zstd/enc_dfast.go (+342/-42)
vendor/github.com/klauspost/compress/zstd/enc_fast.go (+380/-130)
vendor/github.com/klauspost/compress/zstd/encoder.go (+120/-54)
vendor/github.com/klauspost/compress/zstd/encoder_options.go (+80/-19)
vendor/github.com/klauspost/compress/zstd/framedec.go (+32/-26)
vendor/github.com/klauspost/compress/zstd/frameenc.go (+24/-2)
vendor/github.com/klauspost/compress/zstd/fse_decoder.go (+12/-11)
vendor/github.com/klauspost/compress/zstd/fse_encoder.go (+4/-4)
vendor/github.com/klauspost/compress/zstd/history.go (+17/-1)
vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s (+4/-4)
vendor/github.com/klauspost/compress/zstd/seqdec.go (+113/-30)
vendor/github.com/klauspost/compress/zstd/snappy.go (+4/-4)
vendor/github.com/klauspost/compress/zstd/zstd.go (+25/-17)
vendor/github.com/kr/pretty/.gitignore (+4/-0)
vendor/github.com/kr/pretty/License (+19/-0)
vendor/github.com/kr/pretty/Readme (+9/-0)
vendor/github.com/kr/pretty/diff.go (+265/-0)
vendor/github.com/kr/pretty/formatter.go (+327/-0)
vendor/github.com/kr/pretty/go.mod (+5/-0)
vendor/github.com/kr/pretty/go.sum (+3/-0)
vendor/github.com/kr/pretty/pretty.go (+108/-0)
vendor/github.com/kr/pretty/zero.go (+41/-0)
vendor/github.com/kr/text/License (+19/-0)
vendor/github.com/kr/text/Readme (+3/-0)
vendor/github.com/kr/text/doc.go (+3/-0)
vendor/github.com/kr/text/go.mod (+3/-0)
vendor/github.com/kr/text/indent.go (+74/-0)
vendor/github.com/kr/text/wrap.go (+86/-0)
vendor/github.com/mattn/go-isatty/.travis.yml (+14/-0)
vendor/github.com/mattn/go-isatty/LICENSE (+9/-0)
vendor/github.com/mattn/go-isatty/README.md (+50/-0)
vendor/github.com/mattn/go-isatty/doc.go (+2/-0)
vendor/github.com/mattn/go-isatty/go.mod (+5/-0)
vendor/github.com/mattn/go-isatty/go.sum (+2/-0)
vendor/github.com/mattn/go-isatty/go.test.sh (+12/-0)
vendor/github.com/mattn/go-isatty/isatty_bsd.go (+18/-0)
vendor/github.com/mattn/go-isatty/isatty_others.go (+15/-0)
vendor/github.com/mattn/go-isatty/isatty_plan9.go (+22/-0)
vendor/github.com/mattn/go-isatty/isatty_solaris.go (+22/-0)
vendor/github.com/mattn/go-isatty/isatty_tcgets.go (+18/-0)
vendor/github.com/mattn/go-isatty/isatty_windows.go (+125/-0)
vendor/github.com/mattn/go-isatty/renovate.json (+8/-0)
vendor/github.com/mdlayher/apcupsd/LICENSE.md (+2/-3)
vendor/github.com/mdlayher/apcupsd/README.md (+1/-2)
vendor/github.com/mdlayher/apcupsd/client.go (+23/-33)
vendor/github.com/mdlayher/apcupsd/go.mod (+3/-1)
vendor/github.com/mdlayher/apcupsd/go.sum (+4/-0)
vendor/github.com/mdlayher/apcupsd/nis.go (+4/-4)
vendor/github.com/mdlayher/apcupsd/status.go (+34/-51)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/internal/json_writer.go (+6/-0)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/README.md (+11/-1)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/config.go (+35/-4)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/events.go (+82/-0)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/harvester.go (+53/-9)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/metrics.go (+25/-4)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/request.go (+3/-1)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/spans.go (+25/-1)
vendor/github.com/newrelic/newrelic-telemetry-sdk-go/telemetry/utilities.go (+12/-1)
vendor/github.com/nsqio/go-nsq/.travis.yml (+8/-15)
vendor/github.com/nsqio/go-nsq/conn.go (+10/-10)
vendor/github.com/nsqio/go-nsq/consumer.go (+14/-20)
vendor/github.com/nsqio/go-nsq/doc.go (+74/-0)
vendor/github.com/nsqio/go-nsq/go.mod (+5/-0)
vendor/github.com/nsqio/go-nsq/go.sum (+2/-0)
vendor/github.com/nsqio/go-nsq/protocol.go (+4/-0)
vendor/github.com/nsqio/go-nsq/travis.sh (+10/-0)
vendor/github.com/nsqio/go-nsq/version.go (+1/-5)
vendor/github.com/pierrec/lz4/README.md (+5/-20)
vendor/github.com/pierrec/lz4/block.go (+51/-25)
vendor/github.com/pierrec/lz4/decode_other.go (+8/-2)
vendor/github.com/pierrec/lz4/errors.go (+2/-0)
vendor/github.com/pierrec/lz4/lz4.go (+55/-8)
vendor/github.com/pierrec/lz4/reader.go (+30/-2)
vendor/github.com/pierrec/lz4/writer.go (+162/-27)
vendor/github.com/prometheus/prometheus/LICENSE (+201/-0)
vendor/github.com/prometheus/prometheus/NOTICE (+87/-0)
vendor/github.com/prometheus/prometheus/prompb/README.md (+14/-0)
vendor/github.com/prometheus/prometheus/prompb/remote.pb.go (+1048/-0)
vendor/github.com/prometheus/prometheus/prompb/remote.proto (+44/-0)
vendor/github.com/prometheus/prometheus/prompb/rpc.pb.go (+1073/-0)
vendor/github.com/prometheus/prometheus/prompb/rpc.pb.gw.go (+212/-0)
vendor/github.com/prometheus/prometheus/prompb/rpc.proto (+76/-0)
vendor/github.com/prometheus/prometheus/prompb/types.pb.go (+1334/-0)
vendor/github.com/prometheus/prometheus/prompb/types.proto (+58/-0)
vendor/github.com/rcrowley/go-metrics/.travis.yml (+12/-7)
vendor/github.com/rcrowley/go-metrics/README.md (+3/-0)
vendor/github.com/rcrowley/go-metrics/debug.go (+17/-13)
vendor/github.com/rcrowley/go-metrics/log.go (+22/-2)
vendor/github.com/rcrowley/go-metrics/registry.go (+17/-7)
vendor/github.com/rcrowley/go-metrics/runtime.go (+67/-63)
vendor/github.com/riemann/riemann-go-client/.gitignore (+3/-0)
vendor/github.com/riemann/riemann-go-client/.travis.yml (+16/-0)
vendor/github.com/riemann/riemann-go-client/CHANGELOG.md (+40/-0)
vendor/github.com/riemann/riemann-go-client/LICENSE (+21/-0)
vendor/github.com/riemann/riemann-go-client/Make.protobuf (+2/-0)
vendor/github.com/riemann/riemann-go-client/Makefile (+31/-0)
vendor/github.com/riemann/riemann-go-client/README.md (+154/-0)
vendor/github.com/riemann/riemann-go-client/client.go (+63/-0)
vendor/github.com/riemann/riemann-go-client/event.go (+18/-0)
vendor/github.com/riemann/riemann-go-client/go.mod (+8/-0)
vendor/github.com/riemann/riemann-go-client/go.sum (+8/-0)
vendor/github.com/riemann/riemann-go-client/integration.sh (+28/-0)
vendor/github.com/riemann/riemann-go-client/marshal.go (+134/-0)
vendor/github.com/riemann/riemann-go-client/proto/Makefile (+7/-0)
vendor/github.com/riemann/riemann-go-client/proto/proto.pb.go (+337/-0)
vendor/github.com/riemann/riemann-go-client/proto/proto.proto (+43/-0)
vendor/github.com/riemann/riemann-go-client/tcp.go (+201/-0)
vendor/github.com/riemann/riemann-go-client/udp.go (+101/-0)
vendor/github.com/shirou/gopsutil/cpu/cpu.go (+3/-1)
vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly.go (+161/-0)
vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly_amd64.go (+9/-0)
vendor/github.com/shirou/gopsutil/cpu/cpu_fallback.go (+1/-1)
vendor/github.com/shirou/gopsutil/cpu/cpu_linux.go (+18/-1)
vendor/github.com/shirou/gopsutil/cpu/cpu_openbsd.go (+4/-13)
vendor/github.com/shirou/gopsutil/disk/disk_darwin_cgo.go (+1/-1)
vendor/github.com/shirou/gopsutil/disk/disk_freebsd.go (+4/-4)
vendor/github.com/shirou/gopsutil/disk/disk_openbsd_386.go (+3/-1)
vendor/github.com/shirou/gopsutil/disk/iostat_darwin.c (+1/-1)
vendor/github.com/shirou/gopsutil/host/host.go (+100/-0)
vendor/github.com/shirou/gopsutil/host/host_bsd.go (+36/-0)
vendor/github.com/shirou/gopsutil/host/host_darwin.go (+6/-108)
vendor/github.com/shirou/gopsutil/host/host_darwin_arm64.go (+22/-0)
vendor/github.com/shirou/gopsutil/host/host_darwin_cgo.go (+1/-7)
vendor/github.com/shirou/gopsutil/host/host_darwin_nocgo.go (+0/-4)
vendor/github.com/shirou/gopsutil/host/host_fallback.go (+12/-28)
vendor/github.com/shirou/gopsutil/host/host_freebsd.go (+8/-108)
vendor/github.com/shirou/gopsutil/host/host_linux.go (+10/-89)
vendor/github.com/shirou/gopsutil/host/host_linux_riscv64.go (+47/-0)
vendor/github.com/shirou/gopsutil/host/host_openbsd.go (+6/-105)
vendor/github.com/shirou/gopsutil/host/host_openbsd_386.go (+33/-0)
vendor/github.com/shirou/gopsutil/host/host_posix.go (+1/-1)
vendor/github.com/shirou/gopsutil/host/host_solaris.go (+68/-137)
vendor/github.com/shirou/gopsutil/host/host_windows.go (+13/-98)
vendor/github.com/shirou/gopsutil/host/smc_darwin.c (+170/-0)
vendor/github.com/shirou/gopsutil/host/smc_darwin.h (+32/-0)
vendor/github.com/shirou/gopsutil/internal/common/common.go (+11/-0)
vendor/github.com/shirou/gopsutil/internal/common/common_darwin.go (+2/-2)
vendor/github.com/shirou/gopsutil/internal/common/common_linux.go (+25/-0)
vendor/github.com/shirou/gopsutil/internal/common/sleep.go (+18/-0)
vendor/github.com/shirou/gopsutil/mem/mem.go (+4/-0)
vendor/github.com/shirou/gopsutil/mem/mem_linux.go (+6/-0)
vendor/github.com/shirou/gopsutil/mem/mem_openbsd.go (+6/-25)
vendor/github.com/shirou/gopsutil/mem/mem_openbsd_386.go (+37/-0)
vendor/github.com/shirou/gopsutil/mem/mem_openbsd_amd64.go (+0/-90)
vendor/github.com/shirou/gopsutil/mem/mem_windows.go (+1/-0)
vendor/github.com/shirou/gopsutil/net/net_linux.go (+1/-1)
vendor/github.com/shirou/gopsutil/net/net_windows.go (+2/-3)
vendor/github.com/shirou/gopsutil/process/process.go (+9/-1)
vendor/github.com/shirou/gopsutil/process/process_darwin.go (+15/-1)
vendor/github.com/shirou/gopsutil/process/process_darwin_arm64.go (+205/-0)
vendor/github.com/shirou/gopsutil/process/process_fallback.go (+4/-0)
vendor/github.com/shirou/gopsutil/process/process_freebsd.go (+14/-0)
vendor/github.com/shirou/gopsutil/process/process_linux.go (+23/-4)
vendor/github.com/shirou/gopsutil/process/process_openbsd.go (+8/-0)
vendor/github.com/shirou/gopsutil/process/process_openbsd_386.go (+201/-0)
vendor/github.com/shirou/gopsutil/process/process_windows.go (+47/-13)
vendor/github.com/stretchr/testify/LICENSE (+1/-1)
vendor/github.com/stretchr/testify/assert/assertion_compare.go (+69/-104)
vendor/github.com/stretchr/testify/assert/assertion_format.go (+31/-9)
vendor/github.com/stretchr/testify/assert/assertion_forward.go (+53/-9)
vendor/github.com/stretchr/testify/assert/assertions.go (+130/-61)
vendor/github.com/stretchr/testify/assert/http_assertions.go (+22/-3)
vendor/github.com/stretchr/testify/mock/mock.go (+66/-2)
vendor/github.com/stretchr/testify/require/require.go (+65/-9)
vendor/github.com/stretchr/testify/require/require_forward.go (+53/-9)
vendor/github.com/vjeantet/grok/.gitignore (+2/-0)
vendor/github.com/vjeantet/grok/go.mod (+3/-0)
vendor/github.com/vjeantet/grok/grok.go (+45/-12)
vendor/github.com/vjeantet/grok/patterns.go (+77/-76)
vendor/github.com/xdg/scram/.gitignore (+0/-0)
vendor/github.com/xdg/scram/.travis.yml (+11/-0)
vendor/github.com/xdg/scram/LICENSE (+175/-0)
vendor/github.com/xdg/scram/README.md (+71/-0)
vendor/github.com/xdg/scram/client.go (+130/-0)
vendor/github.com/xdg/scram/client_conv.go (+149/-0)
vendor/github.com/xdg/scram/common.go (+97/-0)
vendor/github.com/xdg/scram/doc.go (+24/-0)
vendor/github.com/xdg/scram/parse.go (+205/-0)
vendor/github.com/xdg/scram/scram.go (+66/-0)
vendor/github.com/xdg/scram/server.go (+50/-0)
vendor/github.com/xdg/scram/server_conv.go (+151/-0)
vendor/github.com/xdg/stringprep/.gitignore (+0/-0)
vendor/github.com/xdg/stringprep/.travis.yml (+10/-0)
vendor/github.com/xdg/stringprep/LICENSE (+175/-0)
vendor/github.com/xdg/stringprep/README.md (+27/-0)
vendor/github.com/xdg/stringprep/bidi.go (+73/-0)
vendor/github.com/xdg/stringprep/doc.go (+10/-0)
vendor/github.com/xdg/stringprep/error.go (+14/-0)
vendor/github.com/xdg/stringprep/map.go (+21/-0)
vendor/github.com/xdg/stringprep/profile.go (+75/-0)
vendor/github.com/xdg/stringprep/saslprep.go (+52/-0)
vendor/github.com/xdg/stringprep/set.go (+36/-0)
vendor/github.com/xdg/stringprep/tables.go (+3215/-0)
vendor/go.starlark.net/resolve/resolve.go (+9/-7)
vendor/go.starlark.net/starlark/eval.go (+52/-2)
vendor/go.starlark.net/starlark/int.go (+98/-89)
vendor/go.starlark.net/starlark/int_generic.go (+33/-0)
vendor/go.starlark.net/starlark/int_posix64.go (+75/-0)
vendor/go.starlark.net/starlark/interp.go (+22/-2)
vendor/go.starlark.net/starlark/library.go (+108/-115)
vendor/go.starlark.net/starlark/unpack.go (+62/-4)
vendor/go.starlark.net/starlark/value.go (+5/-4)
vendor/go.starlark.net/starlarkjson/json.go (+480/-0)
vendor/go.starlark.net/starlarkstruct/module.go (+43/-0)
vendor/go.starlark.net/starlarkstruct/struct.go (+281/-0)
vendor/go.starlark.net/syntax/grammar.txt (+0/-3)
vendor/go.starlark.net/syntax/parse.go (+1/-13)
vendor/go.starlark.net/syntax/quote.go (+8/-24)
vendor/go.starlark.net/syntax/scan.go (+21/-13)
vendor/golang.org/x/crypto/cast5/cast5.go (+533/-0)
vendor/golang.org/x/crypto/openpgp/armor/armor.go (+224/-0)
vendor/golang.org/x/crypto/openpgp/armor/encode.go (+160/-0)
vendor/golang.org/x/crypto/openpgp/canonical_text.go (+59/-0)
vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go (+124/-0)
vendor/golang.org/x/crypto/openpgp/errors/errors.go (+72/-0)
vendor/golang.org/x/crypto/openpgp/keys.go (+693/-0)
vendor/golang.org/x/crypto/openpgp/packet/compressed.go (+123/-0)
vendor/golang.org/x/crypto/openpgp/packet/config.go (+91/-0)
vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go (+208/-0)
vendor/golang.org/x/crypto/openpgp/packet/literal.go (+89/-0)
vendor/golang.org/x/crypto/openpgp/packet/ocfb.go (+143/-0)
vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go (+73/-0)
vendor/golang.org/x/crypto/openpgp/packet/opaque.go (+162/-0)
vendor/golang.org/x/crypto/openpgp/packet/packet.go (+584/-0)
vendor/golang.org/x/crypto/openpgp/packet/private_key.go (+385/-0)
vendor/golang.org/x/crypto/openpgp/packet/public_key.go (+753/-0)
vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go (+279/-0)
vendor/golang.org/x/crypto/openpgp/packet/reader.go (+76/-0)
vendor/golang.org/x/crypto/openpgp/packet/signature.go (+731/-0)
vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go (+146/-0)
vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go (+155/-0)
vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go (+290/-0)
vendor/golang.org/x/crypto/openpgp/packet/userattribute.go (+91/-0)
vendor/golang.org/x/crypto/openpgp/packet/userid.go (+160/-0)
vendor/golang.org/x/crypto/openpgp/read.go (+442/-0)
vendor/golang.org/x/crypto/openpgp/s2k/s2k.go (+273/-0)
vendor/golang.org/x/crypto/openpgp/write.go (+418/-0)
vendor/golang.org/x/crypto/pkcs12/pkcs12.go (+11/-1)
vendor/golang.org/x/net/http2/client_conn_pool.go (+2/-6)
vendor/golang.org/x/net/http2/flow.go (+2/-0)
vendor/golang.org/x/net/http2/hpack/huffman.go (+7/-0)
vendor/golang.org/x/net/http2/http2.go (+7/-0)
vendor/golang.org/x/net/http2/server.go (+12/-7)
vendor/golang.org/x/net/http2/transport.go (+84/-18)
vendor/golang.org/x/net/icmp/interface.go (+1/-1)
vendor/golang.org/x/net/ipv4/header.go (+2/-3)
vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go (+30/-0)
vendor/golang.org/x/sys/unix/README.md (+13/-2)
vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s (+29/-0)
vendor/golang.org/x/sys/unix/errors_freebsd_386.go (+6/-0)
vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go (+6/-0)
vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go (+17/-0)
vendor/golang.org/x/sys/unix/ioctl.go (+9/-0)
vendor/golang.org/x/sys/unix/mkall.sh (+21/-1)
vendor/golang.org/x/sys/unix/mkerrors.sh (+21/-3)
vendor/golang.org/x/sys/unix/syscall_bsd.go (+17/-0)
vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go (+14/-7)
vendor/golang.org/x/sys/unix/syscall_darwin.go (+1/-0)
vendor/golang.org/x/sys/unix/syscall_darwin_386.go (+0/-11)
vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go (+0/-11)
vendor/golang.org/x/sys/unix/syscall_darwin_arm.go (+0/-11)
vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go (+0/-11)
vendor/golang.org/x/sys/unix/syscall_freebsd.go (+0/-4)
vendor/golang.org/x/sys/unix/syscall_freebsd_386.go (+4/-0)
vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go (+4/-0)
vendor/golang.org/x/sys/unix/syscall_illumos.go (+57/-0)
vendor/golang.org/x/sys/unix/syscall_linux.go (+205/-32)
vendor/golang.org/x/sys/unix/syscall_linux_386.go (+1/-1)
vendor/golang.org/x/sys/unix/syscall_linux_amd64.go (+1/-1)
vendor/golang.org/x/sys/unix/syscall_linux_arm.go (+1/-6)
vendor/golang.org/x/sys/unix/syscall_linux_arm64.go (+23/-5)
vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go (+13/-0)
vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go (+5/-6)
vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go (+1/-1)
vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go (+1/-1)
vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go (+4/-4)
vendor/golang.org/x/sys/unix/syscall_linux_s390x.go (+1/-1)
vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go (+1/-1)
vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go (+35/-0)
vendor/golang.org/x/sys/unix/syscall_unix.go (+9/-10)
vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go (+154/-12)
vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go (+152/-12)
vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go (+22/-0)
vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go (+153/-12)
vendor/golang.org/x/sys/unix/zerrors_linux.go (+2476/-0)
vendor/golang.org/x/sys/unix/zerrors_linux_386.go (+468/-2882)
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go (+468/-2882)
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go (+474/-2888)
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go (+462/-2875)
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go (+470/-2884)
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go (+470/-2884)
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go (+470/-2884)
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go (+470/-2884)
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go (+530/-2944)
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go (+530/-2944)
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go (+455/-2869)
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go (+528/-2942)
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go (+519/-2933)
vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go (+6/-0)
vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go (+6/-0)
vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go (+6/-0)
vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go (+6/-0)
vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go (+7/-0)
vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go (+7/-0)
vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go (+7/-0)
vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go (+7/-0)
vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go (+1862/-0)
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go (+10/-12)
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go (+15/-17)
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go (+10/-12)
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go (+15/-17)
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go (+10/-12)
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go (+15/-17)
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go (+10/-12)
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go (+15/-17)
vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go (+26/-26)
vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go (+16/-16)
vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go (+17/-17)
vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go (+87/-0)
vendor/golang.org/x/sys/unix/zsyscall_linux.go (+1917/-0)
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go (+9/-1824)
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go (+7/-1822)
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go (+8/-1823)
vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go (+1692/-0)
vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go (+2/-1)
vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go (+1/-0)
vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go (+1/-0)
vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go (+279/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_386.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go (+3/-0)
vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go (+220/-0)
vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go (+19/-20)
vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go (+10/-14)
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go (+6/-6)
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go (+25/-29)
vendor/golang.org/x/sys/unix/ztypes_linux.go (+2529/-0)
vendor/golang.org/x/sys/unix/ztypes_linux_386.go (+16/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_arm.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_mips.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go (+18/-2220)
vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go (+565/-0)
vendor/golang.org/x/sys/windows/dll_windows.go (+29/-0)
vendor/golang.org/x/sys/windows/env_windows.go (+2/-9)
vendor/golang.org/x/sys/windows/memory_windows.go (+5/-0)
vendor/golang.org/x/sys/windows/security_windows.go (+15/-5)
vendor/golang.org/x/sys/windows/svc/mgr/config.go (+16/-24)
vendor/golang.org/x/sys/windows/svc/mgr/mgr.go (+10/-3)
vendor/golang.org/x/sys/windows/svc/mgr/recovery.go (+9/-3)
vendor/golang.org/x/sys/windows/svc/security.go (+2/-5)
vendor/golang.org/x/sys/windows/svc/service.go (+9/-2)
vendor/golang.org/x/sys/windows/svc/sys_amd64.s (+7/-3)
vendor/golang.org/x/sys/windows/syscall_windows.go (+37/-2)
vendor/golang.org/x/sys/windows/zsyscall_windows.go (+19/-0)
vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go (+148/-0)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/alert.pb.go (+80/-79)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/alert_service.pb.go (+52/-51)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/common.pb.go (+65/-64)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/dropped_labels.pb.go (+5/-4)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/group.pb.go (+34/-29)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/group_service.pb.go (+65/-64)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric.pb.go (+591/-30)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric_service.pb.go (+314/-104)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/mutation_record.pb.go (+18/-17)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/notification.pb.go (+53/-52)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/notification_service.pb.go (+77/-76)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/service.pb.go (+190/-103)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/service_service.pb.go (+105/-96)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/span_context.pb.go (+14/-11)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime.pb.go (+193/-87)
vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime_service.pb.go (+71/-66)
vendor/google.golang.org/genproto/googleapis/pubsub/v1/pubsub.pb.go (+217/-204)
vendor/google.golang.org/grpc/.travis.yml (+8/-8)
vendor/google.golang.org/grpc/CONTRIBUTING.md (+0/-1)
vendor/google.golang.org/grpc/Makefile (+1/-0)
vendor/google.golang.org/grpc/README.md (+65/-61)
vendor/google.golang.org/grpc/attributes/attributes.go (+10/-1)
vendor/google.golang.org/grpc/backoff.go (+4/-1)
vendor/google.golang.org/grpc/balancer/balancer.go (+41/-121)
vendor/google.golang.org/grpc/balancer/base/balancer.go (+46/-91)
vendor/google.golang.org/grpc/balancer/base/base.go (+3/-25)
vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go (+48/-180)
vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go (+129/-0)
vendor/google.golang.org/grpc/balancer/grpclb/grpclb.go (+27/-33)
vendor/google.golang.org/grpc/balancer/grpclb/grpclb_remote_balancer.go (+13/-17)
vendor/google.golang.org/grpc/balancer/grpclb/state/state.go (+51/-0)
vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go (+6/-4)
vendor/google.golang.org/grpc/balancer_conn_wrappers.go (+7/-32)
vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go (+116/-204)
vendor/google.golang.org/grpc/clientconn.go (+104/-66)
vendor/google.golang.org/grpc/codes/codes.go (+46/-0)
vendor/google.golang.org/grpc/connectivity/connectivity.go (+3/-13)
vendor/google.golang.org/grpc/credentials/alts/alts.go (+3/-2)
vendor/google.golang.org/grpc/credentials/alts/internal/authinfo/authinfo.go (+6/-0)
vendor/google.golang.org/grpc/credentials/alts/internal/common.go (+0/-2)
vendor/google.golang.org/grpc/credentials/alts/internal/conn/record.go (+8/-4)
vendor/google.golang.org/grpc/credentials/alts/internal/handshaker/service/service.go (+9/-4)
vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go (+0/-128)
vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker_grpc.pb.go (+141/-0)
vendor/google.golang.org/grpc/credentials/alts/utils.go (+4/-3)
vendor/google.golang.org/grpc/credentials/credentials.go (+45/-11)
vendor/google.golang.org/grpc/credentials/google/google.go (+5/-3)
vendor/google.golang.org/grpc/credentials/oauth/oauth.go (+38/-2)
vendor/google.golang.org/grpc/credentials/tls.go (+47/-39)
vendor/google.golang.org/grpc/dialoptions.go (+81/-37)
vendor/google.golang.org/grpc/doc.go (+2/-0)
vendor/google.golang.org/grpc/encoding/encoding.go (+10/-2)
vendor/google.golang.org/grpc/encoding/gzip/gzip.go (+5/-1)
vendor/google.golang.org/grpc/go.mod (+3/-3)
vendor/google.golang.org/grpc/go.sum (+6/-0)
vendor/google.golang.org/grpc/grpclog/component.go (+117/-0)
vendor/google.golang.org/grpc/grpclog/loggerv2.go (+8/-1)
vendor/google.golang.org/grpc/install_gae.sh (+1/-1)
vendor/google.golang.org/grpc/interceptor.go (+10/-2)
vendor/google.golang.org/grpc/internal/binarylog/binarylog.go (+5/-2)
vendor/google.golang.org/grpc/internal/binarylog/env_config.go (+1/-3)
vendor/google.golang.org/grpc/internal/binarylog/method_logger.go (+7/-8)
vendor/google.golang.org/grpc/internal/binarylog/sink.go (+34/-37)
vendor/google.golang.org/grpc/internal/channelz/funcs.go (+9/-11)
vendor/google.golang.org/grpc/internal/channelz/logging.go (+29/-27)
vendor/google.golang.org/grpc/internal/channelz/types.go (+16/-17)
vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go (+1/-3)
vendor/google.golang.org/grpc/internal/credentials/spiffe.go (+67/-0)
vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go (+9/-19)
vendor/google.golang.org/grpc/internal/credentials/syscallconn.go (+1/-2)
vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go (+1/-1)
vendor/google.golang.org/grpc/internal/credentials/util.go (+24/-18)
vendor/google.golang.org/grpc/internal/envconfig/envconfig.go (+1/-1)
vendor/google.golang.org/grpc/internal/grpclog/grpclog.go (+13/-5)
vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go (+25/-7)
vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go (+63/-0)
vendor/google.golang.org/grpc/internal/grpcutil/metadata.go (+40/-0)
vendor/google.golang.org/grpc/internal/grpcutil/method.go (+84/-0)
vendor/google.golang.org/grpc/internal/internal.go (+14/-5)
vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go (+13/-8)
vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go (+106/-0)
vendor/google.golang.org/grpc/internal/status/status.go (+162/-0)
vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go (+4/-2)
vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go (+4/-1)
vendor/google.golang.org/grpc/internal/transport/controlbuf.go (+46/-30)
vendor/google.golang.org/grpc/internal/transport/handler_server.go (+53/-25)
vendor/google.golang.org/grpc/internal/transport/http2_client.go (+59/-27)
vendor/google.golang.org/grpc/internal/transport/http2_server.go (+48/-33)
vendor/google.golang.org/grpc/internal/transport/http_util.go (+15/-92)
vendor/google.golang.org/grpc/internal/transport/transport.go (+5/-9)
vendor/google.golang.org/grpc/picker_wrapper.go (+12/-64)
vendor/google.golang.org/grpc/pickfirst.go (+14/-37)
vendor/google.golang.org/grpc/preloader.go (+4/-1)
vendor/google.golang.org/grpc/regenerate.sh (+139/-0)
vendor/google.golang.org/grpc/resolver/resolver.go (+9/-2)
vendor/google.golang.org/grpc/resolver_conn_wrapper.go (+8/-8)
vendor/google.golang.org/grpc/rpc_util.go (+91/-42)
vendor/google.golang.org/grpc/server.go (+220/-80)
vendor/google.golang.org/grpc/service_config.go (+76/-56)
vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go (+4/-1)
vendor/google.golang.org/grpc/stats/stats.go (+11/-10)
vendor/google.golang.org/grpc/status/status.go (+9/-110)
vendor/google.golang.org/grpc/stream.go (+47/-24)
vendor/google.golang.org/grpc/tap/tap.go (+6/-1)
vendor/google.golang.org/grpc/version.go (+1/-1)
vendor/google.golang.org/grpc/vet.sh (+66/-33)
vendor/gopkg.in/jcmturner/gokrb5.v7/client/TGSExchange.go (+1/-1)
vendor/gopkg.in/jcmturner/gokrb5.v7/client/client.go (+12/-0)
vendor/gopkg.in/jcmturner/gokrb5.v7/client/passwd.go (+1/-1)
vendor/gopkg.in/jcmturner/gokrb5.v7/client/settings.go (+1/-1)
vendor/gopkg.in/jcmturner/gokrb5.v7/config/hosts.go (+33/-29)
vendor/gopkg.in/jcmturner/gokrb5.v7/credentials/credentials.go (+5/-0)
vendor/gopkg.in/jcmturner/gokrb5.v7/keytab/keytab.go (+121/-24)
vendor/gopkg.in/tomb.v2/LICENSE (+29/-0)
vendor/gopkg.in/tomb.v2/README.md (+4/-0)
vendor/gopkg.in/tomb.v2/context.go (+74/-0)
vendor/gopkg.in/tomb.v2/context16.go (+74/-0)
vendor/gopkg.in/tomb.v2/tomb.go (+237/-0)
vendor/gopkg.in/yaml.v2/.travis.yml (+11/-7)
vendor/gopkg.in/yaml.v2/scannerc.go (+53/-54)
vendor/gopkg.in/yaml.v2/yaml.go (+1/-1)
vendor/gopkg.in/yaml.v2/yamlh.go (+1/-0)
vendor/gopkg.in/yaml.v3/.travis.yml (+17/-0)
vendor/gopkg.in/yaml.v3/LICENSE (+50/-0)
vendor/gopkg.in/yaml.v3/NOTICE (+13/-0)
vendor/gopkg.in/yaml.v3/README.md (+150/-0)
vendor/gopkg.in/yaml.v3/apic.go (+747/-0)
vendor/gopkg.in/yaml.v3/decode.go (+948/-0)
vendor/gopkg.in/yaml.v3/emitterc.go (+2022/-0)
vendor/gopkg.in/yaml.v3/encode.go (+572/-0)
vendor/gopkg.in/yaml.v3/go.mod (+5/-0)
vendor/gopkg.in/yaml.v3/parserc.go (+1249/-0)
vendor/gopkg.in/yaml.v3/readerc.go (+434/-0)
vendor/gopkg.in/yaml.v3/resolve.go (+326/-0)
vendor/gopkg.in/yaml.v3/scannerc.go (+3028/-0)
vendor/gopkg.in/yaml.v3/sorter.go (+134/-0)
vendor/gopkg.in/yaml.v3/writerc.go (+48/-0)
vendor/gopkg.in/yaml.v3/yaml.go (+693/-0)
vendor/gopkg.in/yaml.v3/yamlh.go (+807/-0)
vendor/gopkg.in/yaml.v3/yamlprivateh.go (+198/-0)
vendor/gotest.tools/LICENSE (+13/-0)
vendor/gotest.tools/assert/assert.go (+311/-0)
vendor/gotest.tools/assert/cmp/compare.go (+356/-0)
vendor/gotest.tools/assert/cmp/result.go (+94/-0)
vendor/gotest.tools/assert/result.go (+106/-0)
vendor/gotest.tools/internal/difflib/LICENSE (+27/-0)
vendor/gotest.tools/internal/difflib/difflib.go (+423/-0)
vendor/gotest.tools/internal/format/diff.go (+161/-0)
vendor/gotest.tools/internal/format/format.go (+27/-0)
vendor/gotest.tools/internal/source/defers.go (+53/-0)
vendor/gotest.tools/internal/source/source.go (+166/-0)
vendor/modernc.org/libc/AUTHORS (+13/-0)
vendor/modernc.org/libc/CONTRIBUTORS (+11/-0)
vendor/modernc.org/libc/HACKING (+10/-0)
vendor/modernc.org/libc/LICENSE (+27/-0)
vendor/modernc.org/libc/LICENSE-GO (+27/-0)
vendor/modernc.org/libc/Makefile (+103/-0)
vendor/modernc.org/libc/README.md (+20/-0)
vendor/modernc.org/libc/capi_linux_386.go (+296/-0)
vendor/modernc.org/libc/capi_linux_amd64.go (+296/-0)
vendor/modernc.org/libc/capi_linux_arm.go (+296/-0)
vendor/modernc.org/libc/capi_linux_arm64.go (+296/-0)
vendor/modernc.org/libc/ccgo.go (+1685/-0)
vendor/modernc.org/libc/dmesg.go (+41/-0)
vendor/modernc.org/libc/errno/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/errno/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/errno/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/errno/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/errno/errno_linux_386.go (+176/-0)
vendor/modernc.org/libc/errno/errno_linux_amd64.go (+179/-0)
vendor/modernc.org/libc/errno/errno_linux_arm.go (+175/-0)
vendor/modernc.org/libc/errno/errno_linux_arm64.go (+179/-0)
vendor/modernc.org/libc/etc.go (+749/-0)
vendor/modernc.org/libc/fcntl/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/fcntl/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/fcntl/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/fcntl/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/fcntl/fcntl_linux_386.go (+981/-0)
vendor/modernc.org/libc/fcntl/fcntl_linux_amd64.go (+992/-0)
vendor/modernc.org/libc/fcntl/fcntl_linux_arm.go (+1030/-0)
vendor/modernc.org/libc/fcntl/fcntl_linux_arm64.go (+1056/-0)
vendor/modernc.org/libc/fsync.go (+9/-0)
vendor/modernc.org/libc/fts/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/fts/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/fts/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/fts/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/fts/fts_linux_386.go (+1447/-0)
vendor/modernc.org/libc/fts/fts_linux_amd64.go (+1467/-0)
vendor/modernc.org/libc/fts/fts_linux_arm.go (+1496/-0)
vendor/modernc.org/libc/fts/fts_linux_arm64.go (+1530/-0)
vendor/modernc.org/libc/go.mod (+10/-0)
vendor/modernc.org/libc/go.sum (+13/-0)
vendor/modernc.org/libc/grp/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/grp/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/grp/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/grp/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/grp/grp_linux_386.go (+679/-0)
vendor/modernc.org/libc/grp/grp_linux_amd64.go (+693/-0)
vendor/modernc.org/libc/grp/grp_linux_arm.go (+722/-0)
vendor/modernc.org/libc/grp/grp_linux_arm64.go (+742/-0)
vendor/modernc.org/libc/honnef.co/go/netdb/LICENSE (+20/-0)
vendor/modernc.org/libc/honnef.co/go/netdb/README.md (+12/-0)
vendor/modernc.org/libc/honnef.co/go/netdb/netdb.go (+859/-0)
vendor/modernc.org/libc/ioutil_linux.go (+69/-0)
vendor/modernc.org/libc/langinfo/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/langinfo/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/langinfo/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/langinfo/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/langinfo/langinfo_linux_386.go (+1005/-0)
vendor/modernc.org/libc/langinfo/langinfo_linux_amd64.go (+1009/-0)
vendor/modernc.org/libc/langinfo/langinfo_linux_arm.go (+1035/-0)
vendor/modernc.org/libc/langinfo/langinfo_linux_arm64.go (+1044/-0)
vendor/modernc.org/libc/libc.go (+869/-0)
vendor/modernc.org/libc/libc32.go (+17/-0)
vendor/modernc.org/libc/libc64.go (+17/-0)
vendor/modernc.org/libc/libc_linux.go (+1531/-0)
vendor/modernc.org/libc/libc_linux_386.go (+425/-0)
vendor/modernc.org/libc/libc_linux_amd64.go (+424/-0)
vendor/modernc.org/libc/libc_linux_arm.go (+405/-0)
vendor/modernc.org/libc/libc_linux_arm64.go (+405/-0)
vendor/modernc.org/libc/limits/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/limits/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/limits/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/limits/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/limits/limits_linux_386.go (+921/-0)
vendor/modernc.org/libc/limits/limits_linux_amd64.go (+929/-0)
vendor/modernc.org/libc/limits/limits_linux_arm.go (+981/-0)
vendor/modernc.org/libc/limits/limits_linux_arm64.go (+996/-0)
vendor/modernc.org/libc/musl_linux_386.go (+3119/-0)
vendor/modernc.org/libc/musl_linux_amd64.go (+3180/-0)
vendor/modernc.org/libc/musl_linux_arm.go (+3123/-0)
vendor/modernc.org/libc/musl_linux_arm64.go (+3180/-0)
vendor/modernc.org/libc/netdb/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/netdb/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/netdb/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/netdb/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/netdb/netdb_linux_386.go (+2766/-0)
vendor/modernc.org/libc/netdb/netdb_linux_amd64.go (+2789/-0)
vendor/modernc.org/libc/netdb/netdb_linux_arm.go (+2813/-0)
vendor/modernc.org/libc/netdb/netdb_linux_arm64.go (+2850/-0)
vendor/modernc.org/libc/netinet/in/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/netinet/in/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/netinet/in/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/netinet/in/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/netinet/in/in_linux_386.go (+2466/-0)
vendor/modernc.org/libc/netinet/in/in_linux_amd64.go (+2485/-0)
vendor/modernc.org/libc/netinet/in/in_linux_arm.go (+2513/-0)
vendor/modernc.org/libc/netinet/in/in_linux_arm64.go (+2546/-0)
vendor/modernc.org/libc/nodmesg.go (+11/-0)
vendor/modernc.org/libc/nofsync.go (+9/-0)
vendor/modernc.org/libc/printf.go (+522/-0)
vendor/modernc.org/libc/pwd/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/pwd/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/pwd/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/pwd/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/pwd/pwd_linux_386.go (+685/-0)
vendor/modernc.org/libc/pwd/pwd_linux_amd64.go (+698/-0)
vendor/modernc.org/libc/pwd/pwd_linux_arm.go (+728/-0)
vendor/modernc.org/libc/pwd/pwd_linux_arm64.go (+747/-0)
vendor/modernc.org/libc/scanf.go (+443/-0)
vendor/modernc.org/libc/signal/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/signal/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/signal/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/signal/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/signal/more_linux_386.go (+12/-0)
vendor/modernc.org/libc/signal/more_linux_amd64.go (+12/-0)
vendor/modernc.org/libc/signal/more_linux_arm.go (+12/-0)
vendor/modernc.org/libc/signal/more_linux_arm64.go (+12/-0)
vendor/modernc.org/libc/signal/signal_linux_386.go (+1921/-0)
vendor/modernc.org/libc/signal/signal_linux_amd64.go (+1935/-0)
vendor/modernc.org/libc/signal/signal_linux_arm.go (+1782/-0)
vendor/modernc.org/libc/signal/signal_linux_arm64.go (+2926/-0)
vendor/modernc.org/libc/stdio/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/stdio/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/stdio/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/stdio/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/stdio/stdio_linux_386.go (+521/-0)
vendor/modernc.org/libc/stdio/stdio_linux_amd64.go (+535/-0)
vendor/modernc.org/libc/stdio/stdio_linux_arm.go (+534/-0)
vendor/modernc.org/libc/stdio/stdio_linux_arm64.go (+549/-0)
vendor/modernc.org/libc/sys/socket/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/sys/socket/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/sys/socket/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/sys/socket/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/sys/socket/socket_linux_386.go (+1573/-0)
vendor/modernc.org/libc/sys/socket/socket_linux_amd64.go (+1588/-0)
vendor/modernc.org/libc/sys/socket/socket_linux_arm.go (+1589/-0)
vendor/modernc.org/libc/sys/socket/socket_linux_arm64.go (+1614/-0)
vendor/modernc.org/libc/sys/stat/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/sys/stat/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/sys/stat/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/sys/stat/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/sys/stat/stat_linux_386.go (+834/-0)
vendor/modernc.org/libc/sys/stat/stat_linux_amd64.go (+840/-0)
vendor/modernc.org/libc/sys/stat/stat_linux_arm.go (+879/-0)
vendor/modernc.org/libc/sys/stat/stat_linux_arm64.go (+905/-0)
vendor/modernc.org/libc/sys/types/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/sys/types/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/sys/types/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/sys/types/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/sys/types/types_linux_386.go (+1271/-0)
vendor/modernc.org/libc/sys/types/types_linux_amd64.go (+1285/-0)
vendor/modernc.org/libc/sys/types/types_linux_arm.go (+1318/-0)
vendor/modernc.org/libc/sys/types/types_linux_arm64.go (+1346/-0)
vendor/modernc.org/libc/termios/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/termios/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/termios/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/termios/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/termios/termios_linux_386.go (+893/-0)
vendor/modernc.org/libc/termios/termios_linux_amd64.go (+906/-0)
vendor/modernc.org/libc/termios/termios_linux_arm.go (+936/-0)
vendor/modernc.org/libc/termios/termios_linux_arm64.go (+955/-0)
vendor/modernc.org/libc/time/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/time/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/time/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/time/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/time/time_linux_386.go (+577/-0)
vendor/modernc.org/libc/time/time_linux_amd64.go (+590/-0)
vendor/modernc.org/libc/time/time_linux_arm.go (+589/-0)
vendor/modernc.org/libc/time/time_linux_arm64.go (+604/-0)
vendor/modernc.org/libc/unistd/capi_linux_386.go (+5/-0)
vendor/modernc.org/libc/unistd/capi_linux_amd64.go (+5/-0)
vendor/modernc.org/libc/unistd/capi_linux_arm.go (+5/-0)
vendor/modernc.org/libc/unistd/capi_linux_arm64.go (+5/-0)
vendor/modernc.org/libc/unistd/unistd_linux_386.go (+1464/-0)
vendor/modernc.org/libc/unistd/unistd_linux_amd64.go (+1476/-0)
vendor/modernc.org/libc/unistd/unistd_linux_arm.go (+1520/-0)
vendor/modernc.org/libc/unistd/unistd_linux_arm64.go (+1537/-0)
vendor/modernc.org/memory/AUTHORS (+12/-0)
vendor/modernc.org/memory/CONTRIBUTORS (+10/-0)
vendor/modernc.org/memory/LICENSE (+27/-0)
vendor/modernc.org/memory/LICENSE-MMAP-GO (+25/-0)
vendor/modernc.org/memory/Makefile (+62/-0)
vendor/modernc.org/memory/README.md (+9/-0)
vendor/modernc.org/memory/counters.go (+9/-0)
vendor/modernc.org/memory/go.mod (+5/-0)
vendor/modernc.org/memory/go.sum (+4/-0)
vendor/modernc.org/memory/memory.go (+505/-0)
vendor/modernc.org/memory/memory32.go (+9/-0)
vendor/modernc.org/memory/memory64.go (+9/-0)
vendor/modernc.org/memory/mmap_unix.go (+69/-0)
vendor/modernc.org/memory/mmap_windows.go (+46/-0)
vendor/modernc.org/memory/nocounters.go (+9/-0)
vendor/modernc.org/memory/trace_disabled.go (+9/-0)
vendor/modernc.org/memory/trace_enabled.go (+9/-0)
vendor/modernc.org/sqlite/AUTHORS (+13/-0)
vendor/modernc.org/sqlite/CONTRIBUTORS (+13/-0)
vendor/modernc.org/sqlite/LICENSE (+26/-0)
vendor/modernc.org/sqlite/Makefile (+132/-0)
vendor/modernc.org/sqlite/README.md (+9/-0)
vendor/modernc.org/sqlite/SQLITE-LICENSE (+25/-0)
vendor/modernc.org/sqlite/doc.go (+124/-0)
vendor/modernc.org/sqlite/go.mod (+9/-0)
vendor/modernc.org/sqlite/go.sum (+19/-0)
vendor/modernc.org/sqlite/lib/capi_linux_386.go (+1278/-0)
vendor/modernc.org/sqlite/lib/capi_linux_amd64.go (+1278/-0)
vendor/modernc.org/sqlite/lib/capi_linux_arm.go (+1278/-0)
vendor/modernc.org/sqlite/lib/capi_linux_arm64.go (+1278/-0)
vendor/modernc.org/sqlite/lib/hooks.go (+14/-0)
vendor/modernc.org/sqlite/lib/sqlite_linux_386.go (+183492/-0)
vendor/modernc.org/sqlite/lib/sqlite_linux_amd64.go (+183702/-0)
vendor/modernc.org/sqlite/lib/sqlite_linux_arm.go (+183693/-0)
vendor/modernc.org/sqlite/lib/sqlite_linux_arm64.go (+183876/-0)
vendor/modernc.org/sqlite/mutex.go (+315/-0)
vendor/modernc.org/sqlite/sqlite.go (+1251/-0)
vendor/modernc.org/sqlite/sqlite_go18.go (+48/-0)
vendor/modernc.org/sqlite/unconvert.sh (+4/-0)
vendor/modules.txt (+298/-35)
Conflict in .gitignore
Conflict in CHANGELOG.md
Conflict in CONTRIBUTING.md
Conflict in EXTERNAL_PLUGINS.md
Conflict in Makefile
Conflict in config/config.go
Conflict in debian/changelog
Conflict in docs/CONFIGURATION.md
Conflict in docs/EXTERNAL_PLUGINS.md
Conflict in etc/telegraf.conf
Conflict in plugins/common/shim/config_test.go
Conflict in plugins/inputs/influxdb/README.md
Conflict in plugins/inputs/modbus/README.md
Conflict in plugins/inputs/modbus/modbus.go
Conflict in plugins/inputs/sqlserver/sqlserver.go
Conflict in plugins/processors/starlark/README.md
Conflict in plugins/processors/starlark/starlark_test.go
Conflict in scripts/alpine.docker
Conflict in scripts/stretch.docker
Reviewer Review Type Date Requested Status
Bryce Harrington Pending
Canonical Server Pending
Review via email: mp+398401@code.launchpad.net

Description of the change

Fix for bug 1916305.

In a nutshell: after installing telegraf, it will always try to connect to an influxdb instance. This is because of the default configuration file shipped with it. When it fails, it generated *a lot* of pollution in the log files. Since we might not always have such an instance in the system, it makes sense to disable this by default. And given that, by design, telegraf must always have at least one output configured, this MP enables the prometheus_client output, which should be harmless and is actually a good thing to allow the user to verify whether things are running OK.

There's a build with the proposed change here:

https://launchpad.net/~sergiodj/+archive/ubuntu/telegraf-merge

To post a comment you must log in.

Unmerged commits

1f84544... by Sergio Durigan Junior

Update changelog for 1.17.2+ds1-0ubuntu2 release

d5fd29c... by Sergio Durigan Junior

d/p/adjust-etc-telegraf.conf.patch: Adjust /etc/telegraf.conf.

We have to adjust /etc/telegraf.conf in order to prevent it to try to
connect to an influxdb instance, which might not be present in the
system. Since we still need to define an output in the config file,

LP: #1916305

f137011... by Sergio Durigan Junior

Update changelog for 1.17.2+ds1-0ubuntu1 release

2a96daf... by Sergio Durigan Junior

d/p/use-mod-vendor-on-leofs-test.patch: Remove patch.

Upstream has changed the way leofs works, and it's not invoking "go"
directly anymore. For this reason, there is no more need to make sure
"go" was invoked with "-mod=vendor".

ba8445b... by Sergio Durigan Junior

Update upstream source from tag 'upstream/1.17.2+ds1'

Update to upstream version '1.17.2+ds1'
with Debian dir e013ced513190d8ffc298a1e79126b8d3c70a424

a5a4b1c... by Sergio Durigan Junior

New upstream version 1.17.2+ds1

57c734e... by Sergio Durigan Junior

d/repack-telegraf-with-vendor.sh: Allow user to specify the Go binary.

Signed-off-by: Sergio Durigan Junior <email address hidden>

32ea982... by Sergio Durigan Junior

d/repack-telegraf-with-vendor.sh: Fix "trap" instruction.

Signed-off-by: Sergio Durigan Junior <email address hidden>

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.circleci/config.yml b/.circleci/config.yml
2index dad9a5e..5e44cfe 100644
3--- a/.circleci/config.yml
4+++ b/.circleci/config.yml
5@@ -1,27 +1,72 @@
6----
7-defaults:
8- defaults: &defaults
9+version: 2.1
10+
11+executors:
12+ go-1_14:
13 working_directory: '/go/src/github.com/influxdata/telegraf'
14+ docker:
15+ - image: 'quay.io/influxdb/telegraf-ci:1.14.9'
16 environment:
17 GOFLAGS: -p=8
18- go-1_13: &go-1_13
19- docker:
20- - image: 'quay.io/influxdb/telegraf-ci:1.13.13'
21- go-1_14: &go-1_14
22+ go-1_15:
23+ working_directory: '/go/src/github.com/influxdata/telegraf'
24 docker:
25- - image: 'quay.io/influxdb/telegraf-ci:1.14.5'
26- mac: &mac
27+ - image: 'quay.io/influxdb/telegraf-ci:1.15.5'
28+ environment:
29+ GOFLAGS: -p=8
30+ mac:
31 macos:
32- xcode: 11.3.1
33+ xcode: 12.1.0
34 working_directory: '~/go/src/github.com/influxdata/telegraf'
35 environment:
36 HOMEBREW_NO_AUTO_UPDATE: 1
37 GOFLAGS: -p=8
38
39-version: 2
40+commands:
41+ test-go:
42+ parameters:
43+ goarch:
44+ type: string
45+ default: "amd64"
46+ steps:
47+ - checkout
48+ - attach_workspace:
49+ at: '/go'
50+ - run: 'GOARCH=<< parameters.goarch >> make'
51+ - run: 'GOARCH=<< parameters.goarch >> make check'
52+ - run: 'GOARCH=<< parameters.goarch >> make check-deps'
53+ - run: 'GOARCH=<< parameters.goarch >> make test'
54+ test-go-mac:
55+ steps:
56+ - checkout
57+ - attach_workspace:
58+ at: '/'
59+ - run: 'make'
60+ - run: 'make check'
61+ - run: 'make test'
62+ package:
63+ parameters:
64+ nightly:
65+ type: boolean
66+ default: false
67+ steps:
68+ - checkout
69+ - attach_workspace:
70+ at: '/go'
71+ - when:
72+ condition: << parameters.nightly >>
73+ steps:
74+ - run: 'NIGHTLY=1 make package'
75+ - run: 'make upload-nightly'
76+ - unless:
77+ condition: << parameters.nightly >>
78+ steps:
79+ - run: 'make package'
80+ - store_artifacts:
81+ path: './build/dist'
82+ destination: 'build/dist'
83 jobs:
84 deps:
85- <<: [ *defaults, *go-1_14 ]
86+ executor: go-1_15
87 steps:
88 - checkout
89 - restore_cache:
90@@ -38,17 +83,17 @@ jobs:
91 paths:
92 - '*'
93 macdeps:
94- <<: [ *mac ]
95+ executor: mac
96 steps:
97 - checkout
98 - restore_cache:
99- key: mac-go-mod-v1-{{ checksum "go.sum" }}
100+ key: mac-go-mod-v2-{{ checksum "go.sum" }}
101 - run: 'brew install go' # latest
102 - run: 'make deps'
103 - run: 'make tidy'
104 - save_cache:
105 name: 'go module cache'
106- key: mac-go-mod-v1-{{ checksum "go.sum" }}
107+ key: mac-go-mod-v2-{{ checksum "go.sum" }}
108 paths:
109 - '~/go/pkg/mod'
110 - '/usr/local/Cellar/go'
111@@ -62,75 +107,42 @@ jobs:
112 - 'usr/local/bin/gofmt'
113 - 'Users/distiller/go'
114
115- test-go-1.13:
116- <<: [ *defaults, *go-1_13 ]
117+ test-go-1_14:
118+ executor: go-1_14
119 steps:
120- - attach_workspace:
121- at: '/go'
122- - run: 'make'
123- - run: 'make test'
124- test-go-1.13-386:
125- <<: [ *defaults, *go-1_13 ]
126+ - test-go
127+ test-go-1_14-386:
128+ executor: go-1_14
129 steps:
130- - attach_workspace:
131- at: '/go'
132- - run: 'GOARCH=386 make'
133- - run: 'GOARCH=386 make test'
134- test-go-1.14:
135- <<: [ *defaults, *go-1_14 ]
136+ - test-go:
137+ goarch: "386"
138+ test-go-1_15:
139+ executor: go-1_15
140 steps:
141- - attach_workspace:
142- at: '/go'
143- - run: 'make'
144- - run: 'make check'
145- - run: 'make check-deps'
146- - run: 'make test'
147- test-go-1.14-386:
148- <<: [ *defaults, *go-1_14 ]
149+ - test-go
150+ test-go-1_15-386:
151+ executor: go-1_15
152 steps:
153- - attach_workspace:
154- at: '/go'
155- - run: 'GOARCH=386 make'
156- - run: 'GOARCH=386 make check'
157- - run: 'GOARCH=386 make test'
158+ - test-go:
159+ goarch: "386"
160 test-go-darwin:
161- <<: [ *mac ]
162+ executor: mac
163 steps:
164- - attach_workspace:
165- at: '/'
166- - run: 'make'
167- - run: 'make check'
168- - run: 'make test'
169+ - test-go-mac
170
171 package:
172- <<: [ *defaults, *go-1_14 ]
173+ executor: go-1_15
174 steps:
175- - attach_workspace:
176- at: '/go'
177- - run: 'make package'
178- - store_artifacts:
179- path: './build/dist'
180- destination: 'build/dist'
181-
182+ - package
183 release:
184- <<: [ *defaults, *go-1_14 ]
185+ executor: go-1_15
186 steps:
187- - attach_workspace:
188- at: '/go'
189- - run: 'make package'
190- - store_artifacts:
191- path: './build/dist'
192- destination: 'build/dist'
193+ - package
194 nightly:
195- <<: [ *defaults, *go-1_14 ]
196+ executor: go-1_15
197 steps:
198- - attach_workspace:
199- at: '/go'
200- - run: 'NIGHTLY=1 make package'
201- - run: 'make upload-nightly'
202- - store_artifacts:
203- path: './build/dist'
204- destination: 'build/dist'
205+ - package:
206+ nightly: true
207
208 workflows:
209 version: 2
210@@ -144,25 +156,25 @@ workflows:
211 filters:
212 tags:
213 only: /.*/
214- - 'test-go-1.13':
215+ - 'test-go-1_14':
216 requires:
217 - 'deps'
218 filters:
219 tags:
220 only: /.*/
221- - 'test-go-1.13-386':
222+ - 'test-go-1_14-386':
223 requires:
224 - 'deps'
225 filters:
226 tags:
227 only: /.*/
228- - 'test-go-1.14':
229+ - 'test-go-1_15':
230 requires:
231 - 'deps'
232 filters:
233 tags:
234 only: /.*/
235- - 'test-go-1.14-386':
236+ - 'test-go-1_15-386':
237 requires:
238 - 'deps'
239 filters:
240@@ -177,17 +189,17 @@ workflows:
241 - 'package':
242 requires:
243 - 'test-go-darwin'
244- - 'test-go-1.13'
245- - 'test-go-1.13-386'
246- - 'test-go-1.14'
247- - 'test-go-1.14-386'
248+ - 'test-go-1_14'
249+ - 'test-go-1_14-386'
250+ - 'test-go-1_15'
251+ - 'test-go-1_15-386'
252 - 'release':
253 requires:
254 - 'test-go-darwin'
255- - 'test-go-1.13'
256- - 'test-go-1.13-386'
257- - 'test-go-1.14'
258- - 'test-go-1.14-386'
259+ - 'test-go-1_14'
260+ - 'test-go-1_14-386'
261+ - 'test-go-1_15'
262+ - 'test-go-1_15-386'
263 filters:
264 tags:
265 only: /.*/
266@@ -197,16 +209,16 @@ workflows:
267 jobs:
268 - 'deps'
269 - 'macdeps'
270- - 'test-go-1.13':
271+ - 'test-go-1_14':
272 requires:
273 - 'deps'
274- - 'test-go-1.13-386':
275+ - 'test-go-1_14-386':
276 requires:
277 - 'deps'
278- - 'test-go-1.14':
279+ - 'test-go-1_15':
280 requires:
281 - 'deps'
282- - 'test-go-1.14-386':
283+ - 'test-go-1_15-386':
284 requires:
285 - 'deps'
286 - 'test-go-darwin':
287@@ -215,10 +227,10 @@ workflows:
288 - 'nightly':
289 requires:
290 - 'test-go-darwin'
291- - 'test-go-1.13'
292- - 'test-go-1.13-386'
293- - 'test-go-1.14'
294- - 'test-go-1.14-386'
295+ - 'test-go-1_14'
296+ - 'test-go-1_14-386'
297+ - 'test-go-1_15'
298+ - 'test-go-1_15-386'
299 triggers:
300 - schedule:
301 cron: "0 7 * * *"
302diff --git a/.gitattributes b/.gitattributes
303index 21bc439..7769daa 100644
304--- a/.gitattributes
305+++ b/.gitattributes
306@@ -3,3 +3,4 @@ README.md merge=union
307 go.sum merge=union
308 plugins/inputs/all/all.go merge=union
309 plugins/outputs/all/all.go merge=union
310+**/testdata/** test eol=lf
311diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
312index e03395f..28c6237 100644
313--- a/.github/ISSUE_TEMPLATE/Bug_report.md
314+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
315@@ -1,5 +1,6 @@
316 ---
317 name: Bug report
318+labels: bug
319 about: Create a report to help us improve
320
321 ---
322diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md
323index 20aba04..00eb152 100644
324--- a/.github/ISSUE_TEMPLATE/Feature_request.md
325+++ b/.github/ISSUE_TEMPLATE/Feature_request.md
326@@ -1,5 +1,6 @@
327 ---
328 name: Feature request
329+labels: feature request
330 about: Suggest an idea for this project
331
332 ---
333diff --git a/.github/ISSUE_TEMPLATE/Support.md b/.github/ISSUE_TEMPLATE/Support.md
334new file mode 100644
335index 0000000..d150dbf
336--- /dev/null
337+++ b/.github/ISSUE_TEMPLATE/Support.md
338@@ -0,0 +1,22 @@
339+---
340+name: Support request
341+labels: support
342+about: Open a support request
343+
344+---
345+
346+<!--
347+WOAHH, hold up. This isn't this best place for support questions.
348+ You can get a faster response on slack or forums:
349+
350+Please redirect any QUESTIONS about Telegraf usage to
351+- InfluxData Slack Channel: https://www.influxdata.com/slack
352+- InfluxData Community Site: https://community.influxdata.com
353+
354+Check the documentation for the related plugin including the troubleshooting
355+section if available.
356+
357+https://docs.influxdata.com/telegraf
358+https://github.com/influxdata/telegraf/tree/master/docs
359+
360+-->
361diff --git a/.gitignore b/.gitignore
362index a32255f..3009b88 100644
363--- a/.gitignore
364+++ b/.gitignore
365@@ -1,6 +1,11 @@
366+/.idea
367 /build
368 /telegraf
369 /telegraf.exe
370 /telegraf.gz
371 /vendor
372 .DS_Store
373+<<<<<<< .gitignore
374+=======
375+process.yml
376+>>>>>>> .gitignore
377diff --git a/CHANGELOG.md b/CHANGELOG.md
378index 562071e..bac05b4 100644
379--- a/CHANGELOG.md
380+++ b/CHANGELOG.md
381@@ -1,3 +1,4 @@
382+<<<<<<< CHANGELOG.md
383 ## v1.15.3 [2020-09-11]
384
385 #### Release Notes
386@@ -24,15 +25,324 @@
387
388
389 ## v1.15.2 [2020-07-31]
390+=======
391+## v1.17.2 [2021-01-28]
392
393 #### Bugfixes
394
395+ - [#8770](https://github.com/influxdata/telegraf/pull/8770) `inputs.ping` Set interface for native
396+ - [#8764](https://github.com/influxdata/telegraf/pull/8764) `inputs.ping` Resolve regression, re-add missing function
397+
398+
399+## v1.17.1 [2021-01-27]
400+
401+#### Release Notes
402+
403+ Included a few more changes that add configuration options to plugins as it's been while since the last release
404+
405+ - [#8335](https://github.com/influxdata/telegraf/pull/8335) `inputs.ipmi_sensor` Add setting to enable caching in ipmitool
406+ - [#8616](https://github.com/influxdata/telegraf/pull/8616) Add Event Log support for Windows
407+ - [#8602](https://github.com/influxdata/telegraf/pull/8602) `inputs.postgresql_extensible` Add timestamp column support to postgresql_extensible
408+ - [#8627](https://github.com/influxdata/telegraf/pull/8627) `parsers.csv` Added ability to define skip values in csv parser
409+ - [#8646](https://github.com/influxdata/telegraf/pull/8646) link to Open Hardware Monitor
410+ - [#8055](https://github.com/influxdata/telegraf/pull/8055) `outputs.http` outputs/http: add option to control idle connection timeout
411+ - [#7897](https://github.com/influxdata/telegraf/pull/7897) `common.tls` common/tls: Allow specifying SNI hostnames
412+ - [#8541](https://github.com/influxdata/telegraf/pull/8541) `inputs.snmp` Extended the internal snmp wrapper to support AES192, AES192C, AES256, and AES256C
413+ - [#6165](https://github.com/influxdata/telegraf/pull/6165) `inputs.procstat` Provide method to include core count when reporting cpu_usage in procstat input
414+ - [#8287](https://github.com/influxdata/telegraf/pull/8287) `inputs.jenkins` Add support for an inclusive job list in Jenkins plugin
415+ - [#8524](https://github.com/influxdata/telegraf/pull/8524) `inputs.ipmi_sensor` Add hex_key parameter for IPMI input plugin connection
416+
417+#### Bugfixes
418+
419+ - [#8662](https://github.com/influxdata/telegraf/pull/8662) `outputs.influxdb_v2` [outputs.influxdb_v2] add exponential backoff, and respect client error responses
420+ - [#8748](https://github.com/influxdata/telegraf/pull/8748) `outputs.elasticsearch` Fix issue with elasticsearch output being really noisy about some errors
421+ - [#7533](https://github.com/influxdata/telegraf/pull/7533) `inputs.zookeeper` improve mntr regex to match user specific keys.
422+ - [#7967](https://github.com/influxdata/telegraf/pull/7967) `inputs.lustre2` Fix crash in lustre2 input plugin, when field name and value
423+ - [#8673](https://github.com/influxdata/telegraf/pull/8673) Update grok-library to v1.0.1 with dots and dash-patterns fixed.
424+ - [#8679](https://github.com/influxdata/telegraf/pull/8679) `inputs.ping` Use go-ping for "native" execution in Ping plugin
425+ - [#8741](https://github.com/influxdata/telegraf/pull/8741) `inputs.x509_cert` fix x509 cert timeout issue
426+ - [#8714](https://github.com/influxdata/telegraf/pull/8714) Bump github.com/nsqio/go-nsq from 1.0.7 to 1.0.8
427+ - [#8715](https://github.com/influxdata/telegraf/pull/8715) Bump github.com/Shopify/sarama from 1.27.1 to 1.27.2
428+ - [#8712](https://github.com/influxdata/telegraf/pull/8712) Bump github.com/newrelic/newrelic-telemetry-sdk-go from 0.2.0 to 0.5.1
429+ - [#8659](https://github.com/influxdata/telegraf/pull/8659) `inputs.gnmi` GNMI plugin should not take off the first character of field keys when no 'alias path' exists.
430+ - [#8609](https://github.com/influxdata/telegraf/pull/8609) `inputs.webhooks` Use the 'measurement' json field from the particle webhook as the measurment name, or if it's blank, use the 'name' field of the event's json.
431+ - [#8658](https://github.com/influxdata/telegraf/pull/8658) `inputs.procstat` Procstat input plugin should use the same timestamp in all metrics in the same Gather() cycle.
432+ - [#8391](https://github.com/influxdata/telegraf/pull/8391) `aggregators.merge` Optimize SeriesGrouper & aggregators.merge
433+ - [#8545](https://github.com/influxdata/telegraf/pull/8545) `inputs.prometheus` Using mime-type in prometheus parser to handle protocol-buffer responses
434+ - [#8588](https://github.com/influxdata/telegraf/pull/8588) `inputs.snmp` Input SNMP plugin - upgrade gosnmp library to version 1.29.0
435+ - [#8502](https://github.com/influxdata/telegraf/pull/8502) `inputs.http_listener_v2` Fix Stop() bug when plugin fails to start
436+
437+
438+## v1.17.0 [2020-12-18]
439+
440+#### Release Notes
441+
442+ - Starlark plugins can now store state between runs using a global state variable. This lets you make custom aggregators as well as custom processors that are state-aware.
443+ - New input plugins: Riemann-Protobuff Listener, Intel PowerStat
444+ - New output plugins: Yandex.Cloud monitoring, Logz.io
445+ - New parser plugin: Prometheus
446+ - New serializer: Prometheus remote write
447+
448+#### Bugfixes
449+
450+ - [#8505](https://github.com/influxdata/telegraf/pull/8505) `inputs.vsphere` Fixed misspelled check for datacenter
451+ - [#8499](https://github.com/influxdata/telegraf/pull/8499) `processors.execd` Adding support for new lines in influx line protocol fields.
452+ - [#8254](https://github.com/influxdata/telegraf/pull/8254) `serializers.carbon2` Fix carbon2 tests
453+ - [#8498](https://github.com/influxdata/telegraf/pull/8498) `inputs.http_response` fixed network test
454+ - [#8414](https://github.com/influxdata/telegraf/pull/8414) `inputs.bcache` Fix tests for Windows - part 1
455+ - [#8577](https://github.com/influxdata/telegraf/pull/8577) `inputs.ping` fix potential issue with race condition
456+ - [#8562](https://github.com/influxdata/telegraf/pull/8562) `inputs.mqtt_consumer` fix issue with mqtt concurrent map write
457+ - [#8574](https://github.com/influxdata/telegraf/pull/8574) `inputs.ecs` Remove duplicated field "revision" from ecs_task because it's already defined as a tag there
458+ - [#8551](https://github.com/influxdata/telegraf/pull/8551) `inputs.socket_listener` fix crash when socket_listener receiving invalid data
459+ - [#8564](https://github.com/influxdata/telegraf/pull/8564) `parsers.graphite` Graphite tags parser
460+ - [#8472](https://github.com/influxdata/telegraf/pull/8472) `inputs.kube_inventory` Fixing issue with missing metrics when pod has only pending containers
461+ - [#8542](https://github.com/influxdata/telegraf/pull/8542) `inputs.aerospike` fix edge case in aerospike plugin where an expected hex string was converted to integer if all digits
462+ - [#8512](https://github.com/influxdata/telegraf/pull/8512) `inputs.kube_inventory` Update string parsing of allocatable cpu cores in kube_inventory
463+
464+#### Features
465+
466+ - [#8038](https://github.com/influxdata/telegraf/pull/8038) `inputs.jenkins` feat: add build number field to jenkins_job measurement
467+ - [#7345](https://github.com/influxdata/telegraf/pull/7345) `inputs.ping` Add percentiles to the ping plugin
468+ - [#8369](https://github.com/influxdata/telegraf/pull/8369) `inputs.sqlserver` Added tags for monitoring readable secondaries for Azure SQL MI
469+ - [#8379](https://github.com/influxdata/telegraf/pull/8379) `inputs.sqlserver` SQL Server HA/DR Availability Group queries
470+ - [#8520](https://github.com/influxdata/telegraf/pull/8520) Add initialization example to mock-plugin.
471+ - [#8426](https://github.com/influxdata/telegraf/pull/8426) `inputs.snmp` Add support to convert snmp hex strings to integers
472+ - [#8509](https://github.com/influxdata/telegraf/pull/8509) `inputs.statsd` Add configurable Max TTL duration for statsd input plugin entries
473+ - [#8508](https://github.com/influxdata/telegraf/pull/8508) `inputs.bind` Add configurable timeout to bind input plugin http call
474+ - [#8368](https://github.com/influxdata/telegraf/pull/8368) `inputs.sqlserver` Added is_primary_replica for monitoring readable secondaries for Azure SQL DB
475+ - [#8462](https://github.com/influxdata/telegraf/pull/8462) `inputs.sqlserver` sqlAzureMIRequests - remove duplicate column [session_db_name]
476+ - [#8464](https://github.com/influxdata/telegraf/pull/8464) `inputs.sqlserver` Add column measurement_db_type to output of all queries if not empty
477+ - [#8389](https://github.com/influxdata/telegraf/pull/8389) `inputs.opcua` Add node groups to opcua input plugin
478+ - [#8432](https://github.com/influxdata/telegraf/pull/8432) add support for linux/ppc64le
479+ - [#8474](https://github.com/influxdata/telegraf/pull/8474) `inputs.modbus` Add FLOAT64-IEEE support to inputs.modbus (#8361) (by @Nemecsek)
480+ - [#8447](https://github.com/influxdata/telegraf/pull/8447) `processors.starlark` Add the shared state to the global scope to get previous data
481+ - [#8383](https://github.com/influxdata/telegraf/pull/8383) `inputs.zfs` Add dataset metrics to zfs input
482+ - [#8429](https://github.com/influxdata/telegraf/pull/8429) `outputs.nats` Added "name" parameter to NATS output plugin
483+ - [#8477](https://github.com/influxdata/telegraf/pull/8477) `inputs.http` proxy support for http input
484+ - [#8466](https://github.com/influxdata/telegraf/pull/8466) `inputs.snmp` Translate snmp field values
485+ - [#8435](https://github.com/influxdata/telegraf/pull/8435) `common.kafka` Enable kafka zstd compression and idempotent writes
486+ - [#8056](https://github.com/influxdata/telegraf/pull/8056) `inputs.monit` Add response_time to monit plugin
487+ - [#8446](https://github.com/influxdata/telegraf/pull/8446) update to go 1.15.5
488+ - [#8428](https://github.com/influxdata/telegraf/pull/8428) `aggregators.basicstats` Add rate and interval to the basicstats aggregator plugin
489+ - [#8575](https://github.com/influxdata/telegraf/pull/8575) `inputs.win_services` Added Glob pattern matching for "Windows Services" plugin
490+ - [#6132](https://github.com/influxdata/telegraf/pull/6132) `inputs.mysql` Add per user metrics to mysql input
491+ - [#8500](https://github.com/influxdata/telegraf/pull/8500) `inputs.github` [inputs.github] Add query of pull-request statistics
492+ - [#8598](https://github.com/influxdata/telegraf/pull/8598) `processors.enum` Allow globs (wildcards) in config for tags/fields in enum processor
493+ - [#8590](https://github.com/influxdata/telegraf/pull/8590) `inputs.ethtool` [ethtool] interface_up field added
494+ - [#8579](https://github.com/influxdata/telegraf/pull/8579) `parsers.json` Add wildcard tags json parser support
495+
496+
497+#### New Parser Plugins
498+
499+ - [#7778](https://github.com/influxdata/telegraf/pull/7778) `parsers.prometheus` Add a parser plugin for prometheus
500+
501+#### New Serializer Plugins
502+
503+ - [#8360](https://github.com/influxdata/telegraf/pull/8360) `serializers.prometheusremotewrite` Add prometheus remote write serializer
504+
505+#### New Input Plugins
506+
507+ - [#8163](https://github.com/influxdata/telegraf/pull/8163) `inputs.riemann` Support Riemann-Protobuff Listener
508+ - [#8488](https://github.com/influxdata/telegraf/pull/8488) `inputs.intel_powerstat` New Intel PowerStat input plugin
509+
510+#### New Output Plugins
511+
512+ - [#8296](https://github.com/influxdata/telegraf/pull/8296) `outputs.yandex_cloud_monitoring` #8295 Initial Yandex.Cloud monitoring
513+ - [#8202](https://github.com/influxdata/telegraf/pull/8202) `outputs.logzio` A new Logz.io output plugin
514+
515+
516+## v1.16.3 [2020-12-01]
517+
518+#### Bugfixes
519+
520+ - [#8483](https://github.com/influxdata/telegraf/pull/8483) `inputs.gnmi` Log SubscribeResponse_Error message and code. #8482
521+ - [#7987](https://github.com/influxdata/telegraf/pull/7987) update godirwalk to v1.16.1
522+ - [#8438](https://github.com/influxdata/telegraf/pull/8438) `processors.starlark` Starlark example dropbytype
523+ - [#8468](https://github.com/influxdata/telegraf/pull/8468) `inputs.sqlserver` Fix typo in column name
524+ - [#8461](https://github.com/influxdata/telegraf/pull/8461) `inputs.phpfpm` [php-fpm] Fix possible "index out of range"
525+ - [#8444](https://github.com/influxdata/telegraf/pull/8444) `inputs.apcupsd` Update mdlayher/apcupsd dependency
526+ - [#8439](https://github.com/influxdata/telegraf/pull/8439) `processors.starlark` Show how to return a custom error with the Starlark processor
527+ - [#8440](https://github.com/influxdata/telegraf/pull/8440) `parsers.csv` keep field name as is for csv timestamp column
528+ - [#8436](https://github.com/influxdata/telegraf/pull/8436) `inputs.nvidia_smi` Add DriverVersion and CUDA Version to output
529+ - [#8423](https://github.com/influxdata/telegraf/pull/8423) `processors.starlark` Show how to return several metrics with the Starlark processor
530+ - [#8408](https://github.com/influxdata/telegraf/pull/8408) `processors.starlark` Support logging in starlark
531+ - [#8315](https://github.com/influxdata/telegraf/pull/8315) add kinesis output to external plugins list
532+ - [#8406](https://github.com/influxdata/telegraf/pull/8406) `outputs.wavefront` #8405 add non-retryable debug logging
533+ - [#8404](https://github.com/influxdata/telegraf/pull/8404) `outputs.wavefront` Wavefront output should distinguish between retryable and non-retryable errors
534+ - [#8401](https://github.com/influxdata/telegraf/pull/8401) `processors.starlark` Allow to catch errors that occur in the apply function
535+
536+
537+## v1.16.2 [2020-11-13]
538+
539+#### Bugfixes
540+
541+ - [#8400](https://github.com/influxdata/telegraf/pull/8400) `parsers.csv` Fix parsing of multiple files with different headers (#6318).
542+ - [#8326](https://github.com/influxdata/telegraf/pull/8326) `inputs.proxmox` proxmox: ignore QEMU templates and iron out a few bugs
543+ - [#7991](https://github.com/influxdata/telegraf/pull/7991) `inputs.systemd_units` systemd_units: add --plain to command invocation (#7990)
544+ - [#8307](https://github.com/influxdata/telegraf/pull/8307) fix links in external plugins readme
545+ - [#8370](https://github.com/influxdata/telegraf/pull/8370) `inputs.redis` Fix minor typos in readmes
546+ - [#8374](https://github.com/influxdata/telegraf/pull/8374) `inputs.smart` Fix SMART plugin to recognize all devices from config
547+ - [#8288](https://github.com/influxdata/telegraf/pull/8288) `inputs.redfish` Add OData-Version header to requests
548+ - [#8357](https://github.com/influxdata/telegraf/pull/8357) `inputs.vsphere` Prydin issue 8169
549+ - [#8356](https://github.com/influxdata/telegraf/pull/8356) `inputs.sqlserver` On-prem fix for #8324
550+ - [#8165](https://github.com/influxdata/telegraf/pull/8165) `outputs.wavefront` [output.wavefront] Introduced "immediate_flush" flag
551+ - [#7938](https://github.com/influxdata/telegraf/pull/7938) `inputs.gnmi` added support for bytes encoding
552+ - [#8337](https://github.com/influxdata/telegraf/pull/8337) `inputs.dcos` Update jwt-go module to address CVE-2020-26160
553+ - [#8350](https://github.com/influxdata/telegraf/pull/8350) `inputs.ras` fix plugins/input/ras test
554+ - [#8329](https://github.com/influxdata/telegraf/pull/8329) `outputs.dynatrace` #8328 Fixed a bug with the state map in Dynatrace Plugin
555+
556+## v1.16.1 [2020-10-28]
557+
558+#### Release Notes
559+
560+ - [#8318](https://github.com/influxdata/telegraf/pull/8318) `common.kafka` kafka sasl-mechanism auth support for SCRAM-SHA-256, SCRAM-SHA-512, GSSAPI
561+
562+#### Bugfixes
563+
564+ - [#8331](https://github.com/influxdata/telegraf/pull/8331) `inputs.sqlserver` SQL Server Azure PerfCounters Fix
565+ - [#8325](https://github.com/influxdata/telegraf/pull/8325) `inputs.sqlserver` SQL Server - PerformanceCounters - removed synthetic counters
566+ - [#8324](https://github.com/influxdata/telegraf/pull/8324) `inputs.sqlserver` SQL Server - server_properties added sql_version_desc
567+ - [#8317](https://github.com/influxdata/telegraf/pull/8317) `inputs.ras` Disable RAS input plugin on specific Linux architectures: mips64, mips64le, ppc64le, riscv64
568+ - [#8309](https://github.com/influxdata/telegraf/pull/8309) `inputs.processes` processes: fix issue with stat no such file/dir
569+ - [#8308](https://github.com/influxdata/telegraf/pull/8308) `inputs.win_perf_counters` fix issue with PDH_CALC_NEGATIVE_DENOMINATOR error
570+ - [#8306](https://github.com/influxdata/telegraf/pull/8306) `inputs.ras` RAS plugin - fix for too many open files handlers
571+
572+
573+## v1.16.0 [2020-10-21]
574+
575+#### Release Notes
576+
577+ - New [code examples](/plugins/processors/starlark/testdata) for the [Starlark processor](/plugins/processors/starlark/README.md)
578+ - [#7920](https://github.com/influxdata/telegraf/pull/7920) `inputs.rabbitmq` remove deprecated healthcheck
579+ - [#7953](https://github.com/influxdata/telegraf/pull/7953) Add details to connect to InfluxDB OSS 2 and Cloud 2
580+ - [#8054](https://github.com/influxdata/telegraf/pull/8054) add guidelines run to external plugins with execd
581+ - [#8198](https://github.com/influxdata/telegraf/pull/8198) `inputs.influxdb_v2_listener` change default influxdb port from 9999 to 8086 to match OSS 2.0 release
582+ - [starlark](https://github.com/influxdata/telegraf/tree/release-1.16/plugins/processors/starlark/testdata) `processors.starlark` add various code exampels for the Starlark processor
583+
584+#### Features
585+
586+ - [#7814](https://github.com/influxdata/telegraf/pull/7814) `agent` Send metrics in FIFO order
587+ - [#7869](https://github.com/influxdata/telegraf/pull/7869) `inputs.modbus` extend support of fixed point values on input
588+ - [#7870](https://github.com/influxdata/telegraf/pull/7870) `inputs.mongodb` Added new metric "pages written from cache"
589+ - [#7875](https://github.com/influxdata/telegraf/pull/7875) `inputs.consul` input consul - added metric_version flag
590+ - [#7894](https://github.com/influxdata/telegraf/pull/7894) `inputs.cloudwatch` Implement AWS CloudWatch Input Plugin ListMetrics API calls to use Active Metric Filter
591+ - [#7904](https://github.com/influxdata/telegraf/pull/7904) `inputs.clickhouse` add additional metrics to clickhouse input plugin
592+ - [#7934](https://github.com/influxdata/telegraf/pull/7934) `inputs.sqlserver` Database_type config to Split up sql queries by engine type
593+ - [#8018](https://github.com/influxdata/telegraf/pull/8018) `processors.ifname` Add addTag debugging in ifname plugin
594+ - [#8019](https://github.com/influxdata/telegraf/pull/8019) `outputs.elasticsearch` added force_document_id option to ES output enable resend data and avoiding duplicated ES documents
595+ - [#8025](https://github.com/influxdata/telegraf/pull/8025) `inputs.aerospike` Add set, and histogram reporting to aerospike telegraf plugin
596+ - [#8082](https://github.com/influxdata/telegraf/pull/8082) `inputs.snmp` Add agent host tag configuration option
597+ - [#8113](https://github.com/influxdata/telegraf/pull/8113) `inputs.smart` Add more missing NVMe attributes to smart plugin
598+ - [#8120](https://github.com/influxdata/telegraf/pull/8120) `inputs.sqlserver` Added more performance counters to SqlServer input plugin
599+ - [#8127](https://github.com/influxdata/telegraf/pull/8127) `agent` Sort plugin name lists for output
600+ - [#8132](https://github.com/influxdata/telegraf/pull/8132) `outputs.sumologic` Sumo Logic output plugin: carbon2 default to include field in metric
601+ - [#8133](https://github.com/influxdata/telegraf/pull/8133) `inputs.influxdb_v2_listener` influxdb_v2_listener - add /ready route
602+ - [#8168](https://github.com/influxdata/telegraf/pull/8168) `processors.starlark` add json parsing support to starlark
603+ - [#8186](https://github.com/influxdata/telegraf/pull/8186) `inputs.sqlserver` New sql server queries (Azure)
604+ - [#8189](https://github.com/influxdata/telegraf/pull/8189) `inputs.snmp_trap` If the community string is available, add it as a tag
605+ - [#8190](https://github.com/influxdata/telegraf/pull/8190) `inputs.tail` Semigroupoid multiline (#8167)
606+ - [#8196](https://github.com/influxdata/telegraf/pull/8196) `inputs.redis` add functionality to get values from redis commands
607+ - [#8220](https://github.com/influxdata/telegraf/pull/8220) `build` update to Go 1.15
608+ - [#8032](https://github.com/influxdata/telegraf/pull/8032) `inputs.http_response` http_response: match on status code
609+ - [#8172](https://github.com/influxdata/telegraf/pull/8172) `inputs.sqlserver` New sql server queries (on-prem) - refactoring and formatting
610+
611+#### Bugfixes
612+
613+ - [#7816](https://github.com/influxdata/telegraf/pull/7816) `shim` fix bug with loading plugins in shim with no config
614+ - [#7818](https://github.com/influxdata/telegraf/pull/7818) `build` Fix darwin package build flags
615+ - [#7819](https://github.com/influxdata/telegraf/pull/7819) `inputs.tail` Close file to ensure it has been flushed
616+ - [#7853](https://github.com/influxdata/telegraf/pull/7853) Initialize aggregation processors
617+ - [#7865](https://github.com/influxdata/telegraf/pull/7865) `common.shim` shim logger improvements
618+ - [#7867](https://github.com/influxdata/telegraf/pull/7867) `inputs.execd` fix issue with execd restart_delay being ignored
619+ - [#7872](https://github.com/influxdata/telegraf/pull/7872) `inputs.gnmi` Recv next message after send returns EOF
620+ - [#7877](https://github.com/influxdata/telegraf/pull/7877) Fix arch name in deb/rpm builds
621+ - [#7909](https://github.com/influxdata/telegraf/pull/7909) fixes issue with rpm /var/log/telegraf permissions
622+ - [#7918](https://github.com/influxdata/telegraf/pull/7918) `inputs.net` fix broken link to proc.c
623+ - [#7927](https://github.com/influxdata/telegraf/pull/7927) `inputs.tail` Fix tail following on EOF
624+ - [#8005](https://github.com/influxdata/telegraf/pull/8005) Fix docker-image make target
625+ - [#8039](https://github.com/influxdata/telegraf/pull/8039) `serializers.splunkmetric` Remove Event field as it is causing issues with pre-trained source types
626+ - [#8048](https://github.com/influxdata/telegraf/pull/8048) `inputs.jenkins` Multiple escaping occurs on Jenkins URLs at certain folder depth
627+ - [#8071](https://github.com/influxdata/telegraf/pull/8071) `inputs.kubernetes` add missing error check for HTTP req failure
628+ - [#8145](https://github.com/influxdata/telegraf/pull/8145) `processors.execd` Increased the maximum serialized metric size in line protocol
629+ - [#8159](https://github.com/influxdata/telegraf/pull/8159) `outputs.dynatrace` Dynatrace Output: change handling of monotonic counters
630+ - [#8176](https://github.com/influxdata/telegraf/pull/8176) fix panic on streaming processers using logging
631+ - [#8177](https://github.com/influxdata/telegraf/pull/8177) `parsers.influx` fix: plugins/parsers/influx: avoid ParseError.Error panic
632+ - [#8199](https://github.com/influxdata/telegraf/pull/8199) `inputs.docker` Fix vulnerabilities found in BDBA scan
633+ - [#8200](https://github.com/influxdata/telegraf/pull/8200) `inputs.sqlserver` Fixed Query mapping
634+ - [#8201](https://github.com/influxdata/telegraf/pull/8201) `outputs.sumologic` Fix carbon2 serializer not falling through to field separate when carbon2_format field is unset
635+ - [#8210](https://github.com/influxdata/telegraf/pull/8210) update gopsutil: fix procstat performance regression
636+ - [#8162](https://github.com/influxdata/telegraf/pull/8162) Fix bool serialization when using carbon2
637+ - [#8240](https://github.com/influxdata/telegraf/pull/8240) Fix bugs found by LGTM analysis platform
638+ - [#8251](https://github.com/influxdata/telegraf/pull/8251) `outputs.dynatrace` Dynatrace Output Plugin: Fixed behaviour when state map is cleared
639+ - [#8274](https://github.com/influxdata/telegraf/pull/8274) `common.shim` fix issue with loading processor config from execd
640+
641+#### New Input Plugins
642+
643+ - [influxdb_v2_listener](/plugins/inputs/influxdb_v2_listener/README.md) Influxdb v2 listener - Contributed by @magichair
644+ - [intel_rdt](/plugins/inputs/intel_rdt/README.md) New input plugin for Intel RDT (Intel Resource Director Technology) - Contributed by @p-zak
645+ - [nsd](/plugins/inputs/nsd/README.md) add nsd input plugin - Contributed by @gearnode
646+ - [opcua](/plugins/inputs/opcua/README.md) Add OPC UA input plugin - Contributed by InfluxData
647+ - [proxmox](/plugins/inputs/proxmox/README.md) Proxmox plugin - Contributed by @effitient
648+ - [ras](/plugins/inputs/ras/README.md) New input plugin for RAS (Reliability, Availability and Serviceability) - Contributed by @p-zak
649+ - [win_eventlog](/plugins/inputs/win_eventlog/README.md) Windows eventlog input plugin - Contributed by @simnv
650+
651+#### New Output Plugins
652+
653+ - [dynatrace](/plugins/outputs/dynatrace/README.md) Dynatrace output plugin - Contributed by @thschue
654+ - [sumologic](/plugins/outputs/sumologic/README.md) Sumo Logic output plugin - Contributed by @pmalek-sumo
655+ - [timestream](/plugins/outputs/timestream) Timestream Output Plugin - Contributed by @piotrwest
656+
657+#### New External Plugins
658+
659+ See [EXTERNAL_PLUGINS.md](/EXTERNAL_PLUGINS.md) for a full list of external plugins
660+
661+ - [awsalarms](https://github.com/vipinvkmenon/awsalarms) - Simple plugin to gather/monitor alarms generated in AWS.
662+ - [youtube-telegraf-plugin](https://github.com/inabagumi/youtube-telegraf-plugin) - Gather view and subscriber stats from your youtube videos
663+ - [octoprint](https://github.com/BattleBas/octoprint-telegraf-plugin) - Gather 3d print information from the octoprint API.
664+ - [systemd-timings](https://github.com/pdmorrow/telegraf-execd-systemd-timings) - Gather systemd boot and unit timestamp metrics.
665+
666+## v1.15.4 [2020-10-20]
667+>>>>>>> CHANGELOG.md
668+
669+#### Bugfixes
670+
671+ - [#8274](https://github.com/influxdata/telegraf/pull/8274) `common.shim` fix issue with loading processor config from execd
672+ - [#8176](https://github.com/influxdata/telegraf/pull/8176) `agent` fix panic on streaming processers using logging
673+
674+## v1.15.3 [2020-09-11]
675+
676+#### Release Notes
677+
678+ - Many documentation updates
679+ - New [code examples](https://github.com/influxdata/telegraf/tree/master/plugins/processors/starlark/testdata) for the [Starlark processor](https://github.com/influxdata/telegraf/blob/master/plugins/processors/starlark/README.md)
680+
681+#### Bugfixes
682+
683+ - [#7999](https://github.com/influxdata/telegraf/pull/7999) `agent` fix minor agent error message race condition
684+ - [#8051](https://github.com/influxdata/telegraf/pull/8051) `build` fix docker build. update dockerfiles to Go 1.14
685+ - [#8052](https://github.com/influxdata/telegraf/pull/8052) `shim` fix bug in shim logger affecting AddError
686+ - [#7996](https://github.com/influxdata/telegraf/pull/7996) `shim` fix issue with shim use of config.Duration
687+ - [#8006](https://github.com/influxdata/telegraf/pull/8006) `inputs.eventhub_consumer` Fix string to int conversion in eventhub consumer
688+ - [#7986](https://github.com/influxdata/telegraf/pull/7986) `inputs.http_listener_v2` make http header tags case insensitive
689+ - [#7869](https://github.com/influxdata/telegraf/pull/7869) `inputs.modbus` extend support of fixed point values on input
690+ - [#7861](https://github.com/influxdata/telegraf/pull/7861) `inputs.ping` Fix Ping Input plugin for FreeBSD's ping6
691+ - [#7808](https://github.com/influxdata/telegraf/pull/7808) `inputs.sqlserver` added new counter - Lock Timeouts (timeout > 0)/sec
692+ - [#8026](https://github.com/influxdata/telegraf/pull/8026) `inputs.vsphere` vSphere Fixed missing clustername issue 7878
693+ - [#8020](https://github.com/influxdata/telegraf/pull/8020) `processors.starlark` improve the quality of starlark docs by executing them as tests
694+ - [#7976](https://github.com/influxdata/telegraf/pull/7976) `processors.starlark` add pivot example for starlark processor
695+ - [#7134](https://github.com/influxdata/telegraf/pull/7134) `outputs.application_insights` Added the ability to set the endpoint url
696+ - [#7908](https://github.com/influxdata/telegraf/pull/7908) `outputs.opentsdb` fix JSON handling of values NaN and Inf
697+
698+## v1.15.2 [2020-07-31]
699+
700+#### Bug Fixes
701+
702 - [#7905](https://github.com/influxdata/telegraf/issues/7905): Fix RPM /var/log/telegraf permissions
703 - [#7880](https://github.com/influxdata/telegraf/issues/7880): Fix tail following on EOF
704
705 ## v1.15.1 [2020-07-22]
706
707-#### Bugfixes
708+#### Bug Fixes
709
710 - [#7877](https://github.com/influxdata/telegraf/pull/7877): Fix architecture in non-amd64 deb and rpm packages.
711
712@@ -128,7 +438,7 @@
713 - [#7154](https://github.com/influxdata/telegraf/pull/7154): Add v3 metadata support to ecs input.
714 - [#7792](https://github.com/influxdata/telegraf/pull/7792): Support utf-16 in file and tail inputs.
715
716-#### Bugfixes
717+#### Bug Fixes
718
719 - [#7371](https://github.com/influxdata/telegraf/issues/7371): Fix unable to write metrics to CloudWatch with IMDSv1 disabled.
720 - [#7233](https://github.com/influxdata/telegraf/issues/7233): Fix vSphere 6.7 missing data issue.
721@@ -147,7 +457,7 @@
722
723 ## v1.14.5 [2020-06-30]
724
725-#### Bugfixes
726+#### Bug Fixes
727
728 - [#7686](https://github.com/influxdata/telegraf/pull/7686): Improve the performance of the procstat input.
729 - [#7658](https://github.com/influxdata/telegraf/pull/7658): Fix ping exit code handling on non-Linux.
730@@ -159,7 +469,7 @@
731
732 ## v1.14.4 [2020-06-09]
733
734-#### Bugfixes
735+#### Bug Fixes
736
737 - [#7325](https://github.com/influxdata/telegraf/issues/7325): Fix "cannot insert the value NULL error" with PerformanceCounters query.
738 - [#7579](https://github.com/influxdata/telegraf/pull/7579): Fix numeric to bool conversion in converter processor.
739@@ -168,7 +478,7 @@
740
741 ## v1.14.3 [2020-05-19]
742
743-#### Bugfixes
744+#### Bug Fixes
745
746 - [#7412](https://github.com/influxdata/telegraf/pull/7412): Use same timestamp for all objects in arrays in the json parser.
747 - [#7343](https://github.com/influxdata/telegraf/issues/7343): Handle multiple metrics with the same timestamp in dedup processor.
748@@ -177,7 +487,7 @@
749
750 ## v1.14.2 [2020-04-28]
751
752-#### Bugfixes
753+#### Bug Fixes
754
755 - [#7241](https://github.com/influxdata/telegraf/issues/7241): Trim whitespace from instance tag in sqlserver input.
756 - [#7322](https://github.com/influxdata/telegraf/issues/7322): Use increased AWS Cloudwatch GetMetricData limit of 500 metrics per call.
757@@ -191,7 +501,7 @@
758
759 ## v1.14.1 [2020-04-14]
760
761-#### Bugfixes
762+#### Bug Fixes
763
764 - [#7236](https://github.com/influxdata/telegraf/issues/7236): Fix PerformanceCounter query performance degradation in sqlserver input.
765 - [#7257](https://github.com/influxdata/telegraf/issues/7257): Fix error when using the Name field in template processor.
766@@ -271,7 +581,7 @@
767 - [#7150](https://github.com/influxdata/telegraf/pull/7150): Add option for explicitly including queries in sqlserver input.
768 - [#7173](https://github.com/influxdata/telegraf/pull/7173): Add support for GNMI DecimalVal type to cisco_telemetry_gnmi.
769
770-#### Bugfixes
771+#### Bug Fixes
772
773 - [#6397](https://github.com/influxdata/telegraf/issues/6397): Fix conversion to floats in AzureDBResourceStats query in the sqlserver input.
774 - [#6867](https://github.com/influxdata/telegraf/issues/6867): Fix case sensitive collation in sqlserver input.
775@@ -291,7 +601,7 @@
776
777 - Official packages now built with Go 1.13.8.
778
779-#### Bugfixes
780+#### Bug Fixes
781
782 - [#6988](https://github.com/influxdata/telegraf/issues/6988): Parse NaN values from summary types in prometheus input.
783 - [#6820](https://github.com/influxdata/telegraf/issues/6820): Fix pgbouncer input when used with newer pgbouncer versions.
784@@ -303,7 +613,7 @@
785
786 ## v1.13.3 [2020-02-04]
787
788-#### Bugfixes
789+#### Bug Fixes
790
791 - [#5744](https://github.com/influxdata/telegraf/issues/5744): Fix kibana input with Kibana versions greater than 6.4.
792 - [#6960](https://github.com/influxdata/telegraf/issues/6960): Fix duplicate TrackingIDs can be returned in queue consumer plugins.
793@@ -312,7 +622,7 @@
794
795 ## v1.13.2 [2020-01-21]
796
797-#### Bugfixes
798+#### Bug Fixes
799
800 - [#2652](https://github.com/influxdata/telegraf/issues/2652): Warn without error when processes input is started on Windows.
801 - [#6890](https://github.com/influxdata/telegraf/issues/6890): Only parse certificate blocks in x509_cert input.
802@@ -324,7 +634,7 @@
803
804 ## v1.13.1 [2020-01-08]
805
806-#### Bugfixes
807+#### Bug Fixes
808
809 - [#6788](https://github.com/influxdata/telegraf/issues/6788): Fix ServerProperty query stops working on Azure after failover.
810 - [#6803](https://github.com/influxdata/telegraf/pull/6803): Add leading period to OID in SNMP v1 generic traps.
811@@ -410,7 +720,7 @@
812 - [#6740](https://github.com/influxdata/telegraf/pull/6740): Add base64decode operation to string processor.
813 - [#6790](https://github.com/influxdata/telegraf/pull/6790): Add option to control collecting global variables to mysql input.
814
815-#### Bugfixes
816+#### Bug Fixes
817
818 - [#6484](https://github.com/influxdata/telegraf/issues/6484): Show correct default settings in mysql sample config.
819 - [#6583](https://github.com/influxdata/telegraf/issues/6583): Use 1h or 3h rain values as appropriate in openweathermap input.
820@@ -427,7 +737,7 @@
821
822 ## v1.12.6 [2019-11-19]
823
824-#### Bugfixes
825+#### Bug Fixes
826
827 - [#6666](https://github.com/influxdata/telegraf/issues/6666): Fix many plugin errors are logged at debug logging level.
828 - [#6652](https://github.com/influxdata/telegraf/issues/6652): Use nanosecond precision in docker_log input.
829@@ -436,7 +746,7 @@
830
831 ## v1.12.5 [2019-11-12]
832
833-#### Bugfixes
834+#### Bug Fixes
835
836 - [#6576](https://github.com/influxdata/telegraf/issues/6576): Fix incorrect results in ping input plugin.
837 - [#6610](https://github.com/influxdata/telegraf/pull/6610): Add missing character replacement to sql_instance tag.
838@@ -454,7 +764,7 @@
839
840 - Official packages built with Go 1.12.12.
841
842-#### Bugfixes
843+#### Bug Fixes
844
845 - [#6521](https://github.com/influxdata/telegraf/issues/6521): Fix metric generation with ping input native method.
846 - [#6541](https://github.com/influxdata/telegraf/issues/6541): Exclude alias tag if unset from plugin internal stats.
847@@ -462,7 +772,7 @@
848
849 ## v1.12.3 [2019-10-07]
850
851-#### Bugfixes
852+#### Bug Fixes
853
854 - [#6445](https://github.com/influxdata/telegraf/issues/6445): Use batch serialization format in exec output.
855 - [#6455](https://github.com/influxdata/telegraf/issues/6455): Build official packages with Go 1.12.10.
856@@ -474,7 +784,7 @@
857
858 ## v1.12.2 [2019-09-24]
859
860-#### Bugfixes
861+#### Bug Fixes
862
863 - [#6386](https://github.com/influxdata/telegraf/issues/6386): Fix detection of layout timestamps in csv and json parser.
864 - [#6394](https://github.com/influxdata/telegraf/issues/6394): Fix parsing of BATTDATE in apcupsd input.
865@@ -484,7 +794,7 @@
866
867 ## v1.12.1 [2019-09-10]
868
869-#### Bugfixes
870+#### Bug Fixes
871
872 - [#6344](https://github.com/influxdata/telegraf/issues/6344): Fix depends on GLIBC_2.14 symbol version.
873 - [#6329](https://github.com/influxdata/telegraf/issues/6329): Fix filecount for paths with trailing slash.
874@@ -581,7 +891,7 @@
875 - [#6207](https://github.com/influxdata/telegraf/pull/6207): Add ability to label inputs for logging.
876 - [#6300](https://github.com/influxdata/telegraf/pull/6300): Add TLS support to nginx_plus, nginx_plus_api and nginx_vts.
877
878-#### Bugfixes
879+#### Bug Fixes
880
881 - [#5692](https://github.com/influxdata/telegraf/issues/5692): Fix sensor read error stops reporting of all sensors in temp input.
882 - [#4356](https://github.com/influxdata/telegraf/issues/4356): Fix double pct replacement in sysstat input.
883@@ -598,7 +908,7 @@
884
885 ## v1.11.5 [2019-08-27]
886
887-#### Bugfixes
888+#### Bug Fixes
889
890 - [#6250](https://github.com/influxdata/telegraf/pull/6250): Update go-sql-driver/mysql driver to 1.4.1 to address auth issues.
891 - [#6279](https://github.com/influxdata/telegraf/issues/6279): Return error status from --test if input plugins produce an error.
892@@ -611,7 +921,7 @@
893
894 ## v1.11.4 [2019-08-06]
895
896-#### Bugfixes
897+#### Bug Fixes
898
899 - [#6200](https://github.com/influxdata/telegraf/pull/6200): Correct typo in kubernetes logsfs_available_bytes field.
900 - [#6191](https://github.com/influxdata/telegraf/issues/6191): Skip floats that are NaN or Inf in Datadog output.
901@@ -619,7 +929,7 @@
902
903 ## v1.11.3 [2019-07-23]
904
905-#### Bugfixes
906+#### Bug Fixes
907
908 - [#6054](https://github.com/influxdata/telegraf/issues/6054): Fix unable to reconnect after vCenter reboot in vsphere input.
909 - [#6073](https://github.com/influxdata/telegraf/issues/6073): Handle unknown error in nvidia-smi output.
910@@ -632,7 +942,7 @@
911
912 ## v1.11.2 [2019-07-09]
913
914-#### Bugfixes
915+#### Bug Fixes
916
917 - [#6056](https://github.com/influxdata/telegraf/pull/6056): Fix source address ping flag on BSD.
918 - [#6059](https://github.com/influxdata/telegraf/issues/6059): Fix value out of range error on 32-bit systems in bind input.
919@@ -643,7 +953,7 @@
920
921 ## v1.11.1 [2019-06-25]
922
923-#### Bugfixes
924+#### Bug Fixes
925
926 - [#5980](https://github.com/influxdata/telegraf/issues/5980): Cannot set mount_points option in disk input.
927 - [#5983](https://github.com/influxdata/telegraf/issues/5983): Omit keys when creating measurement names for GNMI telemetry.
928@@ -720,7 +1030,7 @@
929 - [#5547](https://github.com/influxdata/telegraf/pull/5547): Add file rotation support to the file output.
930 - [#5955](https://github.com/influxdata/telegraf/pull/5955): Add source tag to hddtemp plugin.
931
932-#### Bugfixes
933+#### Bug Fixes
934
935 - [#5692](https://github.com/influxdata/telegraf/pull/5692): Temperature input plugin stops working when WiFi is turned off.
936 - [#5631](https://github.com/influxdata/telegraf/pull/5631): Create Windows service only when specified or in service manager.
937@@ -746,7 +1056,7 @@
938
939 ## v1.10.4 [2019-05-14]
940
941-#### Bugfixes
942+#### Bug Fixes
943
944 - [#5764](https://github.com/influxdata/telegraf/pull/5764): Fix race condition in the Wavefront parser.
945 - [#5783](https://github.com/influxdata/telegraf/pull/5783): Create telegraf user in pre-install rpm scriptlet.
946@@ -760,7 +1070,7 @@
947
948 ## v1.10.3 [2019-04-16]
949
950-#### Bugfixes
951+#### Bug Fixes
952
953 - [#5680](https://github.com/influxdata/telegraf/pull/5680): Allow colons in metric names in prometheus_client output.
954 - [#5716](https://github.com/influxdata/telegraf/pull/5716): Set log directory attributes in rpm spec.
955@@ -773,7 +1083,7 @@
956 the grok parser. If you are capturing quoted strings you may need to update
957 the patterns.
958
959-#### Bugfixes
960+#### Bug Fixes
961
962 - [#5612](https://github.com/influxdata/telegraf/pull/5612): Fix deadlock when Telegraf is aligning aggregators.
963 - [#5523](https://github.com/influxdata/telegraf/issues/5523): Fix missing cluster stats in ceph input.
964@@ -793,7 +1103,7 @@
965
966 ## v1.10.1 [2019-03-19]
967
968-#### Bugfixes
969+#### Bug Fixes
970
971 - [#5448](https://github.com/influxdata/telegraf/issues/5448): Show error when TLS configuration cannot be loaded.
972 - [#5543](https://github.com/influxdata/telegraf/pull/5543): Add Base64-encoding/decoding for Google Cloud PubSub plugins.
973@@ -863,7 +1173,7 @@
974 - [#5490](https://github.com/influxdata/telegraf/pull/5490): Add tag based routing in influxdb/influxdb_v2 outputs.
975 - [#5533](https://github.com/influxdata/telegraf/pull/5533): Allow grok parser to produce metrics with no fields.
976
977-#### Bugfixes
978+#### Bug Fixes
979
980 - [#4610](https://github.com/influxdata/telegraf/pull/4610): Fix initscript removes pidfile of restarted Telegraf process.
981 - [#5320](https://github.com/influxdata/telegraf/pull/5320): Use datacenter option spelling in consul input.
982@@ -879,7 +1189,7 @@
983
984 ## v1.9.5 [2019-02-26]
985
986-#### Bugfixes
987+#### Bug Fixes
988
989 - [#5315](https://github.com/influxdata/telegraf/issues/5315): Skip string fields when writing to stackdriver output.
990 - [#5364](https://github.com/influxdata/telegraf/issues/5364): Send metrics in ascending time order in stackdriver output.
991@@ -893,7 +1203,7 @@
992
993 ## v1.9.4 [2019-02-05]
994
995-#### Bugfixes
996+#### Bug Fixes
997
998 - [#5334](https://github.com/influxdata/telegraf/issues/5334): Fix skip_rows and skip_columns options in csv parser.
999 - [#5181](https://github.com/influxdata/telegraf/issues/5181): Always send basic auth in jenkins input.
1000@@ -902,7 +1212,7 @@
1001
1002 ## v1.9.3 [2019-01-22]
1003
1004-#### Bugfixes
1005+#### Bug Fixes
1006
1007 - [#5261](https://github.com/influxdata/telegraf/pull/5261): Fix arithmetic overflow in sqlserver input.
1008 - [#5194](https://github.com/influxdata/telegraf/issues/5194): Fix latest metrics not sent first when output fails.
1009@@ -913,7 +1223,7 @@
1010
1011 ## v1.9.2 [2019-01-08]
1012
1013-#### Bugfixes
1014+#### Bug Fixes
1015
1016 - [#5130](https://github.com/influxdata/telegraf/pull/5130): Increase varnishstat timeout.
1017 - [#5135](https://github.com/influxdata/telegraf/pull/5135): Remove storage calculation for non Azure managed instances and add server version.
1018@@ -932,7 +1242,7 @@
1019
1020 ## v1.9.1 [2018-12-11]
1021
1022-#### Bugfixes
1023+#### Bug Fixes
1024
1025 - [#5006](https://github.com/influxdata/telegraf/issues/5006): Fix boolean handling in splunkmetric serializer.
1026 - [#5046](https://github.com/influxdata/telegraf/issues/5046): Set default config values in jenkins input.
1027@@ -1001,7 +1311,7 @@
1028 - [#4920](https://github.com/influxdata/telegraf/pull/4920): Add scraping for Prometheus endpoint in Kubernetes.
1029 - [#4938](https://github.com/influxdata/telegraf/pull/4938): Add per output flush_interval, metric_buffer_limit and metric_batch_size.
1030
1031-#### Bugfixes
1032+#### Bug Fixes
1033
1034 - [#4950](https://github.com/influxdata/telegraf/pull/4950): Remove the time_key from the field values in JSON parser.
1035 - [#3968](https://github.com/influxdata/telegraf/issues/3968): Fix input time rounding when using a custom interval.
1036@@ -1014,7 +1324,7 @@
1037
1038 ## v1.8.3 [2018-10-30]
1039
1040-### Bugfixes
1041+### Bug Fixes
1042
1043 - [#4873](https://github.com/influxdata/telegraf/pull/4873): Add DN attributes as tags in x509_cert input to avoid series overwrite.
1044 - [#4921](https://github.com/influxdata/telegraf/issues/4921): Prevent connection leak by closing unused connections in amqp output.
1045@@ -1026,7 +1336,7 @@
1046
1047 ## v1.8.2 [2018-10-17]
1048
1049-### Bugfixes
1050+### Bug Fixes
1051
1052 - [#4844](https://github.com/influxdata/telegraf/pull/4844): Update write path to match updated InfluxDB v2 API.
1053 - [#4840](https://github.com/influxdata/telegraf/pull/4840): Fix missing timeouts in vsphere input.
1054@@ -1041,7 +1351,7 @@
1055
1056 ## v1.8.1 [2018-10-03]
1057
1058-### Bugfixes
1059+### Bug Fixes
1060
1061 - [#4750](https://github.com/influxdata/telegraf/pull/4750): Fix hardware_type may be truncated in sqlserver input.
1062 - [#4723](https://github.com/influxdata/telegraf/issues/4723): Improve performance in basicstats aggregator.
1063@@ -1165,7 +1475,7 @@
1064 - [#4682](https://github.com/influxdata/telegraf/pull/4682): Allow alternate binaries for iptables input plugin.
1065 - [#4645](https://github.com/influxdata/telegraf/pull/4645): Add influxdb_v2 output plugin.
1066
1067-### Bugfixes
1068+### Bug Fixes
1069
1070 - [#3438](https://github.com/influxdata/telegraf/issues/3438): Fix divide by zero in logparser input.
1071 - [#4499](https://github.com/influxdata/telegraf/issues/4499): Fix instance and object name in performance counters with backslashes.
1072@@ -1182,7 +1492,7 @@
1073
1074 ## v1.7.4 [2018-08-29]
1075
1076-### Bugfixes
1077+### Bug Fixes
1078
1079 - [#4534](https://github.com/influxdata/telegraf/pull/4534): Skip unserializable metric in influxDB UDP output.
1080 - [#4554](https://github.com/influxdata/telegraf/pull/4554): Fix powerdns input tests.
1081@@ -1195,7 +1505,7 @@
1082
1083 ## v1.7.3 [2018-08-07]
1084
1085-### Bugfixes
1086+### Bug Fixes
1087
1088 - [#4434](https://github.com/influxdata/telegraf/issues/4434): Reduce required docker API version.
1089 - [#4498](https://github.com/influxdata/telegraf/pull/4498): Keep leading whitespace for messages in syslog input.
1090@@ -1207,7 +1517,7 @@
1091
1092 ## v1.7.2 [2018-07-18]
1093
1094-### Bugfixes
1095+### Bug Fixes
1096
1097 - [#4381](https://github.com/influxdata/telegraf/issues/4381): Use localhost as default server tag in zookeeper input.
1098 - [#4374](https://github.com/influxdata/telegraf/issues/4374): Don't set values when pattern doesn't match in regex processor.
1099@@ -1219,7 +1529,7 @@
1100
1101 ## v1.7.1 [2018-07-03]
1102
1103-### Bugfixes
1104+### Bug Fixes
1105
1106 - [#4277](https://github.com/influxdata/telegraf/pull/4277): Treat sigterm as a clean shutdown signal.
1107 - [#4284](https://github.com/influxdata/telegraf/pull/4284): Fix selection of tags under nested objects in the JSON parser.
1108@@ -1296,7 +1606,7 @@
1109 - [#3995](https://github.com/influxdata/telegraf/pull/3995): Add passive mode exchange declaration option to amqp consumer input.
1110 - [#4216](https://github.com/influxdata/telegraf/pull/4216): Add counter fields to pf input.
1111
1112-### Bugfixes
1113+### Bug Fixes
1114
1115 - [#4018](https://github.com/influxdata/telegraf/pull/4018): Write to working file outputs if any files are not writeable.
1116 - [#4036](https://github.com/influxdata/telegraf/pull/4036): Add all win_perf_counters fields for a series in a single metric.
1117@@ -1310,7 +1620,7 @@
1118
1119 ## v1.6.4 [2018-06-05]
1120
1121-### Bugfixes
1122+### Bug Fixes
1123
1124 - [#4203](https://github.com/influxdata/telegraf/issues/4203): Fix snmp overriding of auto-configured table fields.
1125 - [#4218](https://github.com/influxdata/telegraf/issues/4218): Fix uint support in cloudwatch output.
1126@@ -1319,7 +1629,7 @@
1127
1128 ## v1.6.3 [2018-05-21]
1129
1130-### Bugfixes
1131+### Bug Fixes
1132
1133 - [#4127](https://github.com/influxdata/telegraf/issues/4127): Fix intermittent panic in aerospike input.
1134 - [#4130](https://github.com/influxdata/telegraf/issues/4130): Fix connection leak in jolokia2_agent.
1135@@ -1330,7 +1640,7 @@
1136
1137 ## v1.6.2 [2018-05-08]
1138
1139-### Bugfixes
1140+### Bug Fixes
1141
1142 - [#4078](https://github.com/influxdata/telegraf/pull/4078): Use same timestamp for fields in system input.
1143 - [#4091](https://github.com/influxdata/telegraf/pull/4091): Fix handling of uint64 in datadog output.
1144@@ -1340,7 +1650,7 @@
1145
1146 ## v1.6.1 [2018-04-23]
1147
1148-### Bugfixes
1149+### Bug Fixes
1150
1151 - [#3835](https://github.com/influxdata/telegraf/issues/3835): Report mem input fields as gauges instead counters.
1152 - [#4030](https://github.com/influxdata/telegraf/issues/4030): Fix graphite outputs unsigned integers in wrong format.
1153@@ -1449,7 +1759,7 @@
1154 - [#3811](https://github.com/influxdata/telegraf/pull/3811): Add TLS support to zookeeper input.
1155 - [#2737](https://github.com/influxdata/telegraf/issues/2737): Add filters for container state to docker input.
1156
1157-### Bugfixes
1158+### Bug Fixes
1159
1160 - [#1896](https://github.com/influxdata/telegraf/issues/1896): Fix various mysql data type conversions.
1161 - [#3810](https://github.com/influxdata/telegraf/issues/3810): Fix metric buffer limit in internal plugin after reload.
1162@@ -1466,7 +1776,7 @@
1163
1164 ## v1.5.3 [2018-03-14]
1165
1166-### Bugfixes
1167+### Bug Fixes
1168
1169 - [#3729](https://github.com/influxdata/telegraf/issues/3729): Set path to / if HOST_MOUNT_PREFIX matches full path.
1170 - [#3739](https://github.com/influxdata/telegraf/issues/3739): Remove userinfo from url tag in prometheus input.
1171@@ -1478,7 +1788,7 @@
1172
1173 ## v1.5.2 [2018-01-30]
1174
1175-### Bugfixes
1176+### Bug Fixes
1177
1178 - [#3684](https://github.com/influxdata/telegraf/pull/3684): Ignore empty lines in Graphite plaintext.
1179 - [#3604](https://github.com/influxdata/telegraf/issues/3604): Fix index out of bounds error in solr input plugin.
1180@@ -1492,7 +1802,7 @@
1181
1182 ## v1.5.1 [2018-01-10]
1183
1184-### Bugfixes
1185+### Bug Fixes
1186
1187 - [#3624](https://github.com/influxdata/telegraf/pull/3624): Fix name error in jolokia2_agent sample config.
1188 - [#3625](https://github.com/influxdata/telegraf/pull/3625): Fix DC/OS login expiration time.
1189@@ -1588,7 +1898,7 @@
1190 - [#3528](https://github.com/influxdata/telegraf/pull/3528): Add option to amqp output to publish persistent messages.
1191 - [#3530](https://github.com/influxdata/telegraf/pull/3530): Support I (idle) process state on procfs+Linux.
1192
1193-### Bugfixes
1194+### Bug Fixes
1195
1196 - [#3136](https://github.com/influxdata/telegraf/issues/3136): Fix webhooks input address in use during reload.
1197 - [#3258](https://github.com/influxdata/telegraf/issues/3258): Unlock Statsd when stopping to prevent deadlock.
1198@@ -1607,7 +1917,7 @@
1199
1200 ## v1.4.5 [2017-12-01]
1201
1202-### Bugfixes
1203+### Bug Fixes
1204
1205 - [#3500](https://github.com/influxdata/telegraf/issues/3500): Fix global variable collection when using interval_slow option in mysql input.
1206 - [#3486](https://github.com/influxdata/telegraf/issues/3486): Fix error getting net connections info in netstat input.
1207@@ -1615,7 +1925,7 @@
1208
1209 ## v1.4.4 [2017-11-08]
1210
1211-### Bugfixes
1212+### Bug Fixes
1213
1214 - [#3401](https://github.com/influxdata/telegraf/pull/3401): Use schema specified in mqtt_consumer input.
1215 - [#3419](https://github.com/influxdata/telegraf/issues/3419): Redact datadog API key in log output.
1216@@ -1625,7 +1935,7 @@
1217
1218 ## v1.4.3 [2017-10-25]
1219
1220-### Bugfixes
1221+### Bug Fixes
1222
1223 - [#3327](https://github.com/influxdata/telegraf/issues/3327): Fix container name filters in docker input.
1224 - [#3321](https://github.com/influxdata/telegraf/issues/3321): Fix snmpwalk address format in leofs input.
1225@@ -1641,7 +1951,7 @@
1226
1227 ## v1.4.2 [2017-10-10]
1228
1229-### Bugfixes
1230+### Bug Fixes
1231
1232 - [#3259](https://github.com/influxdata/telegraf/issues/3259): Fix error if int larger than 32-bit in /proc/vmstat.
1233 - [#3265](https://github.com/influxdata/telegraf/issues/3265): Fix parsing of JSON with a UTF8 BOM in httpjson.
1234@@ -1655,7 +1965,7 @@
1235
1236 ## v1.4.1 [2017-09-26]
1237
1238-### Bugfixes
1239+### Bug Fixes
1240
1241 - [#3167](https://github.com/influxdata/telegraf/issues/3167): Fix MQTT input exits if Broker is not available on startup.
1242 - [#3217](https://github.com/influxdata/telegraf/issues/3217): Fix optional field value conversions in fluentd input.
1243@@ -1732,7 +2042,7 @@
1244 - [#3112](https://github.com/influxdata/telegraf/pull/3112): Add tomcat input plugin.
1245 - [#3182](https://github.com/influxdata/telegraf/pull/3182): HTTP headers can be added to InfluxDB output.
1246
1247-### Bugfixes
1248+### Bug Fixes
1249
1250 - [#2607](https://github.com/influxdata/telegraf/issues/2607): Improve logging of errors in Cassandra input.
1251 - [#2819](https://github.com/influxdata/telegraf/pull/2819): [enh] set db_version at 0 if query version fails
1252@@ -1775,7 +2085,7 @@
1253
1254 ## v1.3.5 [2017-07-26]
1255
1256-### Bugfixes
1257+### Bug Fixes
1258
1259 - [#3049](https://github.com/influxdata/telegraf/issues/3049): Fix prometheus output cannot be reloaded.
1260 - [#3037](https://github.com/influxdata/telegraf/issues/3037): Fix filestat reporting exists when cannot list directory.
1261@@ -1784,7 +2094,7 @@
1262
1263 ## v1.3.4 [2017-07-12]
1264
1265-### Bugfixes
1266+### Bug Fixes
1267
1268 - [#3001](https://github.com/influxdata/telegraf/issues/3001): Fix handling of escape characters within fields.
1269 - [#2988](https://github.com/influxdata/telegraf/issues/2988): Fix chrony plugin does not track system time offset.
1270@@ -1793,7 +2103,7 @@
1271
1272 ## v1.3.3 [2017-06-28]
1273
1274-### Bugfixes
1275+### Bug Fixes
1276
1277 - [#2915](https://github.com/influxdata/telegraf/issues/2915): Allow dos line endings in tail and logparser.
1278 - [#2937](https://github.com/influxdata/telegraf/issues/2937): Remove label value sanitization in prometheus output.
1279@@ -1802,7 +2112,7 @@
1280
1281 ## v1.3.2 [2017-06-14]
1282
1283-### Bugfixes
1284+### Bug Fixes
1285
1286 - [#2862](https://github.com/influxdata/telegraf/issues/2862): Fix InfluxDB UDP metric splitting.
1287 - [#2888](https://github.com/influxdata/telegraf/issues/2888): Fix mongodb/leofs urls without scheme.
1288@@ -1810,7 +2120,7 @@
1289
1290 ## v1.3.1 [2017-05-31]
1291
1292-### Bugfixes
1293+### Bug Fixes
1294
1295 - [#2749](https://github.com/influxdata/telegraf/pull/2749): Fixed sqlserver input to work with case sensitive server collation.
1296 - [#2782](https://github.com/influxdata/telegraf/pull/2782): Reuse transports in input plugins
1297@@ -1905,7 +2215,7 @@ be deprecated eventually.
1298 - [#2712](https://github.com/influxdata/telegraf/issues/2712): Documentation for rabbitmq input plugin
1299 - [#2141](https://github.com/influxdata/telegraf/pull/2141): Logparser handles newly-created files.
1300
1301-### Bugfixes
1302+### Bug Fixes
1303
1304 - [#2633](https://github.com/influxdata/telegraf/pull/2633): ipmi_sensor: allow @ symbol in password
1305 - [#2077](https://github.com/influxdata/telegraf/issues/2077): SQL Server Input - Arithmetic overflow error converting numeric to data type int.
1306@@ -1947,7 +2257,7 @@ be deprecated eventually.
1307
1308 ## v1.2.1 [2017-02-01]
1309
1310-### Bugfixes
1311+### Bug Fixes
1312
1313 - [#2317](https://github.com/influxdata/telegraf/issues/2317): Fix segfault on nil metrics with influxdb output.
1314 - [#2324](https://github.com/influxdata/telegraf/issues/2324): Fix negative number handling.
1315@@ -2004,7 +2314,7 @@ plugins, not just statsd.
1316 - [#2097](https://github.com/influxdata/telegraf/issues/2097): Configurable HTTP timeouts in Jolokia plugin
1317 - [#2255](https://github.com/influxdata/telegraf/pull/2255): Allow changing jolokia attribute delimiter
1318
1319-### Bugfixes
1320+### Bug Fixes
1321
1322 - [#2049](https://github.com/influxdata/telegraf/pull/2049): Fix the Value data format not trimming null characters from input.
1323 - [#1949](https://github.com/influxdata/telegraf/issues/1949): Fix windows `net` plugin.
1324@@ -2032,14 +2342,14 @@ plugins, not just statsd.
1325
1326 ## v1.1.2 [2016-12-12]
1327
1328-### Bugfixes
1329+### Bug Fixes
1330
1331 - [#2007](https://github.com/influxdata/telegraf/issues/2007): Make snmptranslate not required when using numeric OID.
1332 - [#2104](https://github.com/influxdata/telegraf/issues/2104): Add a global snmp translation cache.
1333
1334 ## v1.1.1 [2016-11-14]
1335
1336-### Bugfixes
1337+### Bug Fixes
1338
1339 - [#2023](https://github.com/influxdata/telegraf/issues/2023): Fix issue parsing toml durations with single quotes.
1340
1341@@ -2086,7 +2396,7 @@ continue sending logs to /var/log/telegraf/telegraf.log.
1342 - [#1700](https://github.com/influxdata/telegraf/pull/1700): HAProxy plugin socket glob matching.
1343 - [#1847](https://github.com/influxdata/telegraf/pull/1847): Add Kubernetes plugin for retrieving pod metrics.
1344
1345-### Bugfixes
1346+### Bug Fixes
1347
1348 - [#1955](https://github.com/influxdata/telegraf/issues/1955): Fix NATS plug-ins reconnection logic.
1349 - [#1936](https://github.com/influxdata/telegraf/issues/1936): Set required default values in udp_listener & tcp_listener.
1350@@ -2122,7 +2432,7 @@ continue sending logs to /var/log/telegraf/telegraf.log.
1351
1352 ## v1.0.1 [2016-09-26]
1353
1354-### Bugfixes
1355+### Bug Fixes
1356
1357 - [#1775](https://github.com/influxdata/telegraf/issues/1775): Prometheus output: Fix bug with multi-batch writes.
1358 - [#1738](https://github.com/influxdata/telegraf/issues/1738): Fix unmarshal of influxdb metrics with null tags.
1359@@ -2225,7 +2535,7 @@ consistent with the behavior of `collection_jitter`.
1360 - [#1414](https://github.com/influxdata/telegraf/pull/1414): Forking sensors command to remove C package dependency.
1361 - [#1389](https://github.com/influxdata/telegraf/pull/1389): Add a new SNMP plugin.
1362
1363-### Bugfixes
1364+### Bug Fixes
1365
1366 - [#1619](https://github.com/influxdata/telegraf/issues/1619): Fix `make windows` build target
1367 - [#1519](https://github.com/influxdata/telegraf/pull/1519): Fix error race conditions and partial failures.
1368@@ -2299,7 +2609,7 @@ to "stdout".
1369 - [#479](https://github.com/influxdata/telegraf/issues/479): per-plugin execution time added to debug output.
1370 - [#1249](https://github.com/influxdata/telegraf/issues/1249): influxdb output: added write_consistency argument.
1371
1372-### Bugfixes
1373+### Bug Fixes
1374
1375 - [#1195](https://github.com/influxdata/telegraf/pull/1195): Docker panic on timeout. Thanks @zstyblik!
1376 - [#1211](https://github.com/influxdata/telegraf/pull/1211): mongodb input. Fix possible panic. Thanks @kols!
1377@@ -2393,7 +2703,7 @@ It is not included on the report path. This is necessary for reporting host disk
1378 - [#1128](https://github.com/influxdata/telegraf/pull/1128): MongoDB jumbo chunks metric for MongoDB input plugin
1379 - [#1146](https://github.com/influxdata/telegraf/pull/1146): HAProxy socket support. Thanks weshmashian!
1380
1381-### Bugfixes
1382+### Bug Fixes
1383
1384 - [#1050](https://github.com/influxdata/telegraf/issues/1050): jolokia plugin - do not overwrite host tag. Thanks @saiello!
1385 - [#921](https://github.com/influxdata/telegraf/pull/921): mqtt_consumer stops gathering metrics. Thanks @chaton78!
1386@@ -2439,7 +2749,7 @@ because the `value` field is redundant in the graphite/librato context.
1387 - [#1001](https://github.com/influxdata/telegraf/pull/1001): Graphite serializer templates.
1388 - [#1008](https://github.com/influxdata/telegraf/pull/1008): Adding memstats metrics to the influxdb plugin.
1389
1390-### Bugfixes
1391+### Bug Fixes
1392 - [#968](https://github.com/influxdata/telegraf/issues/968): Processes plugin gets unknown state when spaces are in (command name)
1393 - [#969](https://github.com/influxdata/telegraf/pull/969): ipmi_sensors: allow : in password. Thanks @awaw!
1394 - [#972](https://github.com/influxdata/telegraf/pull/972): dovecot: remove extra newline in dovecot command. Thanks @mrannanj!
1395@@ -2466,7 +2776,7 @@ because the `value` field is redundant in the graphite/librato context.
1396 - [#919](https://github.com/influxdata/telegraf/pull/919): ipmi_sensor input plugin. Thanks @ebookbug!
1397 - [#945](https://github.com/influxdata/telegraf/pull/945): KAFKA output: codec, acks, and retry configuration. Thanks @framiere!
1398
1399-### Bugfixes
1400+### Bug Fixes
1401 - [#890](https://github.com/influxdata/telegraf/issues/890): Create TLS config even if only ssl_ca is provided.
1402 - [#884](https://github.com/influxdata/telegraf/issues/884): Do not call write method if there are 0 metrics to write.
1403 - [#898](https://github.com/influxdata/telegraf/issues/898): Put database name in quotes, fixes special characters in the database name.
1404@@ -2487,7 +2797,7 @@ because the `value` field is redundant in the graphite/librato context.
1405 - [#747](https://github.com/influxdata/telegraf/pull/747): Start telegraf on install & remove on uninstall. Thanks @PierreF!
1406 - [#794](https://github.com/influxdata/telegraf/pull/794): Add service reload ability. Thanks @entertainyou!
1407
1408-### Bugfixes
1409+### Bug Fixes
1410 - [#852](https://github.com/influxdata/telegraf/issues/852): Windows zip package fix
1411 - [#859](https://github.com/influxdata/telegraf/issues/859): httpjson plugin panic
1412
1413@@ -2512,7 +2822,7 @@ because the `value` field is redundant in the graphite/librato context.
1414 - [#826](https://github.com/influxdata/telegraf/pull/826): "kernel" linux plugin for /proc/stat metrics (context switches, interrupts, etc.)
1415 - [#847](https://github.com/influxdata/telegraf/pull/847): `ntpq`: Input plugin for running ntp query executable and gathering metrics.
1416
1417-### Bugfixes
1418+### Bug Fixes
1419 - [#748](https://github.com/influxdata/telegraf/issues/748): Fix sensor plugin split on ":"
1420 - [#722](https://github.com/influxdata/telegraf/pull/722): Librato output plugin fixes. Thanks @chrusty!
1421 - [#745](https://github.com/influxdata/telegraf/issues/745): Fix Telegraf toml parse panic on large config files. Thanks @titilambert!
1422@@ -2530,7 +2840,7 @@ because the `value` field is redundant in the graphite/librato context.
1423 ### Release Notes
1424 - Bug in the build script broke deb and rpm packages.
1425
1426-### Bugfixes
1427+### Bug Fixes
1428 - [#750](https://github.com/influxdata/telegraf/issues/750): deb package broken
1429 - [#752](https://github.com/influxdata/telegraf/issues/752): rpm package broken
1430
1431@@ -2550,7 +2860,7 @@ on the metric _name_.
1432 - [#736](https://github.com/influxdata/telegraf/pull/736): Ignore dummy filesystems from disk plugin. Thanks @PierreF!
1433 - [#737](https://github.com/influxdata/telegraf/pull/737): Support multiple fields for statsd input. Thanks @mattheath!
1434
1435-### Bugfixes
1436+### Bug Fixes
1437 - [#701](https://github.com/influxdata/telegraf/pull/701): output write count shouldnt print in quiet mode.
1438 - [#746](https://github.com/influxdata/telegraf/pull/746): httpjson plugin: Fix HTTP GET parameters.
1439
1440@@ -2586,7 +2896,7 @@ and is in the `[agent]` config section.
1441 - [#699](https://github.com/influxdata/telegraf/pull/699): Flush based on buffer size rather than time.
1442 - [#682](https://github.com/influxdata/telegraf/pull/682): Mesos input plugin. Thanks @tripledes!
1443
1444-### Bugfixes
1445+### Bug Fixes
1446 - [#443](https://github.com/influxdata/telegraf/issues/443): Fix Ping command timeout parameter on Linux.
1447 - [#662](https://github.com/influxdata/telegraf/pull/667): Change `[tags]` to `[global_tags]` to fix multiple-plugin tags bug.
1448 - [#642](https://github.com/influxdata/telegraf/issues/642): Riemann output plugin issues.
1449@@ -2613,7 +2923,7 @@ doing the opposite of what it claimed to do (yikes). It's been replaced by
1450 - [#617](https://github.com/influxdata/telegraf/pull/617): exec plugin: parse influx line protocol in addition to JSON.
1451 - [#628](https://github.com/influxdata/telegraf/pull/628): Windows perf counters: pre-vista support
1452
1453-### Bugfixes
1454+### Bug Fixes
1455 - [#595](https://github.com/influxdata/telegraf/issues/595): graphite output should include tags to separate duplicate measurements.
1456 - [#599](https://github.com/influxdata/telegraf/issues/599): datadog plugin tags not working.
1457 - [#600](https://github.com/influxdata/telegraf/issues/600): datadog measurement/field name parsing is wrong.
1458@@ -2658,7 +2968,7 @@ specifying a docker endpoint to get metrics from.
1459 - [#573](https://github.com/influxdata/telegraf/pull/573): Github webhooks consumer input. Thanks @jackzampolin!
1460 - [#471](https://github.com/influxdata/telegraf/pull/471): httpjson request headers. Thanks @asosso!
1461
1462-### Bugfixes
1463+### Bug Fixes
1464 - [#506](https://github.com/influxdata/telegraf/pull/506): Ping input doesn't return response time metric when timeout. Thanks @titilambert!
1465 - [#508](https://github.com/influxdata/telegraf/pull/508): Fix prometheus cardinality issue with the `net` plugin
1466 - [#499](https://github.com/influxdata/telegraf/issues/499) & [#502](https://github.com/influxdata/telegraf/issues/502): php fpm unix socket and other fixes, thanks @kureikain!
1467@@ -2704,7 +3014,7 @@ configurations overwritten by the upgrade. There is a backup stored at
1468 (`name_prefix` and `name_suffix`)
1469 - Added ability to override base plugin measurement name. (`name_override`)
1470
1471-### Bugfixes
1472+### Bug Fixes
1473
1474 ## v0.2.5 [unreleased]
1475
1476@@ -2713,7 +3023,7 @@ configurations overwritten by the upgrade. There is a backup stored at
1477 - [#428](https://github.com/influxdata/telegraf/pull/428): Amazon Kinesis output. Thanks @jimmystewpot!
1478 - [#449](https://github.com/influxdata/telegraf/pull/449): influxdb plugin, thanks @mark-rushakoff
1479
1480-### Bugfixes
1481+### Bug Fixes
1482 - [#430](https://github.com/influxdata/telegraf/issues/430): Network statistics removed in elasticsearch 2.1. Thanks @jipperinbham!
1483 - [#452](https://github.com/influxdata/telegraf/issues/452): Elasticsearch open file handles error. Thanks @jipperinbham!
1484
1485@@ -2729,7 +3039,7 @@ configurations overwritten by the upgrade. There is a backup stored at
1486 - [#382](https://github.com/influxdata/telegraf/pull/382): Add system wide network protocol stats to `net` plugin.
1487 - [#401](https://github.com/influxdata/telegraf/pull/401): Support pass/drop/tagpass/tagdrop for outputs. Thanks @oldmantaiter!
1488
1489-### Bugfixes
1490+### Bug Fixes
1491 - [#405](https://github.com/influxdata/telegraf/issues/405): Prometheus output cardinality issue
1492 - [#388](https://github.com/influxdata/telegraf/issues/388): Fix collection hangup when cpu times decrement.
1493
1494@@ -2766,7 +3076,7 @@ same type can be specified, like this:
1495 - [#383](https://github.com/influxdata/telegraf/pull/383): Specify plugins as a list.
1496 - [#354](https://github.com/influxdata/telegraf/pull/354): Add ability to specify multiple metrics in one statsd line. Thanks @MerlinDMC!
1497
1498-### Bugfixes
1499+### Bug Fixes
1500 - [#371](https://github.com/influxdata/telegraf/issues/371): Kafka consumer plugin not functioning.
1501 - [#389](https://github.com/influxdata/telegraf/issues/389): NaN value panic
1502
1503@@ -2776,7 +3086,7 @@ same type can be specified, like this:
1504 - 0.2.1 has a bug where all lists within plugins get duplicated, this includes
1505 lists of servers/URLs. 0.2.2 is being released solely to fix that bug
1506
1507-### Bugfixes
1508+### Bug Fixes
1509 - [#377](https://github.com/influxdata/telegraf/pull/377): Fix for duplicate slices in inputs.
1510
1511 ## v0.2.1 [2015-11-16]
1512@@ -2805,7 +3115,7 @@ same type.
1513 - [#370](https://github.com/influxdata/telegraf/pull/370): Support specifying multiple outputs, as lists.
1514 - [#372](https://github.com/influxdata/telegraf/pull/372): Remove gosigar and update go-dockerclient for FreeBSD support. Thanks @MerlinDMC!
1515
1516-### Bugfixes
1517+### Bug Fixes
1518 - [#331](https://github.com/influxdata/telegraf/pull/331): Dont overwrite host tag in redis plugin.
1519 - [#336](https://github.com/influxdata/telegraf/pull/336): Mongodb plugin should take 2 measurements.
1520 - [#351](https://github.com/influxdata/telegraf/issues/317): Fix continual "CREATE DATABASE" in writes
1521@@ -2853,7 +3163,7 @@ of metrics collected and from how many inputs.
1522 - [#300](https://github.com/influxdata/telegraf/issues/300): aerospike plugin. Thanks @oldmantaiter!
1523 - [#322](https://github.com/influxdata/telegraf/issues/322): Librato output. Thanks @jipperinbham!
1524
1525-### Bugfixes
1526+### Bug Fixes
1527 - [#228](https://github.com/influxdata/telegraf/pull/228): New version of package will replace old one. Thanks @ekini!
1528 - [#232](https://github.com/influxdata/telegraf/pull/232): Fix bashism run during deb package installation. Thanks @yankcrime!
1529 - [#261](https://github.com/influxdata/telegraf/issues/260): RabbitMQ panics if wrong credentials given. Thanks @ekini!
1530@@ -2896,7 +3206,7 @@ re-added in a "verbose" mode if there is demand for it.
1531 - [#217](https://github.com/influxdata/telegraf/pull/217): Add filtering for output sinks
1532 and filtering when specifying a config file.
1533
1534-### Bugfixes
1535+### Bug Fixes
1536 - [#170](https://github.com/influxdata/telegraf/issues/170): Systemd support
1537 - [#175](https://github.com/influxdata/telegraf/issues/175): Set write precision before gathering metrics
1538 - [#178](https://github.com/influxdata/telegraf/issues/178): redis plugin, multiple server thread hang bug
1539@@ -2924,7 +3234,7 @@ and filtering when specifying a config file.
1540 - [#166](https://github.com/influxdata/telegraf/pull/166): Upload binaries to S3
1541 - [#169](https://github.com/influxdata/telegraf/pull/169): Ping plugin
1542
1543-### Bugfixes
1544+### Bug Fixes
1545
1546 ## v0.1.7 [2015-08-28]
1547
1548@@ -2937,7 +3247,7 @@ and filtering when specifying a config file.
1549 - [#142](https://github.com/influxdata/telegraf/pull/142): Add Description and SampleConfig funcs to output interface
1550 - Indent the toml config file for readability
1551
1552-### Bugfixes
1553+### Bug Fixes
1554 - [#128](https://github.com/influxdata/telegraf/issues/128): system_load measurement missing.
1555 - [#129](https://github.com/influxdata/telegraf/issues/129): Latest pkg url fix.
1556 - [#131](https://github.com/influxdata/telegraf/issues/131): Fix memory reporting on linux & darwin. Thanks @subhachandrachandra!
1557@@ -2950,7 +3260,7 @@ and filtering when specifying a config file.
1558 - [#116](https://github.com/influxdata/telegraf/pull/116): Use godep to vendor all dependencies
1559 - [#120](https://github.com/influxdata/telegraf/pull/120): Httpjson plugin. Thanks @jpalay & @alvaromorales!
1560
1561-### Bugfixes
1562+### Bug Fixes
1563 - [#113](https://github.com/influxdata/telegraf/issues/113): Update README with Telegraf/InfluxDB compatibility
1564 - [#118](https://github.com/influxdata/telegraf/pull/118): Fix for disk usage stats in Windows. Thanks @srfraser!
1565 - [#122](https://github.com/influxdata/telegraf/issues/122): Fix for DiskUsage segv fault. Thanks @srfraser!
1566@@ -2976,7 +3286,7 @@ and filtering when specifying a config file.
1567 - [#108](https://github.com/influxdata/telegraf/issues/108): Support setting per-CPU and total-CPU gathering.
1568 - [#111](https://github.com/influxdata/telegraf/pull/111): Report CPU Usage in cpu plugin. Thanks @jpalay!
1569
1570-### Bugfixes
1571+### Bug Fixes
1572 - [#85](https://github.com/influxdata/telegraf/pull/85): Fix GetLocalHost testutil function for mac users
1573 - [#89](https://github.com/influxdata/telegraf/pull/89): go fmt fixes
1574 - [#94](https://github.com/influxdata/telegraf/pull/94): Fix for issue #93, explicitly call sarama.v1 -> sarama
1575@@ -2988,7 +3298,7 @@ and filtering when specifying a config file.
1576 ### Features
1577 - [#56](https://github.com/influxdata/telegraf/pull/56): Update README for Kafka plugin. Thanks @EmilS!
1578
1579-### Bugfixes
1580+### Bug Fixes
1581 - [#50](https://github.com/influxdata/telegraf/pull/50): Fix init.sh script to use telegraf directory. Thanks @jseriff!
1582 - [#52](https://github.com/influxdata/telegraf/pull/52): Update CHANGELOG to reference updated directory. Thanks @benfb!
1583
1584@@ -2998,7 +3308,7 @@ and filtering when specifying a config file.
1585 - [#35](https://github.com/influxdata/telegraf/pull/35): Add Kafka plugin. Thanks @EmilS!
1586 - [#47](https://github.com/influxdata/telegraf/pull/47): Add RethinkDB plugin. Thanks @jipperinbham!
1587
1588-### Bugfixes
1589+### Bug Fixes
1590 - [#45](https://github.com/influxdata/telegraf/pull/45): Skip disk tags that don't have a value. Thanks @jhofeditz!
1591 - [#43](https://github.com/influxdata/telegraf/pull/43): Fix bug in MySQL plugin. Thanks @marcosnils!
1592
1593@@ -3010,7 +3320,7 @@ and filtering when specifying a config file.
1594 - [#16](https://github.com/influxdata/telegraf/pull/16): Convert Redis to use URI, support Redis AUTH. Thanks @jipperinbham!
1595 - [#21](https://github.com/influxdata/telegraf/pull/21): Add memcached plugin. Thanks @Yukki!
1596
1597-### Bugfixes
1598+### Bug Fixes
1599 - [#13](https://github.com/influxdata/telegraf/pull/13): Fix the packaging script.
1600 - [#19](https://github.com/influxdata/telegraf/pull/19): Add host name to metric tags. Thanks @sherifzain!
1601 - [#20](https://github.com/influxdata/telegraf/pull/20): Fix race condition with accumulator mutex. Thanks @nkatsaros!
1602diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
1603index 897ac13..fb6c97a 100644
1604--- a/CONTRIBUTING.md
1605+++ b/CONTRIBUTING.md
1606@@ -13,8 +13,13 @@
1607 1. Ensure you have added proper unit tests and documentation.
1608 1. Open a new [pull request][].
1609
1610+<<<<<<< CONTRIBUTING.md
1611 #### Contributing an External Plugin *(experimental)*
1612 Input, output, and processor plugins written for internal Telegraf can be run as externally-compiled plugins through the [Execd Input](plugins/inputs/execd), [Execd Output](/plugins/inputs/execd), and [Execd Processor](plugins/processors/execd) Plugins without having to change the plugin code.
1613+=======
1614+#### Contributing an External Plugin *(new)*
1615+Input, output, and processor plugins written for internal Telegraf can be run as externally-compiled plugins through the [Execd Input](plugins/inputs/execd), [Execd Output](/plugins/outputs/execd), and [Execd Processor](plugins/processors/execd) Plugins without having to change the plugin code.
1616+>>>>>>> CONTRIBUTING.md
1617
1618 Follow the guidelines of how to integrate your plugin with the [Execd Go Shim](/plugins/common/shim) to easily compile it as a separate app and run it with the respective `execd` plugin.
1619 Check out our [guidelines](docs/EXTERNAL_PLUGINS.md#external-plugin-guidelines) on how to build and set up your external plugins to run with `execd`.
1620diff --git a/EXTERNAL_PLUGINS.md b/EXTERNAL_PLUGINS.md
1621index 07c917e..93dcb14 100644
1622--- a/EXTERNAL_PLUGINS.md
1623+++ b/EXTERNAL_PLUGINS.md
1624@@ -1,11 +1,26 @@
1625 # External Plugins
1626
1627-This is a list of plugins that can be compiled outside of Telegraf and used via the execd input.
1628+This is a list of plugins that can be compiled outside of Telegraf and used via the `execd` [input](plugins/inputs/execd), [output](plugins/outputs/execd), or [processor](plugins/processors/execd).
1629+Check out the [external plugin documentation](/docs/EXTERNAL_PLUGINS.md) for more information on writing and contributing a plugin.
1630
1631 Pull requests welcome.
1632
1633 ## Inputs
1634+- [awsalarms](https://github.com/vipinvkmenon/awsalarms) - Simple plugin to gather/monitor alarms generated in AWS.
1635+- [octoprint](https://github.com/BattleBas/octoprint-telegraf-plugin) - Gather 3d print information from the octoprint API.
1636+- [open-hardware-monitor](https://github.com/marianob85/open_hardware_monitor-telegraf-plugin) - Gather sensors data provided by [Open Hardware Monitor](http://openhardwaremonitor.org)
1637 - [rand](https://github.com/ssoroka/rand) - Generate random numbers
1638+- [systemd-timings](https://github.com/pdmorrow/telegraf-execd-systemd-timings) - Gather systemd boot and unit timestamp metrics.
1639 - [twitter](https://github.com/inabagumi/twitter-telegraf-plugin) - Gather account information from Twitter accounts
1640 - [youtube](https://github.com/inabagumi/youtube-telegraf-plugin) - Gather account information from YouTube channels
1641+<<<<<<< EXTERNAL_PLUGINS.md
1642 - [awsalarms](https://github.com/vipinvkmenon/awsalarms) - Simple plugin to gather/monitor alarms generated in AWS.
1643+=======
1644+
1645+## Outputs
1646+- [kinesis](https://github.com/morfien101/telegraf-output-kinesis) - Aggregation and compression of metrics to send Amazon Kinesis.
1647+
1648+## Processors
1649+ - [geoip](https://github.com/a-bali/telegraf-geoip) - Add GeoIP information to IP addresses.
1650+
1651+>>>>>>> EXTERNAL_PLUGINS.md
1652diff --git a/Makefile b/Makefile
1653index f07afed..6fd50e3 100644
1654--- a/Makefile
1655+++ b/Makefile
1656@@ -1,7 +1,12 @@
1657+<<<<<<< Makefile
1658 next_version := 1.15.3
1659+=======
1660+next_version := $(shell cat build_version.txt)
1661+>>>>>>> Makefile
1662 tag := $(shell git describe --exact-match --tags 2>git_describe_error.tmp; rm -f git_describe_error.tmp)
1663 branch := $(shell git rev-parse --abbrev-ref HEAD)
1664 commit := $(shell git rev-parse --short=8 HEAD)
1665+glibc_version := 2.17
1666
1667 ifdef NIGHTLY
1668 version := $(next_version)
1669@@ -40,7 +45,7 @@ GOOS ?= $(shell go env GOOS)
1670 GOARCH ?= $(shell go env GOARCH)
1671 HOSTGO := env -u GOOS -u GOARCH -u GOARM -- go
1672
1673-LDFLAGS := $(LDFLAGS) -X main.commit=$(commit) -X main.branch=$(branch)
1674+LDFLAGS := $(LDFLAGS) -X main.commit=$(commit) -X main.branch=$(branch) -X main.goos=$(GOOS) -X main.goarch=$(GOARCH)
1675 ifneq ($(tag),)
1676 LDFLAGS += -X main.version=$(version)
1677 endif
1678@@ -86,7 +91,12 @@ deps:
1679
1680 .PHONY: telegraf
1681 telegraf:
1682- go build -ldflags "$(LDFLAGS)" ./cmd/telegraf
1683+ go build -mod=mod -ldflags "$(LDFLAGS)" ./cmd/telegraf
1684+
1685+# Used by dockerfile builds
1686+.PHONY: go-install
1687+go-install:
1688+ go install -mod=mod -ldflags "-w -s $(LDFLAGS)" ./cmd/telegraf
1689
1690 # Used by dockerfile builds
1691 .PHONY: go-install
1692@@ -113,12 +123,7 @@ fmtcheck:
1693
1694 .PHONY: test-windows
1695 test-windows:
1696- go test -short $(race_detector) ./plugins/inputs/ping/...
1697- go test -short $(race_detector) ./plugins/inputs/win_perf_counters/...
1698- go test -short $(race_detector) ./plugins/inputs/win_services/...
1699- go test -short $(race_detector) ./plugins/inputs/procstat/...
1700- go test -short $(race_detector) ./plugins/inputs/ntpq/...
1701- go test -short $(race_detector) ./plugins/processors/port_name/...
1702+ go test -short ./...
1703
1704 .PHONY: vet
1705 vet:
1706@@ -159,7 +164,11 @@ clean:
1707
1708 .PHONY: docker-image
1709 docker-image:
1710+<<<<<<< Makefile
1711 docker build -f scripts/stretch.docker -t "telegraf:$(commit)" .
1712+=======
1713+ docker build -f scripts/buster.docker -t "telegraf:$(commit)" .
1714+>>>>>>> Makefile
1715
1716 plugins/parsers/influx/machine.go: plugins/parsers/influx/machine.go.rl
1717 ragel -Z -G2 $^ -o $@
1718@@ -169,15 +178,15 @@ plugin-%:
1719 @echo "Starting dev environment for $${$(@)} input plugin..."
1720 @docker-compose -f plugins/inputs/$${$(@)}/dev/docker-compose.yml up
1721
1722+.PHONY: ci-1.15
1723+ci-1.15:
1724+ docker build -t quay.io/influxdb/telegraf-ci:1.15.5 - < scripts/ci-1.15.docker
1725+ docker push quay.io/influxdb/telegraf-ci:1.15.5
1726+
1727 .PHONY: ci-1.14
1728 ci-1.14:
1729- docker build -t quay.io/influxdb/telegraf-ci:1.14.5 - < scripts/ci-1.14.docker
1730- docker push quay.io/influxdb/telegraf-ci:1.14.5
1731-
1732-.PHONY: ci-1.13
1733-ci-1.13:
1734- docker build -t quay.io/influxdb/telegraf-ci:1.13.13 - < scripts/ci-1.13.docker
1735- docker push quay.io/influxdb/telegraf-ci:1.13.13
1736+ docker build -t quay.io/influxdb/telegraf-ci:1.14.9 - < scripts/ci-1.14.docker
1737+ docker push quay.io/influxdb/telegraf-ci:1.14.9
1738
1739 .PHONY: install
1740 install: $(buildbin)
1741@@ -191,6 +200,7 @@ install: $(buildbin)
1742 @if [ $(GOOS) != "windows" ]; then cp -fv etc/telegraf.conf $(DESTDIR)$(sysconfdir)/telegraf/telegraf.conf$(conf_suffix); fi
1743 @if [ $(GOOS) != "windows" ]; then cp -fv etc/logrotate.d/telegraf $(DESTDIR)$(sysconfdir)/logrotate.d; fi
1744 @if [ $(GOOS) = "windows" ]; then cp -fv etc/telegraf_windows.conf $(DESTDIR)/telegraf.conf; fi
1745+ @if [ $(GOOS) = "linux" ]; then scripts/check-dynamic-glibc-versions.sh $(buildbin) $(glibc_version); fi
1746 @if [ $(GOOS) = "linux" ]; then mkdir -pv $(DESTDIR)$(prefix)/lib/telegraf/scripts; fi
1747 @if [ $(GOOS) = "linux" ]; then cp -fv scripts/telegraf.service $(DESTDIR)$(prefix)/lib/telegraf/scripts; fi
1748 @if [ $(GOOS) = "linux" ]; then cp -fv scripts/init.sh $(DESTDIR)$(prefix)/lib/telegraf/scripts; fi
1749@@ -210,12 +220,14 @@ debs += telegraf_$(deb_version)_i386.deb
1750 debs += telegraf_$(deb_version)_mips.deb
1751 debs += telegraf_$(deb_version)_mipsel.deb
1752 debs += telegraf_$(deb_version)_s390x.deb
1753+debs += telegraf_$(deb_version)_ppc64el.deb
1754
1755 rpms += telegraf-$(rpm_version).aarch64.rpm
1756 rpms += telegraf-$(rpm_version).armel.rpm
1757 rpms += telegraf-$(rpm_version).armv6hl.rpm
1758 rpms += telegraf-$(rpm_version).i386.rpm
1759 rpms += telegraf-$(rpm_version).s390x.rpm
1760+rpms += telegraf-$(rpm_version).ppc64le.rpm
1761 rpms += telegraf-$(rpm_version).x86_64.rpm
1762
1763 tars += telegraf-$(tar_version)_darwin_amd64.tar.gz
1764@@ -229,6 +241,7 @@ tars += telegraf-$(tar_version)_linux_i386.tar.gz
1765 tars += telegraf-$(tar_version)_linux_mips.tar.gz
1766 tars += telegraf-$(tar_version)_linux_mipsel.tar.gz
1767 tars += telegraf-$(tar_version)_linux_s390x.tar.gz
1768+tars += telegraf-$(tar_version)_linux_ppc64le.tar.gz
1769 tars += telegraf-$(tar_version)_static_linux_amd64.tar.gz
1770
1771 zips += telegraf-$(tar_version)_windows_amd64.zip
1772@@ -242,6 +255,7 @@ package: $(dists)
1773 rpm_amd64 := amd64
1774 rpm_386 := i386
1775 rpm_s390x := s390x
1776+rpm_ppc64le := ppc64le
1777 rpm_arm5 := armel
1778 rpm_arm6 := armv6hl
1779 rpm_arm647 := aarch64
1780@@ -278,6 +292,7 @@ $(rpms):
1781 deb_amd64 := amd64
1782 deb_386 := i386
1783 deb_s390x := s390x
1784+deb_ppc64le := ppc64el
1785 deb_arm5 := armel
1786 deb_arm6 := armhf
1787 deb_arm647 := arm64
1788@@ -363,6 +378,9 @@ upload-nightly:
1789 %s390x.deb %s390x.rpm %linux_s390x.tar.gz: export GOOS := linux
1790 %s390x.deb %s390x.rpm %linux_s390x.tar.gz: export GOARCH := s390x
1791
1792+%ppc64el.deb %ppc64le.rpm %linux_ppc64le.tar.gz: export GOOS := linux
1793+%ppc64el.deb %ppc64le.rpm %linux_ppc64le.tar.gz: export GOARCH := ppc64le
1794+
1795 %freebsd_amd64.tar.gz: export GOOS := freebsd
1796 %freebsd_amd64.tar.gz: export GOARCH := amd64
1797
1798diff --git a/README.md b/README.md
1799index 715a232..1999f63 100644
1800--- a/README.md
1801+++ b/README.md
1802@@ -1,4 +1,5 @@
1803 # Telegraf [![Circle CI](https://circleci.com/gh/influxdata/telegraf.svg?style=svg)](https://circleci.com/gh/influxdata/telegraf) [![Docker pulls](https://img.shields.io/docker/pulls/library/telegraf.svg)](https://hub.docker.com/_/telegraf/)
1804+[![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://www.influxdata.com/slack)
1805
1806 Telegraf is an agent for collecting, processing, aggregating, and writing metrics.
1807
1808@@ -53,7 +54,7 @@ Ansible role: https://github.com/rossmcdonald/telegraf
1809
1810 Telegraf requires Go version 1.13 or newer, the Makefile requires GNU make.
1811
1812-1. [Install Go](https://golang.org/doc/install) >=1.13 (1.14 recommended)
1813+1. [Install Go](https://golang.org/doc/install) >=1.13 (1.15 recommended)
1814 2. Clone the Telegraf repository:
1815 ```
1816 cd ~/src
1817@@ -93,6 +94,8 @@ These builds are generated from the master branch:
1818 - [telegraf-nightly_linux_s390x.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_s390x.tar.gz)
1819 - [telegraf_nightly_s390x.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_s390x.deb)
1820 - [telegraf-nightly.s390x.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.s390x.rpm)
1821+- [telegraf_nightly_ppc64el.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_ppc64el.deb)
1822+- [telegraf-nightly.ppc64le.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.ppc64le.rpm)
1823 - [telegraf-nightly_windows_amd64.zip](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_windows_amd64.zip)
1824 - [telegraf-nightly_windows_i386.zip](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_windows_i386.zip)
1825 - [telegraf-nightly.x86_64.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.x86_64.rpm)
1826@@ -210,6 +213,9 @@ For documentation on the latest development code see the [documentation index][d
1827 * [infiniband](./plugins/inputs/infiniband)
1828 * [influxdb](./plugins/inputs/influxdb)
1829 * [influxdb_listener](./plugins/inputs/influxdb_listener)
1830+* [influxdb_v2_listener](./plugins/inputs/influxdb_v2_listener)
1831+* [intel_powerstat](plugins/inputs/intel_powerstat)
1832+* [intel_rdt](./plugins/inputs/intel_rdt)
1833 * [internal](./plugins/inputs/internal)
1834 * [interrupts](./plugins/inputs/interrupts)
1835 * [ipmi_sensor](./plugins/inputs/ipmi_sensor)
1836@@ -259,11 +265,13 @@ For documentation on the latest development code see the [documentation index][d
1837 * [nginx_sts](./plugins/inputs/nginx_sts)
1838 * [nginx_upstream_check](./plugins/inputs/nginx_upstream_check)
1839 * [nginx_vts](./plugins/inputs/nginx_vts)
1840+* [nsd](./plugins/inputs/nsd)
1841 * [nsq_consumer](./plugins/inputs/nsq_consumer)
1842 * [nsq](./plugins/inputs/nsq)
1843 * [nstat](./plugins/inputs/nstat)
1844 * [ntpq](./plugins/inputs/ntpq)
1845 * [nvidia_smi](./plugins/inputs/nvidia_smi)
1846+* [opcua](./plugins/inputs/opcua)
1847 * [openldap](./plugins/inputs/openldap)
1848 * [openntpd](./plugins/inputs/openntpd)
1849 * [opensmtpd](./plugins/inputs/opensmtpd)
1850@@ -281,9 +289,11 @@ For documentation on the latest development code see the [documentation index][d
1851 * [processes](./plugins/inputs/processes)
1852 * [procstat](./plugins/inputs/procstat)
1853 * [prometheus](./plugins/inputs/prometheus) (can be used for [Caddy server](./plugins/inputs/prometheus/README.md#usage-for-caddy-http-server))
1854+* [proxmox](./plugins/inputs/proxmox)
1855 * [puppetagent](./plugins/inputs/puppetagent)
1856 * [rabbitmq](./plugins/inputs/rabbitmq)
1857 * [raindrops](./plugins/inputs/raindrops)
1858+* [ras](./plugins/inputs/ras)
1859 * [redfish](./plugins/inputs/redfish)
1860 * [redis](./plugins/inputs/redis)
1861 * [rethinkdb](./plugins/inputs/rethinkdb)
1862@@ -326,6 +336,7 @@ For documentation on the latest development code see the [documentation index][d
1863 * [papertrail](./plugins/inputs/webhooks/papertrail)
1864 * [particle](./plugins/inputs/webhooks/particle)
1865 * [rollbar](./plugins/inputs/webhooks/rollbar)
1866+* [win_eventlog](./plugins/inputs/win_eventlog)
1867 * [win_perf_counters](./plugins/inputs/win_perf_counters) (windows performance counters)
1868 * [win_services](./plugins/inputs/win_services)
1869 * [wireguard](./plugins/inputs/wireguard)
1870@@ -410,6 +421,7 @@ For documentation on the latest development code see the [documentation index][d
1871 * [cratedb](./plugins/outputs/cratedb)
1872 * [datadog](./plugins/outputs/datadog)
1873 * [discard](./plugins/outputs/discard)
1874+* [dynatrace](./plugins/outputs/dynatrace)
1875 * [elasticsearch](./plugins/outputs/elasticsearch)
1876 * [exec](./plugins/outputs/exec)
1877 * [execd](./plugins/outputs/execd)
1878@@ -421,6 +433,7 @@ For documentation on the latest development code see the [documentation index][d
1879 * [instrumental](./plugins/outputs/instrumental)
1880 * [kafka](./plugins/outputs/kafka)
1881 * [librato](./plugins/outputs/librato)
1882+* [logz.io](./plugins/outputs/logzio)
1883 * [mqtt](./plugins/outputs/mqtt)
1884 * [nats](./plugins/outputs/nats)
1885 * [newrelic](./plugins/outputs/newrelic)
1886@@ -436,3 +449,5 @@ For documentation on the latest development code see the [documentation index][d
1887 * [udp](./plugins/outputs/socket_writer)
1888 * [warp10](./plugins/outputs/warp10)
1889 * [wavefront](./plugins/outputs/wavefront)
1890+* [sumologic](./plugins/outputs/sumologic)
1891+* [yandex_cloud_monitoring](./plugins/outputs/yandex_cloud_monitoring)
1892diff --git a/agent/tick_test.go b/agent/tick_test.go
1893index daa999e..5b8db7e 100644
1894--- a/agent/tick_test.go
1895+++ b/agent/tick_test.go
1896@@ -52,7 +52,7 @@ func TestAlignedTickerJitter(t *testing.T) {
1897
1898 clock := clock.NewMock()
1899 since := clock.Now()
1900- until := since.Add(60 * time.Second)
1901+ until := since.Add(61 * time.Second)
1902
1903 ticker := newAlignedTicker(since, interval, jitter, clock)
1904 defer ticker.Stop()
1905@@ -61,12 +61,14 @@ func TestAlignedTickerJitter(t *testing.T) {
1906 for !clock.Now().After(until) {
1907 select {
1908 case tm := <-ticker.Elapsed():
1909- require.True(t, tm.Sub(last) <= 15*time.Second)
1910- require.True(t, tm.Sub(last) >= 5*time.Second)
1911+ dur := tm.Sub(last)
1912+ // 10s interval + 5s jitter + up to 1s late firing.
1913+ require.True(t, dur <= 16*time.Second, "expected elapsed time to be less than 16 seconds, but was %s", dur)
1914+ require.True(t, dur >= 5*time.Second, "expected elapsed time to be more than 5 seconds, but was %s", dur)
1915 last = last.Add(interval)
1916 default:
1917 }
1918- clock.Add(5 * time.Second)
1919+ clock.Add(1 * time.Second)
1920 }
1921 }
1922
1923diff --git a/appveyor.yml b/appveyor.yml
1924index b454c8d..6f5f6e9 100644
1925--- a/appveyor.yml
1926+++ b/appveyor.yml
1927@@ -12,7 +12,7 @@ clone_folder: C:\gopath\src\github.com\influxdata\telegraf
1928 environment:
1929 GOPATH: C:\gopath
1930
1931-stack: go 1.14
1932+stack: go 1.15
1933
1934 platform: x64
1935
1936diff --git a/build_version.txt b/build_version.txt
1937new file mode 100644
1938index 0000000..06fb41b
1939--- /dev/null
1940+++ b/build_version.txt
1941@@ -0,0 +1 @@
1942+1.17.2
1943diff --git a/cmd/telegraf/telegraf_windows.go b/cmd/telegraf/telegraf_windows.go
1944index 830e6ea..52b9c43 100644
1945--- a/cmd/telegraf/telegraf_windows.go
1946+++ b/cmd/telegraf/telegraf_windows.go
1947@@ -12,6 +12,9 @@ import (
1948 )
1949
1950 func run(inputFilters, outputFilters, aggregatorFilters, processorFilters []string) {
1951+ // Register the eventlog logging target for windows.
1952+ logger.RegisterEventLogger(*fServiceName)
1953+
1954 if runtime.GOOS == "windows" && windowsRunAsService() {
1955 runAsWindowsService(
1956 inputFilters,
1957@@ -96,12 +99,7 @@ func runAsWindowsService(inputFilters, outputFilters, aggregatorFilters, process
1958 }
1959 os.Exit(0)
1960 } else {
1961- winlogger, err := s.Logger(nil)
1962- if err == nil {
1963- //When in service mode, register eventlog target andd setup default logging to eventlog
1964- logger.RegisterEventLogger(winlogger)
1965- logger.SetupLogging(logger.LogConfig{LogTarget: logger.LogTargetEventlog})
1966- }
1967+ logger.SetupLogging(logger.LogConfig{LogTarget: logger.LogTargetEventlog})
1968 err = s.Run()
1969
1970 if err != nil {
1971diff --git a/config/aws/credentials.go b/config/aws/credentials.go
1972index 1e4f91b..f9c98ed 100644
1973--- a/config/aws/credentials.go
1974+++ b/config/aws/credentials.go
1975@@ -29,8 +29,10 @@ func (c *CredentialConfig) Credentials() client.ConfigProvider {
1976
1977 func (c *CredentialConfig) rootCredentials() client.ConfigProvider {
1978 config := &aws.Config{
1979- Region: aws.String(c.Region),
1980- Endpoint: &c.EndpointURL,
1981+ Region: aws.String(c.Region),
1982+ }
1983+ if c.EndpointURL != "" {
1984+ config.Endpoint = &c.EndpointURL
1985 }
1986 if c.AccessKey != "" || c.SecretKey != "" {
1987 config.Credentials = credentials.NewStaticCredentials(c.AccessKey, c.SecretKey, c.Token)
1988diff --git a/config/config.go b/config/config.go
1989index 4798814..e126f53 100644
1990--- a/config/config.go
1991+++ b/config/config.go
1992@@ -2,15 +2,14 @@ package config
1993
1994 import (
1995 "bytes"
1996- "errors"
1997 "fmt"
1998 "io/ioutil"
1999 "log"
2000- "math"
2001 "net/http"
2002 "net/url"
2003 "os"
2004 "path/filepath"
2005+ "reflect"
2006 "regexp"
2007 "runtime"
2008 "sort"
2009@@ -56,6 +55,10 @@ var (
2010 // will be logging to, as well as all the plugins that the user has
2011 // specified
2012 type Config struct {
2013+ toml *toml.Config
2014+ errs []error // config load errors.
2015+ UnusedFields map[string]bool
2016+
2017 Tags map[string]string
2018 InputFilters []string
2019 OutputFilters []string
2020@@ -69,8 +72,13 @@ type Config struct {
2021 AggProcessors models.RunningProcessors
2022 }
2023
2024+// NewConfig creates a new struct to hold the Telegraf config.
2025+// For historical reasons, It holds the actual instances of the running plugins
2026+// once the configuration is parsed.
2027 func NewConfig() *Config {
2028 c := &Config{
2029+ UnusedFields: map[string]bool{},
2030+
2031 // Agent defaults:
2032 Agent: &AgentConfig{
2033 Interval: internal.Duration{Duration: 10 * time.Second},
2034@@ -88,9 +96,18 @@ func NewConfig() *Config {
2035 InputFilters: make([]string, 0),
2036 OutputFilters: make([]string, 0),
2037 }
2038+
2039+ tomlCfg := &toml.Config{
2040+ NormFieldName: toml.DefaultConfig.NormFieldName,
2041+ FieldToKey: toml.DefaultConfig.FieldToKey,
2042+ MissingField: c.missingTomlField,
2043+ }
2044+ c.toml = tomlCfg
2045+
2046 return c
2047 }
2048
2049+// AgentConfig defines configuration that will be used by the Telegraf agent
2050 type AgentConfig struct {
2051 // Interval at which to gather information
2052 Interval internal.Duration
2053@@ -174,40 +191,60 @@ type AgentConfig struct {
2054 OmitHostname bool
2055 }
2056
2057-// Inputs returns a list of strings of the configured inputs.
2058+// InputNames returns a list of strings of the configured inputs.
2059 func (c *Config) InputNames() []string {
2060 var name []string
2061 for _, input := range c.Inputs {
2062 name = append(name, input.Config.Name)
2063 }
2064- return name
2065+ return PluginNameCounts(name)
2066 }
2067
2068-// Outputs returns a list of strings of the configured aggregators.
2069+// AggregatorNames returns a list of strings of the configured aggregators.
2070 func (c *Config) AggregatorNames() []string {
2071 var name []string
2072 for _, aggregator := range c.Aggregators {
2073 name = append(name, aggregator.Config.Name)
2074 }
2075- return name
2076+ return PluginNameCounts(name)
2077 }
2078
2079-// Outputs returns a list of strings of the configured processors.
2080+// ProcessorNames returns a list of strings of the configured processors.
2081 func (c *Config) ProcessorNames() []string {
2082 var name []string
2083 for _, processor := range c.Processors {
2084 name = append(name, processor.Config.Name)
2085 }
2086- return name
2087+ return PluginNameCounts(name)
2088 }
2089
2090-// Outputs returns a list of strings of the configured outputs.
2091+// OutputNames returns a list of strings of the configured outputs.
2092 func (c *Config) OutputNames() []string {
2093 var name []string
2094 for _, output := range c.Outputs {
2095 name = append(name, output.Config.Name)
2096 }
2097- return name
2098+ return PluginNameCounts(name)
2099+}
2100+
2101+// PluginNameCounts returns a list of sorted plugin names and their count
2102+func PluginNameCounts(plugins []string) []string {
2103+ names := make(map[string]int)
2104+ for _, plugin := range plugins {
2105+ names[plugin]++
2106+ }
2107+
2108+ var namecount []string
2109+ for name, count := range names {
2110+ if count == 1 {
2111+ namecount = append(namecount, name)
2112+ } else {
2113+ namecount = append(namecount, fmt.Sprintf("%s (%dx)", name, count))
2114+ }
2115+ }
2116+
2117+ sort.Strings(namecount)
2118+ return namecount
2119 }
2120
2121 // ListTags returns a string of tags specified in the config,
2122@@ -603,7 +640,7 @@ func PrintInputConfig(name string) error {
2123 if creator, ok := inputs.Inputs[name]; ok {
2124 printConfig(name, creator(), "inputs", false)
2125 } else {
2126- return errors.New(fmt.Sprintf("Input %s not found", name))
2127+ return fmt.Errorf("Input %s not found", name)
2128 }
2129 return nil
2130 }
2131@@ -613,11 +650,12 @@ func PrintOutputConfig(name string) error {
2132 if creator, ok := outputs.Outputs[name]; ok {
2133 printConfig(name, creator(), "outputs", false)
2134 } else {
2135- return errors.New(fmt.Sprintf("Output %s not found", name))
2136+ return fmt.Errorf("Output %s not found", name)
2137 }
2138 return nil
2139 }
2140
2141+// LoadDirectory loads all toml config files found in the specified path, recursively.
2142 func (c *Config) LoadDirectory(path string) error {
2143 walkfn := func(thispath string, info os.FileInfo, _ error) error {
2144 if info == nil {
2145@@ -707,8 +745,8 @@ func (c *Config) LoadConfigData(data []byte) error {
2146 if !ok {
2147 return fmt.Errorf("invalid configuration, bad table name %q", tableName)
2148 }
2149- if err = toml.UnmarshalTable(subTable, c.Tags); err != nil {
2150- return fmt.Errorf("error parsing table name %q: %w", tableName, err)
2151+ if err = c.toml.UnmarshalTable(subTable, c.Tags); err != nil {
2152+ return fmt.Errorf("error parsing table name %q: %s", tableName, err)
2153 }
2154 }
2155 }
2156@@ -719,8 +757,8 @@ func (c *Config) LoadConfigData(data []byte) error {
2157 if !ok {
2158 return fmt.Errorf("invalid configuration, error parsing agent table")
2159 }
2160- if err = toml.UnmarshalTable(subTable, c.Agent); err != nil {
2161- return fmt.Errorf("error parsing agent table: %w", err)
2162+ if err = c.toml.UnmarshalTable(subTable, c.Agent); err != nil {
2163+ return fmt.Errorf("error parsing [agent]: %w", err)
2164 }
2165 }
2166
2167@@ -737,6 +775,10 @@ func (c *Config) LoadConfigData(data []byte) error {
2168 c.Tags["host"] = c.Agent.Hostname
2169 }
2170
2171+ if len(c.UnusedFields) > 0 {
2172+ return fmt.Errorf("line %d: configuration specified the fields %q, but they weren't used", tbl.Line, keys(c.UnusedFields))
2173+ }
2174+
2175 // Parse all the rest of the plugins:
2176 for name, val := range tbl.Fields {
2177 subTable, ok := val.(*ast.Table)
2178@@ -752,18 +794,21 @@ func (c *Config) LoadConfigData(data []byte) error {
2179 // legacy [outputs.influxdb] support
2180 case *ast.Table:
2181 if err = c.addOutput(pluginName, pluginSubTable); err != nil {
2182- return fmt.Errorf("Error parsing %s, %s", pluginName, err)
2183+ return fmt.Errorf("error parsing %s, %w", pluginName, err)
2184 }
2185 case []*ast.Table:
2186 for _, t := range pluginSubTable {
2187 if err = c.addOutput(pluginName, t); err != nil {
2188- return fmt.Errorf("Error parsing %s array, %s", pluginName, err)
2189+ return fmt.Errorf("error parsing %s array, %w", pluginName, err)
2190 }
2191 }
2192 default:
2193- return fmt.Errorf("Unsupported config format: %s",
2194+ return fmt.Errorf("unsupported config format: %s",
2195 pluginName)
2196 }
2197+ if len(c.UnusedFields) > 0 {
2198+ return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields))
2199+ }
2200 }
2201 case "inputs", "plugins":
2202 for pluginName, pluginVal := range subTable.Fields {
2203@@ -771,18 +816,21 @@ func (c *Config) LoadConfigData(data []byte) error {
2204 // legacy [inputs.cpu] support
2205 case *ast.Table:
2206 if err = c.addInput(pluginName, pluginSubTable); err != nil {
2207- return fmt.Errorf("Error parsing %s, %s", pluginName, err)
2208+ return fmt.Errorf("error parsing %s, %w", pluginName, err)
2209 }
2210 case []*ast.Table:
2211 for _, t := range pluginSubTable {
2212 if err = c.addInput(pluginName, t); err != nil {
2213- return fmt.Errorf("Error parsing %s, %s", pluginName, err)
2214+ return fmt.Errorf("error parsing %s, %w", pluginName, err)
2215 }
2216 }
2217 default:
2218 return fmt.Errorf("Unsupported config format: %s",
2219 pluginName)
2220 }
2221+ if len(c.UnusedFields) > 0 {
2222+ return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields))
2223+ }
2224 }
2225 case "processors":
2226 for pluginName, pluginVal := range subTable.Fields {
2227@@ -790,13 +838,16 @@ func (c *Config) LoadConfigData(data []byte) error {
2228 case []*ast.Table:
2229 for _, t := range pluginSubTable {
2230 if err = c.addProcessor(pluginName, t); err != nil {
2231- return fmt.Errorf("Error parsing %s, %s", pluginName, err)
2232+ return fmt.Errorf("error parsing %s, %w", pluginName, err)
2233 }
2234 }
2235 default:
2236 return fmt.Errorf("Unsupported config format: %s",
2237 pluginName)
2238 }
2239+ if len(c.UnusedFields) > 0 {
2240+ return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields))
2241+ }
2242 }
2243 case "aggregators":
2244 for pluginName, pluginVal := range subTable.Fields {
2245@@ -811,6 +862,9 @@ func (c *Config) LoadConfigData(data []byte) error {
2246 return fmt.Errorf("Unsupported config format: %s",
2247 pluginName)
2248 }
2249+ if len(c.UnusedFields) > 0 {
2250+ return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields))
2251+ }
2252 }
2253 // Assume it's an input input for legacy config file support if no other
2254 // identifiers are present
2255@@ -892,19 +946,19 @@ func parseConfig(contents []byte) (*ast.Table, error) {
2256 continue
2257 }
2258
2259- var env_var []byte
2260+ var envVar []byte
2261 if parameter[1] != nil {
2262- env_var = parameter[1]
2263+ envVar = parameter[1]
2264 } else if parameter[2] != nil {
2265- env_var = parameter[2]
2266+ envVar = parameter[2]
2267 } else {
2268 continue
2269 }
2270
2271- env_val, ok := os.LookupEnv(strings.TrimPrefix(string(env_var), "$"))
2272+ envVal, ok := os.LookupEnv(strings.TrimPrefix(string(envVar), "$"))
2273 if ok {
2274- env_val = escapeEnv(env_val)
2275- contents = bytes.Replace(contents, parameter[0], []byte(env_val), 1)
2276+ envVal = escapeEnv(envVal)
2277+ contents = bytes.Replace(contents, parameter[0], []byte(envVal), 1)
2278 }
2279 }
2280
2281@@ -918,12 +972,12 @@ func (c *Config) addAggregator(name string, table *ast.Table) error {
2282 }
2283 aggregator := creator()
2284
2285- conf, err := buildAggregator(name, table)
2286+ conf, err := c.buildAggregator(name, table)
2287 if err != nil {
2288 return err
2289 }
2290
2291- if err := toml.UnmarshalTable(table, aggregator); err != nil {
2292+ if err := c.toml.UnmarshalTable(table, aggregator); err != nil {
2293 return err
2294 }
2295
2296@@ -937,7 +991,7 @@ func (c *Config) addProcessor(name string, table *ast.Table) error {
2297 return fmt.Errorf("Undefined but requested processor: %s", name)
2298 }
2299
2300- processorConfig, err := buildProcessor(name, table)
2301+ processorConfig, err := c.buildProcessor(name, table)
2302 if err != nil {
2303 return err
2304 }
2305@@ -967,11 +1021,11 @@ func (c *Config) newRunningProcessor(
2306 processor := creator()
2307
2308 if p, ok := processor.(unwrappable); ok {
2309- if err := toml.UnmarshalTable(table, p.Unwrap()); err != nil {
2310+ if err := c.toml.UnmarshalTable(table, p.Unwrap()); err != nil {
2311 return nil, err
2312 }
2313 } else {
2314- if err := toml.UnmarshalTable(table, processor); err != nil {
2315+ if err := c.toml.UnmarshalTable(table, processor); err != nil {
2316 return nil, err
2317 }
2318 }
2319@@ -994,19 +1048,19 @@ func (c *Config) addOutput(name string, table *ast.Table) error {
2320 // arbitrary types of output, so build the serializer and set it.
2321 switch t := output.(type) {
2322 case serializers.SerializerOutput:
2323- serializer, err := buildSerializer(name, table)
2324+ serializer, err := c.buildSerializer(name, table)
2325 if err != nil {
2326 return err
2327 }
2328 t.SetSerializer(serializer)
2329 }
2330
2331- outputConfig, err := buildOutput(name, table)
2332+ outputConfig, err := c.buildOutput(name, table)
2333 if err != nil {
2334 return err
2335 }
2336
2337- if err := toml.UnmarshalTable(table, output); err != nil {
2338+ if err := c.toml.UnmarshalTable(table, output); err != nil {
2339 return err
2340 }
2341
2342@@ -1034,7 +1088,11 @@ func (c *Config) addInput(name string, table *ast.Table) error {
2343 // If the input has a SetParser function, then this means it can accept
2344 // arbitrary types of input, so build the parser and set it.
2345 if t, ok := input.(parsers.ParserInput); ok {
2346+<<<<<<< config/config.go
2347 parser, err := buildParser(name, table)
2348+=======
2349+ parser, err := c.buildParser(name, table)
2350+>>>>>>> config/config.go
2351 if err != nil {
2352 return err
2353 }
2354@@ -1042,7 +1100,11 @@ func (c *Config) addInput(name string, table *ast.Table) error {
2355 }
2356
2357 if t, ok := input.(parsers.ParserFuncInput); ok {
2358+<<<<<<< config/config.go
2359 config, err := getParserConfig(name, table)
2360+=======
2361+ config, err := c.getParserConfig(name, table)
2362+>>>>>>> config/config.go
2363 if err != nil {
2364 return err
2365 }
2366@@ -1051,12 +1113,12 @@ func (c *Config) addInput(name string, table *ast.Table) error {
2367 })
2368 }
2369
2370- pluginConfig, err := buildInput(name, table)
2371+ pluginConfig, err := c.buildInput(name, table)
2372 if err != nil {
2373 return err
2374 }
2375
2376- if err := toml.UnmarshalTable(table, input); err != nil {
2377+ if err := c.toml.UnmarshalTable(table, input); err != nil {
2378 return err
2379 }
2380
2381@@ -1069,7 +1131,7 @@ func (c *Config) addInput(name string, table *ast.Table) error {
2382 // buildAggregator parses Aggregator specific items from the ast.Table,
2383 // builds the filter and returns a
2384 // models.AggregatorConfig to be inserted into models.RunningAggregator
2385-func buildAggregator(name string, tbl *ast.Table) (*models.AggregatorConfig, error) {
2386+func (c *Config) buildAggregator(name string, tbl *ast.Table) (*models.AggregatorConfig, error) {
2387 conf := &models.AggregatorConfig{
2388 Name: name,
2389 Delay: time.Millisecond * 100,
2390@@ -1077,79 +1139,30 @@ func buildAggregator(name string, tbl *ast.Table) (*models.AggregatorConfig, err
2391 Grace: time.Second * 0,
2392 }
2393
2394- if err := getConfigDuration(tbl, "period", &conf.Period); err != nil {
2395- return nil, err
2396- }
2397-
2398- if err := getConfigDuration(tbl, "delay", &conf.Delay); err != nil {
2399- return nil, err
2400- }
2401-
2402- if err := getConfigDuration(tbl, "grace", &conf.Grace); err != nil {
2403- return nil, err
2404- }
2405-
2406- if node, ok := tbl.Fields["drop_original"]; ok {
2407- if kv, ok := node.(*ast.KeyValue); ok {
2408- if b, ok := kv.Value.(*ast.Boolean); ok {
2409- var err error
2410- conf.DropOriginal, err = strconv.ParseBool(b.Value)
2411- if err != nil {
2412- return nil, fmt.Errorf("error parsing boolean value for %s: %s", name, err)
2413- }
2414- }
2415- }
2416- }
2417-
2418- if node, ok := tbl.Fields["name_prefix"]; ok {
2419- if kv, ok := node.(*ast.KeyValue); ok {
2420- if str, ok := kv.Value.(*ast.String); ok {
2421- conf.MeasurementPrefix = str.Value
2422- }
2423- }
2424- }
2425-
2426- if node, ok := tbl.Fields["name_suffix"]; ok {
2427- if kv, ok := node.(*ast.KeyValue); ok {
2428- if str, ok := kv.Value.(*ast.String); ok {
2429- conf.MeasurementSuffix = str.Value
2430- }
2431- }
2432- }
2433-
2434- if node, ok := tbl.Fields["name_override"]; ok {
2435- if kv, ok := node.(*ast.KeyValue); ok {
2436- if str, ok := kv.Value.(*ast.String); ok {
2437- conf.NameOverride = str.Value
2438- }
2439- }
2440- }
2441-
2442- if node, ok := tbl.Fields["alias"]; ok {
2443- if kv, ok := node.(*ast.KeyValue); ok {
2444- if str, ok := kv.Value.(*ast.String); ok {
2445- conf.Alias = str.Value
2446- }
2447- }
2448- }
2449+ c.getFieldDuration(tbl, "period", &conf.Period)
2450+ c.getFieldDuration(tbl, "delay", &conf.Delay)
2451+ c.getFieldDuration(tbl, "grace", &conf.Grace)
2452+ c.getFieldBool(tbl, "drop_original", &conf.DropOriginal)
2453+ c.getFieldString(tbl, "name_prefix", &conf.MeasurementPrefix)
2454+ c.getFieldString(tbl, "name_suffix", &conf.MeasurementSuffix)
2455+ c.getFieldString(tbl, "name_override", &conf.NameOverride)
2456+ c.getFieldString(tbl, "alias", &conf.Alias)
2457
2458 conf.Tags = make(map[string]string)
2459 if node, ok := tbl.Fields["tags"]; ok {
2460 if subtbl, ok := node.(*ast.Table); ok {
2461- if err := toml.UnmarshalTable(subtbl, conf.Tags); err != nil {
2462+ if err := c.toml.UnmarshalTable(subtbl, conf.Tags); err != nil {
2463 return nil, fmt.Errorf("could not parse tags for input %s", name)
2464 }
2465 }
2466 }
2467
2468- delete(tbl.Fields, "drop_original")
2469- delete(tbl.Fields, "name_prefix")
2470- delete(tbl.Fields, "name_suffix")
2471- delete(tbl.Fields, "name_override")
2472- delete(tbl.Fields, "alias")
2473- delete(tbl.Fields, "tags")
2474+ if c.hasErrs() {
2475+ return nil, c.firstErr()
2476+ }
2477+
2478 var err error
2479- conf.Filter, err = buildFilter(tbl)
2480+ conf.Filter, err = c.buildFilter(tbl)
2481 if err != nil {
2482 return conf, err
2483 }
2484@@ -1159,33 +1172,18 @@ func buildAggregator(name string, tbl *ast.Table) (*models.AggregatorConfig, err
2485 // buildProcessor parses Processor specific items from the ast.Table,
2486 // builds the filter and returns a
2487 // models.ProcessorConfig to be inserted into models.RunningProcessor
2488-func buildProcessor(name string, tbl *ast.Table) (*models.ProcessorConfig, error) {
2489+func (c *Config) buildProcessor(name string, tbl *ast.Table) (*models.ProcessorConfig, error) {
2490 conf := &models.ProcessorConfig{Name: name}
2491
2492- if node, ok := tbl.Fields["order"]; ok {
2493- if kv, ok := node.(*ast.KeyValue); ok {
2494- if b, ok := kv.Value.(*ast.Integer); ok {
2495- var err error
2496- conf.Order, err = strconv.ParseInt(b.Value, 10, 64)
2497- if err != nil {
2498- return nil, fmt.Errorf("error parsing int value for %s: %s", name, err)
2499- }
2500- }
2501- }
2502- }
2503+ c.getFieldInt64(tbl, "order", &conf.Order)
2504+ c.getFieldString(tbl, "alias", &conf.Alias)
2505
2506- if node, ok := tbl.Fields["alias"]; ok {
2507- if kv, ok := node.(*ast.KeyValue); ok {
2508- if str, ok := kv.Value.(*ast.String); ok {
2509- conf.Alias = str.Value
2510- }
2511- }
2512+ if c.hasErrs() {
2513+ return nil, c.firstErr()
2514 }
2515
2516- delete(tbl.Fields, "alias")
2517- delete(tbl.Fields, "order")
2518 var err error
2519- conf.Filter, err = buildFilter(tbl)
2520+ conf.Filter, err = c.buildFilter(tbl)
2521 if err != nil {
2522 return conf, err
2523 }
2524@@ -1196,205 +1194,63 @@ func buildProcessor(name string, tbl *ast.Table) (*models.ProcessorConfig, error
2525 // (tagpass/tagdrop/namepass/namedrop/fieldpass/fielddrop) to
2526 // be inserted into the models.OutputConfig/models.InputConfig
2527 // to be used for glob filtering on tags and measurements
2528-func buildFilter(tbl *ast.Table) (models.Filter, error) {
2529+func (c *Config) buildFilter(tbl *ast.Table) (models.Filter, error) {
2530 f := models.Filter{}
2531
2532- if node, ok := tbl.Fields["namepass"]; ok {
2533- if kv, ok := node.(*ast.KeyValue); ok {
2534- if ary, ok := kv.Value.(*ast.Array); ok {
2535- for _, elem := range ary.Value {
2536- if str, ok := elem.(*ast.String); ok {
2537- f.NamePass = append(f.NamePass, str.Value)
2538- }
2539- }
2540- }
2541- }
2542- }
2543-
2544- if node, ok := tbl.Fields["namedrop"]; ok {
2545- if kv, ok := node.(*ast.KeyValue); ok {
2546- if ary, ok := kv.Value.(*ast.Array); ok {
2547- for _, elem := range ary.Value {
2548- if str, ok := elem.(*ast.String); ok {
2549- f.NameDrop = append(f.NameDrop, str.Value)
2550- }
2551- }
2552- }
2553- }
2554- }
2555+ c.getFieldStringSlice(tbl, "namepass", &f.NamePass)
2556+ c.getFieldStringSlice(tbl, "namedrop", &f.NameDrop)
2557
2558- fields := []string{"pass", "fieldpass"}
2559- for _, field := range fields {
2560- if node, ok := tbl.Fields[field]; ok {
2561- if kv, ok := node.(*ast.KeyValue); ok {
2562- if ary, ok := kv.Value.(*ast.Array); ok {
2563- for _, elem := range ary.Value {
2564- if str, ok := elem.(*ast.String); ok {
2565- f.FieldPass = append(f.FieldPass, str.Value)
2566- }
2567- }
2568- }
2569- }
2570- }
2571- }
2572+ c.getFieldStringSlice(tbl, "pass", &f.FieldPass)
2573+ c.getFieldStringSlice(tbl, "fieldpass", &f.FieldPass)
2574
2575- fields = []string{"drop", "fielddrop"}
2576- for _, field := range fields {
2577- if node, ok := tbl.Fields[field]; ok {
2578- if kv, ok := node.(*ast.KeyValue); ok {
2579- if ary, ok := kv.Value.(*ast.Array); ok {
2580- for _, elem := range ary.Value {
2581- if str, ok := elem.(*ast.String); ok {
2582- f.FieldDrop = append(f.FieldDrop, str.Value)
2583- }
2584- }
2585- }
2586- }
2587- }
2588- }
2589+ c.getFieldStringSlice(tbl, "drop", &f.FieldDrop)
2590+ c.getFieldStringSlice(tbl, "fielddrop", &f.FieldDrop)
2591
2592- if node, ok := tbl.Fields["tagpass"]; ok {
2593- if subtbl, ok := node.(*ast.Table); ok {
2594- for name, val := range subtbl.Fields {
2595- if kv, ok := val.(*ast.KeyValue); ok {
2596- tagfilter := &models.TagFilter{Name: name}
2597- if ary, ok := kv.Value.(*ast.Array); ok {
2598- for _, elem := range ary.Value {
2599- if str, ok := elem.(*ast.String); ok {
2600- tagfilter.Filter = append(tagfilter.Filter, str.Value)
2601- }
2602- }
2603- }
2604- f.TagPass = append(f.TagPass, *tagfilter)
2605- }
2606- }
2607- }
2608- }
2609+ c.getFieldTagFilter(tbl, "tagpass", &f.TagPass)
2610+ c.getFieldTagFilter(tbl, "tagdrop", &f.TagDrop)
2611
2612- if node, ok := tbl.Fields["tagdrop"]; ok {
2613- if subtbl, ok := node.(*ast.Table); ok {
2614- for name, val := range subtbl.Fields {
2615- if kv, ok := val.(*ast.KeyValue); ok {
2616- tagfilter := &models.TagFilter{Name: name}
2617- if ary, ok := kv.Value.(*ast.Array); ok {
2618- for _, elem := range ary.Value {
2619- if str, ok := elem.(*ast.String); ok {
2620- tagfilter.Filter = append(tagfilter.Filter, str.Value)
2621- }
2622- }
2623- }
2624- f.TagDrop = append(f.TagDrop, *tagfilter)
2625- }
2626- }
2627- }
2628- }
2629+ c.getFieldStringSlice(tbl, "tagexclude", &f.TagExclude)
2630+ c.getFieldStringSlice(tbl, "taginclude", &f.TagInclude)
2631
2632- if node, ok := tbl.Fields["tagexclude"]; ok {
2633- if kv, ok := node.(*ast.KeyValue); ok {
2634- if ary, ok := kv.Value.(*ast.Array); ok {
2635- for _, elem := range ary.Value {
2636- if str, ok := elem.(*ast.String); ok {
2637- f.TagExclude = append(f.TagExclude, str.Value)
2638- }
2639- }
2640- }
2641- }
2642+ if c.hasErrs() {
2643+ return f, c.firstErr()
2644 }
2645
2646- if node, ok := tbl.Fields["taginclude"]; ok {
2647- if kv, ok := node.(*ast.KeyValue); ok {
2648- if ary, ok := kv.Value.(*ast.Array); ok {
2649- for _, elem := range ary.Value {
2650- if str, ok := elem.(*ast.String); ok {
2651- f.TagInclude = append(f.TagInclude, str.Value)
2652- }
2653- }
2654- }
2655- }
2656- }
2657 if err := f.Compile(); err != nil {
2658 return f, err
2659 }
2660
2661- delete(tbl.Fields, "namedrop")
2662- delete(tbl.Fields, "namepass")
2663- delete(tbl.Fields, "fielddrop")
2664- delete(tbl.Fields, "fieldpass")
2665- delete(tbl.Fields, "drop")
2666- delete(tbl.Fields, "pass")
2667- delete(tbl.Fields, "tagdrop")
2668- delete(tbl.Fields, "tagpass")
2669- delete(tbl.Fields, "tagexclude")
2670- delete(tbl.Fields, "taginclude")
2671 return f, nil
2672 }
2673
2674 // buildInput parses input specific items from the ast.Table,
2675 // builds the filter and returns a
2676 // models.InputConfig to be inserted into models.RunningInput
2677-func buildInput(name string, tbl *ast.Table) (*models.InputConfig, error) {
2678+func (c *Config) buildInput(name string, tbl *ast.Table) (*models.InputConfig, error) {
2679 cp := &models.InputConfig{Name: name}
2680-
2681- if err := getConfigDuration(tbl, "interval", &cp.Interval); err != nil {
2682- return nil, err
2683- }
2684-
2685- if err := getConfigDuration(tbl, "precision", &cp.Precision); err != nil {
2686- return nil, err
2687- }
2688-
2689- if err := getConfigDuration(tbl, "collection_jitter", &cp.CollectionJitter); err != nil {
2690- return nil, err
2691- }
2692-
2693- if node, ok := tbl.Fields["name_prefix"]; ok {
2694- if kv, ok := node.(*ast.KeyValue); ok {
2695- if str, ok := kv.Value.(*ast.String); ok {
2696- cp.MeasurementPrefix = str.Value
2697- }
2698- }
2699- }
2700-
2701- if node, ok := tbl.Fields["name_suffix"]; ok {
2702- if kv, ok := node.(*ast.KeyValue); ok {
2703- if str, ok := kv.Value.(*ast.String); ok {
2704- cp.MeasurementSuffix = str.Value
2705- }
2706- }
2707- }
2708-
2709- if node, ok := tbl.Fields["name_override"]; ok {
2710- if kv, ok := node.(*ast.KeyValue); ok {
2711- if str, ok := kv.Value.(*ast.String); ok {
2712- cp.NameOverride = str.Value
2713- }
2714- }
2715- }
2716-
2717- if node, ok := tbl.Fields["alias"]; ok {
2718- if kv, ok := node.(*ast.KeyValue); ok {
2719- if str, ok := kv.Value.(*ast.String); ok {
2720- cp.Alias = str.Value
2721- }
2722- }
2723- }
2724+ c.getFieldDuration(tbl, "interval", &cp.Interval)
2725+ c.getFieldDuration(tbl, "precision", &cp.Precision)
2726+ c.getFieldDuration(tbl, "collection_jitter", &cp.CollectionJitter)
2727+ c.getFieldString(tbl, "name_prefix", &cp.MeasurementPrefix)
2728+ c.getFieldString(tbl, "name_suffix", &cp.MeasurementSuffix)
2729+ c.getFieldString(tbl, "name_override", &cp.NameOverride)
2730+ c.getFieldString(tbl, "alias", &cp.Alias)
2731
2732 cp.Tags = make(map[string]string)
2733 if node, ok := tbl.Fields["tags"]; ok {
2734 if subtbl, ok := node.(*ast.Table); ok {
2735- if err := toml.UnmarshalTable(subtbl, cp.Tags); err != nil {
2736- return nil, fmt.Errorf("could not parse tags for input %s\n", name)
2737+ if err := c.toml.UnmarshalTable(subtbl, cp.Tags); err != nil {
2738+ return nil, fmt.Errorf("could not parse tags for input %s", name)
2739 }
2740 }
2741 }
2742
2743- delete(tbl.Fields, "name_prefix")
2744- delete(tbl.Fields, "name_suffix")
2745- delete(tbl.Fields, "name_override")
2746- delete(tbl.Fields, "alias")
2747- delete(tbl.Fields, "tags")
2748+ if c.hasErrs() {
2749+ return nil, c.firstErr()
2750+ }
2751+
2752 var err error
2753- cp.Filter, err = buildFilter(tbl)
2754+ cp.Filter, err = c.buildFilter(tbl)
2755 if err != nil {
2756 return cp, err
2757 }
2758@@ -1404,787 +1260,341 @@ func buildInput(name string, tbl *ast.Table) (*models.InputConfig, error) {
2759 // buildParser grabs the necessary entries from the ast.Table for creating
2760 // a parsers.Parser object, and creates it, which can then be added onto
2761 // an Input object.
2762-func buildParser(name string, tbl *ast.Table) (parsers.Parser, error) {
2763- config, err := getParserConfig(name, tbl)
2764+func (c *Config) buildParser(name string, tbl *ast.Table) (parsers.Parser, error) {
2765+ config, err := c.getParserConfig(name, tbl)
2766 if err != nil {
2767 return nil, err
2768 }
2769 return parsers.NewParser(config)
2770 }
2771
2772-func getParserConfig(name string, tbl *ast.Table) (*parsers.Config, error) {
2773- c := &parsers.Config{
2774+func (c *Config) getParserConfig(name string, tbl *ast.Table) (*parsers.Config, error) {
2775+ pc := &parsers.Config{
2776 JSONStrict: true,
2777 }
2778
2779- if node, ok := tbl.Fields["data_format"]; ok {
2780- if kv, ok := node.(*ast.KeyValue); ok {
2781- if str, ok := kv.Value.(*ast.String); ok {
2782- c.DataFormat = str.Value
2783- }
2784- }
2785- }
2786+ c.getFieldString(tbl, "data_format", &pc.DataFormat)
2787
2788 // Legacy support, exec plugin originally parsed JSON by default.
2789- if name == "exec" && c.DataFormat == "" {
2790- c.DataFormat = "json"
2791- } else if c.DataFormat == "" {
2792- c.DataFormat = "influx"
2793+ if name == "exec" && pc.DataFormat == "" {
2794+ pc.DataFormat = "json"
2795+ } else if pc.DataFormat == "" {
2796+ pc.DataFormat = "influx"
2797+ }
2798+
2799+ c.getFieldString(tbl, "separator", &pc.Separator)
2800+
2801+ c.getFieldStringSlice(tbl, "templates", &pc.Templates)
2802+ c.getFieldStringSlice(tbl, "tag_keys", &pc.TagKeys)
2803+ c.getFieldStringSlice(tbl, "json_string_fields", &pc.JSONStringFields)
2804+ c.getFieldString(tbl, "json_name_key", &pc.JSONNameKey)
2805+ c.getFieldString(tbl, "json_query", &pc.JSONQuery)
2806+ c.getFieldString(tbl, "json_time_key", &pc.JSONTimeKey)
2807+ c.getFieldString(tbl, "json_time_format", &pc.JSONTimeFormat)
2808+ c.getFieldString(tbl, "json_timezone", &pc.JSONTimezone)
2809+ c.getFieldBool(tbl, "json_strict", &pc.JSONStrict)
2810+ c.getFieldString(tbl, "data_type", &pc.DataType)
2811+ c.getFieldString(tbl, "collectd_auth_file", &pc.CollectdAuthFile)
2812+ c.getFieldString(tbl, "collectd_security_level", &pc.CollectdSecurityLevel)
2813+ c.getFieldString(tbl, "collectd_parse_multivalue", &pc.CollectdSplit)
2814+
2815+ c.getFieldStringSlice(tbl, "collectd_typesdb", &pc.CollectdTypesDB)
2816+
2817+ c.getFieldString(tbl, "dropwizard_metric_registry_path", &pc.DropwizardMetricRegistryPath)
2818+ c.getFieldString(tbl, "dropwizard_time_path", &pc.DropwizardTimePath)
2819+ c.getFieldString(tbl, "dropwizard_time_format", &pc.DropwizardTimeFormat)
2820+ c.getFieldString(tbl, "dropwizard_tags_path", &pc.DropwizardTagsPath)
2821+ c.getFieldStringMap(tbl, "dropwizard_tag_paths", &pc.DropwizardTagPathsMap)
2822+
2823+ //for grok data_format
2824+ c.getFieldStringSlice(tbl, "grok_named_patterns", &pc.GrokNamedPatterns)
2825+ c.getFieldStringSlice(tbl, "grok_patterns", &pc.GrokPatterns)
2826+ c.getFieldString(tbl, "grok_custom_patterns", &pc.GrokCustomPatterns)
2827+ c.getFieldStringSlice(tbl, "grok_custom_pattern_files", &pc.GrokCustomPatternFiles)
2828+ c.getFieldString(tbl, "grok_timezone", &pc.GrokTimezone)
2829+ c.getFieldString(tbl, "grok_unique_timestamp", &pc.GrokUniqueTimestamp)
2830+
2831+ //for csv parser
2832+ c.getFieldStringSlice(tbl, "csv_column_names", &pc.CSVColumnNames)
2833+ c.getFieldStringSlice(tbl, "csv_column_types", &pc.CSVColumnTypes)
2834+ c.getFieldStringSlice(tbl, "csv_tag_columns", &pc.CSVTagColumns)
2835+ c.getFieldString(tbl, "csv_timezone", &pc.CSVTimezone)
2836+ c.getFieldString(tbl, "csv_delimiter", &pc.CSVDelimiter)
2837+ c.getFieldString(tbl, "csv_comment", &pc.CSVComment)
2838+ c.getFieldString(tbl, "csv_measurement_column", &pc.CSVMeasurementColumn)
2839+ c.getFieldString(tbl, "csv_timestamp_column", &pc.CSVTimestampColumn)
2840+ c.getFieldString(tbl, "csv_timestamp_format", &pc.CSVTimestampFormat)
2841+ c.getFieldInt(tbl, "csv_header_row_count", &pc.CSVHeaderRowCount)
2842+ c.getFieldInt(tbl, "csv_skip_rows", &pc.CSVSkipRows)
2843+ c.getFieldInt(tbl, "csv_skip_columns", &pc.CSVSkipColumns)
2844+ c.getFieldBool(tbl, "csv_trim_space", &pc.CSVTrimSpace)
2845+ c.getFieldStringSlice(tbl, "csv_skip_values", &pc.CSVSkipValues)
2846+
2847+ c.getFieldStringSlice(tbl, "form_urlencoded_tag_keys", &pc.FormUrlencodedTagKeys)
2848+
2849+ pc.MetricName = name
2850+
2851+ if c.hasErrs() {
2852+ return nil, c.firstErr()
2853+ }
2854+
2855+ return pc, nil
2856+}
2857+
2858+// buildSerializer grabs the necessary entries from the ast.Table for creating
2859+// a serializers.Serializer object, and creates it, which can then be added onto
2860+// an Output object.
2861+func (c *Config) buildSerializer(name string, tbl *ast.Table) (serializers.Serializer, error) {
2862+ sc := &serializers.Config{TimestampUnits: time.Duration(1 * time.Second)}
2863+
2864+ c.getFieldString(tbl, "data_format", &sc.DataFormat)
2865+
2866+ if sc.DataFormat == "" {
2867+ sc.DataFormat = "influx"
2868+ }
2869+
2870+ c.getFieldString(tbl, "prefix", &sc.Prefix)
2871+ c.getFieldString(tbl, "template", &sc.Template)
2872+ c.getFieldStringSlice(tbl, "templates", &sc.Templates)
2873+ c.getFieldString(tbl, "carbon2_format", &sc.Carbon2Format)
2874+ c.getFieldInt(tbl, "influx_max_line_bytes", &sc.InfluxMaxLineBytes)
2875+
2876+ c.getFieldBool(tbl, "influx_sort_fields", &sc.InfluxSortFields)
2877+ c.getFieldBool(tbl, "influx_uint_support", &sc.InfluxUintSupport)
2878+ c.getFieldBool(tbl, "graphite_tag_support", &sc.GraphiteTagSupport)
2879+ c.getFieldString(tbl, "graphite_separator", &sc.GraphiteSeparator)
2880+
2881+ c.getFieldDuration(tbl, "json_timestamp_units", &sc.TimestampUnits)
2882+
2883+ c.getFieldBool(tbl, "splunkmetric_hec_routing", &sc.HecRouting)
2884+ c.getFieldBool(tbl, "splunkmetric_multimetric", &sc.SplunkmetricMultiMetric)
2885+
2886+ c.getFieldStringSlice(tbl, "wavefront_source_override", &sc.WavefrontSourceOverride)
2887+ c.getFieldBool(tbl, "wavefront_use_strict", &sc.WavefrontUseStrict)
2888+
2889+ c.getFieldBool(tbl, "prometheus_export_timestamp", &sc.PrometheusExportTimestamp)
2890+ c.getFieldBool(tbl, "prometheus_sort_metrics", &sc.PrometheusSortMetrics)
2891+ c.getFieldBool(tbl, "prometheus_string_as_label", &sc.PrometheusStringAsLabel)
2892+
2893+ if c.hasErrs() {
2894+ return nil, c.firstErr()
2895+ }
2896+
2897+ return serializers.NewSerializer(sc)
2898+}
2899+
2900+// buildOutput parses output specific items from the ast.Table,
2901+// builds the filter and returns an
2902+// models.OutputConfig to be inserted into models.RunningInput
2903+// Note: error exists in the return for future calls that might require error
2904+func (c *Config) buildOutput(name string, tbl *ast.Table) (*models.OutputConfig, error) {
2905+ filter, err := c.buildFilter(tbl)
2906+ if err != nil {
2907+ return nil, err
2908+ }
2909+ oc := &models.OutputConfig{
2910+ Name: name,
2911+ Filter: filter,
2912+ }
2913+
2914+ // TODO: support FieldPass/FieldDrop on outputs
2915+
2916+ c.getFieldDuration(tbl, "flush_interval", &oc.FlushInterval)
2917+ c.getFieldDuration(tbl, "flush_jitter", oc.FlushJitter)
2918+
2919+ c.getFieldInt(tbl, "metric_buffer_limit", &oc.MetricBufferLimit)
2920+ c.getFieldInt(tbl, "metric_batch_size", &oc.MetricBatchSize)
2921+ c.getFieldString(tbl, "alias", &oc.Alias)
2922+ c.getFieldString(tbl, "name_override", &oc.NameOverride)
2923+ c.getFieldString(tbl, "name_suffix", &oc.NameSuffix)
2924+ c.getFieldString(tbl, "name_prefix", &oc.NamePrefix)
2925+
2926+ if c.hasErrs() {
2927+ return nil, c.firstErr()
2928+ }
2929+
2930+ return oc, nil
2931+}
2932+
2933+func (c *Config) missingTomlField(typ reflect.Type, key string) error {
2934+ switch key {
2935+ case "alias", "carbon2_format", "collectd_auth_file", "collectd_parse_multivalue",
2936+ "collectd_security_level", "collectd_typesdb", "collection_jitter", "csv_column_names",
2937+ "csv_column_types", "csv_comment", "csv_delimiter", "csv_header_row_count",
2938+ "csv_measurement_column", "csv_skip_columns", "csv_skip_rows", "csv_tag_columns",
2939+ "csv_timestamp_column", "csv_timestamp_format", "csv_timezone", "csv_trim_space", "csv_skip_values",
2940+ "data_format", "data_type", "delay", "drop", "drop_original", "dropwizard_metric_registry_path",
2941+ "dropwizard_tag_paths", "dropwizard_tags_path", "dropwizard_time_format", "dropwizard_time_path",
2942+ "fielddrop", "fieldpass", "flush_interval", "flush_jitter", "form_urlencoded_tag_keys",
2943+ "grace", "graphite_separator", "graphite_tag_support", "grok_custom_pattern_files",
2944+ "grok_custom_patterns", "grok_named_patterns", "grok_patterns", "grok_timezone",
2945+ "grok_unique_timestamp", "influx_max_line_bytes", "influx_sort_fields", "influx_uint_support",
2946+ "interval", "json_name_key", "json_query", "json_strict", "json_string_fields",
2947+ "json_time_format", "json_time_key", "json_timestamp_units", "json_timezone",
2948+ "metric_batch_size", "metric_buffer_limit", "name_override", "name_prefix",
2949+ "name_suffix", "namedrop", "namepass", "order", "pass", "period", "precision",
2950+ "prefix", "prometheus_export_timestamp", "prometheus_sort_metrics", "prometheus_string_as_label",
2951+ "separator", "splunkmetric_hec_routing", "splunkmetric_multimetric", "tag_keys",
2952+ "tagdrop", "tagexclude", "taginclude", "tagpass", "tags", "template", "templates",
2953+ "wavefront_source_override", "wavefront_use_strict":
2954+
2955+ // ignore fields that are common to all plugins.
2956+ default:
2957+ c.UnusedFields[key] = true
2958 }
2959+ return nil
2960+}
2961
2962- if node, ok := tbl.Fields["separator"]; ok {
2963+func (c *Config) getFieldString(tbl *ast.Table, fieldName string, target *string) {
2964+ if node, ok := tbl.Fields[fieldName]; ok {
2965 if kv, ok := node.(*ast.KeyValue); ok {
2966 if str, ok := kv.Value.(*ast.String); ok {
2967- c.Separator = str.Value
2968+ *target = str.Value
2969 }
2970 }
2971 }
2972+}
2973
2974- if node, ok := tbl.Fields["templates"]; ok {
2975+func (c *Config) getFieldDuration(tbl *ast.Table, fieldName string, target interface{}) {
2976+ if node, ok := tbl.Fields[fieldName]; ok {
2977 if kv, ok := node.(*ast.KeyValue); ok {
2978- if ary, ok := kv.Value.(*ast.Array); ok {
2979- for _, elem := range ary.Value {
2980- if str, ok := elem.(*ast.String); ok {
2981- c.Templates = append(c.Templates, str.Value)
2982- }
2983+ if str, ok := kv.Value.(*ast.String); ok {
2984+ d, err := time.ParseDuration(str.Value)
2985+ if err != nil {
2986+ c.addError(tbl, fmt.Errorf("error parsing duration: %w", err))
2987+ return
2988 }
2989+ targetVal := reflect.ValueOf(target).Elem()
2990+ targetVal.Set(reflect.ValueOf(d))
2991 }
2992 }
2993 }
2994+}
2995
2996- if node, ok := tbl.Fields["tag_keys"]; ok {
2997+func (c *Config) getFieldBool(tbl *ast.Table, fieldName string, target *bool) {
2998+ var err error
2999+ if node, ok := tbl.Fields[fieldName]; ok {
3000 if kv, ok := node.(*ast.KeyValue); ok {
3001- if ary, ok := kv.Value.(*ast.Array); ok {
3002- for _, elem := range ary.Value {
3003- if str, ok := elem.(*ast.String); ok {
3004- c.TagKeys = append(c.TagKeys, str.Value)
3005- }
3006+ switch t := kv.Value.(type) {
3007+ case *ast.Boolean:
3008+ *target, err = t.Boolean()
3009+ if err != nil {
3010+ c.addError(tbl, fmt.Errorf("unknown boolean value type %q, expecting boolean", kv.Value))
3011+ return
3012+ }
3013+ case *ast.String:
3014+ *target, err = strconv.ParseBool(t.Value)
3015+ if err != nil {
3016+ c.addError(tbl, fmt.Errorf("unknown boolean value type %q, expecting boolean", kv.Value))
3017+ return
3018 }
3019+ default:
3020+ c.addError(tbl, fmt.Errorf("unknown boolean value type %q, expecting boolean", kv.Value.Source()))
3021+ return
3022 }
3023 }
3024 }
3025+}
3026
3027- if node, ok := tbl.Fields["json_string_fields"]; ok {
3028+func (c *Config) getFieldInt(tbl *ast.Table, fieldName string, target *int) {
3029+ if node, ok := tbl.Fields[fieldName]; ok {
3030 if kv, ok := node.(*ast.KeyValue); ok {
3031- if ary, ok := kv.Value.(*ast.Array); ok {
3032- for _, elem := range ary.Value {
3033- if str, ok := elem.(*ast.String); ok {
3034- c.JSONStringFields = append(c.JSONStringFields, str.Value)
3035- }
3036+ if iAst, ok := kv.Value.(*ast.Integer); ok {
3037+ i, err := iAst.Int()
3038+ if err != nil {
3039+ c.addError(tbl, fmt.Errorf("unexpected int type %q, expecting int", iAst.Value))
3040+ return
3041 }
3042+ *target = int(i)
3043 }
3044 }
3045 }
3046+}
3047
3048- if node, ok := tbl.Fields["json_name_key"]; ok {
3049- if kv, ok := node.(*ast.KeyValue); ok {
3050- if str, ok := kv.Value.(*ast.String); ok {
3051- c.JSONNameKey = str.Value
3052- }
3053- }
3054- }
3055-
3056- if node, ok := tbl.Fields["json_query"]; ok {
3057- if kv, ok := node.(*ast.KeyValue); ok {
3058- if str, ok := kv.Value.(*ast.String); ok {
3059- c.JSONQuery = str.Value
3060- }
3061- }
3062- }
3063-
3064- if node, ok := tbl.Fields["json_time_key"]; ok {
3065- if kv, ok := node.(*ast.KeyValue); ok {
3066- if str, ok := kv.Value.(*ast.String); ok {
3067- c.JSONTimeKey = str.Value
3068- }
3069- }
3070- }
3071-
3072- if node, ok := tbl.Fields["json_time_format"]; ok {
3073- if kv, ok := node.(*ast.KeyValue); ok {
3074- if str, ok := kv.Value.(*ast.String); ok {
3075- c.JSONTimeFormat = str.Value
3076- }
3077- }
3078- }
3079-
3080- if node, ok := tbl.Fields["json_timezone"]; ok {
3081- if kv, ok := node.(*ast.KeyValue); ok {
3082- if str, ok := kv.Value.(*ast.String); ok {
3083- c.JSONTimezone = str.Value
3084- }
3085- }
3086- }
3087-
3088- if node, ok := tbl.Fields["json_strict"]; ok {
3089+func (c *Config) getFieldInt64(tbl *ast.Table, fieldName string, target *int64) {
3090+ if node, ok := tbl.Fields[fieldName]; ok {
3091 if kv, ok := node.(*ast.KeyValue); ok {
3092- if b, ok := kv.Value.(*ast.Boolean); ok {
3093- var err error
3094- c.JSONStrict, err = b.Boolean()
3095+ if iAst, ok := kv.Value.(*ast.Integer); ok {
3096+ i, err := iAst.Int()
3097 if err != nil {
3098- return nil, err
3099+ c.addError(tbl, fmt.Errorf("unexpected int type %q, expecting int", iAst.Value))
3100+ return
3101 }
3102+ *target = i
3103 }
3104 }
3105 }
3106+}
3107
3108- if node, ok := tbl.Fields["data_type"]; ok {
3109- if kv, ok := node.(*ast.KeyValue); ok {
3110- if str, ok := kv.Value.(*ast.String); ok {
3111- c.DataType = str.Value
3112- }
3113- }
3114- }
3115-
3116- if node, ok := tbl.Fields["collectd_auth_file"]; ok {
3117- if kv, ok := node.(*ast.KeyValue); ok {
3118- if str, ok := kv.Value.(*ast.String); ok {
3119- c.CollectdAuthFile = str.Value
3120- }
3121- }
3122- }
3123-
3124- if node, ok := tbl.Fields["collectd_security_level"]; ok {
3125- if kv, ok := node.(*ast.KeyValue); ok {
3126- if str, ok := kv.Value.(*ast.String); ok {
3127- c.CollectdSecurityLevel = str.Value
3128- }
3129- }
3130- }
3131-
3132- if node, ok := tbl.Fields["collectd_parse_multivalue"]; ok {
3133- if kv, ok := node.(*ast.KeyValue); ok {
3134- if str, ok := kv.Value.(*ast.String); ok {
3135- c.CollectdSplit = str.Value
3136- }
3137- }
3138- }
3139-
3140- if node, ok := tbl.Fields["collectd_typesdb"]; ok {
3141+func (c *Config) getFieldStringSlice(tbl *ast.Table, fieldName string, target *[]string) {
3142+ if node, ok := tbl.Fields[fieldName]; ok {
3143 if kv, ok := node.(*ast.KeyValue); ok {
3144 if ary, ok := kv.Value.(*ast.Array); ok {
3145 for _, elem := range ary.Value {
3146 if str, ok := elem.(*ast.String); ok {
3147- c.CollectdTypesDB = append(c.CollectdTypesDB, str.Value)
3148+ *target = append(*target, str.Value)
3149 }
3150 }
3151 }
3152 }
3153 }
3154-
3155- if node, ok := tbl.Fields["dropwizard_metric_registry_path"]; ok {
3156- if kv, ok := node.(*ast.KeyValue); ok {
3157- if str, ok := kv.Value.(*ast.String); ok {
3158- c.DropwizardMetricRegistryPath = str.Value
3159- }
3160- }
3161- }
3162- if node, ok := tbl.Fields["dropwizard_time_path"]; ok {
3163- if kv, ok := node.(*ast.KeyValue); ok {
3164- if str, ok := kv.Value.(*ast.String); ok {
3165- c.DropwizardTimePath = str.Value
3166- }
3167- }
3168- }
3169- if node, ok := tbl.Fields["dropwizard_time_format"]; ok {
3170- if kv, ok := node.(*ast.KeyValue); ok {
3171- if str, ok := kv.Value.(*ast.String); ok {
3172- c.DropwizardTimeFormat = str.Value
3173- }
3174- }
3175- }
3176- if node, ok := tbl.Fields["dropwizard_tags_path"]; ok {
3177- if kv, ok := node.(*ast.KeyValue); ok {
3178- if str, ok := kv.Value.(*ast.String); ok {
3179- c.DropwizardTagsPath = str.Value
3180- }
3181- }
3182- }
3183- c.DropwizardTagPathsMap = make(map[string]string)
3184- if node, ok := tbl.Fields["dropwizard_tag_paths"]; ok {
3185+}
3186+func (c *Config) getFieldTagFilter(tbl *ast.Table, fieldName string, target *[]models.TagFilter) {
3187+ if node, ok := tbl.Fields[fieldName]; ok {
3188 if subtbl, ok := node.(*ast.Table); ok {
3189 for name, val := range subtbl.Fields {
3190 if kv, ok := val.(*ast.KeyValue); ok {
3191- if str, ok := kv.Value.(*ast.String); ok {
3192- c.DropwizardTagPathsMap[name] = str.Value
3193- }
3194- }
3195- }
3196- }
3197- }
3198-
3199- //for grok data_format
3200- if node, ok := tbl.Fields["grok_named_patterns"]; ok {
3201- if kv, ok := node.(*ast.KeyValue); ok {
3202- if ary, ok := kv.Value.(*ast.Array); ok {
3203- for _, elem := range ary.Value {
3204- if str, ok := elem.(*ast.String); ok {
3205- c.GrokNamedPatterns = append(c.GrokNamedPatterns, str.Value)
3206- }
3207- }
3208- }
3209- }
3210- }
3211-
3212- if node, ok := tbl.Fields["grok_patterns"]; ok {
3213- if kv, ok := node.(*ast.KeyValue); ok {
3214- if ary, ok := kv.Value.(*ast.Array); ok {
3215- for _, elem := range ary.Value {
3216- if str, ok := elem.(*ast.String); ok {
3217- c.GrokPatterns = append(c.GrokPatterns, str.Value)
3218- }
3219- }
3220- }
3221- }
3222- }
3223-
3224- if node, ok := tbl.Fields["grok_custom_patterns"]; ok {
3225- if kv, ok := node.(*ast.KeyValue); ok {
3226- if str, ok := kv.Value.(*ast.String); ok {
3227- c.GrokCustomPatterns = str.Value
3228- }
3229- }
3230- }
3231-
3232- if node, ok := tbl.Fields["grok_custom_pattern_files"]; ok {
3233- if kv, ok := node.(*ast.KeyValue); ok {
3234- if ary, ok := kv.Value.(*ast.Array); ok {
3235- for _, elem := range ary.Value {
3236- if str, ok := elem.(*ast.String); ok {
3237- c.GrokCustomPatternFiles = append(c.GrokCustomPatternFiles, str.Value)
3238- }
3239- }
3240- }
3241- }
3242- }
3243-
3244- if node, ok := tbl.Fields["grok_timezone"]; ok {
3245- if kv, ok := node.(*ast.KeyValue); ok {
3246- if str, ok := kv.Value.(*ast.String); ok {
3247- c.GrokTimezone = str.Value
3248- }
3249- }
3250- }
3251-
3252- if node, ok := tbl.Fields["grok_unique_timestamp"]; ok {
3253- if kv, ok := node.(*ast.KeyValue); ok {
3254- if str, ok := kv.Value.(*ast.String); ok {
3255- c.GrokUniqueTimestamp = str.Value
3256- }
3257- }
3258- }
3259-
3260- //for csv parser
3261- if node, ok := tbl.Fields["csv_column_names"]; ok {
3262- if kv, ok := node.(*ast.KeyValue); ok {
3263- if ary, ok := kv.Value.(*ast.Array); ok {
3264- for _, elem := range ary.Value {
3265- if str, ok := elem.(*ast.String); ok {
3266- c.CSVColumnNames = append(c.CSVColumnNames, str.Value)
3267- }
3268- }
3269- }
3270- }
3271- }
3272-
3273- if node, ok := tbl.Fields["csv_column_types"]; ok {
3274- if kv, ok := node.(*ast.KeyValue); ok {
3275- if ary, ok := kv.Value.(*ast.Array); ok {
3276- for _, elem := range ary.Value {
3277- if str, ok := elem.(*ast.String); ok {
3278- c.CSVColumnTypes = append(c.CSVColumnTypes, str.Value)
3279- }
3280- }
3281- }
3282- }
3283- }
3284-
3285- if node, ok := tbl.Fields["csv_tag_columns"]; ok {
3286- if kv, ok := node.(*ast.KeyValue); ok {
3287- if ary, ok := kv.Value.(*ast.Array); ok {
3288- for _, elem := range ary.Value {
3289- if str, ok := elem.(*ast.String); ok {
3290- c.CSVTagColumns = append(c.CSVTagColumns, str.Value)
3291- }
3292- }
3293- }
3294- }
3295- }
3296-
3297- if node, ok := tbl.Fields["csv_delimiter"]; ok {
3298- if kv, ok := node.(*ast.KeyValue); ok {
3299- if str, ok := kv.Value.(*ast.String); ok {
3300- c.CSVDelimiter = str.Value
3301- }
3302- }
3303- }
3304-
3305- if node, ok := tbl.Fields["csv_comment"]; ok {
3306- if kv, ok := node.(*ast.KeyValue); ok {
3307- if str, ok := kv.Value.(*ast.String); ok {
3308- c.CSVComment = str.Value
3309- }
3310- }
3311- }
3312-
3313- if node, ok := tbl.Fields["csv_measurement_column"]; ok {
3314- if kv, ok := node.(*ast.KeyValue); ok {
3315- if str, ok := kv.Value.(*ast.String); ok {
3316- c.CSVMeasurementColumn = str.Value
3317- }
3318- }
3319- }
3320-
3321- if node, ok := tbl.Fields["csv_timestamp_column"]; ok {
3322- if kv, ok := node.(*ast.KeyValue); ok {
3323- if str, ok := kv.Value.(*ast.String); ok {
3324- c.CSVTimestampColumn = str.Value
3325- }
3326- }
3327- }
3328-
3329- if node, ok := tbl.Fields["csv_timestamp_format"]; ok {
3330- if kv, ok := node.(*ast.KeyValue); ok {
3331- if str, ok := kv.Value.(*ast.String); ok {
3332- c.CSVTimestampFormat = str.Value
3333- }
3334- }
3335- }
3336-
3337- if node, ok := tbl.Fields["csv_timezone"]; ok {
3338- if kv, ok := node.(*ast.KeyValue); ok {
3339- if str, ok := kv.Value.(*ast.String); ok {
3340- c.CSVTimezone = str.Value
3341- }
3342- }
3343- }
3344-
3345- if node, ok := tbl.Fields["csv_header_row_count"]; ok {
3346- if kv, ok := node.(*ast.KeyValue); ok {
3347- if integer, ok := kv.Value.(*ast.Integer); ok {
3348- v, err := integer.Int()
3349- if err != nil {
3350- return nil, err
3351- }
3352- c.CSVHeaderRowCount = int(v)
3353- }
3354- }
3355- }
3356-
3357- if node, ok := tbl.Fields["csv_skip_rows"]; ok {
3358- if kv, ok := node.(*ast.KeyValue); ok {
3359- if integer, ok := kv.Value.(*ast.Integer); ok {
3360- v, err := integer.Int()
3361- if err != nil {
3362- return nil, err
3363- }
3364- c.CSVSkipRows = int(v)
3365- }
3366- }
3367- }
3368-
3369- if node, ok := tbl.Fields["csv_skip_columns"]; ok {
3370- if kv, ok := node.(*ast.KeyValue); ok {
3371- if integer, ok := kv.Value.(*ast.Integer); ok {
3372- v, err := integer.Int()
3373- if err != nil {
3374- return nil, err
3375- }
3376- c.CSVSkipColumns = int(v)
3377- }
3378- }
3379- }
3380-
3381- if node, ok := tbl.Fields["csv_trim_space"]; ok {
3382- if kv, ok := node.(*ast.KeyValue); ok {
3383- if str, ok := kv.Value.(*ast.Boolean); ok {
3384- //for config with no quotes
3385- val, err := strconv.ParseBool(str.Value)
3386- c.CSVTrimSpace = val
3387- if err != nil {
3388- return nil, fmt.Errorf("E! parsing to bool: %v", err)
3389- }
3390- }
3391- }
3392- }
3393-
3394- if node, ok := tbl.Fields["form_urlencoded_tag_keys"]; ok {
3395- if kv, ok := node.(*ast.KeyValue); ok {
3396- if ary, ok := kv.Value.(*ast.Array); ok {
3397- for _, elem := range ary.Value {
3398- if str, ok := elem.(*ast.String); ok {
3399- c.FormUrlencodedTagKeys = append(c.FormUrlencodedTagKeys, str.Value)
3400+ tagfilter := models.TagFilter{Name: name}
3401+ if ary, ok := kv.Value.(*ast.Array); ok {
3402+ for _, elem := range ary.Value {
3403+ if str, ok := elem.(*ast.String); ok {
3404+ tagfilter.Filter = append(tagfilter.Filter, str.Value)
3405+ }
3406+ }
3407 }
3408+ *target = append(*target, tagfilter)
3409 }
3410 }
3411 }
3412 }
3413-
3414- c.MetricName = name
3415-
3416- delete(tbl.Fields, "data_format")
3417- delete(tbl.Fields, "separator")
3418- delete(tbl.Fields, "templates")
3419- delete(tbl.Fields, "tag_keys")
3420- delete(tbl.Fields, "json_name_key")
3421- delete(tbl.Fields, "json_query")
3422- delete(tbl.Fields, "json_string_fields")
3423- delete(tbl.Fields, "json_time_format")
3424- delete(tbl.Fields, "json_time_key")
3425- delete(tbl.Fields, "json_timezone")
3426- delete(tbl.Fields, "json_strict")
3427- delete(tbl.Fields, "data_type")
3428- delete(tbl.Fields, "collectd_auth_file")
3429- delete(tbl.Fields, "collectd_security_level")
3430- delete(tbl.Fields, "collectd_typesdb")
3431- delete(tbl.Fields, "collectd_parse_multivalue")
3432- delete(tbl.Fields, "dropwizard_metric_registry_path")
3433- delete(tbl.Fields, "dropwizard_time_path")
3434- delete(tbl.Fields, "dropwizard_time_format")
3435- delete(tbl.Fields, "dropwizard_tags_path")
3436- delete(tbl.Fields, "dropwizard_tag_paths")
3437- delete(tbl.Fields, "grok_named_patterns")
3438- delete(tbl.Fields, "grok_patterns")
3439- delete(tbl.Fields, "grok_custom_patterns")
3440- delete(tbl.Fields, "grok_custom_pattern_files")
3441- delete(tbl.Fields, "grok_timezone")
3442- delete(tbl.Fields, "grok_unique_timestamp")
3443- delete(tbl.Fields, "csv_column_names")
3444- delete(tbl.Fields, "csv_column_types")
3445- delete(tbl.Fields, "csv_comment")
3446- delete(tbl.Fields, "csv_delimiter")
3447- delete(tbl.Fields, "csv_field_columns")
3448- delete(tbl.Fields, "csv_header_row_count")
3449- delete(tbl.Fields, "csv_measurement_column")
3450- delete(tbl.Fields, "csv_skip_columns")
3451- delete(tbl.Fields, "csv_skip_rows")
3452- delete(tbl.Fields, "csv_tag_columns")
3453- delete(tbl.Fields, "csv_timestamp_column")
3454- delete(tbl.Fields, "csv_timestamp_format")
3455- delete(tbl.Fields, "csv_timezone")
3456- delete(tbl.Fields, "csv_trim_space")
3457- delete(tbl.Fields, "form_urlencoded_tag_keys")
3458-
3459- return c, nil
3460 }
3461
3462-// buildSerializer grabs the necessary entries from the ast.Table for creating
3463-// a serializers.Serializer object, and creates it, which can then be added onto
3464-// an Output object.
3465-func buildSerializer(name string, tbl *ast.Table) (serializers.Serializer, error) {
3466- c := &serializers.Config{TimestampUnits: time.Duration(1 * time.Second)}
3467-
3468- if node, ok := tbl.Fields["data_format"]; ok {
3469- if kv, ok := node.(*ast.KeyValue); ok {
3470- if str, ok := kv.Value.(*ast.String); ok {
3471- c.DataFormat = str.Value
3472- }
3473- }
3474- }
3475-
3476- if c.DataFormat == "" {
3477- c.DataFormat = "influx"
3478- }
3479-
3480- if node, ok := tbl.Fields["prefix"]; ok {
3481- if kv, ok := node.(*ast.KeyValue); ok {
3482- if str, ok := kv.Value.(*ast.String); ok {
3483- c.Prefix = str.Value
3484- }
3485- }
3486- }
3487-
3488- if node, ok := tbl.Fields["template"]; ok {
3489- if kv, ok := node.(*ast.KeyValue); ok {
3490- if str, ok := kv.Value.(*ast.String); ok {
3491- c.Template = str.Value
3492- }
3493- }
3494- }
3495-
3496- if node, ok := tbl.Fields["templates"]; ok {
3497- if kv, ok := node.(*ast.KeyValue); ok {
3498- if ary, ok := kv.Value.(*ast.Array); ok {
3499- for _, elem := range ary.Value {
3500- if str, ok := elem.(*ast.String); ok {
3501- c.Templates = append(c.Templates, str.Value)
3502- }
3503- }
3504- }
3505- }
3506- }
3507-
3508- if node, ok := tbl.Fields["influx_max_line_bytes"]; ok {
3509- if kv, ok := node.(*ast.KeyValue); ok {
3510- if integer, ok := kv.Value.(*ast.Integer); ok {
3511- v, err := integer.Int()
3512- if err != nil {
3513- return nil, err
3514- }
3515- c.InfluxMaxLineBytes = int(v)
3516- }
3517- }
3518- }
3519-
3520- if node, ok := tbl.Fields["influx_sort_fields"]; ok {
3521- if kv, ok := node.(*ast.KeyValue); ok {
3522- if b, ok := kv.Value.(*ast.Boolean); ok {
3523- var err error
3524- c.InfluxSortFields, err = b.Boolean()
3525- if err != nil {
3526- return nil, err
3527- }
3528- }
3529- }
3530- }
3531-
3532- if node, ok := tbl.Fields["influx_uint_support"]; ok {
3533- if kv, ok := node.(*ast.KeyValue); ok {
3534- if b, ok := kv.Value.(*ast.Boolean); ok {
3535- var err error
3536- c.InfluxUintSupport, err = b.Boolean()
3537- if err != nil {
3538- return nil, err
3539- }
3540- }
3541- }
3542- }
3543-
3544- if node, ok := tbl.Fields["graphite_tag_support"]; ok {
3545- if kv, ok := node.(*ast.KeyValue); ok {
3546- if b, ok := kv.Value.(*ast.Boolean); ok {
3547- var err error
3548- c.GraphiteTagSupport, err = b.Boolean()
3549- if err != nil {
3550- return nil, err
3551- }
3552- }
3553- }
3554- }
3555-
3556- if node, ok := tbl.Fields["graphite_separator"]; ok {
3557- if kv, ok := node.(*ast.KeyValue); ok {
3558- if str, ok := kv.Value.(*ast.String); ok {
3559- c.GraphiteSeparator = str.Value
3560- }
3561- }
3562- }
3563-
3564- if node, ok := tbl.Fields["json_timestamp_units"]; ok {
3565- if kv, ok := node.(*ast.KeyValue); ok {
3566- if str, ok := kv.Value.(*ast.String); ok {
3567- timestampVal, err := time.ParseDuration(str.Value)
3568- if err != nil {
3569- return nil, fmt.Errorf("Unable to parse json_timestamp_units as a duration, %s", err)
3570- }
3571- // now that we have a duration, truncate it to the nearest
3572- // power of ten (just in case)
3573- nearest_exponent := int64(math.Log10(float64(timestampVal.Nanoseconds())))
3574- new_nanoseconds := int64(math.Pow(10.0, float64(nearest_exponent)))
3575- c.TimestampUnits = time.Duration(new_nanoseconds)
3576- }
3577- }
3578- }
3579-
3580- if node, ok := tbl.Fields["splunkmetric_hec_routing"]; ok {
3581- if kv, ok := node.(*ast.KeyValue); ok {
3582- if b, ok := kv.Value.(*ast.Boolean); ok {
3583- var err error
3584- c.HecRouting, err = b.Boolean()
3585- if err != nil {
3586- return nil, err
3587- }
3588- }
3589- }
3590- }
3591-
3592- if node, ok := tbl.Fields["splunkmetric_multimetric"]; ok {
3593- if kv, ok := node.(*ast.KeyValue); ok {
3594- if b, ok := kv.Value.(*ast.Boolean); ok {
3595- var err error
3596- c.SplunkmetricMultiMetric, err = b.Boolean()
3597- if err != nil {
3598- return nil, err
3599- }
3600- }
3601- }
3602- }
3603-
3604- if node, ok := tbl.Fields["wavefront_source_override"]; ok {
3605- if kv, ok := node.(*ast.KeyValue); ok {
3606- if ary, ok := kv.Value.(*ast.Array); ok {
3607- for _, elem := range ary.Value {
3608- if str, ok := elem.(*ast.String); ok {
3609- c.WavefrontSourceOverride = append(c.WavefrontSourceOverride, str.Value)
3610+func (c *Config) getFieldStringMap(tbl *ast.Table, fieldName string, target *map[string]string) {
3611+ *target = map[string]string{}
3612+ if node, ok := tbl.Fields[fieldName]; ok {
3613+ if subtbl, ok := node.(*ast.Table); ok {
3614+ for name, val := range subtbl.Fields {
3615+ if kv, ok := val.(*ast.KeyValue); ok {
3616+ if str, ok := kv.Value.(*ast.String); ok {
3617+ (*target)[name] = str.Value
3618 }
3619 }
3620 }
3621 }
3622 }
3623-
3624- if node, ok := tbl.Fields["wavefront_use_strict"]; ok {
3625- if kv, ok := node.(*ast.KeyValue); ok {
3626- if b, ok := kv.Value.(*ast.Boolean); ok {
3627- var err error
3628- c.WavefrontUseStrict, err = b.Boolean()
3629- if err != nil {
3630- return nil, err
3631- }
3632- }
3633- }
3634- }
3635-
3636- if node, ok := tbl.Fields["prometheus_export_timestamp"]; ok {
3637- if kv, ok := node.(*ast.KeyValue); ok {
3638- if b, ok := kv.Value.(*ast.Boolean); ok {
3639- var err error
3640- c.PrometheusExportTimestamp, err = b.Boolean()
3641- if err != nil {
3642- return nil, err
3643- }
3644- }
3645- }
3646- }
3647-
3648- if node, ok := tbl.Fields["prometheus_sort_metrics"]; ok {
3649- if kv, ok := node.(*ast.KeyValue); ok {
3650- if b, ok := kv.Value.(*ast.Boolean); ok {
3651- var err error
3652- c.PrometheusSortMetrics, err = b.Boolean()
3653- if err != nil {
3654- return nil, err
3655- }
3656- }
3657- }
3658- }
3659-
3660- if node, ok := tbl.Fields["prometheus_string_as_label"]; ok {
3661- if kv, ok := node.(*ast.KeyValue); ok {
3662- if b, ok := kv.Value.(*ast.Boolean); ok {
3663- var err error
3664- c.PrometheusStringAsLabel, err = b.Boolean()
3665- if err != nil {
3666- return nil, err
3667- }
3668- }
3669- }
3670- }
3671-
3672- delete(tbl.Fields, "influx_max_line_bytes")
3673- delete(tbl.Fields, "influx_sort_fields")
3674- delete(tbl.Fields, "influx_uint_support")
3675- delete(tbl.Fields, "graphite_tag_support")
3676- delete(tbl.Fields, "graphite_separator")
3677- delete(tbl.Fields, "data_format")
3678- delete(tbl.Fields, "prefix")
3679- delete(tbl.Fields, "template")
3680- delete(tbl.Fields, "templates")
3681- delete(tbl.Fields, "json_timestamp_units")
3682- delete(tbl.Fields, "splunkmetric_hec_routing")
3683- delete(tbl.Fields, "splunkmetric_multimetric")
3684- delete(tbl.Fields, "wavefront_source_override")
3685- delete(tbl.Fields, "wavefront_use_strict")
3686- delete(tbl.Fields, "prometheus_export_timestamp")
3687- delete(tbl.Fields, "prometheus_sort_metrics")
3688- delete(tbl.Fields, "prometheus_string_as_label")
3689- return serializers.NewSerializer(c)
3690 }
3691
3692-// buildOutput parses output specific items from the ast.Table,
3693-// builds the filter and returns an
3694-// models.OutputConfig to be inserted into models.RunningInput
3695-// Note: error exists in the return for future calls that might require error
3696-func buildOutput(name string, tbl *ast.Table) (*models.OutputConfig, error) {
3697- filter, err := buildFilter(tbl)
3698- if err != nil {
3699- return nil, err
3700- }
3701- oc := &models.OutputConfig{
3702- Name: name,
3703- Filter: filter,
3704- }
3705-
3706- // TODO
3707- // Outputs don't support FieldDrop/FieldPass, so set to NameDrop/NamePass
3708- if len(oc.Filter.FieldDrop) > 0 {
3709- oc.Filter.NameDrop = oc.Filter.FieldDrop
3710- }
3711- if len(oc.Filter.FieldPass) > 0 {
3712- oc.Filter.NamePass = oc.Filter.FieldPass
3713- }
3714-
3715- if err := getConfigDuration(tbl, "flush_interval", &oc.FlushInterval); err != nil {
3716- return nil, err
3717- }
3718-
3719- if err := getConfigDuration(tbl, "flush_jitter", &oc.FlushJitter); err != nil {
3720- return nil, err
3721- }
3722-
3723- if node, ok := tbl.Fields["metric_buffer_limit"]; ok {
3724- if kv, ok := node.(*ast.KeyValue); ok {
3725- if integer, ok := kv.Value.(*ast.Integer); ok {
3726- v, err := integer.Int()
3727- if err != nil {
3728- return nil, err
3729- }
3730- oc.MetricBufferLimit = int(v)
3731- }
3732- }
3733- }
3734-
3735- if node, ok := tbl.Fields["metric_batch_size"]; ok {
3736- if kv, ok := node.(*ast.KeyValue); ok {
3737- if integer, ok := kv.Value.(*ast.Integer); ok {
3738- v, err := integer.Int()
3739- if err != nil {
3740- return nil, err
3741- }
3742- oc.MetricBatchSize = int(v)
3743- }
3744- }
3745- }
3746-
3747- if node, ok := tbl.Fields["alias"]; ok {
3748- if kv, ok := node.(*ast.KeyValue); ok {
3749- if str, ok := kv.Value.(*ast.String); ok {
3750- oc.Alias = str.Value
3751- }
3752- }
3753- }
3754-
3755- if node, ok := tbl.Fields["name_override"]; ok {
3756- if kv, ok := node.(*ast.KeyValue); ok {
3757- if str, ok := kv.Value.(*ast.String); ok {
3758- oc.NameOverride = str.Value
3759- }
3760- }
3761+func keys(m map[string]bool) []string {
3762+ result := []string{}
3763+ for k := range m {
3764+ result = append(result, k)
3765 }
3766+ return result
3767+}
3768
3769- if node, ok := tbl.Fields["name_suffix"]; ok {
3770- if kv, ok := node.(*ast.KeyValue); ok {
3771- if str, ok := kv.Value.(*ast.String); ok {
3772- oc.NameSuffix = str.Value
3773- }
3774- }
3775- }
3776+func (c *Config) hasErrs() bool {
3777+ return len(c.errs) > 0
3778+}
3779
3780- if node, ok := tbl.Fields["name_prefix"]; ok {
3781- if kv, ok := node.(*ast.KeyValue); ok {
3782- if str, ok := kv.Value.(*ast.String); ok {
3783- oc.NamePrefix = str.Value
3784- }
3785- }
3786+func (c *Config) firstErr() error {
3787+ if len(c.errs) == 0 {
3788+ return nil
3789 }
3790+ return c.errs[0]
3791+}
3792
3793- delete(tbl.Fields, "metric_buffer_limit")
3794- delete(tbl.Fields, "metric_batch_size")
3795- delete(tbl.Fields, "alias")
3796- delete(tbl.Fields, "name_override")
3797- delete(tbl.Fields, "name_suffix")
3798- delete(tbl.Fields, "name_prefix")
3799-
3800- return oc, nil
3801+func (c *Config) addError(tbl *ast.Table, err error) {
3802+ c.errs = append(c.errs, fmt.Errorf("line %d:%d: %w", tbl.Line, tbl.Position, err))
3803 }
3804
3805 // unwrappable lets you retrieve the original telegraf.Processor from the
3806@@ -2193,19 +1603,3 @@ func buildOutput(name string, tbl *ast.Table) (*models.OutputConfig, error) {
3807 type unwrappable interface {
3808 Unwrap() telegraf.Processor
3809 }
3810-
3811-func getConfigDuration(tbl *ast.Table, key string, target *time.Duration) error {
3812- if node, ok := tbl.Fields[key]; ok {
3813- if kv, ok := node.(*ast.KeyValue); ok {
3814- if str, ok := kv.Value.(*ast.String); ok {
3815- d, err := time.ParseDuration(str.Value)
3816- if err != nil {
3817- return err
3818- }
3819- delete(tbl.Fields, key)
3820- *target = d
3821- }
3822- }
3823- }
3824- return nil
3825-}
3826diff --git a/config/config_test.go b/config/config_test.go
3827index 6c5e366..79d74e8 100644
3828--- a/config/config_test.go
3829+++ b/config/config_test.go
3830@@ -2,6 +2,7 @@ package config
3831
3832 import (
3833 "os"
3834+ "strings"
3835 "testing"
3836 "time"
3837
3838@@ -12,6 +13,7 @@ import (
3839 "github.com/influxdata/telegraf/plugins/inputs/http_listener_v2"
3840 "github.com/influxdata/telegraf/plugins/inputs/memcached"
3841 "github.com/influxdata/telegraf/plugins/inputs/procstat"
3842+ "github.com/influxdata/telegraf/plugins/outputs/azure_monitor"
3843 httpOut "github.com/influxdata/telegraf/plugins/outputs/http"
3844 "github.com/influxdata/telegraf/plugins/parsers"
3845 "github.com/stretchr/testify/assert"
3846@@ -200,27 +202,26 @@ func TestConfig_LoadSpecialTypes(t *testing.T) {
3847 // Tests telegraf size parsing.
3848 assert.Equal(t, internal.Size{Size: 1024 * 1024}, inputHTTPListener.MaxBodySize)
3849 // Tests toml multiline basic strings.
3850- assert.Equal(t, "/path/to/my/cert\n", inputHTTPListener.TLSCert)
3851+ assert.Equal(t, "/path/to/my/cert", strings.TrimRight(inputHTTPListener.TLSCert, "\r\n"))
3852 }
3853
3854 func TestConfig_FieldNotDefined(t *testing.T) {
3855 c := NewConfig()
3856 err := c.LoadConfig("./testdata/invalid_field.toml")
3857 require.Error(t, err, "invalid field name")
3858- assert.Equal(t, "Error loading config file ./testdata/invalid_field.toml: Error parsing http_listener_v2, line 2: field corresponding to `not_a_field' is not defined in http_listener_v2.HTTPListenerV2", err.Error())
3859-
3860+ assert.Equal(t, "Error loading config file ./testdata/invalid_field.toml: plugin inputs.http_listener_v2: line 1: configuration specified the fields [\"not_a_field\"], but they weren't used", err.Error())
3861 }
3862
3863 func TestConfig_WrongFieldType(t *testing.T) {
3864 c := NewConfig()
3865 err := c.LoadConfig("./testdata/wrong_field_type.toml")
3866 require.Error(t, err, "invalid field type")
3867- assert.Equal(t, "Error loading config file ./testdata/wrong_field_type.toml: Error parsing http_listener_v2, line 2: (http_listener_v2.HTTPListenerV2.Port) cannot unmarshal TOML string into int", err.Error())
3868+ assert.Equal(t, "Error loading config file ./testdata/wrong_field_type.toml: error parsing http_listener_v2, line 2: (http_listener_v2.HTTPListenerV2.Port) cannot unmarshal TOML string into int", err.Error())
3869
3870 c = NewConfig()
3871 err = c.LoadConfig("./testdata/wrong_field_type2.toml")
3872 require.Error(t, err, "invalid field type2")
3873- assert.Equal(t, "Error loading config file ./testdata/wrong_field_type2.toml: Error parsing http_listener_v2, line 2: (http_listener_v2.HTTPListenerV2.Methods) cannot unmarshal TOML string into []string", err.Error())
3874+ assert.Equal(t, "Error loading config file ./testdata/wrong_field_type2.toml: error parsing http_listener_v2, line 2: (http_listener_v2.HTTPListenerV2.Methods) cannot unmarshal TOML string into []string", err.Error())
3875 }
3876
3877 func TestConfig_InlineTables(t *testing.T) {
3878@@ -255,5 +256,25 @@ func TestConfig_BadOrdering(t *testing.T) {
3879 c := NewConfig()
3880 err := c.LoadConfig("./testdata/non_slice_slice.toml")
3881 require.Error(t, err, "bad ordering")
3882- assert.Equal(t, "Error loading config file ./testdata/non_slice_slice.toml: Error parsing http array, line 4: cannot unmarshal TOML array into string (need slice)", err.Error())
3883+ assert.Equal(t, "Error loading config file ./testdata/non_slice_slice.toml: error parsing http array, line 4: cannot unmarshal TOML array into string (need slice)", err.Error())
3884+}
3885+
3886+func TestConfig_AzureMonitorNamespacePrefix(t *testing.T) {
3887+ // #8256 Cannot use empty string as the namespace prefix
3888+ c := NewConfig()
3889+ defaultPrefixConfig := `[[outputs.azure_monitor]]`
3890+ err := c.LoadConfigData([]byte(defaultPrefixConfig))
3891+ assert.NoError(t, err)
3892+ azureMonitor, ok := c.Outputs[0].Output.(*azure_monitor.AzureMonitor)
3893+ assert.Equal(t, "Telegraf/", azureMonitor.NamespacePrefix)
3894+ assert.Equal(t, true, ok)
3895+
3896+ c = NewConfig()
3897+ customPrefixConfig := `[[outputs.azure_monitor]]
3898+ namespace_prefix = ""`
3899+ err = c.LoadConfigData([]byte(customPrefixConfig))
3900+ assert.NoError(t, err)
3901+ azureMonitor, ok = c.Outputs[0].Output.(*azure_monitor.AzureMonitor)
3902+ assert.Equal(t, "", azureMonitor.NamespacePrefix)
3903+ assert.Equal(t, true, ok)
3904 }
3905diff --git a/config/testdata/telegraf-agent.toml b/config/testdata/telegraf-agent.toml
3906index f71b982..6967d6e 100644
3907--- a/config/testdata/telegraf-agent.toml
3908+++ b/config/testdata/telegraf-agent.toml
3909@@ -176,14 +176,6 @@
3910 # If no servers are specified, then 127.0.0.1 is used as the host and 4020 as the port.
3911 servers = ["127.0.0.1:4021"]
3912
3913-# Read metrics from local Lustre service on OST, MDS
3914-[[inputs.lustre2]]
3915- # An array of /proc globs to search for Lustre stats
3916- # If not specified, the default will work on Lustre 2.5.x
3917- #
3918- # ost_procfiles = ["/proc/fs/lustre/obdfilter/*/stats", "/proc/fs/lustre/osd-ldiskfs/*/stats"]
3919- # mds_procfiles = ["/proc/fs/lustre/mdt/*/md_stats"]
3920-
3921 # Read metrics about memory usage
3922 [[inputs.mem]]
3923 # no configuration
3924diff --git a/debian/changelog b/debian/changelog
3925index e32712d..197fbf0 100644
3926--- a/debian/changelog
3927+++ b/debian/changelog
3928@@ -1,8 +1,32 @@
3929+<<<<<<< debian/changelog
3930 telegraf (1.15.3+ds1-0ubuntu1) groovy; urgency=medium
3931
3932 * New upstream version 1.15.3+ds1
3933
3934 -- Sergio Durigan Junior <sergio.durigan@canonical.com> Mon, 28 Sep 2020 13:58:28 -0400
3935+=======
3936+telegraf (1.17.2+ds1-0ubuntu2) hirsute; urgency=medium
3937+
3938+ * d/p/adjust-etc-telegraf.conf.patch: Adjust /etc/telegraf.conf.
3939+ We have to adjust /etc/telegraf.conf in order to prevent it to try to
3940+ connect to an influxdb instance, which might not be present in the
3941+ system. Since we still need to define an output in the config file,
3942+ (LP: #1916305)
3943+
3944+ -- Sergio Durigan Junior <sergio.durigan@canonical.com> Fri, 19 Feb 2021 18:09:35 -0500
3945+
3946+telegraf (1.17.2+ds1-0ubuntu1) hirsute; urgency=medium
3947+
3948+ * d/repack-telegraf-with-vendor.sh: Fix "trap" instruction.
3949+ * d/repack-telegraf-with-vendor.sh: Allow user to specify the Go binary.
3950+ * New upstream version 1.17.2+ds1
3951+ * d/p/use-mod-vendor-on-leofs-test.patch: Remove patch.
3952+ Upstream has changed the way leofs works, and it's not invoking "go"
3953+ directly anymore. For this reason, there is no more need to make sure
3954+ "go" was invoked with "-mod=vendor".
3955+
3956+ -- Sergio Durigan Junior <sergio.durigan@canonical.com> Tue, 02 Feb 2021 19:06:07 -0500
3957+>>>>>>> debian/changelog
3958
3959 telegraf (1.15.2+ds1-0ubuntu1) groovy; urgency=medium
3960
3961diff --git a/debian/patches/adjust-etc-telegraf.conf.patch b/debian/patches/adjust-etc-telegraf.conf.patch
3962new file mode 100644
3963index 0000000..8a52a95
3964--- /dev/null
3965+++ b/debian/patches/adjust-etc-telegraf.conf.patch
3966@@ -0,0 +1,50 @@
3967+From: Sergio Durigan Junior <sergio.durigan@canonical.com>
3968+Date: Fri, 19 Feb 2021 18:00:08 -0500
3969+Subject: Adjust /etc/telegraf.conf
3970+
3971+We have to adjust /etc/telegraf.conf in order to prevent it to try to
3972+connect to an influxdb instance, which might not be present in the
3973+system. Since we still need to define an output in the config file,
3974+we enable prometheus_client, which should be harmless.
3975+
3976+Author: Sergio Durigan Junior <sergio.durigan@canonical.com>
3977+Last-Updated: 2021-02-19
3978+Forwarded: not-needed
3979+---
3980+ etc/telegraf.conf | 8 ++++----
3981+ 1 file changed, 4 insertions(+), 4 deletions(-)
3982+
3983+diff --git a/etc/telegraf.conf b/etc/telegraf.conf
3984+index 9d52d0a..7efb747 100644
3985+--- a/etc/telegraf.conf
3986++++ b/etc/telegraf.conf
3987+@@ -102,7 +102,7 @@
3988+
3989+
3990+ # Configuration for sending metrics to InfluxDB
3991+-[[outputs.influxdb]]
3992++#[[outputs.influxdb]]
3993+ ## The full HTTP or UDP URL for your InfluxDB instance.
3994+ ##
3995+ ## Multiple URLs can be specified for a single cluster, only ONE of the
3996+@@ -1203,9 +1203,9 @@
3997+
3998+
3999+ # # Configuration for the Prometheus client to spawn
4000+-# [[outputs.prometheus_client]]
4001++[[outputs.prometheus_client]]
4002+ # ## Address to listen on
4003+-# listen = ":9273"
4004++ listen = ":9273"
4005+ #
4006+ # ## Metric version controls the mapping from Telegraf metrics into
4007+ # ## Prometheus format. When using the prometheus input, use the same value in
4008+@@ -1213,7 +1213,7 @@
4009+ # ##
4010+ # ## example: metric_version = 1; deprecated in 1.13
4011+ # ## metric_version = 2; recommended version
4012+-# # metric_version = 1
4013++ metric_version = 2
4014+ #
4015+ # ## Use HTTP Basic Authentication.
4016+ # # basic_username = "Foo"
4017diff --git a/debian/patches/series b/debian/patches/series
4018index cb6190e..7de5f2c 100644
4019--- a/debian/patches/series
4020+++ b/debian/patches/series
4021@@ -1,2 +1,2 @@
4022 adjust-service-user.patch
4023-use-mod-vendor-on-leofs-test.patch
4024+adjust-etc-telegraf.conf.patch
4025diff --git a/debian/patches/use-mod-vendor-on-leofs-test.patch b/debian/patches/use-mod-vendor-on-leofs-test.patch
4026deleted file mode 100644
4027index d397845..0000000
4028--- a/debian/patches/use-mod-vendor-on-leofs-test.patch
4029+++ /dev/null
4030@@ -1,16 +0,0 @@
4031-Author: Sergio Durigan Junior <sergio.durigan@canonical.com>
4032-Last-Update: 2020-06-05
4033-
4034-Index: telegraf/plugins/inputs/leofs/leofs_test.go
4035-===================================================================
4036---- telegraf.orig/plugins/inputs/leofs/leofs_test.go 2020-06-05 13:29:07.033841504 -0400
4037-+++ telegraf/plugins/inputs/leofs/leofs_test.go 2020-06-05 18:22:18.458606480 -0400
4038-@@ -134,7 +134,7 @@
4039- }
4040-
4041- func buildFakeSNMPCmd(src string) {
4042-- err := exec.Command("go", "build", "-o", "snmpwalk", src).Run()
4043-+ err := exec.Command("go", "build", "-mod=vendor", "-o", "snmpwalk", src).Run()
4044- if err != nil {
4045- log.Fatalln(err)
4046- }
4047diff --git a/debian/repack-telegraf-with-vendor.sh b/debian/repack-telegraf-with-vendor.sh
4048index cbcb1d7..a13a5e7 100755
4049--- a/debian/repack-telegraf-with-vendor.sh
4050+++ b/debian/repack-telegraf-with-vendor.sh
4051@@ -13,12 +13,14 @@ set -e
4052 set -x
4053 set -o pipefail
4054
4055+GOBIN=${GOBIN:-go}
4056+
4057 upstream_version="$2"
4058 orig_tar=$(realpath "../telegraf_${upstream_version}.orig.tar.xz")
4059 orig_dir="$PWD"
4060 work_dir="$(mktemp -d)"
4061
4062-trap "rm -rf $workdir" INT QUIT 0
4063+trap "rm -rf $work_dir" INT QUIT 0
4064
4065 export GOPATH="$work_dir/.gopath"
4066 export GOCACHE="$work_dir/.gocache"
4067@@ -28,11 +30,11 @@ printf "Unpacking tarball '$orig_tar' to '$work_dir'"
4068 tar xf "$orig_tar" -C "$work_dir"
4069 source_dir_name="$(ls -1 "$work_dir")"
4070 cd "$work_dir/$source_dir_name"
4071-go mod vendor
4072+$GOBIN mod vendor
4073 cd ..
4074 tar cJf "$orig_tar" "$source_dir_name"
4075
4076-go clean -cache -modcache
4077+$GOBIN clean -cache -modcache
4078 rm -rf "$work_dir"
4079
4080 exit 0
4081diff --git a/docker-compose.yml b/docker-compose.yml
4082index eb96fc2..092a7b9 100644
4083--- a/docker-compose.yml
4084+++ b/docker-compose.yml
4085@@ -2,9 +2,12 @@ version: '3'
4086
4087 services:
4088 aerospike:
4089- image: aerospike/aerospike-server:3.9.0
4090+ image: aerospike/aerospike-server:4.9.0.11
4091 ports:
4092 - "3000:3000"
4093+ - "3001:3001"
4094+ - "3002:3002"
4095+ - "3003:3003"
4096 zookeeper:
4097 image: wurstmeister/zookeeper
4098 environment:
4099@@ -50,7 +53,7 @@ services:
4100 - "6432:6432"
4101 postgres:
4102 image: postgres:alpine
4103- environment:
4104+ environment:
4105 - POSTGRES_HOST_AUTH_METHOD=trust
4106 ports:
4107 - "5432:5432"
4108diff --git a/docs/AGGREGATORS_AND_PROCESSORS.md b/docs/AGGREGATORS_AND_PROCESSORS.md
4109index 7be34ae..934a4b0 100644
4110--- a/docs/AGGREGATORS_AND_PROCESSORS.md
4111+++ b/docs/AGGREGATORS_AND_PROCESSORS.md
4112@@ -17,8 +17,8 @@ metrics as they pass through Telegraf:
4113 │ Memory │───┤ ┌──▶│ InfluxDB │
4114 │ │ │ │ │ │
4115 └───────────┘ │ ┌─────────────┐ ┌─────────────┐ │ └───────────┘
4116- │ │ │ │Aggregate │ │
4117-┌───────────┐ │ │Process │ │ - mean │ │ ┌───────────┐
4118+ │ │ │ │Aggregators │ │
4119+┌───────────┐ │ │Processors │ │ - mean │ │ ┌───────────┐
4120 │ │ │ │ - transform │ │ - quantiles │ │ │ │
4121 │ MySQL │───┼───▶│ - decorate │────▶│ - min/max │───┼──▶│ File │
4122 │ │ │ │ - filter │ │ - count │ │ │ │
4123@@ -62,6 +62,6 @@ emit the aggregates and not the original metrics.
4124
4125 Since aggregates are created for each measurement, field, and unique tag combination
4126 the plugin receives, you can make use of `taginclude` to group
4127-aggregates by specific tags only.
4128+aggregates by specific tags only.
4129
4130 **Note:** Aggregator plugins only aggregate metrics within their periods (`now() - period`). Data with a timestamp earlier than `now() - period` cannot be included.
4131diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md
4132index 341acce..2babf8e 100644
4133--- a/docs/CONFIGURATION.md
4134+++ b/docs/CONFIGURATION.md
4135@@ -55,7 +55,11 @@ INFLUX_PASSWORD="monkey123"
4136 ```
4137 For InfluxDB OSS 2:
4138 ```
4139+<<<<<<< docs/CONFIGURATION.md
4140 INFLUX_HOST="http://localhost:9999"
4141+=======
4142+INFLUX_HOST="http://localhost:8086" # used to be 9999
4143+>>>>>>> docs/CONFIGURATION.md
4144 INFLUX_TOKEN="replace_with_your_token"
4145 INFLUX_ORG="your_username"
4146 INFLUX_BUCKET="replace_with_your_bucket_name"
4147@@ -83,6 +87,7 @@ INFLUX_BUCKET="replace_with_your_bucket_name"
4148 urls = ["${INFLUX_URL}"]
4149 skip_database_creation = ${INFLUX_SKIP_DATABASE_CREATION}
4150 password = "${INFLUX_PASSWORD}"
4151+<<<<<<< docs/CONFIGURATION.md
4152
4153 # For InfluxDB OSS 2:
4154 [[outputs.influxdb_v2]]
4155@@ -90,13 +95,28 @@ INFLUX_BUCKET="replace_with_your_bucket_name"
4156 token = ["${INFLUX_TOKEN}"]
4157 org = ["${INFLUX_ORG}"]
4158 bucket = ["${INFLUX_BUCKET}"]
4159+=======
4160+
4161+# For InfluxDB OSS 2:
4162+[[outputs.influxdb_v2]]
4163+ urls = ["${INFLUX_HOST}"]
4164+ token = "${INFLUX_TOKEN}"
4165+ organization = "${INFLUX_ORG}"
4166+ bucket = "${INFLUX_BUCKET}"
4167+>>>>>>> docs/CONFIGURATION.md
4168
4169 # For InfluxDB Cloud 2:
4170 [[outputs.influxdb_v2]]
4171 urls = ["${INFLUX_HOST}"]
4172+<<<<<<< docs/CONFIGURATION.md
4173 token = ["${INFLUX_TOKEN}"]
4174 org = ["${INFLUX_ORG}"]
4175 bucket = ["${INFLUX_BUCKET}"]
4176+=======
4177+ token = "${INFLUX_TOKEN}"
4178+ organization = "${INFLUX_ORG}"
4179+ bucket = "${INFLUX_BUCKET}"
4180+>>>>>>> docs/CONFIGURATION.md
4181 ```
4182
4183 The above files will produce the following effective configuration file to be
4184@@ -112,12 +132,21 @@ parsed:
4185 urls = "http://localhost:8086"
4186 skip_database_creation = true
4187 password = "monkey123"
4188+<<<<<<< docs/CONFIGURATION.md
4189
4190 # For InfluxDB OSS 2:
4191 [[outputs.influxdb_v2]]
4192 urls = ["http://127.0.0.1:9999"]
4193 token = "replace_with_your_token"
4194 org = "your_username"
4195+=======
4196+
4197+# For InfluxDB OSS 2:
4198+[[outputs.influxdb_v2]]
4199+ urls = ["http://127.0.0.1:8086"] # double check the port. could be 9999 if using OSS Beta
4200+ token = "replace_with_your_token"
4201+ organization = "your_username"
4202+>>>>>>> docs/CONFIGURATION.md
4203 bucket = "replace_with_your_bucket_name"
4204
4205 # For InfluxDB Cloud 2:
4206@@ -126,7 +155,11 @@ parsed:
4207 INFLUX_HOST="https://us-west-2-1.aws.cloud2.influxdata.com"
4208 # Other Cloud URLs at https://v2.docs.influxdata.com/v2.0/reference/urls/#influxdb-cloud-urls
4209 token = "replace_with_your_token"
4210+<<<<<<< docs/CONFIGURATION.md
4211 org = "yourname@yourcompany.com"
4212+=======
4213+ organization = "yourname@yourcompany.com"
4214+>>>>>>> docs/CONFIGURATION.md
4215 bucket = "replace_with_your_bucket_name"
4216 ```
4217
4218@@ -499,8 +532,13 @@ patterns is emitted.
4219 The inverse of `tagpass`. If a match is found the metric is discarded. This
4220 is tested on metrics after they have passed the `tagpass` test.
4221
4222+<<<<<<< docs/CONFIGURATION.md
4223 > NOTE: Due to the way TOML is parsed, `tagpass` and `tagdrop` parameters must be
4224 defined at the *_end_* of the plugin definition, otherwise subsequent plugin config
4225+=======
4226+> NOTE: Due to the way TOML is parsed, `tagpass` and `tagdrop` parameters must be
4227+defined at the *_end_* of the plugin definition, otherwise subsequent plugin config
4228+>>>>>>> docs/CONFIGURATION.md
4229 options will be interpreted as part of the tagpass/tagdrop tables.
4230
4231 #### Modifiers
4232diff --git a/docs/DATA_FORMATS_INPUT.md b/docs/DATA_FORMATS_INPUT.md
4233index b716501..dbcb283 100644
4234--- a/docs/DATA_FORMATS_INPUT.md
4235+++ b/docs/DATA_FORMATS_INPUT.md
4236@@ -5,15 +5,16 @@ using a configurable parser into [metrics][]. This allows, for example, the
4237 `kafka_consumer` input plugin to process messages in either InfluxDB Line
4238 Protocol or in JSON format.
4239
4240-- [InfluxDB Line Protocol](/plugins/parsers/influx)
4241 - [Collectd](/plugins/parsers/collectd)
4242 - [CSV](/plugins/parsers/csv)
4243 - [Dropwizard](/plugins/parsers/dropwizard)
4244 - [Graphite](/plugins/parsers/graphite)
4245 - [Grok](/plugins/parsers/grok)
4246+- [InfluxDB Line Protocol](/plugins/parsers/influx)
4247 - [JSON](/plugins/parsers/json)
4248 - [Logfmt](/plugins/parsers/logfmt)
4249 - [Nagios](/plugins/parsers/nagios)
4250+- [Prometheus](/plugins/parsers/prometheus)
4251 - [Value](/plugins/parsers/value), ie: 45 or "booyah"
4252 - [Wavefront](/plugins/parsers/wavefront)
4253
4254@@ -29,9 +30,6 @@ desired parser:
4255 name_suffix = "_mycollector"
4256
4257 ## Data format to consume.
4258- ## Each data format has its own unique set of configuration options, read
4259- ## more about them here:
4260- ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
4261 data_format = "json"
4262 ```
4263
4264diff --git a/docs/DATA_FORMATS_OUTPUT.md b/docs/DATA_FORMATS_OUTPUT.md
4265index a8650b2..0d0bdff 100644
4266--- a/docs/DATA_FORMATS_OUTPUT.md
4267+++ b/docs/DATA_FORMATS_OUTPUT.md
4268@@ -9,6 +9,8 @@ plugins.
4269 1. [Graphite](/plugins/serializers/graphite)
4270 1. [JSON](/plugins/serializers/json)
4271 1. [Prometheus](/plugins/serializers/prometheus)
4272+1. [Prometheus Remote Write](/plugins/serializers/prometheusremotewrite)
4273+1. [ServiceNow Metrics](/plugins/serializers/nowmetric)
4274 1. [SplunkMetric](/plugins/serializers/splunkmetric)
4275 1. [Wavefront](/plugins/serializers/wavefront)
4276
4277@@ -21,8 +23,5 @@ You will be able to identify the plugins with support by the presence of a
4278 files = ["stdout"]
4279
4280 ## Data format to output.
4281- ## Each data format has its own unique set of configuration options, read
4282- ## more about them here:
4283- ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md
4284 data_format = "influx"
4285 ```
4286diff --git a/docs/EXTERNAL_PLUGINS.md b/docs/EXTERNAL_PLUGINS.md
4287index 3379327..a8be76d 100644
4288--- a/docs/EXTERNAL_PLUGINS.md
4289+++ b/docs/EXTERNAL_PLUGINS.md
4290@@ -1,8 +1,14 @@
4291 ### External Plugins
4292
4293+<<<<<<< docs/EXTERNAL_PLUGINS.md
4294 External plugins are external programs that are built outside of Telegraf that
4295 can run through an `execd` plugin. These external plugins allow for more flexibility
4296 compared to internal Telegraf plugins.
4297+=======
4298+[External plugins](/EXTERNAL_PLUGINS.md) are external programs that are built outside
4299+of Telegraf that can run through an `execd` plugin. These external plugins allow for
4300+more flexibility compared to internal Telegraf plugins.
4301+>>>>>>> docs/EXTERNAL_PLUGINS.md
4302
4303 - External plugins can be written in any language (internal Telegraf plugins can only written in Go)
4304 - External plugins can access to libraries not written in Go
4305@@ -10,6 +16,7 @@ compared to internal Telegraf plugins.
4306 - Can include large dependencies that would otherwise bloat Telegraf
4307
4308 ### External Plugin Guidelines
4309+<<<<<<< docs/EXTERNAL_PLUGINS.md
4310 The guidelines of writing external plugins would follow those for our general [input](docs/INPUTS.md),
4311 [output](docs/OUTPUTS.md), [processor](docs/PROCESSORS.md), and [aggregator](docs/AGGREGATOR.md) plugins.
4312 Please reference the documentation on how to create these plugins written in Go.
4313@@ -17,11 +24,26 @@ Please reference the documentation on how to create these plugins written in Go.
4314
4315 #### Execd Go Shim
4316 For Go plugins, there is a [Execd Go Shim](plugins/common/shim) that will make it trivial to extract an internal input, processor, or output plugin from the main Telegraf repo out to a stand-alone repo. This shim This allows anyone to build and run it as a separate app using one of the `execd`plugins:
4317+=======
4318+The guidelines of writing external plugins would follow those for our general [input](/docs/INPUTS.md),
4319+[output](/docs/OUTPUTS.md), [processor](/docs/PROCESSORS.md), and [aggregator](/docs/AGGREGATORS.md) plugins.
4320+Please reference the documentation on how to create these plugins written in Go.
4321+
4322+_For listed [external plugins](/EXTERNAL_PLUGINS.md), the author of the external plugin is also responsible for the maintenance
4323+and feature development of external plugins. Expect to have users open plugin issues on its respective GitHub repository._
4324+
4325+#### Execd Go Shim
4326+For Go plugins, there is a [Execd Go Shim](/plugins/common/shim/) that will make it trivial to extract an internal input, processor, or output plugin from the main Telegraf repo out to a stand-alone repo. This shim allows anyone to build and run it as a separate app using one of the `execd`plugins:
4327+>>>>>>> docs/EXTERNAL_PLUGINS.md
4328 - [inputs.execd](/plugins/inputs/execd)
4329 - [processors.execd](/plugins/processors/execd)
4330 - [outputs.execd](/plugins/outputs/execd)
4331
4332+<<<<<<< docs/EXTERNAL_PLUGINS.md
4333 Follow the [Steps to externalize a plugin](plugins/common/shim#steps-to-externalize-a-plugin) and [Steps to build and run your plugin](plugins/common/shim#steps-to-build-and-run-your-plugin) to properly with the Execd Go Shim
4334+=======
4335+Follow the [Steps to externalize a plugin](/plugins/common/shim#steps-to-externalize-a-plugin) and [Steps to build and run your plugin](/plugins/common/shim#steps-to-build-and-run-your-plugin) to properly with the Execd Go Shim
4336+>>>>>>> docs/EXTERNAL_PLUGINS.md
4337
4338 #### Step-by-Step guidelines
4339 This is a guide to help you set up your plugin to use it with `execd`
4340@@ -29,15 +51,24 @@ This is a guide to help you set up your plugin to use it with `execd`
4341 - [Input Plugins](/docs/INPUTS.md)
4342 - [Processor Plugins](/docs/PROCESSORS.md)
4343 - [Aggregator Plugins](/docs/AGGREGATORS.md)
4344+<<<<<<< docs/EXTERNAL_PLUGINS.md
4345 - [Output Plugins](docs/OUTPUTS.md)
4346 2. If your plugin is written in Go, include the steps for the [Execd Go Shim](plugins/common/shim#steps-to-build-and-run-your-plugin)
4347+=======
4348+ - [Output Plugins](/docs/OUTPUTS.md)
4349+2. If your plugin is written in Go, include the steps for the [Execd Go Shim](/plugins/common/shim#steps-to-build-and-run-your-plugin)
4350+>>>>>>> docs/EXTERNAL_PLUGINS.md
4351 1. Move the project to an external repo, it's recommended to preserve the path
4352 structure, (but not strictly necessary). eg if your plugin was at
4353 `plugins/inputs/cpu`, it's recommended that it also be under `plugins/inputs/cpu`
4354 in the new repo. For a further example of what this might look like, take a
4355 look at [ssoroka/rand](https://github.com/ssoroka/rand) or
4356 [danielnelson/telegraf-execd-openvpn](https://github.com/danielnelson//telegraf-execd-openvpn)
4357+<<<<<<< docs/EXTERNAL_PLUGINS.md
4358 1. Copy [main.go](./example/cmd/main.go) into your project under the `cmd` folder.
4359+=======
4360+ 1. Copy [main.go](/plugins/common/shim/example/cmd/main.go) into your project under the `cmd` folder.
4361+>>>>>>> docs/EXTERNAL_PLUGINS.md
4362 This will be the entrypoint to the plugin when run as a stand-alone program, and
4363 it will call the shim code for you to make that happen. It's recommended to
4364 have only one plugin per repo, as the shim is not designed to run multiple
4365@@ -52,9 +83,24 @@ This is a guide to help you set up your plugin to use it with `execd`
4366 Telegraf is expecting to load all configs**. If Telegraf reads this config file
4367 it will not know which plugin it relates to. Telegraf instead uses an execd config
4368 block to look for this plugin.
4369+<<<<<<< docs/EXTERNAL_PLUGINS.md
4370
4371
4372
4373
4374
4375
4376+=======
4377+ 1. Add usage and development instructions in the homepage of your repository for running
4378+ your plugin with its respective `execd` plugin. Please refer to
4379+ [openvpn](https://github.com/danielnelson/telegraf-execd-openvpn#usage) and [awsalarms](https://github.com/vipinvkmenon/awsalarms#installation)
4380+ for examples. Include the following steps:
4381+ 1. How to download the release package for your platform or how to clone the binary for your external plugin
4382+ 1. The commands to unpack or build your binary
4383+ 1. Location to edit your `telegraf.conf`
4384+ 1. Configuration to run your external plugin with [inputs.execd](/plugins/inputs/execd),
4385+ [processors.execd](/plugins/processors/execd) or [outputs.execd](/plugins/outputs/execd)
4386+ 1. Note that restart or reload of Telegraf is required
4387+ 1. Submit your plugin by opening a PR to add your external plugin to the [/EXTERNAL_PLUGINS.md](/EXTERNAL_PLUGINS.md)
4388+ list. Please include the plugin name, link to the plugin repository and a short description of the plugin.
4389+>>>>>>> docs/EXTERNAL_PLUGINS.md
4390diff --git a/docs/INPUTS.md b/docs/INPUTS.md
4391index f8e906f..6a10cf9 100644
4392--- a/docs/INPUTS.md
4393+++ b/docs/INPUTS.md
4394@@ -38,7 +38,8 @@ import (
4395 )
4396
4397 type Simple struct {
4398- Ok bool `toml:"ok"`
4399+ Ok bool `toml:"ok"`
4400+ Log telegraf.Logger `toml:"-"`
4401 }
4402
4403 func (s *Simple) Description() string {
4404@@ -52,6 +53,7 @@ func (s *Simple) SampleConfig() string {
4405 `
4406 }
4407
4408+// Init is for setup, and validating config.
4409 func (s *Simple) Init() error {
4410 return nil
4411 }
4412@@ -81,7 +83,7 @@ func init() {
4413
4414 ### Typed Metrics
4415
4416-In addition the the `AddFields` function, the accumulator also supports
4417+In addition to the `AddFields` function, the accumulator also supports
4418 functions to add typed metrics: `AddGauge`, `AddCounter`, etc. Metric types
4419 are ignored by the InfluxDB output, but can be used for other outputs, such as
4420 [prometheus][prom metric types].
4421diff --git a/docs/LICENSE_OF_DEPENDENCIES.md b/docs/LICENSE_OF_DEPENDENCIES.md
4422index 9c2a2d7..14c4644 100644
4423--- a/docs/LICENSE_OF_DEPENDENCIES.md
4424+++ b/docs/LICENSE_OF_DEPENDENCIES.md
4425@@ -31,6 +31,7 @@ following works:
4426 - github.com/cenkalti/backoff [MIT License](https://github.com/cenkalti/backoff/blob/master/LICENSE)
4427 - github.com/cespare/xxhash [MIT License](https://github.com/cespare/xxhash/blob/master/LICENSE.txt)
4428 - github.com/cisco-ie/nx-telemetry-proto [Apache License 2.0](https://github.com/cisco-ie/nx-telemetry-proto/blob/master/LICENSE)
4429+- github.com/containerd/containerd [Apache License 2.0](https://github.com/containerd/containerd/blob/master/LICENSE)
4430 - github.com/couchbase/go-couchbase [MIT License](https://github.com/couchbase/go-couchbase/blob/master/LICENSE)
4431 - github.com/couchbase/gomemcached [MIT License](https://github.com/couchbase/gomemcached/blob/master/LICENSE)
4432 - github.com/couchbase/goutils [COUCHBASE INC. COMMUNITY EDITION LICENSE](https://github.com/couchbase/goutils/blob/master/LICENSE.md)
4433@@ -50,9 +51,9 @@ following works:
4434 - github.com/eclipse/paho.mqtt.golang [Eclipse Public License - v 1.0](https://github.com/eclipse/paho.mqtt.golang/blob/master/LICENSE)
4435 - github.com/ericchiang/k8s [Apache License 2.0](https://github.com/ericchiang/k8s/blob/master/LICENSE)
4436 - github.com/ghodss/yaml [MIT License](https://github.com/ghodss/yaml/blob/master/LICENSE)
4437-- github.com/glinton/ping [MIT License](https://github.com/glinton/ping/blob/master/LICENSE)
4438 - github.com/go-logfmt/logfmt [MIT License](https://github.com/go-logfmt/logfmt/blob/master/LICENSE)
4439 - github.com/go-ole/go-ole [MIT License](https://github.com/go-ole/go-ole/blob/master/LICENSE)
4440+- github.com/go-ping/ping [MIT License](https://github.com/go-ping/ping/blob/master/LICENSE)
4441 - github.com/go-redis/redis [BSD 2-Clause "Simplified" License](https://github.com/go-redis/redis/blob/master/LICENSE)
4442 - github.com/go-sql-driver/mysql [Mozilla Public License 2.0](https://github.com/go-sql-driver/mysql/blob/master/LICENSE)
4443 - github.com/goburrow/modbus [BSD 3-Clause "New" or "Revised" License](https://github.com/goburrow/modbus/blob/master/LICENSE)
4444@@ -68,7 +69,10 @@ following works:
4445 - github.com/google/go-github [BSD 3-Clause "New" or "Revised" License](https://github.com/google/go-github/blob/master/LICENSE)
4446 - github.com/google/go-querystring [BSD 3-Clause "New" or "Revised" License](https://github.com/google/go-querystring/blob/master/LICENSE)
4447 - github.com/googleapis/gax-go [BSD 3-Clause "New" or "Revised" License](https://github.com/googleapis/gax-go/blob/master/LICENSE)
4448+- github.com/gopcua/opcua [MIT License](https://github.com/gopcua/opcua/blob/master/LICENSE)
4449 - github.com/gorilla/mux [BSD 3-Clause "New" or "Revised" License](https://github.com/gorilla/mux/blob/master/LICENSE)
4450+- github.com/gosnmp/gosnmp [BSD 2-Clause "Simplified" License](https://github.com/gosnmp/gosnmp/blob/master/LICENSE)
4451+- github.com/grpc-ecosystem/grpc-gateway [BSD 3-Clause "New" or "Revised" License](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt)
4452 - github.com/hailocab/go-hostpool [MIT License](https://github.com/hailocab/go-hostpool/blob/master/LICENSE)
4453 - github.com/harlow/kinesis-consumer [MIT License](https://github.com/harlow/kinesis-consumer/blob/master/MIT-LICENSE)
4454 - github.com/hashicorp/consul [Mozilla Public License 2.0](https://github.com/hashicorp/consul/blob/master/LICENSE)
4455@@ -92,6 +96,7 @@ following works:
4456 - github.com/kubernetes/apimachinery [Apache License 2.0](https://github.com/kubernetes/apimachinery/blob/master/LICENSE)
4457 - github.com/leodido/ragel-machinery [MIT License](https://github.com/leodido/ragel-machinery/blob/develop/LICENSE)
4458 - github.com/mailru/easyjson [MIT License](https://github.com/mailru/easyjson/blob/master/LICENSE)
4459+- github.com/mattn/go-isatty [MIT License](https://github.com/mattn/go-isatty/blob/master/LICENSE)
4460 - github.com/matttproud/golang_protobuf_extensions [Apache License 2.0](https://github.com/matttproud/golang_protobuf_extensions/blob/master/LICENSE)
4461 - github.com/mdlayher/apcupsd [MIT License](https://github.com/mdlayher/apcupsd/blob/master/LICENSE.md)
4462 - github.com/mdlayher/genetlink [MIT License](https://github.com/mdlayher/genetlink/blob/master/LICENSE.md)
4463@@ -119,7 +124,9 @@ following works:
4464 - github.com/prometheus/client_model [Apache License 2.0](https://github.com/prometheus/client_model/blob/master/LICENSE)
4465 - github.com/prometheus/common [Apache License 2.0](https://github.com/prometheus/common/blob/master/LICENSE)
4466 - github.com/prometheus/procfs [Apache License 2.0](https://github.com/prometheus/procfs/blob/master/LICENSE)
4467+- github.com/prometheus/prometheus [Apache License 2.0](https://github.com/prometheus/prometheus/blob/master/LICENSE)
4468 - github.com/rcrowley/go-metrics [MIT License](https://github.com/rcrowley/go-metrics/blob/master/LICENSE)
4469+- github.com/riemann/riemann-go-client [MIT License](https://github.com/riemann/riemann-go-client/blob/master/LICENSE)
4470 - github.com/safchain/ethtool [Apache License 2.0](https://github.com/safchain/ethtool/blob/master/LICENSE)
4471 - github.com/samuel/go-zookeeper [BSD 3-Clause Clear License](https://github.com/samuel/go-zookeeper/blob/master/LICENSE)
4472 - github.com/shirou/gopsutil [BSD 3-Clause Clear License](https://github.com/shirou/gopsutil/blob/master/LICENSE)
4473@@ -138,6 +145,8 @@ following works:
4474 - github.com/wavefronthq/wavefront-sdk-go [Apache License 2.0](https://github.com/wavefrontHQ/wavefront-sdk-go/blob/master/LICENSE)
4475 - github.com/wvanbergen/kafka [MIT License](https://github.com/wvanbergen/kafka/blob/master/LICENSE)
4476 - github.com/wvanbergen/kazoo-go [MIT License](https://github.com/wvanbergen/kazoo-go/blob/master/MIT-LICENSE)
4477+- github.com/xdg/scram [Apache License 2.0](https://github.com/xdg-go/scram/blob/master/LICENSE)
4478+- github.com/xdg/stringprep [Apache License 2.0](https://github.com/xdg-go/stringprep/blob/master/LICENSE)
4479 - github.com/yuin/gopher-lua [MIT License](https://github.com/yuin/gopher-lua/blob/master/LICENSE)
4480 - go.opencensus.io [Apache License 2.0](https://github.com/census-instrumentation/opencensus-go/blob/master/LICENSE)
4481 - go.starlark.net [BSD 3-Clause "New" or "Revised" License](https://github.com/google/starlark-go/blob/master/LICENSE)
4482@@ -167,7 +176,12 @@ following works:
4483 - gopkg.in/mgo.v2 [BSD 2-Clause "Simplified" License](https://github.com/go-mgo/mgo/blob/v2/LICENSE)
4484 - gopkg.in/olivere/elastic.v5 [MIT License](https://github.com/olivere/elastic/blob/v5.0.76/LICENSE)
4485 - gopkg.in/tomb.v1 [BSD 3-Clause Clear License](https://github.com/go-tomb/tomb/blob/v1/LICENSE)
4486+- gopkg.in/tomb.v2 [BSD 3-Clause Clear License](https://github.com/go-tomb/tomb/blob/v2/LICENSE)
4487 - gopkg.in/yaml.v2 [Apache License 2.0](https://github.com/go-yaml/yaml/blob/v2.2.2/LICENSE)
4488+- gopkg.in/yaml.v3 [Apache License 2.0](https://github.com/go-yaml/yaml/blob/v3/LICENSE)
4489+- modernc.org/libc [BSD 3-Clause "New" or "Revised" License](https://gitlab.com/cznic/libc/-/blob/master/LICENSE)
4490+- modernc.org/memory [BSD 3-Clause "New" or "Revised" License](https://gitlab.com/cznic/memory/-/blob/master/LICENSE)
4491+- modernc.org/sqlite [BSD 3-Clause "New" or "Revised" License](https://gitlab.com/cznic/sqlite/-/blob/master/LICENSE)
4492
4493 ## telegraf used and modified code from these projects
4494 - github.com/DataDog/datadog-agent [Apache License 2.0](https://github.com/DataDog/datadog-agent/LICENSE)
4495diff --git a/docs/OUTPUTS.md b/docs/OUTPUTS.md
4496index c60cd96..1a27ca5 100644
4497--- a/docs/OUTPUTS.md
4498+++ b/docs/OUTPUTS.md
4499@@ -30,7 +30,8 @@ import (
4500 )
4501
4502 type Simple struct {
4503- Ok bool `toml:"ok"`
4504+ Ok bool `toml:"ok"`
4505+ Log telegraf.Logger `toml:"-"`
4506 }
4507
4508 func (s *Simple) Description() string {
4509@@ -43,20 +44,25 @@ func (s *Simple) SampleConfig() string {
4510 `
4511 }
4512
4513+// Init is for setup, and validating config.
4514 func (s *Simple) Init() error {
4515 return nil
4516 }
4517
4518 func (s *Simple) Connect() error {
4519- // Make a connection to the URL here
4520+ // Make any connection required here
4521 return nil
4522 }
4523
4524 func (s *Simple) Close() error {
4525- // Close connection to the URL here
4526+ // Close any connections here.
4527+ // Write will not be called once Close is called, so there is no need to synchronize.
4528 return nil
4529 }
4530
4531+// Write should write immediately to the output, and not buffer writes
4532+// (Telegraf manages the buffer for you). Returning an error will fail this
4533+// batch of writes and the entire batch will be retried automatically.
4534 func (s *Simple) Write(metrics []telegraf.Metric) error {
4535 for _, metric := range metrics {
4536 // write `metric` to the output sink here
4537@@ -102,9 +108,9 @@ Metrics are flushed to outputs when any of the following events happen:
4538 - The telegraf process has received a SIGUSR1 signal
4539
4540 Note that if the flush takes longer than the `agent.interval` to write the metrics
4541-to the output, you'll see a message saying the output `did not complete within its
4542-flush interval`. This may mean your output is not keeping up with the flow of metrics,
4543-and you may want to look into enabling compression, reducing the size of your metrics,
4544+to the output, you'll see a message saying the output `did not complete within its
4545+flush interval`. This may mean your output is not keeping up with the flow of metrics,
4546+and you may want to look into enabling compression, reducing the size of your metrics,
4547 or investigate other reasons why the writes might be taking longer than expected.
4548
4549 [file]: https://github.com/influxdata/telegraf/tree/master/plugins/inputs/file
4550diff --git a/docs/PROCESSORS.md b/docs/PROCESSORS.md
4551index 47f29a4..25566fe 100644
4552--- a/docs/PROCESSORS.md
4553+++ b/docs/PROCESSORS.md
4554@@ -33,6 +33,7 @@ import (
4555 )
4556
4557 type Printer struct {
4558+ Log telegraf.Logger `toml:"-"`
4559 }
4560
4561 var sampleConfig = `
4562@@ -46,6 +47,7 @@ func (p *Printer) Description() string {
4563 return "Print all metrics that pass through this filter."
4564 }
4565
4566+// Init is for setup, and validating config.
4567 func (p *Printer) Init() error {
4568 return nil
4569 }
4570@@ -97,6 +99,7 @@ import (
4571 )
4572
4573 type Printer struct {
4574+ Log telegraf.Logger `toml:"-"`
4575 }
4576
4577 var sampleConfig = `
4578@@ -110,13 +113,27 @@ func (p *Printer) Description() string {
4579 return "Print all metrics that pass through this filter."
4580 }
4581
4582+// Init is for setup, and validating config.
4583 func (p *Printer) Init() error {
4584 return nil
4585 }
4586
4587+// Start is called once when the plugin starts; it is only called once per
4588+// plugin instance, and never in parallel.
4589+// Start should return once it is ready to receive metrics.
4590+// The passed in accumulator is the same as the one passed to Add(), so you
4591+// can choose to save it in the plugin, or use the one received from Add().
4592 func (p *Printer) Start(acc telegraf.Accumulator) error {
4593 }
4594
4595+// Add is called for each metric to be processed. The Add() function does not
4596+// need to wait for the metric to be processed before returning, and it may
4597+// be acceptable to let background goroutine(s) handle the processing if you
4598+// have slow processing you need to do in parallel.
4599+// Keep in mind Add() should not spawn unbounded goroutines, so you may need
4600+// to use a semaphore or pool of workers (eg: reverse_dns plugin does this).
4601+// Metrics you don't want to pass downstream should have metric.Drop() called,
4602+// rather than simply omitting the acc.AddMetric() call
4603 func (p *Printer) Add(metric telegraf.Metric, acc telegraf.Accumulator) error {
4604 // print!
4605 fmt.Println(metric.String())
4606@@ -127,6 +144,12 @@ func (p *Printer) Add(metric telegraf.Metric, acc telegraf.Accumulator) error {
4607 return nil
4608 }
4609
4610+// Stop gives you an opportunity to gracefully shut down the processor.
4611+// Once Stop() is called, Add() will not be called any more. If you are using
4612+// goroutines, you should wait for any in-progress metrics to be processed
4613+// before returning from Stop().
4614+// When stop returns, you should no longer be writing metrics to the
4615+// accumulator.
4616 func (p *Printer) Stop() error {
4617 }
4618
4619diff --git a/docs/TEMPLATE_PATTERN.md b/docs/TEMPLATE_PATTERN.md
4620index 4244369..42a5abe 100644
4621--- a/docs/TEMPLATE_PATTERN.md
4622+++ b/docs/TEMPLATE_PATTERN.md
4623@@ -22,6 +22,7 @@ correspond to the field name.
4624 Any part of the template that is not a keyword is treated as a tag key. This
4625 can also be specified multiple times.
4626
4627+**NOTE:** `measurement` must be specified in your template.
4628 **NOTE:** `field*` cannot be used in conjunction with `measurement*`.
4629
4630 ### Examples
4631diff --git a/docs/TLS.md b/docs/TLS.md
4632index 3cd6a10..355da32 100644
4633--- a/docs/TLS.md
4634+++ b/docs/TLS.md
4635@@ -18,6 +18,8 @@ For client TLS support we have the following options:
4636 # tls_key = "/etc/telegraf/key.pem"
4637 ## Skip TLS verification.
4638 # insecure_skip_verify = false
4639+## Send the specified TLS server name via SNI.
4640+# tls_server_name = "foo.example.com"
4641 ```
4642
4643 ### Server Configuration
4644diff --git a/etc/telegraf.conf b/etc/telegraf.conf
4645index be0dab4..a56b822 100644
4646--- a/etc/telegraf.conf
4647+++ b/etc/telegraf.conf
4648@@ -171,7 +171,7 @@
4649
4650 ## HTTP Content-Encoding for write request body, can be set to "gzip" to
4651 ## compress body or "identity" to apply no encoding.
4652- # content_encoding = "identity"
4653+ # content_encoding = "gzip"
4654
4655 ## When true, Telegraf will output unsigned integers as unsigned values,
4656 ## i.e.: "42u". You will need a version of InfluxDB supporting unsigned
4657@@ -390,7 +390,7 @@
4658 # # base64_data = false
4659 #
4660 # ## Optional. PubSub attributes to add to metrics.
4661-# # [[inputs.pubsub.attributes]]
4662+# # [outputs.cloud_pubsub.attributes]
4663 # # my_attr = "tag_value"
4664
4665
4666@@ -465,6 +465,39 @@
4667 # # no configuration
4668
4669
4670+# # Send telegraf metrics to a Dynatrace environment
4671+# [[outputs.dynatrace]]
4672+# ## For usage with the Dynatrace OneAgent you can omit any configuration,
4673+# ## the only requirement is that the OneAgent is running on the same host.
4674+# ## Only setup environment url and token if you want to monitor a Host without the OneAgent present.
4675+# ##
4676+# ## Your Dynatrace environment URL.
4677+# ## For Dynatrace OneAgent you can leave this empty or set it to "http://127.0.0.1:14499/metrics/ingest" (default)
4678+# ## For Dynatrace SaaS environments the URL scheme is "https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingest"
4679+# ## For Dynatrace Managed environments the URL scheme is "https://{your-domain}/e/{your-environment-id}/api/v2/metrics/ingest"
4680+# url = ""
4681+#
4682+# ## Your Dynatrace API token.
4683+# ## Create an API token within your Dynatrace environment, by navigating to Settings > Integration > Dynatrace API
4684+# ## The API token needs data ingest scope permission. When using OneAgent, no API token is required.
4685+# api_token = ""
4686+#
4687+# ## Optional prefix for metric names (e.g.: "telegraf.")
4688+# prefix = "telegraf."
4689+#
4690+# ## Optional TLS Config
4691+# # tls_ca = "/etc/telegraf/ca.pem"
4692+# # tls_cert = "/etc/telegraf/cert.pem"
4693+# # tls_key = "/etc/telegraf/key.pem"
4694+#
4695+# ## Optional flag for ignoring tls certificate check
4696+# # insecure_skip_verify = false
4697+#
4698+#
4699+# ## Connection timeout, defaults to "5s" if not set.
4700+# timeout = "5s"
4701+
4702+
4703 # # Configuration for Elasticsearch to send metrics to.
4704 # [[outputs.elasticsearch]]
4705 # ## The full HTTP endpoint URL for your Elasticsearch instance
4706@@ -515,6 +548,9 @@
4707 # template_name = "telegraf"
4708 # ## Set to true if you want telegraf to overwrite an existing template
4709 # overwrite_template = false
4710+# ## If set to true a unique ID hash will be sent as sha256(concat(timestamp,measurement,series-hash)) string
4711+# ## it will enable data resend and update metric points avoiding duplicated metrics with diferent id's
4712+# force_document_id = false
4713
4714
4715 # # Send metrics to command as input over stdin
4716@@ -708,6 +744,11 @@
4717 # # [outputs.http.headers]
4718 # # # Should be set manually to "application/json" for json data_format
4719 # # Content-Type = "text/plain; charset=utf-8"
4720+#
4721+# ## Idle (keep-alive) connection timeout.
4722+# ## Maximum amount of time before idle connection is closed.
4723+# ## Zero means no limit.
4724+# # idle_conn_timeout = 0
4725
4726
4727 # # Configuration for sending metrics to InfluxDB
4728@@ -717,7 +758,7 @@
4729 # ## Multiple URLs can be specified for a single cluster, only ONE of the
4730 # ## urls will be written to each interval.
4731 # ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
4732-# urls = ["http://127.0.0.1:9999"]
4733+# urls = ["http://127.0.0.1:8086"]
4734 #
4735 # ## Token for authentication.
4736 # token = ""
4737@@ -847,14 +888,19 @@
4738 # ## routing_key = "telegraf"
4739 # # routing_key = ""
4740 #
4741-# ## CompressionCodec represents the various compression codecs recognized by
4742+# ## Compression codec represents the various compression codecs recognized by
4743 # ## Kafka in messages.
4744-# ## 0 : No compression
4745-# ## 1 : Gzip compression
4746-# ## 2 : Snappy compression
4747-# ## 3 : LZ4 compression
4748+# ## 0 : None
4749+# ## 1 : Gzip
4750+# ## 2 : Snappy
4751+# ## 3 : LZ4
4752+# ## 4 : ZSTD
4753 # # compression_codec = 0
4754 #
4755+# ## Idempotent Writes
4756+# ## If enabled, exactly one copy of each message is written.
4757+# # idempotent_writes = false
4758+#
4759 # ## RequiredAcks is used in Produce Requests to tell the broker how many
4760 # ## replica acknowledgements it must see before responding
4761 # ## 0 : the producer never waits for an acknowledgement from the broker.
4762@@ -880,7 +926,6 @@
4763 # # max_message_bytes = 1000000
4764 #
4765 # ## Optional TLS Config
4766-# # enable_tls = true
4767 # # tls_ca = "/etc/telegraf/ca.pem"
4768 # # tls_cert = "/etc/telegraf/cert.pem"
4769 # # tls_key = "/etc/telegraf/key.pem"
4770@@ -891,6 +936,23 @@
4771 # # sasl_username = "kafka"
4772 # # sasl_password = "secret"
4773 #
4774+# ## Optional SASL:
4775+# ## one of: OAUTHBEARER, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, GSSAPI
4776+# ## (defaults to PLAIN)
4777+# # sasl_mechanism = ""
4778+#
4779+# ## used if sasl_mechanism is GSSAPI (experimental)
4780+# # sasl_gssapi_service_name = ""
4781+# # ## One of: KRB5_USER_AUTH and KRB5_KEYTAB_AUTH
4782+# # sasl_gssapi_auth_type = "KRB5_USER_AUTH"
4783+# # sasl_gssapi_kerberos_config_path = "/"
4784+# # sasl_gssapi_realm = "realm"
4785+# # sasl_gssapi_key_tab_path = ""
4786+# # sasl_gssapi_disable_pafxfast = false
4787+#
4788+# ## used if sasl_mechanism is OAUTHBEARER (experimental)
4789+# # sasl_access_token = ""
4790+#
4791 # ## SASL protocol version. When connecting to Azure EventHub set to 0.
4792 # # sasl_version = 1
4793 #
4794@@ -987,6 +1049,23 @@
4795 #
4796
4797
4798+# # Send aggregate metrics to Logz.io
4799+# [[outputs.logzio]]
4800+# ## Connection timeout, defaults to "5s" if not set.
4801+# timeout = "5s"
4802+#
4803+# ## Optional TLS Config
4804+# # tls_ca = "/etc/telegraf/ca.pem"
4805+# # tls_cert = "/etc/telegraf/cert.pem"
4806+# # tls_key = "/etc/telegraf/key.pem"
4807+#
4808+# ## Logz.io account token
4809+# token = "your logz.io token" # required
4810+#
4811+# ## Use your listener URL for your Logz.io account region.
4812+# # url = "https://listener.logz.io:8071"
4813+
4814+
4815 # # Configuration for MQTT server to send metrics to
4816 # [[outputs.mqtt]]
4817 # servers = ["localhost:1883"] # required.
4818@@ -1039,6 +1118,9 @@
4819 # ## URLs of NATS servers
4820 # servers = ["nats://localhost:4222"]
4821 #
4822+# ## Optional client name
4823+# # name = ""
4824+#
4825 # ## Optional credentials
4826 # # username = ""
4827 # # password = ""
4828@@ -1268,6 +1350,59 @@
4829 # # location = "eu-north0"
4830
4831
4832+# # A plugin that can transmit metrics to Sumo Logic HTTP Source
4833+# [[outputs.sumologic]]
4834+# ## Unique URL generated for your HTTP Metrics Source.
4835+# ## This is the address to send metrics to.
4836+# # url = "https://events.sumologic.net/receiver/v1/http/<UniqueHTTPCollectorCode>"
4837+#
4838+# ## Data format to be used for sending metrics.
4839+# ## This will set the "Content-Type" header accordingly.
4840+# ## Currently supported formats:
4841+# ## * graphite - for Content-Type of application/vnd.sumologic.graphite
4842+# ## * carbon2 - for Content-Type of application/vnd.sumologic.carbon2
4843+# ## * prometheus - for Content-Type of application/vnd.sumologic.prometheus
4844+# ##
4845+# ## More information can be found at:
4846+# ## https://help.sumologic.com/03Send-Data/Sources/02Sources-for-Hosted-Collectors/HTTP-Source/Upload-Metrics-to-an-HTTP-Source#content-type-headers-for-metrics
4847+# ##
4848+# ## NOTE:
4849+# ## When unset, telegraf will by default use the influx serializer which is currently unsupported
4850+# ## in HTTP Source.
4851+# data_format = "carbon2"
4852+#
4853+# ## Timeout used for HTTP request
4854+# # timeout = "5s"
4855+#
4856+# ## Max HTTP request body size in bytes before compression (if applied).
4857+# ## By default 1MB is recommended.
4858+# ## NOTE:
4859+# ## Bear in mind that in some serializer a metric even though serialized to multiple
4860+# ## lines cannot be split any further so setting this very low might not work
4861+# ## as expected.
4862+# # max_request_body_size = 1000000
4863+#
4864+# ## Additional, Sumo specific options.
4865+# ## Full list can be found here:
4866+# ## https://help.sumologic.com/03Send-Data/Sources/02Sources-for-Hosted-Collectors/HTTP-Source/Upload-Metrics-to-an-HTTP-Source#supported-http-headers
4867+#
4868+# ## Desired source name.
4869+# ## Useful if you want to override the source name configured for the source.
4870+# # source_name = ""
4871+#
4872+# ## Desired host name.
4873+# ## Useful if you want to override the source host configured for the source.
4874+# # source_host = ""
4875+#
4876+# ## Desired source category.
4877+# ## Useful if you want to override the source category configured for the source.
4878+# # source_category = ""
4879+#
4880+# ## Comma-separated key=value list of dimensions to apply to every metric.
4881+# ## Custom dimensions will allow you to query your metrics at a more granular level.
4882+# # dimensions = ""
4883+
4884+
4885 # # Configuration for Syslog server to send metrics to
4886 # [[outputs.syslog]]
4887 # ## URL to connect to
4888@@ -1346,6 +1481,118 @@
4889 # # default_appname = "Telegraf"
4890
4891
4892+# # Configuration for Amazon Timestream output.
4893+# [[outputs.timestream]]
4894+# ## Amazon Region
4895+# region = "us-east-1"
4896+#
4897+# ## Amazon Credentials
4898+# ## Credentials are loaded in the following order:
4899+# ## 1) Assumed credentials via STS if role_arn is specified
4900+# ## 2) Explicit credentials from 'access_key' and 'secret_key'
4901+# ## 3) Shared profile from 'profile'
4902+# ## 4) Environment variables
4903+# ## 5) Shared credentials file
4904+# ## 6) EC2 Instance Profile
4905+# #access_key = ""
4906+# #secret_key = ""
4907+# #token = ""
4908+# #role_arn = ""
4909+# #profile = ""
4910+# #shared_credential_file = ""
4911+#
4912+# ## Endpoint to make request against, the correct endpoint is automatically
4913+# ## determined and this option should only be set if you wish to override the
4914+# ## default.
4915+# ## ex: endpoint_url = "http://localhost:8000"
4916+# # endpoint_url = ""
4917+#
4918+# ## Timestream database where the metrics will be inserted.
4919+# ## The database must exist prior to starting Telegraf.
4920+# database_name = "yourDatabaseNameHere"
4921+#
4922+# ## Specifies if the plugin should describe the Timestream database upon starting
4923+# ## to validate if it has access necessary permissions, connection, etc., as a safety check.
4924+# ## If the describe operation fails, the plugin will not start
4925+# ## and therefore the Telegraf agent will not start.
4926+# describe_database_on_start = false
4927+#
4928+# ## The mapping mode specifies how Telegraf records are represented in Timestream.
4929+# ## Valid values are: single-table, multi-table.
4930+# ## For example, consider the following data in line protocol format:
4931+# ## weather,location=us-midwest,season=summer temperature=82,humidity=71 1465839830100400200
4932+# ## airquality,location=us-west no2=5,pm25=16 1465839830100400200
4933+# ## where weather and airquality are the measurement names, location and season are tags,
4934+# ## and temperature, humidity, no2, pm25 are fields.
4935+# ## In multi-table mode:
4936+# ## - first line will be ingested to table named weather
4937+# ## - second line will be ingested to table named airquality
4938+# ## - the tags will be represented as dimensions
4939+# ## - first table (weather) will have two records:
4940+# ## one with measurement name equals to temperature,
4941+# ## another with measurement name equals to humidity
4942+# ## - second table (airquality) will have two records:
4943+# ## one with measurement name equals to no2,
4944+# ## another with measurement name equals to pm25
4945+# ## - the Timestream tables from the example will look like this:
4946+# ## TABLE "weather":
4947+# ## time | location | season | measure_name | measure_value::bigint
4948+# ## 2016-06-13 17:43:50 | us-midwest | summer | temperature | 82
4949+# ## 2016-06-13 17:43:50 | us-midwest | summer | humidity | 71
4950+# ## TABLE "airquality":
4951+# ## time | location | measure_name | measure_value::bigint
4952+# ## 2016-06-13 17:43:50 | us-west | no2 | 5
4953+# ## 2016-06-13 17:43:50 | us-west | pm25 | 16
4954+# ## In single-table mode:
4955+# ## - the data will be ingested to a single table, which name will be valueOf(single_table_name)
4956+# ## - measurement name will stored in dimension named valueOf(single_table_dimension_name_for_telegraf_measurement_name)
4957+# ## - location and season will be represented as dimensions
4958+# ## - temperature, humidity, no2, pm25 will be represented as measurement name
4959+# ## - the Timestream table from the example will look like this:
4960+# ## Assuming:
4961+# ## - single_table_name = "my_readings"
4962+# ## - single_table_dimension_name_for_telegraf_measurement_name = "namespace"
4963+# ## TABLE "my_readings":
4964+# ## time | location | season | namespace | measure_name | measure_value::bigint
4965+# ## 2016-06-13 17:43:50 | us-midwest | summer | weather | temperature | 82
4966+# ## 2016-06-13 17:43:50 | us-midwest | summer | weather | humidity | 71
4967+# ## 2016-06-13 17:43:50 | us-west | NULL | airquality | no2 | 5
4968+# ## 2016-06-13 17:43:50 | us-west | NULL | airquality | pm25 | 16
4969+# ## In most cases, using multi-table mapping mode is recommended.
4970+# ## However, you can consider using single-table in situations when you have thousands of measurement names.
4971+# mapping_mode = "multi-table"
4972+#
4973+# ## Only valid and required for mapping_mode = "single-table"
4974+# ## Specifies the Timestream table where the metrics will be uploaded.
4975+# # single_table_name = "yourTableNameHere"
4976+#
4977+# ## Only valid and required for mapping_mode = "single-table"
4978+# ## Describes what will be the Timestream dimension name for the Telegraf
4979+# ## measurement name.
4980+# # single_table_dimension_name_for_telegraf_measurement_name = "namespace"
4981+#
4982+# ## Specifies if the plugin should create the table, if the table do not exist.
4983+# ## The plugin writes the data without prior checking if the table exists.
4984+# ## When the table does not exist, the error returned from Timestream will cause
4985+# ## the plugin to create the table, if this parameter is set to true.
4986+# create_table_if_not_exists = true
4987+#
4988+# ## Only valid and required if create_table_if_not_exists = true
4989+# ## Specifies the Timestream table magnetic store retention period in days.
4990+# ## Check Timestream documentation for more details.
4991+# create_table_magnetic_store_retention_period_in_days = 365
4992+#
4993+# ## Only valid and required if create_table_if_not_exists = true
4994+# ## Specifies the Timestream table memory store retention period in hours.
4995+# ## Check Timestream documentation for more details.
4996+# create_table_memory_store_retention_period_in_hours = 24
4997+#
4998+# ## Only valid and optional if create_table_if_not_exists = true
4999+# ## Specifies the Timestream table tags.
5000+# ## Check Timestream documentation for more details
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: