summaryrefslogtreecommitdiffstats
path: root/modules/tick
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-06-24 02:38:05 -0400
committerJesse Luehrs <doy@tozt.net>2020-07-04 16:32:25 -0400
commit8248275d4e015042a89e3a3d95765193641bfda1 (patch)
tree578e5a8b3c1af6f30e82067a44886e888f34c612 /modules/tick
parentf7cb87b82615fbb0d4d6b63f709692e9732aeabf (diff)
downloadpuppet-tozt-8248275d4e015042a89e3a3d95765193641bfda1.tar.gz
puppet-tozt-8248275d4e015042a89e3a3d95765193641bfda1.zip
add tick stack stuff
Diffstat (limited to 'modules/tick')
-rw-r--r--modules/tick/files/chronograf2
-rw-r--r--modules/tick/files/influxdb.conf8
-rw-r--r--modules/tick/manifests/client.pp24
-rw-r--r--modules/tick/manifests/client/plugin.pp9
-rw-r--r--modules/tick/manifests/server.pp5
-rw-r--r--modules/tick/manifests/server/chronograf.pp23
-rw-r--r--modules/tick/manifests/server/influxdb.pp27
-rw-r--r--modules/tick/manifests/server/kapacitor.pp25
-rw-r--r--modules/tick/templates/kapacitor.conf34
-rw-r--r--modules/tick/templates/plugin.conf4
-rw-r--r--modules/tick/templates/telegraf.conf16
11 files changed, 177 insertions, 0 deletions
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 %>"