mirror of
https://github.com/pstadler/metrics.sh.git
synced 2025-11-29 21:33:29 -05:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be4039d647 | ||
|
|
636feccd7c | ||
|
|
697b978d95 | ||
|
|
d8cd496543 | ||
|
|
215e50ecea | ||
|
|
5c0962e12b | ||
|
|
85ee93aec3 | ||
|
|
3a9c155b7e | ||
|
|
81ca6e0e57 |
27
README.md
27
README.md
@@ -16,7 +16,7 @@ metrics.sh is a lightweight metrics collection and forwarding daemon implemented
|
||||
|
||||
```
|
||||
$ ./metrics.sh --help
|
||||
|
||||
|
||||
Usage: ./metrics.sh [-d] [-h] [-v] [-c] [-m] [-r] [-i] [-C] [-u]
|
||||
|
||||
Options:
|
||||
@@ -59,16 +59,17 @@ Metric | Description
|
||||
|
||||
## Reporters
|
||||
|
||||
Reporter | Description
|
||||
--------------- | -------------
|
||||
`stdout` | Write to standard out (default)
|
||||
`file` | Write to a file or named pipe
|
||||
`udp` | Send data to any service via UDP
|
||||
`statsd` | Send data to [StatsD](https://github.com/etsy/statsd)
|
||||
`influxdb` | Send data to [InfluxDB](http://influxdb.com/)
|
||||
`prometheus` | Provide HTTP endpoint for [Prometheus](http://prometheus.io/)
|
||||
`keen_io` | Send data to [Keen IO](https://keen.io)
|
||||
`stathat` | Send data to [StatHat](https://www.stathat.com)
|
||||
Reporter | Description
|
||||
---------------- | -------------
|
||||
`stdout` | Write to standard out (default)
|
||||
`file` | Write to a file or named pipe
|
||||
`udp` | Send data to any service via UDP
|
||||
`statsd` | Send data to [StatsD](https://github.com/etsy/statsd)
|
||||
`influxdb` | Send data to [InfluxDB](http://influxdb.com/)
|
||||
`prometheus` | Provide HTTP endpoint for [Prometheus](http://prometheus.io/)
|
||||
`keen_io` | Send data to [Keen IO](https://keen.io)
|
||||
`stathat` | Send data to [StatHat](https://www.stathat.com)
|
||||
`logentries_com` | Send data to [Logentries](https://logentries.com/)
|
||||
|
||||
## Configuration
|
||||
|
||||
@@ -189,7 +190,7 @@ collect () {
|
||||
report $(du $DU_ARGS | awk '{ print $1 }')
|
||||
# If report is called with two arguments, the first one will be appended
|
||||
# to the metric name, for example `report "foo" $val` would be reported as
|
||||
# "dir_size.foo: $val". This is helpful when a metric is collecting multiple
|
||||
# "dir_size.foo: $val". This is helpful when a metric is collecting multiple
|
||||
# values like `network_io`, which reports "network_io.in" / "network_io.out".
|
||||
}
|
||||
|
||||
@@ -240,7 +241,7 @@ start () {
|
||||
|
||||
# Report metric. This function is called whenever there's a new value
|
||||
# to report. It's important to know that metrics don't call this function
|
||||
# directly, as there's some more work to be done before. You can safely assume
|
||||
# directly, as there's some more work to be done before. You can safely assume
|
||||
# that arguments passed to this function are sanitized and valid.
|
||||
report () {
|
||||
local metric=$1 # the name of the metric, e.g. "cpu", "cpu_alias", "cpu.foo"
|
||||
|
||||
@@ -94,7 +94,7 @@ done
|
||||
|
||||
if [ $opt_do_update = true ]; then
|
||||
if ! command_exists git; then
|
||||
echo "Error: --update requires `git` to be in the PATH"
|
||||
echo "Error: --update requires 'git' to be in the PATH"
|
||||
exit 1
|
||||
fi
|
||||
echo "Fetching latest version..."
|
||||
@@ -125,7 +125,7 @@ fi
|
||||
if [ -n "$opt_config_file" ]; then
|
||||
verbose "Loading configuration file: $opt_config_file"
|
||||
|
||||
parse_config $opt_config_file
|
||||
parse_config "$opt_config_file"
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
@@ -162,4 +162,4 @@ verbose "Using reporter: $__REPORTER"
|
||||
|
||||
echo "metrics.sh started with PID: $$"
|
||||
verbose "Collecting metrics every $INTERVAL second(s)"
|
||||
main_collect
|
||||
main_collect
|
||||
|
||||
@@ -13,11 +13,11 @@ if is_osx; then
|
||||
}
|
||||
else
|
||||
collect () {
|
||||
report $(free | awk '/buffers\/cache/ {
|
||||
printf "%.1f", 100 - $4 / ($3 + $4) * 100.0 }')
|
||||
report $(free | awk '/Mem:/ {
|
||||
printf "%.1f", 100 - $4 / ($3 + $4) * 100}')
|
||||
}
|
||||
fi
|
||||
|
||||
docs () {
|
||||
echo "Percentage of used memory."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ start () {
|
||||
report () {
|
||||
local metric=$1
|
||||
local value=$2
|
||||
local points
|
||||
local data="$metric,$__influxdb_hostname value=$value"
|
||||
curl -s -X POST $INFLUXDB_API_ENDPOINT --data-binary "$data"
|
||||
}
|
||||
|
||||
19
reporters/logentries_com.sh
Normal file
19
reporters/logentries_com.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
start () {
|
||||
if [ -z $LOGENTRIES_TOKEN ]; then
|
||||
echo "Error: logentries.com requires \$LOGENTRIES_TOKEN to be specified"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
report () {
|
||||
local metric=$1 # the name of the metric, e.g. "cpu", "cpu_alias", "cpu.foo"
|
||||
local value=$2 # int or float
|
||||
echo "$LOGENTRIES_TOKEN $metric=$value" | nc data.logentries.com 10000
|
||||
}
|
||||
|
||||
docs () {
|
||||
echo "Send data to Logentries.com using token TCP (https://docs.logentries.com/docs/input-token)"
|
||||
echo "LOGENTRIES_TOKEN=$LOGENTRIES_TOKEN"
|
||||
}
|
||||
Reference in New Issue
Block a user