install_monitoring: added ffmyk-influx
parent
892aba103d
commit
eade06a930
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
cd /opt/ffmyk-influx
|
||||
while : ;do
|
||||
php -c ./php.ini -f dhcp.php
|
||||
php -c ./php.ini -f traffic.php
|
||||
php -c ./php.ini -f fastd.php
|
||||
sleep 15
|
||||
done
|
@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
|
||||
[Service]
|
||||
ExecStart=/opt/ffmyk-influx/daemon.sh
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -0,0 +1,49 @@
|
||||
[PHP]
|
||||
engine = On
|
||||
short_open_tag = Off
|
||||
precision = 14
|
||||
output_buffering = 4096
|
||||
zlib.output_compression = Off
|
||||
implicit_flush = Off
|
||||
unserialize_callback_func =
|
||||
serialize_precision = 17
|
||||
zend.enable_gc = On
|
||||
expose_php = On
|
||||
max_execution_time = 30
|
||||
max_input_time = 60
|
||||
memory_limit = 128M
|
||||
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
|
||||
display_errors = Off
|
||||
display_startup_errors = Off
|
||||
log_errors = On
|
||||
log_errors_max_len = 1024
|
||||
ignore_repeated_errors = Off
|
||||
ignore_repeated_source = Off
|
||||
report_memleaks = On
|
||||
track_errors = Off
|
||||
html_errors = Off
|
||||
variables_order = "GPCS"
|
||||
request_order = "GP"
|
||||
register_argc_argv = Off
|
||||
auto_globals_jit = On
|
||||
post_max_size = 8M
|
||||
auto_prepend_file =
|
||||
auto_append_file =
|
||||
default_mimetype = "text/html"
|
||||
default_charset = "UTF-8"
|
||||
doc_root =
|
||||
user_dir =
|
||||
extension_dir = "/usr/lib/php/modules/"
|
||||
enable_dl = Off
|
||||
file_uploads = On
|
||||
upload_max_filesize = 2M
|
||||
max_file_uploads = 20
|
||||
allow_url_fopen = On
|
||||
allow_url_include = Off
|
||||
default_socket_timeout = 60
|
||||
extension=curl.so
|
||||
extension=sockets.so
|
||||
extension=zip.so
|
||||
[CLI Server]
|
||||
cli_server.color = On
|
||||
|
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
require('func.php');
|
||||
|
||||
$data = file_get_contents('/var/lib/dhcp/dhcpd.leases');
|
||||
|
||||
preg_match_all('/lease ([\d\.]+) \{[^\}]+ends \d+ (\d{4}\/\d{2}\/\d{2} \d+:\d{2}:\d{2});[^\}]+}/s', $data, $match);
|
||||
|
||||
unset($data, $match[0]);
|
||||
|
||||
$dend = time()-120;
|
||||
|
||||
$clients = 0;
|
||||
|
||||
foreach($match[2] as $timeout) {
|
||||
$end = strtotime($timeout.' UTC');
|
||||
if($end > $dend) $clients++;
|
||||
}
|
||||
|
||||
$data = 'clients,host={{ ansible_hostname }},type=backend value='.$clients;
|
||||
sendflux($data);
|
||||
|
||||
?>
|
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
require('func.php');
|
||||
|
||||
function fastdGetPeers($file) {
|
||||
if (($sock = socket_create(AF_UNIX, SOCK_STREAM, NULL)) === false) {
|
||||
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
|
||||
}
|
||||
|
||||
if (($result = socket_connect($sock, $file)) === false) {
|
||||
echo "socket_connect() fehlgeschlagen.\nGrund: ($result) " . socket_strerror(socket_last_error($sock)) . "\n";
|
||||
}
|
||||
|
||||
$json = "";
|
||||
#stream_set_timeout($sock, 5);
|
||||
while ($out = socket_read($sock, 2048)) {
|
||||
$json .= $out;
|
||||
}
|
||||
|
||||
$json = json_decode($json);
|
||||
|
||||
$peers = 0;
|
||||
foreach($json->peers as $peer) {
|
||||
if($peer->connection != NULL) $peers++;
|
||||
}
|
||||
|
||||
return $peers;
|
||||
}
|
||||
|
||||
$fastd_1280 = fastdGetPeers('/run/ffmyk.socket');
|
||||
|
||||
$data = 'fastdclient,mtu=1280,host={{ ansible_hostname }},type=backend value='.$fastd_1280."\n";
|
||||
|
||||
sendflux($data);
|
||||
|
||||
?>
|
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
function sendflux($data) {
|
||||
$url = 'http://10.222.42.54:8086/write?db=freifunk';
|
||||
|
||||
$options = array(
|
||||
'http' => array(
|
||||
'header' => "Authorization: Basic " . base64_encode("{{ influx_user }}:{{ influx_password }}") ."\r\nContent-type: application/x-www-form-urlencoded\r\n",
|
||||
'method' => 'POST',
|
||||
'content' => $data,
|
||||
),
|
||||
);
|
||||
|
||||
$context = stream_context_create($options);
|
||||
$result = file_get_contents($url, false, $context);
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
require('func.php');
|
||||
|
||||
function traffic($iface, $alias=false) {
|
||||
|
||||
if(!$alias) $alias = $iface;
|
||||
|
||||
/* ifconfig eth0 | grep bytes
|
||||
RX bytes:700194759 (667.7 MiB) TX bytes:1090382719 (1.0 GiB)
|
||||
|
||||
*/
|
||||
$data = shell_exec('ifconfig '.escapeshellarg($iface).' | grep bytes');
|
||||
preg_match('/RX.+?bytes (\d+) /', $data, $match);
|
||||
$rx = $match[1];
|
||||
unset($match);
|
||||
|
||||
preg_match('/TX.+?bytes (\d+) /', $data, $match);
|
||||
$tx = $match[1];
|
||||
unset($match);
|
||||
|
||||
$file = '/opt/ffmyk-influx/traffic.'.base64_encode($iface).'.cache';
|
||||
|
||||
$out['rx'] = 0;
|
||||
$out['tx'] = 0;
|
||||
|
||||
if(file_exists($file)) {
|
||||
$cache = unserialize(file_get_contents($file));
|
||||
$diff = time() - filemtime($file);
|
||||
|
||||
if($rx > $cache['rx']) $out['rx'] = ($rx - $cache['rx']) / $diff;
|
||||
if($tx > $cache['tx']) $out['tx'] = ($tx - $cache['tx']) / $diff;
|
||||
}
|
||||
|
||||
file_put_contents($file, serialize(array("rx" => $rx, "tx" => $tx)));
|
||||
|
||||
$data = 'rx,if='.$alias.',host={{ ansible_hostname }},type=backend value='.$out['rx']."\n";
|
||||
$data.= 'tx,if='.$alias.',host={{ ansible_hostname }},type=backend value='.$out['tx'];
|
||||
|
||||
sendflux($data);
|
||||
|
||||
$out['if'] = $iface;
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
(traffic('ens3', 'eth0'));
|
||||
(traffic('mullvad'));
|
||||
(traffic('bat0'));
|
||||
(traffic('ffmyk-mesh-vpn', 'ffmyk-mesh-vpnd'));
|
||||
|
||||
|
||||
?>
|
Loading…
Reference in New Issue