-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.conf
209 lines (173 loc) · 8.57 KB
/
example.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# This is an example configuration file for Goplum that contains all possible alerts and checks.
defaults {
interval = 10s # optional (default = 30s), can also be specified per-check
timeout = 40s # optional (default = 20s), can also be specified per-check
alerts = ["sms"] # optional (default = ["*"]), can also be specified per-check
good_threshold = 3 # optional (default = 2), can also be specified per-check
failing_threshold = 3 # optional (default = 2), can also be specified per-check
}
# ---------------------------------------------------------------------------------------------------------------------
# Discord plugin
# ---------------------------------------------------------------------------------------------------------------------
alert discord.message "discord" {
url = "https://discord.com/api/webhooks/.../..."
}
# ---------------------------------------------------------------------------------------------------------------------
# Heartbeat plugin
# ---------------------------------------------------------------------------------------------------------------------
# If used, the heartbeat plugin requires some special configuration:
plugin heartbeat {
port = 1234
path = "/heartbeat" # optional
}
# Checks that a heartbeat with the given ID has been received within the time period
check heartbeat.received "received" {
id = "fa27404d1ccd91ec8133f4645c301707"
within = 1d2h
}
# ---------------------------------------------------------------------------------------------------------------------
# HTTP plugin
# ---------------------------------------------------------------------------------------------------------------------
# Gets a webpage, checks for content in it, and makes sure the cert is valid for a period of time.
check http.get "get" {
url = "https://www.example.com/"
content = "Example Domain" # optional
content_expected = false # optional (default=true)
certificate_validity = 10d # optional
min_status_code = 400 # optional (default=100)
max_status_code = 499 # optional (default=399)
auth {
username = "acidburn" # optional
password = "HackThePlanet" # optional
}
}
# Gets the status of a service from a HTTP healthcheck endpoint.
check http.healthcheck "health" {
url = "https://www.example.com/health"
check_components = true # optional
auth {
username = "acidburn" # optional
password = "HackThePlanet" # optional
}
}
# Posts alert details to a given URL.
alert http.webhook "webhook" {
url = "https://www.example.com/incoming"
}
# ---------------------------------------------------------------------------------------------------------------------
# Microsoft Teams plugin
# ---------------------------------------------------------------------------------------------------------------------
alert msteams.message "teams" {
url = "https://outlook.office.com/webhook/...../IncomingWebhook/....."
title = "Service alert" # optional (default = Goplum alert)
theme = "#ff0000" # optional (default = #6c2b8f)
}
# ---------------------------------------------------------------------------------------------------------------------
# Network plugin
# ---------------------------------------------------------------------------------------------------------------------
# Tries to open a socket to a network service.
check network.connect "socket" {
address = "hostname:1234"
network = "tcp6" # optional (default = tcp)
}
# Scans a range of ports and alerts if any are unexpectedly open
check network.portscan "open ports" {
address = "hostname"
network = "tcp6" # optional (default = tcp)
start = 1 # optional (default = 1)
end = 1024 # optional (default = 65535)
allow = [80, 443] # optional (default = [])
concurrent_connections = 200 # optional (default = 100)
connection_timeout = 3s # optional (default = 5s)
}
# ---------------------------------------------------------------------------------------------------------------------
# Pushover plugin
# ---------------------------------------------------------------------------------------------------------------------
# Sends alerts as a push notification via the Pushover service.
alert pushover.message "push" {
token = "application-token"
key = "user-or-group-key"
devices = ["iphone", "nexus17"] # optional
failing {
priority = 2 # optional
sound = "siren" # optional
retry = 30s # optional (required for priority=2)
expire = 1h # optional (required for priority=2)
}
recovering {
priority = 1 # optional
sound = "bugle" # optional
}
}
# ---------------------------------------------------------------------------------------------------------------------
# Slack plugin
# ---------------------------------------------------------------------------------------------------------------------
# Sends alerts as a slack message.
alert slack.message "slack" {
url = "https://hooks.slack.com/services/XXXXXXXXX/00000000000/abcdefghijklmnopqrstuvwxyz"
}
# ---------------------------------------------------------------------------------------------------------------------
# SMTP plugin
# ---------------------------------------------------------------------------------------------------------------------
# Sends alerts as a mail message over SMTP.
alert smtp.send "smtp" {
server = "mail.example.com:25"
username = "goplum"
password = "example"
subject_prefix = "ALERT: " # optional
from = "[email protected]"
to = "[email protected]"
}
# ---------------------------------------------------------------------------------------------------------------------
# SNMP plugin
# ---------------------------------------------------------------------------------------------------------------------
check snmp.int "snmp int" {
agent = "192.168.1.1"
port = 161 # optional (default = 161)
community = "public" # optional (default = public)
oid = [".1.3.6.1.4.1.2021.4.11.0", ".1.3.6.1.4.1.2021.4.4"]
at_least = 10000 # optional (one of at_least and at_most should be set)
at_most = 90000 # optional (one of at_least and at_most should be set)
}
check snmp.string "snmp string" {
agent = "192.168.1.1"
port = 161 # optional (default = 161)
community = "public" # optional (default = public)
oid = ".1.3.6.1.4.1.2021.9.1.2"
content = "HDD"
content_expected = true # optional (default = true)
}
# ---------------------------------------------------------------------------------------------------------------------
# Twilio plugin
# ---------------------------------------------------------------------------------------------------------------------
# Reads alerts over a phone call using Twilio
alert twilio.call "phone" {
sid = "twilio sid"
token = "twilio token"
from = "+01 867 5309"
to = "+01 867 5309"
}
# Sends alerts over SMS using Twilio
alert twilio.sms "sms" {
sid = "twilio sid"
token = "twilio token"
from = "+01 867 5309"
to = "+01 867 5309"
}
# ---------------------------------------------------------------------------------------------------------------------
# Debug plugin
# ---------------------------------------------------------------------------------------------------------------------
# Passes/fails based on a random number.
check debug.random "random" {
percent_good = 0.8 # optional (default = 0.5)
}
# Writes alert messages to system out.
alert debug.sysout "sysout" {}
# ---------------------------------------------------------------------------------------------------------------------
# Exec plugin
# ---------------------------------------------------------------------------------------------------------------------
# Executes a random script and uses its return value to determine status.
check exec.command "script" {
name = "/path/to/script.sh"
arguments = ["-c", "3", "--verbose"] # optional
}