diff --git a/roles/telegraf/handlers/main.yml b/roles/telegraf/handlers/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..358f66089d37426ab8e5f1e5e882c367d424a135 --- /dev/null +++ b/roles/telegraf/handlers/main.yml @@ -0,0 +1,5 @@ +- name: restart telegraf + service: + name: telegraf + state: restarted + become: true diff --git a/roles/telegraf/tasks/main.yml b/roles/telegraf/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..df2e976eb8320de4d59b42c04b5c6207f2ab19c9 --- /dev/null +++ b/roles/telegraf/tasks/main.yml @@ -0,0 +1,37 @@ +- name: Install Telegraf from URL [RHEL/CentOS] + yum: + name: "{{ telegraf_install_rpm_url }}" + state: present + when: ansible_os_family == "RedHat" + become: true + become_user: root + +- name: Download Telegraf package via URL [Debian/Ubuntu] + get_url: + url: "{{ telegraf_install_url }}" + dest: /tmp/telegraf-ansible-download.deb + when: ansible_os_family == "Debian" + become: true + become_user: root + +- name: Install Telegraf package + apt: + deb: /tmp/telegraf-ansible-download.deb + state: present + when: ansible_os_family == "Debian" + become: true + become_user: root + +- name: Install Telegraf config + template: + src: telegraf.conf.j2 + dest: /etc/telegraf/telegraf.conf + owner: telegraf + group: telegraf + mode: '640' + notify: + - "restart telegraf" + become: true + become_user: root + + diff --git a/roles/telegraf/templates/telegraf.conf.j2 b/roles/telegraf/templates/telegraf.conf.j2 new file mode 100644 index 0000000000000000000000000000000000000000..f25fda3c9389f6a18c83ad6890165b078d957017 --- /dev/null +++ b/roles/telegraf/templates/telegraf.conf.j2 @@ -0,0 +1,117 @@ +# 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. + +# Global tags can be specified here in key="value" format. +[tags] + # dc = "us-east-1" # will tag all metrics with dc=us-east-1 + # rack = "1a" + +# Configuration for telegraf agent +[agent] + # Default data collection interval for all plugins + interval = "10s" + # Rounds collection interval to 'interval' + # ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + # Default data flushing interval for all outputs. You should not set this below + # interval. Maximum flush_interval will be flush_interval + flush_jitter + flush_interval = "60s" + # 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 = "5s" + + # Run telegraf in debug mode + debug = false + # Override default hostname, if empty use os.Hostname() + hostname = "" + + +############################################################################### +# OUTPUTS # +############################################################################### + +# Configuration for influxdb server to send metrics to +[[outputs.influxdb]] + # The full HTTP or UDP endpoint URL for your InfluxDB instance. + # Multiple urls can be specified but it is assumed that they are part of the same + # cluster, this means that only ONE of the urls will be written to each interval. + # urls = ["udp://localhost:8089"] # UDP endpoint example + urls = ["{{ influxdb_server }}"] # required + # The target database for metrics (telegraf will create it if not exists) + database = "telegraf" # required + # Precision of writes, valid values are n, u, ms, s, m, and h + # note: using second precision greatly helps InfluxDB compression + precision = "s" + + # Connection timeout (for the connection with InfluxDB), formatted as a string. + # If not provided, will default to 0 (no timeout) + # timeout = "5s" + # username = "telegraf" + # password = "metricsmetricsmetricsmetrics" + username = "{{ influxdb_user }}" + password = "{{ influxdb_password }}" + # Set the user agent for HTTP POSTs (can be useful for log differentiation) + # user_agent = "telegraf" + # Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes) + # udp_payload = 512 + + +############################################################################### +# INPUTS # +############################################################################### + +# 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 + # Comment this line if you want the raw CPU time metrics + drop = ["time_*"] + +# Read metrics about disk usage by mount point +[[inputs.disk]] + # By default, telegraf gather stats for all mountpoints. + # Setting mountpoints will restrict the stats to the specified mountpoints. + # mount_points=["/"] + +# Read metrics about disk IO by device +[[inputs.diskio]] + # By default, telegraf will gather stats for all devices including + # disk partitions. + # Setting devices will restrict the stats to the specified devices. + # devices = ["sda", "sdb"] + # Uncomment the following line if you do not need disk serial numbers. + # skip_serial_number = true + +# Read metrics about memory usage +[[inputs.mem]] + # no configuration + +# Read metrics about swap memory usage +[[inputs.swap]] + # no configuration + +# Read metrics about system load & uptime +[[inputs.system]] + # no configuration + +[[inputs.net]] + # no configuration + +[[inputs.netstat]] + # no configuration + +############################################################################### +# SERVICE INPUTS # +############################################################################### diff --git a/roles/telegraf/vars/main.yml b/roles/telegraf/vars/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..9e2c5c5a63f1ee5de9e6f2d53201c615997dc187 --- /dev/null +++ b/roles/telegraf/vars/main.yml @@ -0,0 +1,2 @@ +telegraf_install_rpm_url: https://dl.influxdata.com/telegraf/releases/telegraf-1.12.6-1.x86_64.rpm +telegraf_install_deb_url: https://dl.influxdata.com/telegraf/releases/telegraf_1.12.6-1_amd64.deb