author | Mahlon E. Smith <mahlon@martini.nu> |
Wed, 13 Jun 2018 08:54:19 -0700 | |
changeset 17 | e4f0fd44734d |
parent 15 | d4776d62b193 |
child 20 | 00a38d493f2c |
permissions | -rw-r--r-- |
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
1 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
2 |
Arborist-SNMP |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
3 |
============= |
0 | 4 |
|
5 |
home |
|
6 |
: http://bitbucket.org/mahlon/Arborist-SNMP |
|
7 |
||
8 |
code |
|
9 |
: http://code.martini.nu/Arborist-SNMP |
|
10 |
||
11 |
||
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
12 |
Description |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
13 |
----------- |
0 | 14 |
|
15 |
Arborist is a monitoring toolkit that follows the UNIX philosophy |
|
16 |
of small parts and loose coupling for stability, reliability, and |
|
17 |
customizability. |
|
18 |
||
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
19 |
This adds various SNMP support to Arborist's monitoring, specifically |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
20 |
for OIDS involving: |
0 | 21 |
|
22 |
- Disk space capacity |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
23 |
- System CPU utilization |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
24 |
- Memory and swap usage |
0 | 25 |
- Running process checks |
26 |
||
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
27 |
It tries to provide sane defaults, while allowing fine grained settings |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
28 |
per resource node. Both Windows and UCD-SNMP systems are supported. |
0 | 29 |
|
30 |
||
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
31 |
Prerequisites |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
32 |
------------- |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
33 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
34 |
* Ruby 2.3 or better |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
35 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
36 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
37 |
Installation |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
38 |
------------ |
0 | 39 |
|
40 |
$ gem install arborist-snmp |
|
41 |
||
42 |
||
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
43 |
Configuration |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
44 |
------------- |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
45 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
46 |
Global configuration overrides can be added to the Arborist config file, |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
47 |
under the `snmp` key. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
48 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
49 |
The defaults are as follows: |
0 | 50 |
|
11 | 51 |
``` |
52 |
arborist: |
|
53 |
snmp: |
|
17
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
54 |
timeout: 2 |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
55 |
retries: 1 |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
56 |
community: public |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
57 |
version: 2c |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
58 |
port: 161 |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
59 |
batchsize: 25 |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
60 |
cpu: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
61 |
warn_at: 80 |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
62 |
disk: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
63 |
warn_at: 90 |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
64 |
include: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
65 |
exclude: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
66 |
- "^/dev(/.+)?$" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
67 |
- "/dev$" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
68 |
- "^/net(/.+)?$" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
69 |
- "/proc$" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
70 |
- "^/run$" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
71 |
- "^/sys/" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
72 |
- "/sys$" |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
73 |
processes: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
74 |
check: [] |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
75 |
memory: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
76 |
physical_warn_at: |
e4f0fd44734d
Fix up the docs, make the default disk exclusion list more useful.
Mahlon E. Smith <mahlon@martini.nu>
parents:
15
diff
changeset
|
77 |
swap_warn_at: 60 |
11 | 78 |
``` |
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
79 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
80 |
The `warn_at` keys imply usage capacity as a percentage. ie: "Warn me |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
81 |
when a disk mount point is at 90 percent utilization." |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
82 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
83 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
84 |
### Library Options |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
85 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
86 |
* **timeout**: How long to wait for an SNMP response, in seconds? |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
87 |
* **retries**: If an error occurs during SNMP communication, try again this many times before giving up. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
88 |
* **community**: The SNMP community name for reading data. |
14
d5cb8bd33170
Although faster, once aiming a few thousand nodes at net-snmp2 it leaks memory like a sieve. Use 'netsnmp' instead.
Mahlon E. Smith <mahlon@martini.nu>
parents:
11
diff
changeset
|
89 |
* **version**: The SNMP protocol version. v1, v2c, and v3 are supported. |
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
90 |
* **port**: The UDP port SNMP is listening on. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
91 |
* **batchsize**: How many hosts to gather SNMP data on simultaneously. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
92 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
93 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
94 |
### Category Options and Behavior |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
95 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
96 |
#### CPU |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
97 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
98 |
* **warn_at**: Set the node to a `warning` state when utilization is at or over this percentage. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
99 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
100 |
Utilization takes into account CPU core counts, and uses the 5 minute |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
101 |
load average to calculate a percentage of current CPU use. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
102 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
103 |
2 properties are set on the node. `cpu` contains the detected CPU count |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
104 |
and current utilization. `load` contains the 1, 5, and 15 minute load |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
105 |
averages of the machine. |
0 | 106 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
107 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
108 |
#### Disk |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
109 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
110 |
* **warn_at**: Set the node to a `warning` state when disk capacity is at or over this amount. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
111 |
You can also set this to a Hash, keyed on mount name, if you want differing |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
112 |
warning values per mount point. A mount point that is at 100% capacity will |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
113 |
be explicity set to `down`, as the resource it represents has been exhausted. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
114 |
* **include**: String or Array of Strings. If present, only matching mount points are |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
115 |
considered while performing checks. These are treated as regular expressions. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
116 |
* **exclude**: String or Array of Strings. If present, matching mount point are removed |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
117 |
from evaluation. These are treated as regular expressions. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
118 |
|
15
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
119 |
A single property "mounts" is set on the node, which is a hash keyed by |
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
120 |
mountpoint, with current capacity values. |
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
121 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
122 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
123 |
#### Memory |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
124 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
125 |
* **physical_warn_at**: Set the node to a `warning` state when RAM utilization is at or over this percentage. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
126 |
* **swap_warn_at**: Set the node to a `warning` state when swap utilization is at or over this percentage. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
127 |
|
11 | 128 |
Warnings are only set for swap by default, since that is usually a |
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
129 |
better indication of an impending problem. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
130 |
|
15
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
131 |
2 properties are set on the node, "memory" and "swap". Each is a Hash |
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
132 |
that contains current usage and remaining available. |
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
133 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
134 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
135 |
#### Processes |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
136 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
137 |
* **check**: String or Array of Strings. A list of processes to check if running. These are |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
138 |
treated as regular expressions, and include process arguments. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
139 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
140 |
If any process in the list is not found in the process table, the |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
141 |
resource is set to a `down` state. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
142 |
|
15
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
143 |
A single property is set on the node, a "counts" key that contains the |
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
144 |
current number of running processes. |
d4776d62b193
Include set property information for each monitor type.
Mahlon E. Smith <mahlon@martini.nu>
parents:
14
diff
changeset
|
145 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
146 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
147 |
Examples |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
148 |
-------- |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
149 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
150 |
In the simplest form, using default behaviors and settings, here's an |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
151 |
example Monitor configuration: |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
152 |
|
11 | 153 |
``` |
154 |
require 'arborist/snmp' |
|
155 |
||
156 |
Arborist::Monitor 'cpu load check', :cpu do |
|
157 |
every 1.minute |
|
158 |
match type: 'resource', category: 'cpu' |
|
159 |
exec( Arborist::Monitor::SNMP::CPU ) |
|
160 |
end |
|
0 | 161 |
|
11 | 162 |
Arborist::Monitor 'partition capacity', :disk do |
163 |
every 1.minute |
|
164 |
match type: 'resource', category: 'disk' |
|
165 |
exec( Arborist::Monitor::SNMP::Disk ) |
|
166 |
end |
|
167 |
||
168 |
Arborist::Monitor 'process checks', :proc do |
|
169 |
every 1.minute |
|
170 |
match type: 'resource', category: 'process' |
|
171 |
exec( Arborist::Monitor::SNMP::Process ) |
|
172 |
end |
|
173 |
||
174 |
Arborist::Monitor 'memory', :memory do |
|
175 |
every 1.minute |
|
176 |
match type: 'resource', category: 'memory' |
|
177 |
exec( Arborist::Monitor::SNMP::Memory ) |
|
178 |
end |
|
179 |
``` |
|
0 | 180 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
181 |
Additionally, if you'd like these SNMP monitors to rely on the SNMP |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
182 |
service itself, you can add a UDP check for that. |
0 | 183 |
|
11 | 184 |
``` |
185 |
Arborist::Monitor 'udp service checks', :udp do |
|
186 |
every 30.seconds |
|
187 |
match type: 'service', protocol: 'udp' |
|
188 |
exec( Arborist::Monitor::Socket::UDP ) |
|
189 |
end |
|
190 |
``` |
|
0 | 191 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
192 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
193 |
And a default node declaration: |
4
e6eb11b1e00d
Refactor. Move all SNMP "sections" to their own classes.
Mahlon E. Smith <mahlon@martini.nu>
parents:
1
diff
changeset
|
194 |
|
11 | 195 |
``` |
196 |
Arborist::Host 'example' do |
|
197 |
description 'An example host' |
|
198 |
address 'demo.example.com' |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
199 |
|
11 | 200 |
resource 'cpu' |
201 |
resource 'memory' |
|
202 |
resource 'disk' |
|
203 |
end |
|
204 |
``` |
|
4
e6eb11b1e00d
Refactor. Move all SNMP "sections" to their own classes.
Mahlon E. Smith <mahlon@martini.nu>
parents:
1
diff
changeset
|
205 |
|
e6eb11b1e00d
Refactor. Move all SNMP "sections" to their own classes.
Mahlon E. Smith <mahlon@martini.nu>
parents:
1
diff
changeset
|
206 |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
207 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
208 |
All configuration can be overridden from the defaults using the `config` |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
209 |
pragma, per node. Here's a more elaborate example that performs the following: |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
210 |
|
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
211 |
* All SNMP monitored resources are quieted if the SNMP service itself is unavailable. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
212 |
* Only monitor specific disk partitions, warning at different capacities . |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
213 |
* Ensure the 'important' processing is running with the '--production' flag. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
214 |
* Warns at 95% memory utilization OR 10% swap. |
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
215 |
|
10
794cd469a1a2
README.md edited online with Bitbucket
Mahlon E. Smith <mahlon@martini.nu>
parents:
9
diff
changeset
|
216 |
- |
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
217 |
|
11 | 218 |
``` |
219 |
Arborist::Host 'example' do |
|
220 |
description 'An example host' |
|
221 |
address 'demo.example.com' |
|
222 |
||
223 |
service 'snmp', protocol: 'udp' |
|
224 |
||
225 |
resource 'cpu', description: 'machine cpu load' do |
|
226 |
depends_on 'example-snmp' |
|
227 |
end |
|
228 |
||
229 |
resource 'memory', description: 'machine ram and swap' do |
|
230 |
depends_on 'example-snmp' |
|
231 |
config physical_warn_at: 95, swap_warn_at: 10 |
|
232 |
end |
|
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
233 |
|
11 | 234 |
resource 'disk', description: 'partition capacity' do |
235 |
depends_on 'example-snmp' |
|
236 |
config \ |
|
237 |
include: [ |
|
238 |
'^/tmp', |
|
239 |
'^/var' |
|
240 |
], |
|
241 |
warn_at: { |
|
242 |
'/tmp' => 50, |
|
243 |
'/var' => 80 |
|
244 |
} |
|
245 |
end |
|
0 | 246 |
|
11 | 247 |
resource 'process' do |
248 |
depends_on 'example-snmp' |
|
249 |
config check: 'important --production' |
|
250 |
end |
|
251 |
end |
|
252 |
``` |
|
0 | 253 |
|
4
e6eb11b1e00d
Refactor. Move all SNMP "sections" to their own classes.
Mahlon E. Smith <mahlon@martini.nu>
parents:
1
diff
changeset
|
254 |
|
0 | 255 |
## License |
256 |
||
8
e0b7c95a154f
Refactor for real world usage and latest Arborist behaviors.
Mahlon E. Smith <mahlon@martini.nu>
parents:
6
diff
changeset
|
257 |
Copyright (c) 2016-2018 Michael Granger and Mahlon E. Smith |
0 | 258 |
All rights reserved. |
259 |
||
260 |
Redistribution and use in source and binary forms, with or without |
|
261 |
modification, are permitted provided that the following conditions are met: |
|
262 |
||
263 |
* Redistributions of source code must retain the above copyright notice, |
|
264 |
this list of conditions and the following disclaimer. |
|
265 |
||
266 |
* Redistributions in binary form must reproduce the above copyright notice, |
|
267 |
this list of conditions and the following disclaimer in the documentation |
|
268 |
and/or other materials provided with the distribution. |
|
269 |
||
270 |
* Neither the name of the author/s, nor the names of the project's |
|
271 |
contributors may be used to endorse or promote products derived from this |
|
272 |
software without specific prior written permission. |
|
273 |
||
274 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
275 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
276 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
277 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE |
|
278 |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
279 |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|
280 |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|
281 |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
282 |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
283 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
284 |
||
285 |