serviceradar/serviceradar.spec
Sergey Zhemoytel 803a3bf715
All checks were successful
Run CI/CD... / main (push) Successful in 6m51s
1.0.31
2025-04-11 10:49:42 +00:00

201 lines
5.9 KiB
RPMSpec

%define debug %nil
%define debug_package %nil
Name: serviceradar
Version: 1.0.31
Release: 1
Summary: Simple golang-based home network monitoring and surveillance tool
URL: https://docs.serviceradar.cloud
Source0: https://github.com/carverauto/serviceradar/archive/%{version}/%{name}-%{version}.tar.gz
License: ASL 2.0
Group: Monitoring
BuildRequires: go
BuildRequires: git-core
BuildRequires: upx
BuildRequires: nodejs14
BuildRequires: pkgconfig(systemd)
%description
ServiceRadar is a distributed network monitoring system designed
for infrastructure and services in hard to reach places or
constrained environments. It provides real-time monitoring of
internal services, with cloud-based alerting capabilities to
ensure you stay informed even during network or power outages.
%prep
%setup -q
%build
export GOPROXY=https://proxy.golang.org,direct
LDFLAGS="-s -w -X main.version=%{version}"
go build -ldflags "$LDFLAGS" -o bin/serviceradar-agent cmd/agent/main.go
go build -ldflags "$LDFLAGS" -o bin/serviceradar-poller cmd/poller/main.go
go build -ldflags "$LDFLAGS" -o bin/serviceradar-dusk-checker cmd/checkers/dusk/main.go
go build -ldflags "$LDFLAGS" -o bin/serviceradar-snmp-checker cmd/checkers/snmp/main.go
go build -ldflags "$LDFLAGS" -o bin/serviceradar-core cmd/core/main.go
%install
# install bin
install -Dm0755 bin/serviceradar-agent %{buildroot}%{_bindir}/serviceradar-agent
install -Dm0755 bin/serviceradar-poller %{buildroot}%{_bindir}/serviceradar-poller
install -Dm0755 bin/serviceradar-dusk-checker %{buildroot}%{_bindir}/serviceradar-dusk-checker
install -Dm0755 bin/serviceradar-snmp-checker %{buildroot}%{_bindir}/serviceradar-snmp-checker
install -Dm0755 bin/serviceradar-core %{buildroot}%{_bindir}/serviceradar-core
# install conffiles
install -Dm0644 packaging/agent/config/agent.json %{buildroot}%{_sysconfdir}/%{name}/agent.json
install -Dm0644 packaging/poller/config/poller.json %{buildroot}%{_sysconfdir}/%{name}/poller.json
install -Dm0644 packaging/config/checkers/dusk.json %{buildroot}%{_sysconfdir}/%{name}/checkers/dusk.json
install -Dm0644 packaging/core/config/core.json %{buildroot}%{_sysconfdir}/%{name}/core.json
install -Dm0644 packaging/core/config/nginx.conf %{buildroot}%{_sysconfdir}/nginx/nginx.conf.d/serviceradar-core.conf
#install -Dm0644 packaging/core/config/checkers/sweep/sweep.json %{buildroot}%{_sysconfdir}/%{name}/checkers/sweep/sweep.json
# install services
install -Dm0644 packaging/agent/systemd/serviceradar-agent.service %{buildroot}%{_unitdir}/serviceradar-agent.service
install -Dm0644 packaging/core/systemd/serviceradar-core.service %{buildroot}%{_unitdir}/serviceradar-core.service
install -Dm0644 packaging/poller/systemd/serviceradar-poller.service %{buildroot}%{_unitdir}/serviceradar-poller.service
# Create systemd service file
cat > "%{buildroot}%{_unitdir}/serviceradar-snmp-checker.service" << EOF
[Unit]
Description=ServiceRadar SNMP Checker Service
After=network.target
[Service]
Type=simple
User=serviceradar
ExecStart=/usr/bin/serviceradar-snmp-checker
Restart=always
RestartSec=10
LimitNOFILE=65535
LimitNPROC=65535
[Install]
WantedBy=multi-user.target
EOF
cat > "%{buildroot}%{_sysconfdir}/serviceradar/checkers/snmp.json" << EOF
{
"node_address": "localhost:50051",
"listen_addr": ":50054",
"security": {
"server_name": "changeme",
"mode": "none",
"role": "checker",
"cert_dir": "/etc/serviceradar/certs"
},
"timeout": "30s",
"targets": [
{
"name": "test-router",
"host": "192.168.1.1",
"port": 161,
"community": "public",
"version": "v2c",
"interval": "30s",
"retries": 2,
"oids": [
{
"oid": ".1.3.6.1.2.1.2.2.1.10.4",
"name": "ifInOctets_4",
"type": "counter",
"scale": 1.0
}
]
}
]
}
EOF
# Create systemd service file for dusk checker
cat > "%{buildroot}%{_unitdir}/serviceradar-dusk-checker.service" << EOF
[Unit]
Description=ServiceRadar Dusk Node Checker
After=network.target
[Service]
Type=simple
User=serviceradar
ExecStart=/usr/bin/serviceradar-dusk-checker -config /etc/serviceradar/checkers/dusk.json
Restart=always
RestartSec=10
LimitNPROC=512
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
# Create external.json
cat > "%{buildroot}%{_sysconfdir}/serviceradar/checkers/external.json" << EOF
{
"name": "dusk",
"type": "grpc",
"address": "localhost:50052"
}
EOF
%package core
Summary: Core for %{name}
%description core
Core for %{name}
%files core
%doc README.md LICENSE
%{_bindir}/serviceradar-core
%{_unitdir}/serviceradar-core.service
%config(noreplace) %{_sysconfdir}/%{name}/core.json
#config(noreplace) %{_sysconfdir}/%{name}/checkers/sweep/sweep.json
%config(noreplace) %{_sysconfdir}/nginx/nginx.conf.d/serviceradar-core.conf
%package agent
Summary: Agent for %{name}
%description agent
Agent for %{name}
%files agent
%doc README.md LICENSE
%{_bindir}/serviceradar-agent
%config(noreplace) %{_sysconfdir}/%{name}/agent.json
%{_unitdir}/serviceradar-agent.service
%package poller
Summary: Poller for %{name}
%description poller
Poller for %{name}
%files poller
%doc README.md LICENSE
%{_bindir}/serviceradar-poller
%config(noreplace) %{_sysconfdir}/%{name}/poller.json
%{_unitdir}/serviceradar-poller.service
%package snmp-checker
Summary: SNMP checker for %{name}
%description snmp-checker
SNMP checker for %{name}
%files snmp-checker
%doc README.md LICENSE
%{_bindir}/serviceradar-snmp-checker
%config(noreplace) %{_sysconfdir}/serviceradar/checkers/snmp.json
%{_unitdir}/serviceradar-snmp-checker.service
%package dusk-checker
Summary: Dusk checker for %{name}
%description dusk-checker
Dusk checker for %{name}
%files dusk-checker
%doc README.md LICENSE
%{_bindir}/serviceradar-dusk-checker
%config(noreplace) %{_sysconfdir}/%{name}/checkers/dusk.json
%config(noreplace) %{_sysconfdir}/serviceradar/checkers/external.json
%{_unitdir}/serviceradar-dusk-checker.service