Created
September 24, 2018 15:28
-
-
Save lihaoml/8f9f6d702ee6f7f3ddfaa77cd11bbc1c to your computer and use it in GitHub Desktop.
telegraf.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 prepend | |
# 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 | |
## For failed writes, telegraf will cache metric_buffer_limit metrics for each | |
## output, and will flush this buffer on a successful write. Oldest metrics | |
## are dropped first when this buffer fills. | |
## This buffer only fills when writes fail to output plugin(s). | |
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" | |
## 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" | |
## 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. | |
## Valid time units are "ns", "us" (or "µs"), "ms", "s". | |
precision = "" | |
## Logging configuration: | |
## Run telegraf with debug log messages. | |
debug = false | |
## Run telegraf in quiet mode (error log messages only). | |
quiet = false | |
## Specify the log file name. The empty string means to log to stderr. | |
logfile = "" | |
## 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 | |
############################################################################### | |
# OUTPUT PLUGINS # | |
############################################################################### | |
# Configuration for sending metrics to InfluxDB | |
[[outputs.influxdb]] | |
## The full HTTP or UDP URL for your InfluxDB instance. | |
## | |
## Multiple URLs can be specified for a single cluster, only ONE of the | |
## urls will be written to each interval. | |
# urls = ["unix:///var/run/influxdb.sock"] | |
# urls = ["udp://127.0.0.1:8089"] | |
# urls = ["http://127.0.0.1:8086"] | |
## The target database for metrics; will be created as needed. | |
# database = "telegraf" | |
## If true, no CREATE DATABASE queries will be sent. Set to true when using | |
## Telegraf with a user without permissions to create databases or when the | |
## database already exists. | |
# skip_database_creation = false | |
## Name of existing retention policy to write to. Empty string writes to | |
## the default retention policy. Only takes effect when using HTTP. | |
# retention_policy = "" | |
## Write consistency (clusters only), can be: "any", "one", "quorum", "all". | |
## Only takes effect when using HTTP. | |
# write_consistency = "any" | |
## Timeout for HTTP messages. | |
# timeout = "5s" | |
## HTTP Basic Auth | |
# username = "telegraf" | |
# password = "metricsmetricsmetricsmetrics" | |
## HTTP User-Agent | |
# user_agent = "telegraf" | |
## UDP payload size is the maximum packet size to send. | |
# udp_payload = 512 | |
## 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 | |
## 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" | |
## Additional HTTP headers | |
# http_headers = {"X-Special-Header" = "Special-Value"} | |
## HTTP Content-Encoding for write request body, can be set to "gzip" to | |
## compress body or "identity" to apply no encoding. | |
# content_encoding = "identity" | |
## 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 | |
############################################################################### | |
# PROCESSOR PLUGINS # | |
############################################################################### | |
# # 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. | |
# ## <target-type> = [<tag-key>...] | |
# [processors.converter.tags] | |
# string = [] | |
# integer = [] | |
# unsigned = [] | |
# boolean = [] | |
# float = [] | |
# | |
# ## 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. | |
# ## <target-type> = [<field-key>...] | |
# [processors.converter.fields] | |
# tag = [] | |
# string = [] | |
# integer = [] | |
# unsigned = [] | |
# boolean = [] | |
# float = [] | |
# # Map enum values according to given table. | |
# [[processors.enum]] | |
# [[processors.enum.mapping]] | |
# ## Name of the field to map | |
# field = "status" | |
# | |
# ## Destination field to be used for the mapped value. By default the source | |
# ## 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, the unmodified value for the field will be used if no | |
# ## match is found. | |
# # default = 0 | |
# | |
# ## Table of mappings | |
# [processors.enum.mapping.value_mappings] | |
# green = 1 | |
# yellow = 2 | |
# red = 3 | |
# # 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/tag(s) and add the result in a new metric | |
# [[processors.parser]] | |
# ## The name of the fields whose value will be parsed. | |
# parse_fields = [] | |
# | |
# ## If true, incoming metrics are not emitted. | |
# drop_original = false | |
# | |
# ## If set to override, emitted metrics will be merged by overriding the | |
# ## original metric using the newly parsed metrics. | |
# merge = "override" | |
# | |
# ## 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" | |
# # Print all metrics that pass through this filter. | |
# [[processors.printer]] | |
# # Transforms tag and field values with regex pattern | |
# [[processors.regex]] | |
# ## Tag and field conversions defined in a separate sub-tables | |
# # [[processors.regex.tags]] | |
# # ## Tag to change | |
# # key = "resp_code" | |
# # ## Regular expression to match on a tag value | |
# # pattern = "^(\\d)\\d\\d$" | |
# # ## Pattern for constructing a new value (${1} represents first subgroup) | |
# # replacement = "${1}xx" | |
# | |
# # [[processors.regex.fields]] | |
# # key = "request" | |
# # ## All the power of the Go regular expressions available here | |
# # ## For example, named subgroups | |
# # pattern = "^/api(?P<method>/[\\w/]+)\\S*" | |
# # replacement = "${method}" | |
# # ## If result_key is present, a new field will be created | |
# # ## instead of changing existing field | |
# # result_key = "method" | |
# | |
# ## Multiple conversions may be applied for one field sequentially | |
# ## Let's extract one more value | |
# # [[processors.regex.fields]] | |
# # key = "request" | |
# # pattern = ".*category=(\\w+).*" | |
# # replacement = "${1}" | |
# # result_key = "search_category" | |
# # Rename measurements, tags, and fields that pass through this filter. | |
# [[processors.rename]] | |
# # Perform string processing on tags, fields, and measurements | |
# [[processors.strings]] | |
# ## Convert a tag value to uppercase | |
# # [[processors.strings.uppercase]] | |
# # tag = "method" | |
# | |
# ## Convert a field value to lowercase and store in a new field | |
# # [[processors.strings.lowercase]] | |
# # field = "uri_stem" | |
# # dest = "uri_stem_normalised" | |
# | |
# ## 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" | |
# # Print all metrics that pass through this filter. | |
# [[processors.topk]] | |
# ## How many seconds between aggregations | |
# # period = 10 | |
# | |
# ## How many top metrics to return | |
# # 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 = ['*'] | |
# | |
# ## Over which fields are the top k are calculated | |
# # fields = ["value"] | |
# | |
# ## What aggregation 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_agregate_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 = [] | |
############################################################################### | |
# AGGREGATOR PLUGINS # | |
############################################################################### | |
# # Keep the aggregate basicstats of each metric passing through. | |
# [[aggregators.basicstats]] | |
# ## 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 | |
# # Create aggregate histograms. | |
# [[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 | |
# | |
# ## Example config that aggregates all fields of the metric. | |
# # [[aggregators.histogram.config]] | |
# # ## The set of buckets. | |
# # 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]] | |
# # ## The set of buckets. | |
# # 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"] | |
# # 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 | |
# # Count the occurance 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 = [] | |
############################################################################### | |
# INPUT PLUGINS # | |
############################################################################### | |
# Read metrics about cpu usage | |
[[inputs.cpu]] | |
## Whether to report per-cpu stats or not | |
percpu = false | |
## 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. | |
report_active = true | |
# Read metrics about memory usage | |
[[inputs.mem]] | |
# no configuration | |
# Read metrics about swap memory usage | |
[[inputs.swap]] | |
# no configuration | |
# Read metrics about disk usage by mount point | |
[[inputs.disk]] | |
## By default stats will be gathered for all mount points. | |
## Set mount_points will restrict the stats to only the specified mount points. | |
# mount_points = ["/"] | |
## Ignore mount points by filesystem type. | |
## ignore_fs = ["tmpfs", "devtmpfs", "devfs", "overlay", "aufs", "squashfs"] | |
########################################### | |
# Monitor process cpu and memory usage | |
[[inputs.procstat]] | |
## PID file to monitor process | |
# pid_file = "/var/run/nginx.pid" | |
## executable name (ie, pgrep <exe>) | |
# exe = "nginx" | |
## pattern as argument for pgrep (ie, pgrep -f <pattern>) | |
# pattern = "nginx" | |
## user as argument for pgrep (ie, pgrep -u <user>) | |
# user = "nginx" | |
## Systemd unit name | |
# systemd_unit = "nginx.service" | |
## CGroup name or path | |
# cgroup = "systemd/system.slice/nginx.service" | |
exe = "grafana" | |
prefix = "grafana" | |
## override for process_name | |
## This is optional; default is sourced from /proc/<pid>/status | |
# process_name = "bar" | |
## Field name prefix | |
# prefix = "" | |
## Add PID as a tag instead of a field; useful to differentiate between | |
## processes whose tags are otherwise the same. Can create a large number | |
## of series, use judiciously. | |
# pid_tag = false | |
## Method to use when finding process IDs. Can be one of 'pgrep', or | |
## 'native'. The pgrep finder calls the pgrep executable in the PATH while | |
## the native finder performs the search directly in a manor dependent on the | |
## platform. Default is 'pgrep' | |
# pid_finder = "pgrep" | |
[[inputs.procstat]] | |
exe = "telegraf" | |
prefix = "telegraf" | |
[[inputs.procstat]] | |
exe = "mds_record" | |
prefix = "mds_record" | |
[[inputs.procstat]] | |
exe = "influxd" | |
prefix = "influxd" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment