Init
This commit is contained in:
1 parent
9c58aab51c
commit
76fc9a89cf
4 files changed
+245
No files matched your search
Executable
+38
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
HBBR="hbbr"
|
||||||
|
|
||||||
|
PID="$(docker inspect -f '{{.State.Pid}}' "$HBBR")"
|
||||||
|
|
||||||
|
if [ -z "$PID" ] || [ "$PID" = "0" ]; then
|
||||||
|
echo "hbbr container is not running" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_connections() {
|
||||||
|
nsenter -t "$PID" -n ss -H -tn state established '( sport = :21117 )'
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${1:-}" in
|
||||||
|
connections)
|
||||||
|
get_connections | wc -l
|
||||||
|
;;
|
||||||
|
|
||||||
|
sessions)
|
||||||
|
count="$(get_connections | wc -l)"
|
||||||
|
echo $((count / 2))
|
||||||
|
;;
|
||||||
|
|
||||||
|
relay_ips)
|
||||||
|
get_connections |
|
||||||
|
awk '{print $4}' |
|
||||||
|
sed -E 's/^\[::ffff:([^]]+)\]:[0-9]+$/\1/' |
|
||||||
|
sort -u
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {connections|sessions|relay_ips}" >&2
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Executable
+132
@@ -0,0 +1,132 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DB="/opt/docker-composes/rustdesk/data/db_v2.sqlite3"
|
||||||
|
HBBR="hbbr"
|
||||||
|
PORT="21117"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
peers)
|
||||||
|
sqlite3 "$DB" "SELECT COUNT(*) FROM peer;"
|
||||||
|
;;
|
||||||
|
|
||||||
|
peer_ip)
|
||||||
|
ID="$2"
|
||||||
|
|
||||||
|
sqlite3 -noheader "$DB" \
|
||||||
|
"SELECT json_extract(info, '\$.ip') FROM peer WHERE id='$ID';" |
|
||||||
|
sed 's/^::ffff://'
|
||||||
|
;;
|
||||||
|
|
||||||
|
discovery)
|
||||||
|
sqlite3 -separator '|' -noheader "$DB" \
|
||||||
|
"SELECT id, json_extract(info, '$.ip')
|
||||||
|
FROM peer
|
||||||
|
ORDER BY created_at DESC;" |
|
||||||
|
while IFS='|' read -r id ip; do
|
||||||
|
ip="${ip#::ffff:}"
|
||||||
|
printf '%s|%s\n' "$id" "$ip"
|
||||||
|
done |
|
||||||
|
jq -R -s '
|
||||||
|
split("\n")
|
||||||
|
| map(select(length > 0))
|
||||||
|
| map(split("|"))
|
||||||
|
| map({
|
||||||
|
"{#RD_ID}": .[0],
|
||||||
|
"{#RD_IP}": .[1]
|
||||||
|
})
|
||||||
|
'
|
||||||
|
;;
|
||||||
|
|
||||||
|
connections)
|
||||||
|
PID="$(docker inspect -f '{{.State.Pid}}' "$HBBR" 2>/dev/null)" || exit 1
|
||||||
|
|
||||||
|
if [ -z "$PID" ] || [ "$PID" = "0" ]; then
|
||||||
|
echo "0"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
nsenter -t "$PID" -n \
|
||||||
|
ss -H -tn state established '( sport = :21117 )' 2>/dev/null |
|
||||||
|
wc -l
|
||||||
|
;;
|
||||||
|
|
||||||
|
sessions)
|
||||||
|
PID="$(docker inspect -f '{{.State.Pid}}' "$HBBR" 2>/dev/null)" || exit 1
|
||||||
|
|
||||||
|
if [ -z "$PID" ] || [ "$PID" = "0" ]; then
|
||||||
|
echo "0"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONNECTIONS="$(
|
||||||
|
nsenter -t "$PID" -n \
|
||||||
|
ss -H -tn state established '( sport = :21117 )' 2>/dev/null |
|
||||||
|
wc -l
|
||||||
|
)"
|
||||||
|
|
||||||
|
echo $((CONNECTIONS / 2))
|
||||||
|
;;
|
||||||
|
|
||||||
|
relay_ips)
|
||||||
|
nsenter -t "$(docker inspect -f '{{.State.Pid}}' "$HBBR")" -n \
|
||||||
|
ss -H -tn state established '( sport = :21117 )' |
|
||||||
|
awk '{print $4}' |
|
||||||
|
sed -E 's/^\[::ffff:([^]]+)\]:[0-9]+$/\1/' |
|
||||||
|
sort -u
|
||||||
|
;;
|
||||||
|
|
||||||
|
relay_json)
|
||||||
|
nsenter -t "$(docker inspect -f '{{.State.Pid}}' "$HBBR")" -n \
|
||||||
|
ss -H -tn state established '( sport = :21117 )' |
|
||||||
|
awk '{print $5}' |
|
||||||
|
sed -E \
|
||||||
|
-e 's/^\[::ffff://g' \
|
||||||
|
-e 's/\]:[0-9]+$//g' |
|
||||||
|
sort -u |
|
||||||
|
jq -R -s '
|
||||||
|
split("\n")
|
||||||
|
| map(select(length > 0))
|
||||||
|
| {
|
||||||
|
connections: length,
|
||||||
|
ips: .
|
||||||
|
}
|
||||||
|
'
|
||||||
|
;;
|
||||||
|
|
||||||
|
json)
|
||||||
|
peers=$(sqlite3 "$DB" "SELECT COUNT(*) FROM peer;")
|
||||||
|
|
||||||
|
connections=$(
|
||||||
|
nsenter -t "$(docker inspect -f '{{.State.Pid}}' "$HBBR")" -n \
|
||||||
|
ss -H -tn state established '( sport = :21117 )' |
|
||||||
|
wc -l
|
||||||
|
)
|
||||||
|
|
||||||
|
sessions=$((connections / 2))
|
||||||
|
|
||||||
|
jq -n \
|
||||||
|
--argjson peers "$peers" \
|
||||||
|
--argjson connections "$connections" \
|
||||||
|
--argjson sessions "$sessions" \
|
||||||
|
'{
|
||||||
|
peers: $peers,
|
||||||
|
relay_connections: $connections,
|
||||||
|
relay_sessions: $sessions
|
||||||
|
}'
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage:"
|
||||||
|
echo " $0 peers"
|
||||||
|
echo " $0 peer_ip <RUSTDESK_ID>"
|
||||||
|
echo " $0 discovery"
|
||||||
|
echo " $0 connections"
|
||||||
|
echo " $0 sessions"
|
||||||
|
echo " $0 relay_ips"
|
||||||
|
echo " $0 relay_json"
|
||||||
|
echo " $0 json"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"zabbix_export": {
|
||||||
|
"version": "7.4",
|
||||||
|
"template_groups": [
|
||||||
|
{
|
||||||
|
"uuid": "7df96b18c230490a9a0a9e2307226338",
|
||||||
|
"name": "Templates"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"templates": [
|
||||||
|
{
|
||||||
|
"uuid": "bb7c728f07ff43c187a70cf61aae1a1b",
|
||||||
|
"template": "RustDesk Server",
|
||||||
|
"name": "RustDesk Server",
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "Templates"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"uuid": "4550fe89cde7477a974210abaf0f5ccc",
|
||||||
|
"name": "RustDesk registered peers",
|
||||||
|
"key": "rustdesk.peers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"uuid": "f1b2839caeb84ac4b8b0e336853e7d99",
|
||||||
|
"name": "RustDesk relay connections",
|
||||||
|
"key": "rustdesk.relay.connections"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"uuid": "fabf8178f3a54fa5adb701360eb88218",
|
||||||
|
"name": "Active Relay IPs",
|
||||||
|
"key": "rustdesk.relay.ips",
|
||||||
|
"delay": "30s",
|
||||||
|
"value_type": "TEXT",
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"tag": "rustdesk"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"uuid": "046a2e8a9e884c71ae753dca55e2bf29",
|
||||||
|
"name": "RustDesk active relay sessions",
|
||||||
|
"key": "rustdesk.relay.sessions"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"discovery_rules": [
|
||||||
|
{
|
||||||
|
"uuid": "d89ea98929724208be92148d557aa891",
|
||||||
|
"name": "RustDesk registered peers discovery",
|
||||||
|
"key": "rustdesk.discovery",
|
||||||
|
"delay": "1h",
|
||||||
|
"item_prototypes": [
|
||||||
|
{
|
||||||
|
"uuid": "60cf331e09b74ee6abfebff30e7cc3d3",
|
||||||
|
"name": "RustDesk peer {#RD_ID} IP",
|
||||||
|
"key": "rustdesk.peer.ip[{#RD_ID}]",
|
||||||
|
"value_type": "TEXT"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
UserParameter=rustdesk.peers,/usr/local/bin/rustdesk-monitor.sh peers
|
||||||
|
UserParameter=rustdesk.peer.ip[*],/usr/local/bin/rustdesk-monitor.sh peer_ip "$1"
|
||||||
|
UserParameter=rustdesk.discovery,/usr/local/bin/rustdesk-monitor.sh discovery
|
||||||
|
UserParameter=rustdesk.relay.connections,sudo /usr/local/sbin/rustdesk-monitor-root connections
|
||||||
|
UserParameter=rustdesk.relay.sessions,sudo /usr/local/sbin/rustdesk-monitor-root sessions
|
||||||
|
UserParameter=rustdesk.relay.ips,sudo /usr/local/sbin/rustdesk-monitor-root relay_ips
|
||||||
|
UserParameter=rustdesk.json,/usr/local/bin/rustdesk-monitor.sh json
|
||||||
Reference in new issue
Block a user