commit 10d516b57447820533dd69e2133cca806ed35443 Author: Eric Loyd Date: Fri Oct 31 09:38:34 2025 -0400 Initial add diff --git a/AstropotaPOD - All Off.bat b/AstropotaPOD - All Off.bat new file mode 100644 index 0000000..0447788 --- /dev/null +++ b/AstropotaPOD - All Off.bat @@ -0,0 +1,29 @@ +start /min "Pegasus" "c:\Program Files (x86)\Pegasus Astro\Unity Platform\server\Peg.Server.exe" +timeout 10 + +curl -X PUT "http://localhost:32000/Server/Start" +timeout 5 + +curl -s -X GET "http://localhost:32000/Server/DeviceManager/Connected" | jq.exe -r ".data[0].uniqueKey" > id.txt +for /f "delims=" %%x in (id.txt) do set UID=%%x + +IF [%UID%] == [null] GOTO NoDevice + +curl -X OPTIONS "http://localhost:32000/Driver/PPBAdvance/Start?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Hub/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Variable/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/1/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/2/Off?DriverUniqueKey=%UID%" +curl -X POST "http://localhost:32000/Driver/PPBAdvance/Dew/Auto/Off?DriverUniqueKey=%UID%" + + +timeout 5 +telegraf.exe --config with_ppba.conf +exit /b + + +:NoDevice + +timeout 5 +telegraf.exe --config without_ppba.conf +exit /b \ No newline at end of file diff --git a/AstropotaPOD - All On.bat b/AstropotaPOD - All On.bat new file mode 100644 index 0000000..0dbeb9a --- /dev/null +++ b/AstropotaPOD - All On.bat @@ -0,0 +1,29 @@ +start /min "Pegasus" "c:\Program Files (x86)\Pegasus Astro\Unity Platform\server\Peg.Server.exe" +timeout 10 + +curl -X PUT "http://localhost:32000/Server/Start" +timeout 5 + +curl -s -X GET "http://localhost:32000/Server/DeviceManager/Connected" | jq.exe -r ".data[0].uniqueKey" > id.txt +for /f "delims=" %%x in (id.txt) do set UID=%%x + +IF [%UID%] == [null] GOTO NoDevice + +curl -X OPTIONS "http://localhost:32000/Driver/PPBAdvance/Start?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Hub/On?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Variable/On?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/1/On?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/2/On?DriverUniqueKey=%UID%" +curl -X POST "http://localhost:32000/Driver/PPBAdvance/Dew/Auto/On?DriverUniqueKey=%UID%" + + +timeout 5 +telegraf.exe --config with_ppba.conf +exit /b + + +:NoDevice + +timeout 5 +telegraf.exe --config without_ppba.conf +exit /b \ No newline at end of file diff --git a/AstropotaPOD-old.bat b/AstropotaPOD-old.bat new file mode 100644 index 0000000..bdb0362 --- /dev/null +++ b/AstropotaPOD-old.bat @@ -0,0 +1,15 @@ +start /min "Pegasus" "c:\Program Files (x86)\Pegasus Astro\Unity Platform\server\Peg.Server.exe" +timeout 10 + +curl -X PUT "http://localhost:32000/Server/Start" +timeout 5 +curl -X OPTIONS "http://localhost:32000/Driver/PPBAdvance/Start?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Hub/Off?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Variable/Off?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/1/Off?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/2/Off?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" +curl -X POST "http://localhost:32000/Driver/PPBAdvance/Dew/Auto/Off?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" + +timeout 5 + +telegraf.exe --config telegraf.conf \ No newline at end of file diff --git a/AstropotaPOD.bat b/AstropotaPOD.bat new file mode 100644 index 0000000..0447788 --- /dev/null +++ b/AstropotaPOD.bat @@ -0,0 +1,29 @@ +start /min "Pegasus" "c:\Program Files (x86)\Pegasus Astro\Unity Platform\server\Peg.Server.exe" +timeout 10 + +curl -X PUT "http://localhost:32000/Server/Start" +timeout 5 + +curl -s -X GET "http://localhost:32000/Server/DeviceManager/Connected" | jq.exe -r ".data[0].uniqueKey" > id.txt +for /f "delims=" %%x in (id.txt) do set UID=%%x + +IF [%UID%] == [null] GOTO NoDevice + +curl -X OPTIONS "http://localhost:32000/Driver/PPBAdvance/Start?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Hub/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Variable/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/1/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/2/Off?DriverUniqueKey=%UID%" +curl -X POST "http://localhost:32000/Driver/PPBAdvance/Dew/Auto/Off?DriverUniqueKey=%UID%" + + +timeout 5 +telegraf.exe --config with_ppba.conf +exit /b + + +:NoDevice + +timeout 5 +telegraf.exe --config without_ppba.conf +exit /b \ No newline at end of file diff --git a/TurnOffPOD.bat b/TurnOffPOD.bat new file mode 100644 index 0000000..b6f7518 --- /dev/null +++ b/TurnOffPOD.bat @@ -0,0 +1,14 @@ +curl -s -X GET "http://localhost:32000/Server/DeviceManager/Connected" | jq.exe -r ".data[0].uniqueKey" > id.txt +for /f "delims=" %%x in (id.txt) do set UID=%%x + +IF [%UID%] == [null] GOTO NoDevice + +curl -X OPTIONS "http://localhost:32000/Driver/PPBAdvance/Start?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Hub/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Variable/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/1/Off?DriverUniqueKey=%UID%" +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/2/Off?DriverUniqueKey=%UID%" +curl -X POST "http://localhost:32000/Driver/PPBAdvance/Dew/Auto/Off?DriverUniqueKey=%UID%" + +:NoDevice +exit /b \ No newline at end of file diff --git a/TurnOnPOD.bat b/TurnOnPOD.bat new file mode 100644 index 0000000..de45895 --- /dev/null +++ b/TurnOnPOD.bat @@ -0,0 +1,19 @@ +curl -s -X GET "http://localhost:32000/Server/DeviceManager/Connected" | jq.exe -r ".data[0].uniqueKey" > id.txt +for /f "delims=" %%x in (id.txt) do set UID=%%x + +IF [%UID%] == [null] GOTO NoDevice + +curl -X OPTIONS "http://localhost:32000/Driver/PPBAdvance/Start?DriverUniqueKey=%UID%" +timeout 1 +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Hub/On?DriverUniqueKey=%UID%" +timeout 1 +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Power/Variable/Off?DriverUniqueKey=%UID%" +timeout 1 +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/1/Off?DriverUniqueKey=%UID%" +timeout 1 +curl -X PUT "http://localhost:32000/Driver/PPBAdvance/Dew/2/Off?DriverUniqueKey=%UID%" +timeout 1 +curl -X POST "http://localhost:32000/Driver/PPBAdvance/Dew/Auto/Off?DriverUniqueKey=%UID%" + +:NoDevice +exit /b \ No newline at end of file diff --git a/id.txt b/id.txt new file mode 100644 index 0000000..e69de29 diff --git a/jq.exe b/jq.exe new file mode 100644 index 0000000..70b5288 Binary files /dev/null and b/jq.exe differ diff --git a/telegraf.conf b/telegraf.conf new file mode 100644 index 0000000..fb6e994 --- /dev/null +++ b/telegraf.conf @@ -0,0 +1,139 @@ +[global_tags] + +[agent] + interval = "10s" + round_interval = true + metric_batch_size = 1000 + metric_buffer_limit = 10000 + collection_jitter = "0s" + flush_interval = "10s" + flush_jitter = "0s" + precision = "0s" + +[[outputs.influxdb_v2]] + urls = ["http://influx.astropotamus.com"] + token = "EJ4IJrjWsyCpmmq8xvX4M4gyDRURCwJ74tGl0KhxOCfQDU1h1m5yDIphK7dEoWVBsyZEmQS3xd3iRjQ37B5Hag==" + organization = "Astropotamus" + bucket = "AstropotaPOD" + +[[inputs.cpu]] + percpu = true + totalcpu = true + collect_cpu_time = false + report_active = false + core_tags = false + +[[inputs.mem]] + +[[inputs.system]] + +[[inputs.ping]] +urls = ["192.168.0.1","192.168.1.1"] +method="native" + +[[inputs.http]] + urls = [ + "http://localhost:32000/Driver/PPBAdvance/Report?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" + ] + name_override = "PPBA" + data_format = "json" + tagexclude = ["url", "host"] + json_query="data.message" + json_string_fields=["dewHubStatus_hub_?_current_isOverCurrent","powerHubStatus_state","powerVariablePortStatus_state"] + +[[inputs.win_perf_counters]] + [[inputs.win_perf_counters.object]] + ObjectName = "Processor" + Instances = ["*"] + Counters = [ + "% Idle Time", + "% Interrupt Time", + "% Privileged Time", + "% User Time", + "% Processor Time", + "% DPC Time", + ] + Measurement = "win_cpu" + IncludeTotal=true + +[[inputs.win_perf_counters.object]] + ObjectName = "LogicalDisk" + Instances = ["*"] + Counters = [ + "% Idle Time", + "% Disk Time", + "% Disk Read Time", + "% Disk Write Time", + "Current Disk Queue Length", + "% Free Space", + "Free Megabytes", + ] + Measurement = "win_disk" + +[[inputs.win_perf_counters.object]] + ObjectName = "PhysicalDisk" + Instances = ["*"] + Counters = [ + "Disk Read Bytes/sec", + "Disk Write Bytes/sec", + "Current Disk Queue Length", + "Disk Reads/sec", + "Disk Writes/sec", + "% Disk Time", + "% Disk Read Time", + "% Disk Write Time", + ] + Measurement = "win_diskio" + +[[inputs.win_perf_counters.object]] + ObjectName = "Network Interface" + Instances = ["*"] + Counters = [ + "Bytes Received/sec", + "Bytes Sent/sec", + "Packets Received/sec", + "Packets Sent/sec", + "Packets Received Discarded", + "Packets Outbound Discarded", + "Packets Received Errors", + "Packets Outbound Errors", + ] + Measurement = "win_net" + +[[inputs.win_perf_counters.object]] + ObjectName = "System" + Counters = [ + "Context Switches/sec", + "System Calls/sec", + "Processor Queue Length", + "System Up Time", + ] + Instances = ["------"] + Measurement = "win_system" + +[[inputs.win_perf_counters.object]] + ObjectName = "Memory" + Counters = [ + "Available Bytes", + "Cache Faults/sec", + "Demand Zero Faults/sec", + "Page Faults/sec", + "Pages/sec", + "Transition Faults/sec", + "Pool Nonpaged Bytes", + "Pool Paged Bytes", + "Standby Cache Reserve Bytes", + "Standby Cache Normal Priority Bytes", + "Standby Cache Core Bytes", + + ] + Instances = ["------"] + Measurement = "win_mem" + +[[inputs.win_perf_counters.object]] + ObjectName = "Paging File" + Counters = [ + "% Usage", + ] + Instances = ["_Total"] + Measurement = "win_swap" diff --git a/telegraf.exe b/telegraf.exe new file mode 100644 index 0000000..0bc6424 Binary files /dev/null and b/telegraf.exe differ diff --git a/weather.conf b/weather.conf new file mode 100644 index 0000000..3e26762 --- /dev/null +++ b/weather.conf @@ -0,0 +1,134 @@ +# Configuration for telegraf agent +[agent] + ## Default data collection interval for all inputs + interval = "10s" + ## Rounds collection interval to 'interval' + ## ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + ## Telegraf will send metrics to outputs in batches of at most + ## metric_batch_size metrics. + ## This controls the size of writes that Telegraf sends to output plugins. + metric_batch_size = 1000 + + ## Maximum number of unwritten metrics per output. Increasing this value + ## allows for longer periods of output downtime without dropping metrics at the + ## cost of higher maximum memory usage. + metric_buffer_limit = 10000 + + ## Collection jitter is used to jitter the collection by a random amount. + ## Each plugin will sleep for a random time within jitter before collecting. + ## This can be used to avoid many plugins querying things like sysfs at the + ## same time, which can have a measurable effect on the system. + collection_jitter = "0s" + + ## Collection offset is used to shift the collection by the given amount. + ## This can be be used to avoid many plugins querying constraint devices + ## at the same time by manually scheduling them in time. + # collection_offset = "0s" + + ## Default flushing interval for all outputs. Maximum flush_interval will be + ## flush_interval + flush_jitter + flush_interval = "10s" + ## Jitter the flush interval by a random amount. This is primarily to avoid + ## large write spikes for users running a large number of telegraf instances. + ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s + flush_jitter = "0s" + + ## Collected metrics are rounded to the precision specified. Precision is + ## specified as an interval with an integer + unit (e.g. 0s, 10ms, 2us, 4s). + ## Valid time units are "ns", "us" (or "µs"), "ms", "s". + ## + ## By default or when set to "0s", precision will be set to the same + ## timestamp order as the collection interval, with the maximum being 1s: + ## ie, when interval = "10s", precision will be "1s" + ## when interval = "250ms", precision will be "1ms" + ## + ## Precision will NOT be used for service inputs. It is up to each individual + ## service input to set the timestamp at the appropriate precision. + precision = "0s" + +# Configuration for sending metrics to InfluxDB 2.0 +[[outputs.influxdb_v2]] + ## The URLs of the InfluxDB cluster nodes. + ## + ## Multiple URLs can be specified for a single cluster, only ONE of the + ## urls will be written to each interval. + ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] + urls = ["http://192.168.1.200:38086"] + + ## Local address to bind when connecting to the server + ## If empty or not set, the local address is automatically chosen. + # local_address = "" + + ## Token for authentication. + token = "o5RvLUBkp38MYg7FBB30lyFe6YrIW3mYxaZxsEUL4E6lhsW4usLYpwHBf2dFuqMb9sRGINi0pyXXWLGyAskNAQ==" + + ## Organization is the name of the organization you wish to write to. + organization = "Astropotamus" + + ## Destination bucket to write into. + bucket = "PODtest" + + ## The value of this tag will be used to determine the bucket. If this + ## tag is not set the 'bucket' option is used as the default. + # bucket_tag = "" + + ## If true, the bucket tag will not be added to the metric. + # exclude_bucket_tag = false + + ## Timeout for HTTP messages. + # timeout = "5s" + + ## Additional HTTP headers + # http_headers = {"X-Special-Header" = "Special-Value"} + + ## HTTP Proxy override, if unset values the standard proxy environment + ## variables are consulted to determine which proxy, if any, should be used. + # http_proxy = "http://corporate.proxy:3128" + + ## HTTP User-Agent + # user_agent = "telegraf" + + ## Content-Encoding for write request body, can be set to "gzip" to + ## compress body or "identity" to apply no encoding. + # content_encoding = "gzip" + + ## Enable or disable uint support for writing uints influxdb 2.0. + # influx_uint_support = false + +########################################################################### +# PROCESSOR PLUGINS # +############################################################################### + + +# Read metrics about cpu usage +[[inputs.cpu]] + ## Whether to report per-cpu stats or not + percpu = true + ## Whether to report total system cpu stats or not + totalcpu = true + ## If true, collect raw CPU time metrics + collect_cpu_time = false + ## If true, compute and report the sum of all non-idle CPU states + ## NOTE: The resulting 'time_active' field INCLUDES 'iowait'! + report_active = false + ## If true and the info is available then add core_id and physical_id tags + core_tags = false + +[[inputs.mem]] + +[[inputs.ping]] +urls = ["192.168.0.1","192.168.1.1"] +method="native" + +[[inputs.system]] + +[[inputs.http]] + urls=["https://api.openweathermap.org/data/2.5/weather?id=5126015&units=metric&appid=043d58f75a4ffe7cf5d414ead183cb7f"] + data_format = "json" + tag_keys = [ "coord_lon", "coord_lat", "sys_country", "id", "name" ] + json_string_fields = [ "weather_0_main", "weather_0_description" ] + json_time_key = "dt" + json_time_format = "unix" + name_override = "openweathermap" \ No newline at end of file diff --git a/with_ppba.conf b/with_ppba.conf new file mode 100644 index 0000000..7399515 --- /dev/null +++ b/with_ppba.conf @@ -0,0 +1,139 @@ +[global_tags] + +[agent] + interval = "10s" + round_interval = true + metric_batch_size = 1000 + metric_buffer_limit = 10000 + collection_jitter = "0s" + flush_interval = "10s" + flush_jitter = "0s" + precision = "0s" + +[[outputs.influxdb_v2]] + urls = ["http://influx.astropotamus.com"] + token = "EJ4IJrjWsyCpmmq8xvX4M4gyDRURCwJ74tGl0KhxOCfQDU1h1m5yDIphK7dEoWVBsyZEmQS3xd3iRjQ37B5Hag==" + organization = "Astropotamus" + bucket = "AstropotaPOD" + +[[inputs.cpu]] + percpu = true + totalcpu = true + collect_cpu_time = false + report_active = false + core_tags = false + +[[inputs.mem]] + +[[inputs.system]] + +[[inputs.ping]] +urls = ["192.168.0.1","192.168.1.1"] +method="native" + +[[inputs.http]] + urls = [ + "http://localhost:32000/Driver/PPBAdvance/Report?DriverUniqueKey=${UID}" + ] + name_override = "PPBA" + data_format = "json" + tagexclude = ["url"] + json_query="data.message" + json_string_fields=["dewHubStatus_hub_?_current_isOverCurrent","powerHubStatus_state","powerVariablePortStatus_state"] + +[[inputs.win_perf_counters]] + [[inputs.win_perf_counters.object]] + ObjectName = "Processor" + Instances = ["*"] + Counters = [ + "% Idle Time", + "% Interrupt Time", + "% Privileged Time", + "% User Time", + "% Processor Time", + "% DPC Time", + ] + Measurement = "win_cpu" + IncludeTotal=true + +[[inputs.win_perf_counters.object]] + ObjectName = "LogicalDisk" + Instances = ["*"] + Counters = [ + "% Idle Time", + "% Disk Time", + "% Disk Read Time", + "% Disk Write Time", + "Current Disk Queue Length", + "% Free Space", + "Free Megabytes", + ] + Measurement = "win_disk" + +[[inputs.win_perf_counters.object]] + ObjectName = "PhysicalDisk" + Instances = ["*"] + Counters = [ + "Disk Read Bytes/sec", + "Disk Write Bytes/sec", + "Current Disk Queue Length", + "Disk Reads/sec", + "Disk Writes/sec", + "% Disk Time", + "% Disk Read Time", + "% Disk Write Time", + ] + Measurement = "win_diskio" + +[[inputs.win_perf_counters.object]] + ObjectName = "Network Interface" + Instances = ["*"] + Counters = [ + "Bytes Received/sec", + "Bytes Sent/sec", + "Packets Received/sec", + "Packets Sent/sec", + "Packets Received Discarded", + "Packets Outbound Discarded", + "Packets Received Errors", + "Packets Outbound Errors", + ] + Measurement = "win_net" + +[[inputs.win_perf_counters.object]] + ObjectName = "System" + Counters = [ + "Context Switches/sec", + "System Calls/sec", + "Processor Queue Length", + "System Up Time", + ] + Instances = ["------"] + Measurement = "win_system" + +[[inputs.win_perf_counters.object]] + ObjectName = "Memory" + Counters = [ + "Available Bytes", + "Cache Faults/sec", + "Demand Zero Faults/sec", + "Page Faults/sec", + "Pages/sec", + "Transition Faults/sec", + "Pool Nonpaged Bytes", + "Pool Paged Bytes", + "Standby Cache Reserve Bytes", + "Standby Cache Normal Priority Bytes", + "Standby Cache Core Bytes", + + ] + Instances = ["------"] + Measurement = "win_mem" + +[[inputs.win_perf_counters.object]] + ObjectName = "Paging File" + Counters = [ + "% Usage", + ] + Instances = ["_Total"] + Measurement = "win_swap" diff --git a/without_ppba.conf b/without_ppba.conf new file mode 100644 index 0000000..4387c37 --- /dev/null +++ b/without_ppba.conf @@ -0,0 +1,129 @@ +[global_tags] + +[agent] + interval = "10s" + round_interval = true + metric_batch_size = 1000 + metric_buffer_limit = 10000 + collection_jitter = "0s" + flush_interval = "10s" + flush_jitter = "0s" + precision = "0s" + +[[outputs.influxdb_v2]] + urls = ["http://influx.astropotamus.com"] + token = "EJ4IJrjWsyCpmmq8xvX4M4gyDRURCwJ74tGl0KhxOCfQDU1h1m5yDIphK7dEoWVBsyZEmQS3xd3iRjQ37B5Hag==" + organization = "Astropotamus" + bucket = "AstropotaPOD" + +[[inputs.cpu]] + percpu = true + totalcpu = true + collect_cpu_time = false + report_active = false + core_tags = false + +[[inputs.mem]] + +[[inputs.system]] + +[[inputs.ping]] +urls = ["192.168.0.1","192.168.1.1"] +method="native" + +[[inputs.win_perf_counters]] + [[inputs.win_perf_counters.object]] + ObjectName = "Processor" + Instances = ["*"] + Counters = [ + "% Idle Time", + "% Interrupt Time", + "% Privileged Time", + "% User Time", + "% Processor Time", + "% DPC Time", + ] + Measurement = "win_cpu" + IncludeTotal=true + +[[inputs.win_perf_counters.object]] + ObjectName = "LogicalDisk" + Instances = ["*"] + Counters = [ + "% Idle Time", + "% Disk Time", + "% Disk Read Time", + "% Disk Write Time", + "Current Disk Queue Length", + "% Free Space", + "Free Megabytes", + ] + Measurement = "win_disk" + +[[inputs.win_perf_counters.object]] + ObjectName = "PhysicalDisk" + Instances = ["*"] + Counters = [ + "Disk Read Bytes/sec", + "Disk Write Bytes/sec", + "Current Disk Queue Length", + "Disk Reads/sec", + "Disk Writes/sec", + "% Disk Time", + "% Disk Read Time", + "% Disk Write Time", + ] + Measurement = "win_diskio" + +[[inputs.win_perf_counters.object]] + ObjectName = "Network Interface" + Instances = ["*"] + Counters = [ + "Bytes Received/sec", + "Bytes Sent/sec", + "Packets Received/sec", + "Packets Sent/sec", + "Packets Received Discarded", + "Packets Outbound Discarded", + "Packets Received Errors", + "Packets Outbound Errors", + ] + Measurement = "win_net" + +[[inputs.win_perf_counters.object]] + ObjectName = "System" + Counters = [ + "Context Switches/sec", + "System Calls/sec", + "Processor Queue Length", + "System Up Time", + ] + Instances = ["------"] + Measurement = "win_system" + +[[inputs.win_perf_counters.object]] + ObjectName = "Memory" + Counters = [ + "Available Bytes", + "Cache Faults/sec", + "Demand Zero Faults/sec", + "Page Faults/sec", + "Pages/sec", + "Transition Faults/sec", + "Pool Nonpaged Bytes", + "Pool Paged Bytes", + "Standby Cache Reserve Bytes", + "Standby Cache Normal Priority Bytes", + "Standby Cache Core Bytes", + + ] + Instances = ["------"] + Measurement = "win_mem" + +[[inputs.win_perf_counters.object]] + ObjectName = "Paging File" + Counters = [ + "% Usage", + ] + Instances = ["_Total"] + Measurement = "win_swap" diff --git a/x.conf b/x.conf new file mode 100644 index 0000000..a5a3f65 --- /dev/null +++ b/x.conf @@ -0,0 +1,1650 @@ +# Telegraf Configuration +# +# Telegraf is entirely plugin driven. All metrics are gathered from the +# declared inputs, and sent to the declared outputs. +# +# Plugins must be declared in here to be active. +# To deactivate a plugin, comment out the name and any variables. +# +# Use 'telegraf -config telegraf.conf -test' to see what metrics a config +# file would generate. +# +# Environment variables can be used anywhere in this config file, simply surround +# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"), +# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR}) + + +# Global tags can be specified here in key="value" format. +[global_tags] + # dc = "us-east-1" # will tag all metrics with dc=us-east-1 + # rack = "1a" + ## Environment variables can be used as tags, and throughout the config file + # user = "$USER" + +# Configuration for telegraf agent +[agent] + ## Default data collection interval for all inputs + interval = "10s" + ## Rounds collection interval to 'interval' + ## ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + ## Telegraf will send metrics to outputs in batches of at most + ## metric_batch_size metrics. + ## This controls the size of writes that Telegraf sends to output plugins. + metric_batch_size = 1000 + + ## Maximum number of unwritten metrics per output. Increasing this value + ## allows for longer periods of output downtime without dropping metrics at the + ## cost of higher maximum memory usage. + metric_buffer_limit = 10000 + + ## Collection jitter is used to jitter the collection by a random amount. + ## Each plugin will sleep for a random time within jitter before collecting. + ## This can be used to avoid many plugins querying things like sysfs at the + ## same time, which can have a measurable effect on the system. + collection_jitter = "0s" + + ## Collection offset is used to shift the collection by the given amount. + ## This can be be used to avoid many plugins querying constraint devices + ## at the same time by manually scheduling them in time. + # collection_offset = "0s" + + ## Default flushing interval for all outputs. Maximum flush_interval will be + ## flush_interval + flush_jitter + flush_interval = "10s" + ## Jitter the flush interval by a random amount. This is primarily to avoid + ## large write spikes for users running a large number of telegraf instances. + ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s + flush_jitter = "0s" + + ## Collected metrics are rounded to the precision specified. Precision is + ## specified as an interval with an integer + unit (e.g. 0s, 10ms, 2us, 4s). + ## Valid time units are "ns", "us" (or "µs"), "ms", "s". + ## + ## By default or when set to "0s", precision will be set to the same + ## timestamp order as the collection interval, with the maximum being 1s: + ## ie, when interval = "10s", precision will be "1s" + ## when interval = "250ms", precision will be "1ms" + ## + ## Precision will NOT be used for service inputs. It is up to each individual + ## service input to set the timestamp at the appropriate precision. + precision = "0s" + + ## Log at debug level. + # debug = false + ## Log only error level messages. + # quiet = false + + ## Log format controls the way messages are logged and can be one of "text", + ## "structured" or, on Windows, "eventlog". + # logformat = "text" + + ## Message key for structured logs, to override the default of "msg". + ## Ignored if `logformat` is not "structured". + # structured_log_message_key = "message" + + ## Name of the file to be logged to or stderr if unset or empty. This + ## setting is ignored for the "eventlog" format. + # logfile = "" + + ## The logfile will be rotated after the time interval specified. When set + ## to 0 no time based rotation is performed. Logs are rotated only when + ## written to, if there is no log activity rotation may be delayed. + # logfile_rotation_interval = "0h" + + ## The logfile will be rotated when it becomes larger than the specified + ## size. When set to 0 no size based rotation is performed. + # logfile_rotation_max_size = "0MB" + + ## Maximum number of rotated archives to keep, any older logs are deleted. + ## If set to -1, no archives are removed. + # logfile_rotation_max_archives = 5 + + ## Pick a timezone to use when logging or type 'local' for local time. + ## Example: America/Chicago + # log_with_timezone = "" + + ## Override default hostname, if empty use os.Hostname() + # hostname = "" + ## If set to true, do no set the "host" tag in the telegraf agent. + # omit_hostname = false + + ## Method of translating SNMP objects. Can be "netsnmp" (deprecated) which + ## translates by calling external programs snmptranslate and snmptable, + ## or "gosmi" which translates using the built-in gosmi library. + # snmp_translator = "netsnmp" + + ## Name of the file to load the state of plugins from and store the state to. + ## If uncommented and not empty, this file will be used to save the state of + ## stateful plugins on termination of Telegraf. If the file exists on start, + ## the state in the file will be restored for the plugins. + # statefile = "" + + ## Flag to skip running processors after aggregators + ## By default, processors are run a second time after aggregators. Changing + ## this setting to true will skip the second run of processors. + # skip_processors_after_aggregators = false + +############################################################################### +# SECRETSTORE PLUGINS # +############################################################################### + + +# # Secret-store to access Docker Secrets +# [[secretstores.docker]] +# ## Unique identifier for the secretstore. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "docker_secretstore" +# +# ## Default Path to directory where docker stores the secrets file +# ## Current implementation in docker compose v2 only allows the following +# ## value for the path where the secrets are mounted at runtime +# # path = "/run/secrets" +# +# ## Allow dynamic secrets that are updated during runtime of telegraf +# ## Dynamic Secrets work only with `file` or `external` configuration +# ## in `secrets` section of the `docker-compose.yml` file +# # dynamic = false + + +# # Read secrets from a HTTP endpoint +# [[secretstores.http]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## URLs from which to read the secrets +# url = "http://localhost/secrets" +# +# ## Optional HTTP headers +# # headers = {"X-Special-Header" = "Special-Value"} +# +# ## Optional Token for Bearer Authentication via +# ## "Authorization: Bearer " header +# # token = "your-token" +# +# ## Optional Credentials for HTTP Basic Authentication +# # username = "username" +# # password = "pa$$word" +# +# ## OAuth2 Client Credentials. The options 'client_id', 'client_secret', and 'token_url' are required to use OAuth2. +# # client_id = "clientid" +# # client_secret = "secret" +# # token_url = "https://indentityprovider/oauth2/v1/token" +# # scopes = ["urn:opc:idm:__myscopes__"] +# +# ## HTTP Proxy support +# # use_system_proxy = false +# # http_proxy_url = "" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Minimal TLS version to accept by the client +# # tls_min_version = "TLS12" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Optional Cookie authentication +# # cookie_auth_url = "https://localhost/authMe" +# # cookie_auth_method = "POST" +# # cookie_auth_username = "username" +# # cookie_auth_password = "pa$$word" +# # cookie_auth_headers = { Content-Type = "application/json", X-MY-HEADER = "hello" } +# # cookie_auth_body = '{"username": "user", "password": "pa$$word", "authenticate": "me"}' +# ## When unset or set to zero the authentication will only happen once +# ## and will never renew the cookie. Set to a suitable duration if you +# ## require cookie renewal! +# # cookie_auth_renewal = "0s" +# +# ## Amount of time allowed to complete the HTTP request +# # timeout = "5s" +# +# ## List of success status codes +# # success_status_codes = [200] +# +# ## JSONata expression to transform the server response into a +# ## { "secret name": "secret value", ... } +# ## form. See https://jsonata.org for more information and a playground. +# # transformation = '' +# +# ## Cipher used to decrypt the secrets. +# ## In case your secrets are transmitted in an encrypted form, you need +# ## to specify the cipher used and provide the corresponding configuration. +# ## Please refer to https://github.com/influxdata/telegraf/blob/master/plugins/secretstores/http/README.md +# ## for supported values. +# # cipher = "none" +# +# ## AES cipher parameters +# # [secretstores.http.aes] +# # ## Key (hex-encoded) and initialization-vector (IV) for the decryption. +# # ## In case the key (and IV) is derived from a password, the values can +# # ## be omitted. +# # key = "" +# # init_vector = "" +# # +# # ## Parameters for password-based-key derivation. +# # ## These parameters must match the encryption side to derive the same +# # ## key on both sides! +# # # kdf_algorithm = "PBKDF2-HMAC-SHA256" +# # # password = "" +# # # salt = "" +# # # iterations = 0 + + +# # File based Javascript Object Signing and Encryption based secret-store +# [[secretstores.jose]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## Directory for storing the secrets +# path = "/etc/telegraf/secrets" +# +# ## Password to access the secrets. +# ## If no password is specified here, Telegraf will prompt for it at startup time. +# # password = "" + + +# # Secret-store to retrieve and maintain tokens from various OAuth2 services +# [[secretstores.oauth2]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## Service to retrieve the token(s) from +# ## Currently supported services are "custom", "auth0" and "AzureAD" +# # service = "custom" +# +# ## Setting to overwrite the queried token-endpoint +# ## This setting is optional for some services but mandatory for others such +# ## as "custom" or "auth0". Please check the documentation at +# ## https://github.com/influxdata/telegraf/blob/master/plugins/secretstores/oauth2/README.md +# # token_endpoint = "" +# +# ## Tenant ID for the AzureAD service +# # tenant_id = "" +# +# ## Minimal remaining time until the token expires +# ## If a token expires less than the set duration in the future, the token is +# ## renewed. This is useful to avoid race-condition issues where a token is +# ## still valid, but isn't when the request reaches the API endpoint of +# ## your service using the token. +# # token_expiry_margin = "1s" +# +# ## Section for defining a token secret +# [[secretstores.oauth2.token]] +# ## Unique secret-key used for referencing the token via @{:} +# key = "" +# ## Client-ID and secret for the 2-legged OAuth flow +# client_id = "" +# client_secret = "" +# ## Scopes to send in the request +# # scopes = [] +# +# ## Additional (optional) parameters to include in the token request +# ## This might for example include the "audience" parameter required for +# ## auth0. +# # [secretstores.oauth2.token.parameters] +# # audience = "" + + +# # Operating System native secret-store +# [[secretstores.os]] +# ## Unique identifier for the secret-store. +# ## This id can later be used in plugins to reference the secrets +# ## in this secret-store via @{:} (mandatory) +# id = "secretstore" +# +# ## Keyring Name & Collection +# ## * Linux: keyring name used for the secrets, collection is unused +# ## * macOS: keyring specifies the macOS' Keychain name and collection is an +# ## optional Keychain service name +# ## * Windows: keys follow a fixed pattern in the form +# ## `::`. Please keep this in mind when +# ## creating secrets with the Windows credential tool. +# # keyring = "telegraf" +# # collection = "" +# +# ## macOS Keychain password +# ## If no password is specified here, Telegraf will prompt for it at startup +# ## time. +# # password = "" +# +# ## Allow dynamic secrets that are updated during runtime of telegraf +# # dynamic = false + + +# Configuration for sending metrics to InfluxDB 2.0 +[[outputs.influxdb_v2]] + ## The URLs of the InfluxDB cluster nodes. + ## + ## Multiple URLs can be specified for a single cluster, only ONE of the + ## urls will be written to each interval. + ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] + urls = ["http://192.168.1.200:38086"] + + ## Local address to bind when connecting to the server + ## If empty or not set, the local address is automatically chosen. + # local_address = "" + + ## Token for authentication. + token = "o5RvLUBkp38MYg7FBB30lyFe6YrIW3mYxaZxsEUL4E6lhsW4usLYpwHBf2dFuqMb9sRGINi0pyXXWLGyAskNAQ==" + + ## Organization is the name of the organization you wish to write to. + organization = "Astropotamus" + + ## Destination bucket to write into. + bucket = "AstropotaPOD" + + ## The value of this tag will be used to determine the bucket. If this + ## tag is not set the 'bucket' option is used as the default. + # bucket_tag = "" + + ## If true, the bucket tag will not be added to the metric. + # exclude_bucket_tag = false + + ## Timeout for HTTP messages. + # timeout = "5s" + + ## Additional HTTP headers + # http_headers = {"X-Special-Header" = "Special-Value"} + + ## HTTP Proxy override, if unset values the standard proxy environment + ## variables are consulted to determine which proxy, if any, should be used. + # http_proxy = "http://corporate.proxy:3128" + + ## HTTP User-Agent + # user_agent = "telegraf" + + ## Content-Encoding for write request body, can be set to "gzip" to + ## compress body or "identity" to apply no encoding. + # content_encoding = "gzip" + + ## Enable or disable uint support for writing uints influxdb 2.0. + # influx_uint_support = false + + ## When true, Telegraf will omit the timestamp on data to allow InfluxDB + ## to set the timestamp of the data during ingestion. This is generally NOT + ## what you want as it can lead to data points captured at different times + ## getting omitted due to similar data. + # influx_omit_timestamp = false + + ## HTTP/2 Timeouts + ## The following values control the HTTP/2 client's timeouts. These settings + ## are generally not required unless a user is seeing issues with client + ## disconnects. If a user does see issues, then it is suggested to set these + ## values to "15s" for ping timeout and "30s" for read idle timeout and + ## retry. + ## + ## Note that the timer for read_idle_timeout begins at the end of the last + ## successful write and not at the beginning of the next write. + # ping_timeout = "0s" + # read_idle_timeout = "0s" + + ## Optional TLS Config for use on HTTP connections. + # tls_ca = "/etc/telegraf/ca.pem" + # tls_cert = "/etc/telegraf/cert.pem" + # tls_key = "/etc/telegraf/key.pem" + ## Use TLS but skip chain & host verification + # insecure_skip_verify = false + + ## Rate limits for sending data (disabled by default) + ## Available, uncompressed payload size e.g. "5MB" + # rate_limit = "unlimited" + ## Fixed time-window for the available payload size e.g. "5m" + # rate_limit_period = "0s" + + +############################################################################### +# PROCESSOR PLUGINS # +############################################################################### + + +# # Attach AWS EC2 metadata to metrics +# [[processors.aws_ec2]] +# ## Instance identity document tags to attach to metrics. +# ## For more information see: +# ## https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html +# ## +# ## Available tags: +# ## * accountId +# ## * architecture +# ## * availabilityZone +# ## * billingProducts +# ## * imageId +# ## * instanceId +# ## * instanceType +# ## * kernelId +# ## * pendingTime +# ## * privateIp +# ## * ramdiskId +# ## * region +# ## * version +# # imds_tags = [] +# +# ## EC2 instance tags retrieved with DescribeTags action. +# ## In case tag is empty upon retrieval it's omitted when tagging metrics. +# ## Note that in order for this to work, role attached to EC2 instance or AWS +# ## credentials available from the environment must have a policy attached, that +# ## allows ec2:DescribeTags. +# ## +# ## For more information see: +# ## https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTags.html +# # ec2_tags = [] +# +# ## Paths to instance metadata information to attach to the metrics. +# ## Specify the full path without the base-path e.g. `tags/instance/Name`. +# ## +# ## For more information see: +# ## https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html +# # metadata_paths = [] +# +# ## Allows to convert metadata tag-names to canonical names representing the +# ## full path with slashes ('/') being replaces with underscores. By default, +# ## only the last path element is used to name the tag. +# # canonical_metadata_tags = false +# +# ## Timeout for http requests made by against aws ec2 metadata endpoint. +# # timeout = "10s" +# +# ## ordered controls whether or not the metrics need to stay in the same order +# ## this plugin received them in. If false, this plugin will change the order +# ## with requests hitting cached results moving through immediately and not +# ## waiting on slower lookups. This may cause issues for you if you are +# ## depending on the order of metrics staying the same. If so, set this to true. +# ## Keeping the metrics ordered may be slightly slower. +# # ordered = false +# +# ## max_parallel_calls is the maximum number of AWS API calls to be in flight +# ## at the same time. +# ## It's probably best to keep this number fairly low. +# # max_parallel_calls = 10 +# +# ## cache_ttl determines how long each cached item will remain in the cache before +# ## it is removed and subsequently needs to be queried for from the AWS API. By +# ## default, no items are cached. +# # cache_ttl = "0s" +# +# ## tag_cache_size determines how many of the values which are found in imds_tags +# ## or ec2_tags will be kept in memory for faster lookup on successive processing +# ## of metrics. You may want to adjust this if you have excessively large numbers +# ## of tags on your EC2 instances, and you are using the ec2_tags field. This +# ## typically does not need to be changed when using the imds_tags field. +# # tag_cache_size = 1000 +# +# ## log_cache_stats will emit a log line periodically to stdout with details of +# ## cache entries, hits, misses, and evacuations since the last time stats were +# ## emitted. This can be helpful in determining whether caching is being effective +# ## in your environment. Stats are emitted every 30 seconds. By default, this +# ## setting is disabled. + + +# ## Batch metrics into separate batches by adding a tag indicating the batch index. +# [[processors.batch]] +# ## The name of the tag to use for adding the batch index +# batch_tag = "my_batch" +# +# ## The number of batches to create +# batches = 16 +# +# ## Do not assign metrics with an existing batch assignment to a +# ## different batch. +# # skip_existing = false + + +# # Apply metric modifications using override semantics. +# [[processors.clone]] +# ## All modifications on inputs and aggregators can be overridden: +# # name_override = "new_name" +# # name_prefix = "new_name_prefix" +# # name_suffix = "new_name_suffix" +# +# ## Tags to be added (all values must be strings) +# # [processors.clone.tags] +# # additional_tag = "tag_value" + + +# # Convert values to another metric value type +# [[processors.converter]] +# ## Tags to convert +# ## +# ## The table key determines the target type, and the array of key-values +# ## select the keys to convert. The array may contain globs. +# ## = [...] +# [processors.converter.tags] +# measurement = [] +# string = [] +# integer = [] +# unsigned = [] +# boolean = [] +# float = [] +# +# ## Optional tag to use as metric timestamp +# # timestamp = [] +# +# ## Format of the timestamp determined by the tag above. This can be any of +# ## "unix", "unix_ms", "unix_us", "unix_ns", or a valid Golang time format. +# ## It is required, when using the timestamp option. +# # timestamp_format = "" +# +# ## Fields to convert +# ## +# ## The table key determines the target type, and the array of key-values +# ## select the keys to convert. The array may contain globs. +# ## = [...] +# [processors.converter.fields] +# measurement = [] +# tag = [] +# string = [] +# integer = [] +# unsigned = [] +# boolean = [] +# float = [] +# +# ## Optional field to use for converting base64 encoding of IEEE 754 Float32 values +# ## i.e. data_json_content_state_openconfig-platform-psu:output-power":"RKeAAA==" +# ## into a float32 value 1340 +# # base64_ieee_float32 = [] +# +# ## Optional field to use as metric timestamp +# # timestamp = [] +# +# ## Format of the timestamp determined by the field above. This can be any +# ## of "unix", "unix_ms", "unix_us", "unix_ns", or a valid Golang time +# ## format. It is required, when using the timestamp option. +# # timestamp_format = "" + + +# # Dates measurements, tags, and fields that pass through this filter. +# [[processors.date]] +# ## New tag to create +# tag_key = "month" +# +# ## New field to create (cannot set both field_key and tag_key) +# # field_key = "month" +# +# ## Date format string, must be a representation of the Go "reference time" +# ## which is "Mon Jan 2 15:04:05 -0700 MST 2006". +# date_format = "Jan" +# +# ## If destination is a field, date format can also be one of +# ## "unix", "unix_ms", "unix_us", or "unix_ns", which will insert an integer field. +# # date_format = "unix" +# +# ## Offset duration added to the date string when writing the new tag. +# # date_offset = "0s" +# +# ## Timezone to use when creating the tag or field using a reference time +# ## string. This can be set to one of "UTC", "Local", or to a location name +# ## in the IANA Time Zone database. +# ## example: timezone = "America/Los_Angeles" +# # timezone = "UTC" + + +# # Filter metrics with repeating field values +# [[processors.dedup]] +# ## Maximum time to suppress output +# dedup_interval = "600s" + + +# ## Set default fields on your metric(s) when they are nil or empty +# [[processors.defaults]] +# ## Ensures a set of fields always exists on your metric(s) with their +# ## respective default value. +# ## For any given field pair (key = default), if it's not set, a field +# ## is set on the metric with the specified default. +# ## +# ## A field is considered not set if it is nil on the incoming metric; +# ## or it is not nil but its value is an empty string or is a string +# ## of one or more spaces. +# ## = +# [processors.defaults.fields] +# field_1 = "bar" +# time_idle = 0 +# is_error = true + + +# # Map enum values according to given table. +# [[processors.enum]] +# [[processors.enum.mapping]] +# ## Name of the field to map. Globs accepted. +# field = "status" +# +# ## Name of the tag to map. Globs accepted. +# # tag = "status" +# +# ## Destination tag or field to be used for the mapped value. By default the +# ## source tag or field is used, overwriting the original value. +# dest = "status_code" +# +# ## Default value to be used for all values not contained in the mapping +# ## table. When unset and no match is found, the original field will remain +# ## unmodified and the destination tag or field will not be created. +# # default = 0 +# +# ## Table of mappings +# [processors.enum.mapping.value_mappings] +# green = 1 +# amber = 2 +# red = 3 + + +# # Run executable as long-running processor plugin +# [[processors.execd]] +# ## One program to run as daemon. +# ## NOTE: process and each argument should each be their own string +# ## eg: command = ["/path/to/your_program", "arg1", "arg2"] +# command = ["cat"] +# +# ## Environment variables +# ## Array of "key=value" pairs to pass as environment variables +# ## e.g. "KEY=value", "USERNAME=John Doe", +# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" +# # environment = [] +# +# ## Delay before the process is restarted after an unexpected termination +# # restart_delay = "10s" +# +# ## Serialization format for communicating with the executed program +# ## Please note that the corresponding data-format must exist both in +# ## parsers and serializers +# # data_format = "influx" + + +# # Performs file path manipulations on tags and fields +# [[processors.filepath]] +# ## Treat the tag value as a path and convert it to its last element, storing the result in a new tag +# # [[processors.filepath.basename]] +# # tag = "path" +# # dest = "basepath" +# +# ## Treat the field value as a path and keep all but the last element of path, typically the path's directory +# # [[processors.filepath.dirname]] +# # field = "path" +# +# ## Treat the tag value as a path, converting it to its the last element without its suffix +# # [[processors.filepath.stem]] +# # tag = "path" +# +# ## Treat the tag value as a path, converting it to the shortest path name equivalent +# ## to path by purely lexical processing +# # [[processors.filepath.clean]] +# # tag = "path" +# +# ## Treat the tag value as a path, converting it to a relative path that is lexically +# ## equivalent to the source path when joined to 'base_path' +# # [[processors.filepath.rel]] +# # tag = "path" +# # base_path = "/var/log" +# +# ## Treat the tag value as a path, replacing each separator character in path with a '/' character. Has only +# ## effect on Windows +# # [[processors.filepath.toslash]] +# # tag = "path" + + +# # Filter metrics by the given criteria +# [[processors.filter]] +# ## Default action if no rule applies +# # default = "pass" +# +# ## Rules to apply on the incoming metrics (multiple rules are possible) +# ## The rules are evaluated in order and the first matching rule is applied. +# ## In case no rule matches the "default" is applied. +# ## All filter criteria in a rule must apply for the rule to match the metric +# ## i.e. the criteria are combined by a logical AND. If a criterion is +# ## omitted it is NOT applied at all and ignored. +# [[processors.filter.rule]] +# ## List of metric names to match including glob expressions +# # name = [] +# +# ## List of tag key/values pairs to match including glob expressions +# ## ALL given tags keys must exist and at least one value must match +# ## for the metric to match the rule. +# # tags = {} +# +# ## List of field keys to match including glob expressions +# ## At least one field must exist for the metric to match the rule. +# # fields = [] +# +# ## Action to apply for this rule +# ## "pass" will keep the metric and pass it on, while "drop" will remove +# ## the metric +# # action = "drop" + + +# # Add a tag of the network interface name looked up over SNMP by interface number +# [[processors.ifname]] +# ## Name of tag holding the interface number +# # tag = "ifIndex" +# +# ## Name of output tag where service name will be added +# # dest = "ifName" +# +# ## Name of tag of the SNMP agent to request the interface name from +# ## example: agent = "source" +# # agent = "agent" +# +# ## Timeout for each request. +# # timeout = "5s" +# +# ## SNMP version; can be 1, 2, or 3. +# # version = 2 +# +# ## SNMP community string. +# # community = "public" +# +# ## Number of retries to attempt. +# # retries = 3 +# +# ## The GETBULK max-repetitions parameter. +# # max_repetitions = 10 +# +# ## SNMPv3 authentication and encryption options. +# ## +# ## Security Name. +# # sec_name = "myuser" +# ## Authentication protocol; one of "MD5", "SHA", or "". +# # auth_protocol = "MD5" +# ## Authentication password. +# # auth_password = "pass" +# ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv". +# # sec_level = "authNoPriv" +# ## Context Name. +# # context_name = "" +# ## Privacy protocol used for encrypted messages; one of "DES", "AES" or "". +# # priv_protocol = "" +# ## Privacy password used for encrypted messages. +# # priv_password = "" +# +# ## max_parallel_lookups is the maximum number of SNMP requests to +# ## make at the same time. +# # max_parallel_lookups = 100 +# +# ## ordered controls whether or not the metrics need to stay in the +# ## same order this plugin received them in. If false, this plugin +# ## may change the order when data is cached. If you need metrics to +# ## stay in order set this to true. keeping the metrics ordered may +# ## be slightly slower +# # ordered = false +# +# ## cache_ttl is the amount of time interface names are cached for a +# ## given agent. After this period elapses if names are needed they +# ## will be retrieved again. +# # cache_ttl = "8h" + + +# # Lookup a key derived from metrics in a static file +# [[processors.lookup]] +# ## List of files containing the lookup-table +# files = ["path/to/lut.json", "path/to/another_lut.json"] +# +# ## Format of the lookup file(s) +# ## Available formats are: +# ## json -- JSON file with 'key: {tag-key: tag-value, ...}' mapping +# ## csv_key_name_value -- CSV file with 'key,tag-key,tag-value,...,tag-key,tag-value' mapping +# ## csv_key_values -- CSV file with a header containing tag-names and +# ## rows with 'key,tag-value,...,tag-value' mappings +# # format = "json" +# +# ## Template for generating the lookup-key from the metric. +# ## This is a Golang template (see https://pkg.go.dev/text/template) to +# ## access the metric name (`{{.Name}}`), a tag value (`{{.Tag "name"}}`) or +# ## a field value (`{{.Field "name"}}`). +# key = '{{.Tag "host"}}' + + +# # Adds noise to numerical fields +# [[processors.noise]] +# ## Specified the type of the random distribution. +# ## Can be "laplacian", "gaussian" or "uniform". +# # type = "laplacian +# +# ## Center of the distribution. +# ## Only used for Laplacian and Gaussian distributions. +# # mu = 0.0 +# +# ## Scale parameter for the Laplacian or Gaussian distribution +# # scale = 1.0 +# +# ## Upper and lower bound of the Uniform distribution +# # min = -1.0 +# # max = 1.0 +# +# ## Apply the noise only to numeric fields matching the filter criteria below. +# ## Excludes takes precedence over includes. +# # include_fields = [] +# # exclude_fields = [] + + +# # Apply metric modifications using override semantics. +# [[processors.override]] +# ## All modifications on inputs and aggregators can be overridden: +# # name_override = "new_name" +# # name_prefix = "new_name_prefix" +# # name_suffix = "new_name_suffix" +# +# ## Tags to be added (all values must be strings) +# # [processors.override.tags] +# # additional_tag = "tag_value" + + +# # Parse a value in a specified field(s)/tag(s) and add the result in a new metric +# [[processors.parser]] +# ## The name of the fields whose value will be parsed. +# parse_fields = ["message"] +# +# ## Fields to base64 decode. +# ## These fields do not need to be specified in parse_fields. +# ## Fields specified here will have base64 decode applied to them. +# # parse_fields_base64 = [] +# +# ## The name of the tags whose value will be parsed. +# # parse_tags = [] +# +# ## If true, incoming metrics are not emitted. +# # drop_original = false +# +# ## Merge Behavior +# ## Only has effect when drop_original is set to false. Possible options +# ## include: +# ## * override: emitted metrics are merged by overriding the original metric +# ## using the newly parsed metrics, but retains the original metric +# ## timestamp. +# ## * override-with-timestamp: the same as "override", but the timestamp is +# ## set based on the new metrics if present. +# # merge = "" +# +# ## The dataformat to be read from files +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md +# data_format = "influx" + + +# # Rotate a single valued metric into a multi field metric +# [[processors.pivot]] +# ## Tag to use for naming the new field. +# tag_key = "name" +# ## Field to use as the value of the new field. +# value_key = "value" + + +# # Given a tag/field of a TCP or UDP port number, add a tag/field of the service name looked up in the system services file +# [[processors.port_name]] +# ## Name of tag holding the port number +# # tag = "port" +# ## Or name of the field holding the port number +# # field = "port" +# +# ## Name of output tag or field (depending on the source) where service name will be added +# # dest = "service" +# +# ## Default tcp or udp +# # default_protocol = "tcp" +# +# ## Tag containing the protocol (tcp or udp, case-insensitive) +# # protocol_tag = "proto" +# +# ## Field containing the protocol (tcp or udp, case-insensitive) +# # protocol_field = "proto" + + +# # Print all metrics that pass through this filter. +# [[processors.printer]] +# ## Maximum line length in bytes. Useful only for debugging. +# # influx_max_line_bytes = 0 +# +# ## When true, fields will be output in ascending lexical order. Enabling +# ## this option will result in decreased performance and is only recommended +# ## when you need predictable ordering while debugging. +# # influx_sort_fields = false +# +# ## When true, Telegraf will output unsigned integers as unsigned values, +# ## i.e.: `42u`. You will need a version of InfluxDB supporting unsigned +# ## integer values. Enabling this option will result in field type errors if +# ## existing data has been written. +# # influx_uint_support = false +# +# ## When true, Telegraf will omit the timestamp on data to allow InfluxDB +# ## to set the timestamp of the data during ingestion. This is generally NOT +# ## what you want as it can lead to data points captured at different times +# ## getting omitted due to similar data. +# # influx_omit_timestamp = false + + +# # Transforms tag and field values as well as measurement, tag and field names with regex pattern +# [[processors.regex]] +# namepass = ["nginx_requests"] +# +# ## Tag value conversion(s). Multiple instances are allowed. +# [[processors.regex.tags]] +# ## Tag(s) to process with optional glob expressions such as '*'. +# key = "resp_code" +# ## Regular expression to match the tag value. If the value doesn't +# ## match the tag is ignored. +# pattern = "^(\\d)\\d\\d$" +# ## Replacement expression defining the value of the target tag. You can +# ## use regexp groups or named groups e.g. ${1} references the first group. +# replacement = "${1}xx" +# ## Name of the target tag defaulting to 'key' if not specified. +# ## In case of wildcards being used in `key` the currently processed +# ## tag-name is used as target. +# # result_key = "method" +# ## Appends the replacement to the target tag instead of overwriting it when +# ## set to true. +# # append = false +# +# ## Field value conversion(s). Multiple instances are allowed. +# [[processors.regex.fields]] +# ## Field(s) to process with optional glob expressions such as '*'. +# key = "request" +# ## Regular expression to match the field value. If the value doesn't +# ## match or the field doesn't contain a string the field is ignored. +# pattern = "^/api(?P/[\\w/]+)\\S*" +# ## Replacement expression defining the value of the target field. You can +# ## use regexp groups or named groups e.g. ${method} references the group +# ## named "method". +# replacement = "${method}" +# ## Name of the target field defaulting to 'key' if not specified. +# ## In case of wildcards being used in `key` the currently processed +# ## field-name is used as target. +# # result_key = "method" +# +# ## Rename metric fields +# [[processors.regex.field_rename]] +# ## Regular expression to match on the field name +# pattern = "^search_(\\w+)d$" +# ## Replacement expression defining the name of the new field +# replacement = "${1}" +# ## If the new field name already exists, you can either "overwrite" the +# ## existing one with the value of the renamed field OR you can "keep" +# ## both the existing and source field. +# # result_key = "keep" +# +# ## Rename metric tags +# [[processors.regex.tag_rename]] +# ## Regular expression to match on a tag name +# pattern = "^search_(\\w+)d$" +# ## Replacement expression defining the name of the new tag +# replacement = "${1}" +# ## If the new tag name already exists, you can either "overwrite" the +# ## existing one with the value of the renamed tag OR you can "keep" +# ## both the existing and source tag. +# # result_key = "keep" +# +# ## Rename metrics +# [[processors.regex.metric_rename]] +# ## Regular expression to match on an metric name +# pattern = "^search_(\\w+)d$" +# ## Replacement expression defining the new name of the metric +# replacement = "${1}" + + +# # Rename measurements, tags, and fields that pass through this filter. +# [[processors.rename]] +# ## Specify one sub-table per rename operation. +# [[processors.rename.replace]] +# measurement = "network_interface_throughput" +# dest = "throughput" +# +# [[processors.rename.replace]] +# tag = "hostname" +# dest = "host" +# +# [[processors.rename.replace]] +# field = "lower" +# dest = "min" +# +# [[processors.rename.replace]] +# field = "upper" +# dest = "max" + + +# # ReverseDNS does a reverse lookup on IP addresses to retrieve the DNS name +# [[processors.reverse_dns]] +# ## For optimal performance, you may want to limit which metrics are passed to this +# ## processor. eg: +# ## namepass = ["my_metric_*"] +# +# ## cache_ttl is how long the dns entries should stay cached for. +# ## generally longer is better, but if you expect a large number of diverse lookups +# ## you'll want to consider memory use. +# cache_ttl = "24h" +# +# ## lookup_timeout is how long should you wait for a single dns request to respond. +# ## this is also the maximum acceptable latency for a metric travelling through +# ## the reverse_dns processor. After lookup_timeout is exceeded, a metric will +# ## be passed on unaltered. +# ## multiple simultaneous resolution requests for the same IP will only make a +# ## single rDNS request, and they will all wait for the answer for this long. +# lookup_timeout = "3s" +# +# ## max_parallel_lookups is the maximum number of dns requests to be in flight +# ## at the same time. Requesting hitting cached values do not count against this +# ## total, and neither do mulptiple requests for the same IP. +# ## It's probably best to keep this number fairly low. +# max_parallel_lookups = 10 +# +# ## ordered controls whether or not the metrics need to stay in the same order +# ## this plugin received them in. If false, this plugin will change the order +# ## with requests hitting cached results moving through immediately and not +# ## waiting on slower lookups. This may cause issues for you if you are +# ## depending on the order of metrics staying the same. If so, set this to true. +# ## keeping the metrics ordered may be slightly slower. +# ordered = false +# +# [[processors.reverse_dns.lookup]] +# ## get the ip from the field "source_ip", and put the result in the field "source_name" +# field = "source_ip" +# dest = "source_name" +# +# [[processors.reverse_dns.lookup]] +# ## get the ip from the tag "destination_ip", and put the result in the tag +# ## "destination_name". +# tag = "destination_ip" +# dest = "destination_name" +# +# ## If you would prefer destination_name to be a field instead, you can use a +# ## processors.converter after this one, specifying the order attribute. + + +# # Add the S2 Cell ID as a tag based on latitude and longitude fields +# [[processors.s2geo]] +# ## The name of the lat and lon fields containing WGS-84 latitude and +# ## longitude in decimal degrees. +# # lat_field = "lat" +# # lon_field = "lon" +# +# ## New tag to create +# # tag_key = "s2_cell_id" +# +# ## Cell level (see https://s2geometry.io/resources/s2cell_statistics.html) +# # cell_level = 9 + + +# # Scale values with a predefined range to a different output range. +# [[processors.scale]] +# ## It is possible to define multiple different scaling that can be applied +# ## do different sets of fields. Each scaling expects the following +# ## arguments: +# ## - input_minimum: Minimum expected input value +# ## - input_maximum: Maximum expected input value +# ## - output_minimum: Minimum desired output value +# ## - output_maximum: Maximum desired output value +# ## alternatively you can specify a scaling with factor and offset +# ## - factor: factor to scale the input value with +# ## - offset: additive offset for value after scaling +# ## - fields: a list of field names (or filters) to apply this scaling to +# +# ## Example: Scaling with minimum and maximum values +# # [[processors.scale.scaling]] +# # input_minimum = 0.0 +# # input_maximum = 1.0 +# # output_minimum = 0.0 +# # output_maximum = 100.0 +# # fields = ["temperature1", "temperature2"] +# +# ## Example: Scaling with factor and offset +# # [[processors.scale.scaling]] +# # factor = 10.0 +# # offset = -5.0 +# # fields = ["voltage*"] + + +# # Lookup extra tags via SNMP based on the table index +# [[processors.snmp_lookup]] +# ## Name of tag of the SNMP agent to do the lookup on +# # agent_tag = "source" +# +# ## Name of tag holding the table row index +# # index_tag = "index" +# +# ## Timeout for each request. +# # timeout = "5s" +# +# ## SNMP version; can be 1, 2, or 3. +# # version = 2 +# +# ## SNMP community string. +# # community = "public" +# +# ## Number of retries to attempt. +# # retries = 3 +# +# ## The GETBULK max-repetitions parameter. +# # max_repetitions = 10 +# +# ## SNMPv3 authentication and encryption options. +# ## +# ## Security Name. +# # sec_name = "myuser" +# ## Authentication protocol; one of "MD5", "SHA", or "". +# # auth_protocol = "MD5" +# ## Authentication password. +# # auth_password = "pass" +# ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv". +# # sec_level = "authNoPriv" +# ## Context Name. +# # context_name = "" +# ## Privacy protocol used for encrypted messages; one of "DES", "AES" or "". +# # priv_protocol = "" +# ## Privacy password used for encrypted messages. +# # priv_password = "" +# +# ## The maximum number of SNMP requests to make at the same time. +# # max_parallel_lookups = 16 +# +# ## The amount of agents to cache entries for. If limit is reached, +# ## oldest will be removed first. 0 means no limit. +# # max_cache_entries = 100 +# +# ## Control whether the metrics need to stay in the same order this plugin +# ## received them in. If false, this plugin may change the order when data is +# ## cached. If you need metrics to stay in order set this to true. Keeping the +# ## metrics ordered may be slightly slower. +# # ordered = false +# +# ## The amount of time entries are cached for a given agent. After this period +# ## elapses if tags are needed they will be retrieved again. +# # cache_ttl = "8h" +# +# ## Minimum time between requests to an agent in case an index could not be +# ## resolved. If set to zero no request on missing indices will be triggered. +# # min_time_between_updates = "5m" +# +# ## List of tags to be looked up. +# [[processors.snmp_lookup.tag]] +# ## Object identifier of the variable as a numeric or textual OID. +# oid = "IF-MIB::ifName" +# +# ## Name of the tag to create. If not specified, it defaults to the value of 'oid'. +# ## If 'oid' is numeric, an attempt to translate the numeric OID into a textual OID +# ## will be made. +# # name = "" +# +# ## Apply one of the following conversions to the variable value: +# ## ipaddr: Convert the value to an IP address. +# ## enum: Convert the value according to its syntax in the MIB. +# ## displayhint: Format the value according to the textual convention in the MIB. +# ## +# # conversion = "" + + +# # Split a metric into one or more metrics with the specified field(s)/tag(s) +# [[processors.split]] +# ## Keeps the original metric by default +# # drop_original = false +# +# ## Template for an output metric +# ## Users can define multiple templates to split the original metric into +# ## multiple, potentially overlapping, metrics. +# [[processors.split.template]] +# ## New metric name +# name = "" +# +# ## List of tag keys for this metric template, accepts globs, e.g. "*" +# tags = [] +# +# ## List of field keys for this metric template, accepts globs, e.g. "*" +# fields = [] + + +# # Process metrics using a Starlark script +# [[processors.starlark]] +# ## The Starlark source can be set as a string in this configuration file, or +# ## by referencing a file containing the script. Only one source or script +# ## should be set at once. +# +# ## Source of the Starlark script. +# source = ''' +# def apply(metric): +# return metric +# ''' +# +# ## File containing a Starlark script. +# # script = "/usr/local/bin/myscript.star" +# +# ## The constants of the Starlark script. +# # [processors.starlark.constants] +# # max_size = 10 +# # threshold = 0.75 +# # default_name = "Julia" +# # debug_mode = true + + +# # Perform string processing on tags, fields, and measurements +# [[processors.strings]] +# ## Convert a field value to lowercase and store in a new field +# # [[processors.strings.lowercase]] +# # field = "uri_stem" +# # dest = "uri_stem_normalised" +# +# ## Convert a tag value to uppercase +# # [[processors.strings.uppercase]] +# # tag = "method" +# +# ## Convert a field value to titlecase +# # [[processors.strings.titlecase]] +# # field = "status" +# +# ## Trim leading and trailing whitespace using the default cutset +# # [[processors.strings.trim]] +# # field = "message" +# +# ## Trim leading characters in cutset +# # [[processors.strings.trim_left]] +# # field = "message" +# # cutset = "\t" +# +# ## Trim trailing characters in cutset +# # [[processors.strings.trim_right]] +# # field = "message" +# # cutset = "\r\n" +# +# ## Trim the given prefix from the field +# # [[processors.strings.trim_prefix]] +# # field = "my_value" +# # prefix = "my_" +# +# ## Trim the given suffix from the field +# # [[processors.strings.trim_suffix]] +# # field = "read_count" +# # suffix = "_count" +# +# ## Replace all non-overlapping instances of old with new +# # [[processors.strings.replace]] +# # measurement = "*" +# # old = ":" +# # new = "_" +# +# ## Trims strings based on width +# # [[processors.strings.left]] +# # field = "message" +# # width = 10 +# +# ## Decode a base64 encoded utf-8 string +# # [[processors.strings.base64decode]] +# # field = "message" +# +# ## Sanitize a string to ensure it is a valid utf-8 string +# ## Each run of invalid UTF-8 byte sequences is replaced by the replacement string, which may be empty +# # [[processors.strings.valid_utf8]] +# # field = "message" +# # replacement = "" + + +# # Restricts the number of tags that can pass through this filter and chooses which tags to preserve when over the limit. +# [[processors.tag_limit]] +# ## Maximum number of tags to preserve +# limit = 3 +# +# ## List of tags to preferentially preserve +# keep = ["environment", "region"] + + +# # Uses a Go template to create a new tag +# [[processors.template]] +# ## Go template used to create the tag name of the output. In order to +# ## ease TOML escaping requirements, you should use single quotes around +# ## the template string. +# tag = "topic" +# +# ## Go template used to create the tag value of the output. In order to +# ## ease TOML escaping requirements, you should use single quotes around +# ## the template string. +# template = '{{ .Tag "hostname" }}.{{ .Tag "level" }}' + + +# # Convert a timestamp field to other timestamp format +# [[processors.timestamp]] +# ## Timestamp key to convert +# ## Specify the field name that contains the timestamp to convert. The result +# ## will replace the current field value. +# field = "" +# +# ## Timestamp Format +# ## This defines the time layout used to interpret the source timestamp field. +# ## The time must be `unix`, `unix_ms`, `unix_us`, `unix_ns`, or a time in Go +# ## "reference time". For more information on Go "reference time". For more +# ## see: https://golang.org/pkg/time/#Time.Format +# source_timestamp_format = "" +# +# ## Timestamp Timezone +# ## Source timestamp timezone. If not set, assumed to be in UTC. +# ## Options are as follows: +# ## 1. UTC -- or unspecified will return timestamp in UTC +# ## 2. Local -- interpret based on machine localtime +# ## 3. "America/New_York" -- Unix TZ values like those found in +# ## https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# # source_timestamp_timezone = "" +# +# ## Target timestamp format +# ## This defines the destination timestamp format. It also can accept either +# ## `unix`, `unix_ms`, `unix_us`, `unix_ns`, or a time in Go "reference time". +# destination_timestamp_format = "" +# +# ## Target Timestamp Timezone +# ## Source timestamp timezone. If not set, assumed to be in UTC. +# ## Options are as follows: +# ## 1. UTC -- or unspecified will return timestamp in UTC +# ## 2. Local -- interpret based on machine localtime +# ## 3. "America/New_York" -- Unix TZ values like those found in +# ## https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# # destination_timestamp_timezone = "" + + +# # Print all metrics that pass through this filter. +# [[processors.topk]] +# ## How many seconds between aggregations +# # period = 10 +# +# ## How many top buckets to return per field +# ## Every field specified to aggregate over will return k number of results. +# ## For example, 1 field with k of 10 will return 10 buckets. While 2 fields +# ## with k of 3 will return 6 buckets. +# # k = 10 +# +# ## Over which tags should the aggregation be done. Globs can be specified, in +# ## which case any tag matching the glob will aggregated over. If set to an +# ## empty list is no aggregation over tags is done +# # group_by = ['*'] +# +# ## The field(s) to aggregate +# ## Each field defined is used to create an independent aggregation. Each +# ## aggregation will return k buckets. If a metric does not have a defined +# ## field the metric will be dropped from the aggregation. Considering using +# ## the defaults processor plugin to ensure fields are set if required. +# # fields = ["value"] +# +# ## What aggregation function to use. Options: sum, mean, min, max +# # aggregation = "mean" +# +# ## Instead of the top k largest metrics, return the bottom k lowest metrics +# # bottomk = false +# +# ## The plugin assigns each metric a GroupBy tag generated from its name and +# ## tags. If this setting is different than "" the plugin will add a +# ## tag (which name will be the value of this setting) to each metric with +# ## the value of the calculated GroupBy tag. Useful for debugging +# # add_groupby_tag = "" +# +# ## These settings provide a way to know the position of each metric in +# ## the top k. The 'add_rank_field' setting allows to specify for which +# ## fields the position is required. If the list is non empty, then a field +# ## will be added to each and every metric for each string present in this +# ## setting. This field will contain the ranking of the group that +# ## the metric belonged to when aggregated over that field. +# ## The name of the field will be set to the name of the aggregation field, +# ## suffixed with the string '_topk_rank' +# # add_rank_fields = [] +# +# ## These settings provide a way to know what values the plugin is generating +# ## when aggregating metrics. The 'add_aggregate_field' setting allows to +# ## specify for which fields the final aggregation value is required. If the +# ## list is non empty, then a field will be added to each every metric for +# ## each field present in this setting. This field will contain +# ## the computed aggregation for the group that the metric belonged to when +# ## aggregated over that field. +# ## The name of the field will be set to the name of the aggregation field, +# ## suffixed with the string '_topk_aggregate' +# # add_aggregate_fields = [] + + +# # Rotate multi field metric into several single field metrics +# [[processors.unpivot]] +# ## Metric mode to pivot to +# ## Set to "tag", metrics are pivoted as a tag and the metric is kept as +# ## the original measurement name. Tag key name is set by tag_key value. +# ## Set to "metric" creates a new metric named the field name. With this +# ## option the tag_key is ignored. Be aware that this could lead to metric +# ## name conflicts! +# # use_fieldname_as = "tag" +# +# ## Tag to use for the name. +# # tag_key = "name" +# +# ## Field to use for the name of the value. +# # value_key = "value" + + +############################################################################### +# AGGREGATOR PLUGINS # +############################################################################### + + +# # Keep the aggregate basicstats of each metric passing through. +# [[aggregators.basicstats]] +# ## The period on which to flush & clear the aggregator. +# # period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false +# +# ## Configures which basic stats to push as fields +# # stats = ["count","min","max","mean","variance","stdev"] + + +# # Calculates a derivative for every field. +# [[aggregators.derivative]] +# ## The period in which to flush the aggregator. +# # period = "30s" +# +# ## Suffix to append for the resulting derivative field. +# # suffix = "_rate" +# +# ## Field to use for the quotient when computing the derivative. +# ## When using a field as the derivation parameter the name of that field will +# ## be used for the resulting derivative, e.g. *fieldname_by_parameter*. +# ## By default the timestamps of the metrics are used and the suffix is omitted. +# # variable = "" +# +# ## Maximum number of roll-overs in case only one measurement is found during a period. +# # max_roll_over = 10 + + +# # Report the final metric of a series +# [[aggregators.final]] +# ## The period on which to flush & clear the aggregator. +# # period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false +# +# ## If false, _final is added to every field name +# # keep_original_field_names = false +# +# ## The time that a series is not updated until considering it final. Ignored +# ## when output_strategy is "periodic". +# # series_timeout = "5m" +# +# ## Output strategy, supported values: +# ## timeout -- output a metric if no new input arrived for `series_timeout` +# ## periodic -- output the last received metric every `period` +# # output_strategy = "timeout" + + +# # Configuration for aggregate histogram metrics +# [[aggregators.histogram]] +# ## The period in which to flush the aggregator. +# # period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false +# +# ## If true, the histogram will be reset on flush instead +# ## of accumulating the results. +# reset = false +# +# ## Whether bucket values should be accumulated. If set to false, "gt" tag will be added. +# ## Defaults to true. +# cumulative = true +# +# ## Expiration interval for each histogram. The histogram will be expired if +# ## there are no changes in any buckets for this time interval. 0 == no expiration. +# # expiration_interval = "0m" +# +# ## If true, aggregated histogram are pushed to output only if it was updated since +# ## previous push. Defaults to false. +# # push_only_on_update = false +# +# ## Example config that aggregates all fields of the metric. +# # [[aggregators.histogram.config]] +# # ## Right borders of buckets (with +Inf implicitly added). +# # buckets = [0.0, 15.6, 34.5, 49.1, 71.5, 80.5, 94.5, 100.0] +# # ## The name of metric. +# # measurement_name = "cpu" +# +# ## Example config that aggregates only specific fields of the metric. +# # [[aggregators.histogram.config]] +# # ## Right borders of buckets (with +Inf implicitly added). +# # buckets = [0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] +# # ## The name of metric. +# # measurement_name = "diskio" +# # ## The concrete fields of metric +# # fields = ["io_time", "read_time", "write_time"] + + +# # Merge metrics into multifield metrics by series key +# [[aggregators.merge]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# # period = "30s" +# +# ## Precision to round the metric timestamp to +# ## This is useful for cases where metrics to merge arrive within a small +# ## interval and thus vary in timestamp. The timestamp of the resulting metric +# ## is also rounded. +# # round_timestamp_to = "1ns" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# drop_original = true + + +# # Keep the aggregate min/max of each metric passing through. +# [[aggregators.minmax]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# # period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false + + +# # Keep the aggregate quantiles of each metric passing through. +# [[aggregators.quantile]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# # period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false +# +# ## Quantiles to output in the range [0,1] +# # quantiles = [0.25, 0.5, 0.75] +# +# ## Type of aggregation algorithm +# ## Supported are: +# ## "t-digest" -- approximation using centroids, can cope with large number of samples +# ## "exact R7" -- exact computation also used by Excel or NumPy (Hyndman & Fan 1996 R7) +# ## "exact R8" -- exact computation (Hyndman & Fan 1996 R8) +# ## NOTE: Do not use "exact" algorithms with large number of samples +# ## to not impair performance or memory consumption! +# # algorithm = "t-digest" +# +# ## Compression for approximation (t-digest). The value needs to be +# ## greater or equal to 1.0. Smaller values will result in more +# ## performance but less accuracy. +# # compression = 100.0 + + +# # Aggregate metrics using a Starlark script +# [[aggregators.starlark]] +# ## The Starlark source can be set as a string in this configuration file, or +# ## by referencing a file containing the script. Only one source or script +# ## should be set at once. +# ## +# ## Source of the Starlark script. +# source = ''' +# state = {} +# +# def add(metric): +# state["last"] = metric +# +# def push(): +# return state.get("last") +# +# def reset(): +# state.clear() +# ''' +# +# ## File containing a Starlark script. +# # script = "/usr/local/bin/myscript.star" +# +# ## The constants of the Starlark script. +# # [aggregators.starlark.constants] +# # max_size = 10 +# # threshold = 0.75 +# # default_name = "Julia" +# # debug_mode = true + + +# # Count the occurrence of values in fields. +# [[aggregators.valuecounter]] +# ## General Aggregator Arguments: +# ## The period on which to flush & clear the aggregator. +# # period = "30s" +# +# ## If true, the original metric will be dropped by the +# ## aggregator and will not get sent to the output plugins. +# # drop_original = false +# +# ## The fields for which the values will be counted +# fields = ["status"] + + +# Read metrics about cpu usage +[[inputs.cpu]] + ## Whether to report per-cpu stats or not + percpu = true + ## Whether to report total system cpu stats or not + totalcpu = true + ## If true, collect raw CPU time metrics + collect_cpu_time = false + ## If true, compute and report the sum of all non-idle CPU states + ## NOTE: The resulting 'time_active' field INCLUDES 'iowait'! + report_active = false + ## If true and the info is available then add core_id and physical_id tags + core_tags = false + +[[inputs.mem]] + +[[inputs.system]] + +[[inputs.ping]] +urls = ["192.168.0.1","192.168.1.1"] +method="native" + +[[inputs.http]] + ## One or more URLs from which to read formatted metrics. + urls = [ + "http://localhost:32000/Driver/PPBAdvance/Report?DriverUniqueKey=832d0c8d-4774-4cee-a3c8-af876f6f281c" + ] + name_override = "PPBA" + data_format = "json" + tagexclude = ["url", "host"] + json_query="data.message" + json_string_fields=["dewHubStatus_hub_?_current_isOverCurrent","powerHubStatus_state","powerVariablePortStatus_state"]