From 8248275d4e015042a89e3a3d95765193641bfda1 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 24 Jun 2020 02:38:05 -0400 Subject: add tick stack stuff --- modules/tick/files/chronograf | 2 ++ modules/tick/files/influxdb.conf | 8 +++++++ modules/tick/manifests/client.pp | 24 ++++++++++++++++++++ modules/tick/manifests/client/plugin.pp | 9 ++++++++ modules/tick/manifests/server.pp | 5 +++++ modules/tick/manifests/server/chronograf.pp | 23 +++++++++++++++++++ modules/tick/manifests/server/influxdb.pp | 27 +++++++++++++++++++++++ modules/tick/manifests/server/kapacitor.pp | 25 +++++++++++++++++++++ modules/tick/templates/kapacitor.conf | 34 +++++++++++++++++++++++++++++ modules/tick/templates/plugin.conf | 4 ++++ modules/tick/templates/telegraf.conf | 16 ++++++++++++++ 11 files changed, 177 insertions(+) create mode 100644 modules/tick/files/chronograf create mode 100644 modules/tick/files/influxdb.conf create mode 100644 modules/tick/manifests/client.pp create mode 100644 modules/tick/manifests/client/plugin.pp create mode 100644 modules/tick/manifests/server.pp create mode 100644 modules/tick/manifests/server/chronograf.pp create mode 100644 modules/tick/manifests/server/influxdb.pp create mode 100644 modules/tick/manifests/server/kapacitor.pp create mode 100644 modules/tick/templates/kapacitor.conf create mode 100644 modules/tick/templates/plugin.conf create mode 100644 modules/tick/templates/telegraf.conf (limited to 'modules/tick') diff --git a/modules/tick/files/chronograf b/modules/tick/files/chronograf new file mode 100644 index 0000000..1baf186 --- /dev/null +++ b/modules/tick/files/chronograf @@ -0,0 +1,2 @@ +HOST=127.0.0.1 +BOLT_PATH=/media/persistent/chronograf/chronograf-v1.db diff --git a/modules/tick/files/influxdb.conf b/modules/tick/files/influxdb.conf new file mode 100644 index 0000000..fbacf36 --- /dev/null +++ b/modules/tick/files/influxdb.conf @@ -0,0 +1,8 @@ +[meta] + dir = "/media/persistent/influxdb/meta" +[data] + dir = "/media/persistent/influxdb/data" + wal-dir = "/media/persistent/influxdb/wal" + series-id-set-cache-size = 100 +[http] + bind-address = "127.0.0.1:8086" diff --git a/modules/tick/manifests/client.pp b/modules/tick/manifests/client.pp new file mode 100644 index 0000000..a37256b --- /dev/null +++ b/modules/tick/manifests/client.pp @@ -0,0 +1,24 @@ +class tick::client { + package::makepkg { 'telegraf-bin': + ensure => installed; + } + + $influxdb_username = secret::value('influxdb_username') + $influxdb_password = secret::value('influxdb_password') + + file { + "/etc/telegraf/telegraf.conf": + content => template("tick/telegraf.conf"), + require => Package::Makepkg['telegraf-bin'], + notify => Service['telegraf']; + "/etc/telegraf/telegraf.d": + ensure => directory, + require => Package::Makepkg['telegraf-bin']; + } + + service { 'telegraf': + ensure => running, + enable => true, + require => Package::Makepkg['telegraf-bin']; + } +} diff --git a/modules/tick/manifests/client/plugin.pp b/modules/tick/manifests/client/plugin.pp new file mode 100644 index 0000000..f9c2f83 --- /dev/null +++ b/modules/tick/manifests/client/plugin.pp @@ -0,0 +1,9 @@ +define tick::client::plugin($opts = {}) { + include tick::client + + file { "/etc/telegraf/telegraf.d/${name}.conf": + content => template("tick/plugin.conf"), + require => File["/etc/telegraf/telegraf.d"], + notify => Service["telegraf"]; + } +} diff --git a/modules/tick/manifests/server.pp b/modules/tick/manifests/server.pp new file mode 100644 index 0000000..81c54c9 --- /dev/null +++ b/modules/tick/manifests/server.pp @@ -0,0 +1,5 @@ +class tick::server { + contain tick::server::influxdb + contain tick::server::chronograf + contain tick::server::kapacitor +} diff --git a/modules/tick/manifests/server/chronograf.pp b/modules/tick/manifests/server/chronograf.pp new file mode 100644 index 0000000..068539e --- /dev/null +++ b/modules/tick/manifests/server/chronograf.pp @@ -0,0 +1,23 @@ +class tick::server::chronograf { + package::makepkg { 'chronograf-bin': + ensure => installed; + } + + file { + "/etc/default/chronograf": + source => "puppet:///modules/tick/chronograf", + require => Package::Makepkg['chronograf-bin'], + notify => Service['chronograf']; + "/media/persistent/chronograf": + ensure => directory, + owner => "chronograf", + group => "chronograf", + require => Package::Makepkg['chronograf-bin']; + } + + service { 'chronograf': + ensure => running, + enable => true, + require => Package::Makepkg['chronograf-bin']; + } +} diff --git a/modules/tick/manifests/server/influxdb.pp b/modules/tick/manifests/server/influxdb.pp new file mode 100644 index 0000000..66ba164 --- /dev/null +++ b/modules/tick/manifests/server/influxdb.pp @@ -0,0 +1,27 @@ +class tick::server::influxdb { + package { 'influxdb': + ensure => installed; + } + + file { + "/etc/influxdb/influxdb.conf": + source => "puppet:///modules/tick/influxdb.conf", + require => Package['influxdb'], + notify => Service['influxdb']; + "/media/persistent/influxdb": + ensure => directory, + owner => "influxdb", + group => "influxdb", + require => Package['influxdb']; + } + + service { 'influxdb': + ensure => running, + enable => true, + require => [ + Package['influxdb'], + File["/etc/influxdb/influxdb.conf"], + File["/media/persistent/influxdb"], + ]; + } +} diff --git a/modules/tick/manifests/server/kapacitor.pp b/modules/tick/manifests/server/kapacitor.pp new file mode 100644 index 0000000..c1dfcd7 --- /dev/null +++ b/modules/tick/manifests/server/kapacitor.pp @@ -0,0 +1,25 @@ +class tick::server::kapacitor { + package::makepkg { 'kapacitor-bin': + ensure => installed; + } + + $smtp_password = secret::value('kapacitor_smtp_password') + + file { + "/etc/kapacitor/kapacitor.conf": + content => template('tick/kapacitor.conf'), + require => Package::Makepkg['kapacitor-bin'], + notify => Service['kapacitor']; + "/media/persistent/kapacitor": + ensure => directory, + owner => "kapacitor", + group => "kapacitor", + require => Package::Makepkg['kapacitor-bin']; + } + + service { 'kapacitor': + ensure => running, + enable => true, + require => Package::Makepkg['kapacitor-bin']; + } +} diff --git a/modules/tick/templates/kapacitor.conf b/modules/tick/templates/kapacitor.conf new file mode 100644 index 0000000..4b6a307 --- /dev/null +++ b/modules/tick/templates/kapacitor.conf @@ -0,0 +1,34 @@ +hostname = "localhost" +data_dir = "/media/persistent/kapacitor" +[http] + bind-address = "127.0.0.1:9092" +[logging] + file = "/var/log/kapacitor/kapacitor.log" + level = "INFO" +[load] + enabled = true + dir = "/etc/kapacitor/load" +[replay] + dir = "/media/persistent/kapacitor/replay" +[storage] + boltdb = "/media/persistent/kapacitor/kapacitor.db" +[deadman] + global = true + threshold = 0.0 + interval = "10s" + id = "node 'NODE_NAME' in task '{{ .TaskName }}'" + message = "{{ .ID }} is {{ if eq .Level \"OK\" }}alive{{ else }}dead{{ end }}: {{ index .Fields \"collected\" | printf \"%0.3f\" }} points/INTERVAL." +[[influxdb]] + enabled = true + default = true + name = "localhost" + urls = ["http://localhost:8086"] +[smtp] + enabled = true + host = "mail.tozt.net" + port = 465 + username = "kapacitor-noreply@tozt.net" + password = "<%= @smtp_password %>" + from = "kapacitor-noreply@tozt.net" + global = true + state-changes-only = true diff --git a/modules/tick/templates/plugin.conf b/modules/tick/templates/plugin.conf new file mode 100644 index 0000000..38b4525 --- /dev/null +++ b/modules/tick/templates/plugin.conf @@ -0,0 +1,4 @@ +[[inputs.<%= @name %>]] +<%- @opts.each do |k, v| -%> +<%= k %> = <%= JSON.dump(v) %> +<%- end -%> diff --git a/modules/tick/templates/telegraf.conf b/modules/tick/templates/telegraf.conf new file mode 100644 index 0000000..ba307bd --- /dev/null +++ b/modules/tick/templates/telegraf.conf @@ -0,0 +1,16 @@ +[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 = "" + hostname = "" + omit_hostname = false +[[outputs.influxdb]] + urls = ["https://influxdb.tozt.net"] + username = "<%= @influxdb_username %>" + password = "<%= @influxdb_password %>" -- cgit v1.2.3-54-g00ecf