VERSION = 1.0.3
.PHONY: all install test
PREFIX = /usr
ETCDIR = $(DESTDIR)/etc
VARDIR = $(DESTDIR)/var
BINDIR = $(DESTDIR)$(PREFIX)/bin
SYSTEMDDIR = $(DESTDIR)$(PREFIX)/lib/systemd/system
INCLUDEDIR = $(DESTDIR)$(PREFIX)/include
LIBINSTALLDIR = $(DESTDIR)$(PREFIX)/lib64
LOGSAVEDIR = $(VARDIR)/log
LOGROTEDIR = $(ETCDIR)/logrotate-sysSentry.conf
LOGCRON = $(ETCDIR)/cron.hourly
VARLIB = $(VARDIR)/lib
CURDIR = $(shell pwd)
CURSRCDIR = $(CURDIR)/src
CURLIBDIR = $(CURDIR)/src/libs
CURTESTDIR = $(CURDIR)/selftest
CURCONFIGDIR = $(CURDIR)/config
PYBIN = $(shell which python3)
PYNAME = $(shell $(PYBIN) -c "import sys; print(f'python{sys.version_info.major}.{sys.version_info.minor}')")
PYDIR = $(DESTDIR)$(PREFIX)/lib/$(PYNAME)/site-packages
PYTHON_VERSION := $(shell $(PYBIN) --version 2>&1 | awk '{print $$2}' | cut -d '.' -f 1,2)
PKGVER := syssentry-$(VERSION)-py$(PYTHON_VERSION)
PKGVEREGG := syssentry-$(VERSION)-py$(PYTHON_VERSION).egg-info
ARCH := $(shell uname -m)
all: lib ebpf hbm_online_repair sentry_msg_monitor bmc_ras_sentry soc_ring_sentry cpu_patrol
lib:libxalarm log sentry_io
libxalarm: sentry_io
cd $(CURLIBDIR) && cmake . -DXD_INSTALL_BINDIR=$(LIBINSTALLDIR) -B build
cd $(CURLIBDIR)/build && make
log:
cd $(CURSRCDIR)/libsentry/c/log && cmake . -B build
cd $(CURSRCDIR)/libsentry/c/log/build && make
sentry_io:
cd $(CURSRCDIR)/libsentry/c/io && cmake . -B build
cd $(CURSRCDIR)/libsentry/c/io/build && make
ebpf:
@if [ -d "$(CURSRCDIR)/services/sentryCollector/ebpf_collector/" ]; then \
cd $(CURSRCDIR)/services/sentryCollector/ebpf_collector/ && make; \
fi
cpu_patrol: lib
cd $(CURSRCDIR)/sentryPlugins/cpu_sentry/catlib/ && cmake -B ./build/ -S . -DCMAKE_INSTALL_PREFIX=/usr/local
cd $(CURSRCDIR)/sentryPlugins/cpu_sentry/catlib/build && make
hbm_online_repair: lib
cd $(CURSRCDIR)/sentryPlugins/hbm_online_repair/ && make
sentry_msg_monitor: lib
cd $(CURSRCDIR)/sentryPlugins/sentry_msg_monitor/ && make
bmc_ras_sentry: lib
cd $(CURSRCDIR)/sentryPlugins/bmc_ras_sentry/ && sh build.sh
soc_ring_sentry: lib
cd $(CURSRCDIR)/sentryPlugins/soc_ring_sentry/ && make
install: all dirs isentry
dirs:
mkdir -p $(BINDIR)
mkdir -p $(ETCDIR)
mkdir -p $(PYDIR)
mkdir -p $(SYSTEMDDIR)
mkdir -p $(LOGCRON)
mkdir -p $(LIBINSTALLDIR)
mkdir -p $(ETCDIR)/sysSentry/
install -d -m 700 $(ETCDIR)/sysSentry/
install -d -m 700 $(ETCDIR)/sysSentry/tasks/
install -d -m 700 $(ETCDIR)/sysSentry/plugins/
install -d -m 700 $(ETCDIR)/sysSentry/task_scripts/
isentry:
cd $(CURSRCDIR) && $(PYBIN) setup.py install --prefix=$(PREFIX) -O1 --root=build --record=SENTRY_FILES
install -d -m 700 $(LOGSAVEDIR)/sysSentry
install -d -m 700 $(VARLIB)/logrotate-syssentry
install -d -m 755 $(PYDIR)/syssentry
install -d -m 755 $(PYDIR)/syssentry/__pycache__
install -d -m 755 $(PYDIR)/xalarm
install -d -m 755 $(PYDIR)/xalarm/__pycache__
install -d -m 755 $(PYDIR)/sentryCollector
install -d -m 755 $(PYDIR)/sentryCollector/__pycache__
install -d -m 755 $(PYDIR)/$(PKGVEREGG)
install -d -m 700 $(ETCDIR)/sysconfig
install -m 600 $(CURCONFIGDIR)/logrotate-sysSentry.conf $(ETCDIR)/sysSentry/
install -m 600 $(CURCONFIGDIR)/inspect.conf $(ETCDIR)/sysSentry/
install -m 600 $(CURCONFIGDIR)/xalarm.conf $(ETCDIR)/sysSentry/
install -m 600 $(CURCONFIGDIR)/collector.conf $(ETCDIR)/sysSentry/
install -m 0500 src/libsentry/sh/log/logrotate-sysSentry.cron $(ETCDIR)/cron.hourly/logrotate-sysSentry
install -m 600 $(CURCONFIGDIR)/service/sysSentry.service $(SYSTEMDDIR)
install -m 600 $(CURCONFIGDIR)/service/sysSentry.socket $(SYSTEMDDIR)
install -m 600 $(CURCONFIGDIR)/service/xalarmd.service $(SYSTEMDDIR)
install -m 600 $(CURCONFIGDIR)/service/xalarmd.socket $(SYSTEMDDIR)
install -m 600 $(CURCONFIGDIR)/service/sentryCollector.service $(SYSTEMDDIR)
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/services/syssentry/*.py $(PYDIR)/syssentry
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/services/syssentry/__pycache__/* $(PYDIR)/syssentry/__pycache__
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/services/xalarm/*.py $(PYDIR)/xalarm
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/services/xalarm/__pycache__/* $(PYDIR)/xalarm/__pycache__
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/services/sentryCollector/*.py $(PYDIR)/sentryCollector
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/services/sentryCollector/__pycache__/* $(PYDIR)/sentryCollector/__pycache__
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/$(PKGVEREGG)/* $(PYDIR)/$(PKGVEREGG)
install -m 550 $(CURSRCDIR)/services/syssentry/sentryctl $(BINDIR)
install -m 550 $(CURSRCDIR)/build/usr/bin/syssentry $(BINDIR)
install -m 550 $(CURSRCDIR)/build/usr/bin/xalarmd $(BINDIR)
install -m 550 $(CURSRCDIR)/build/usr/bin/sentryCollector $(BINDIR)
@if [ -f "$(CURSRCDIR)/services/sentryCollector/ebpf_collector/ebpf_collector" ]; then \
install -m 550 $(CURSRCDIR)/services/sentryCollector/ebpf_collector/ebpf_collector $(BINDIR); \
fi
install -d -m 755 $(PYDIR)/sentryPlugins/avg_block_io
install -d -m 755 $(PYDIR)/sentryPlugins/avg_block_io/__pycache__
install -m 550 $(CURSRCDIR)/build/usr/bin/avg_block_io $(BINDIR)
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/sentryPlugins/avg_block_io/*.py $(PYDIR)/sentryPlugins/avg_block_io
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/sentryPlugins/avg_block_io/__pycache__/* $(PYDIR)/sentryPlugins/avg_block_io/__pycache__
install -m 600 $(CURCONFIGDIR)/plugins/avg_block_io.ini $(ETCDIR)/sysSentry/plugins/
install -m 600 $(CURCONFIGDIR)/tasks/avg_block_io.mod $(ETCDIR)/sysSentry/tasks/
install -d -m 755 $(PYDIR)/sentryPlugins/ai_block_io
install -d -m 755 $(PYDIR)/sentryPlugins/ai_block_io/__pycache__
install -m 550 $(CURSRCDIR)/build/usr/bin/ai_block_io $(BINDIR)
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/sentryPlugins/ai_block_io/*.py $(PYDIR)/sentryPlugins/ai_block_io
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/sentryPlugins/ai_block_io/__pycache__/* $(PYDIR)/sentryPlugins/ai_block_io/__pycache__
install -m 600 $(CURCONFIGDIR)/plugins/ai_block_io.ini $(ETCDIR)/sysSentry/plugins/
install -m 600 $(CURCONFIGDIR)/tasks/ai_block_io.mod $(ETCDIR)/sysSentry/tasks/
install -d -m 755 $(PYDIR)/sentryPlugins/cpu_sentry
install -d -m 755 $(PYDIR)/sentryPlugins/cpu_sentry/__pycache__
install -m 550 $(CURSRCDIR)/build/usr/bin/cpu_sentry $(BINDIR)
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/sentryPlugins/cpu_sentry/*.py $(PYDIR)/sentryPlugins/cpu_sentry/
install -m 644 src/build/usr/lib/$(PYNAME)/site-packages/sentryPlugins/cpu_sentry/__pycache__/* $(PYDIR)/sentryPlugins/cpu_sentry/__pycache__/
install -m 550 $(CURSRCDIR)/sentryPlugins/cpu_sentry/catlib/build/cat-cli $(BINDIR)
install -m 550 $(CURSRCDIR)/sentryPlugins/cpu_sentry/catlib/build/plugin/cpu_patrol/libcpu_patrol.so $(LIBINSTALLDIR)
install -m 600 $(CURCONFIGDIR)/plugins/cpu_sentry.ini $(ETCDIR)/sysSentry/plugins
install -m 600 $(CURCONFIGDIR)/tasks/cpu_sentry.mod $(ETCDIR)/sysSentry/tasks
install -m 550 $(CURSRCDIR)/sentryPlugins/hbm_online_repair/hbm_online_repair $(BINDIR)
install -m 600 $(CURCONFIGDIR)/env/hbm_online_repair.env $(ETCDIR)/sysconfig/
install -m 600 $(CURCONFIGDIR)/tasks/hbm_online_repair.mod $(ETCDIR)/sysSentry/tasks/
install -m 750 $(CURSRCDIR)/sentryPlugins/soc_ring_sentry/soc_ring_sentry $(BINDIR)
install -m 600 $(CURCONFIGDIR)/env/soc_ring_sentry.env $(ETCDIR)/sysconfig/
install -m 600 $(CURCONFIGDIR)/tasks/soc_ring_sentry.mod $(ETCDIR)/sysSentry/tasks/
ifeq ($(ARCH), aarch64)
install -m 550 $(CURSRCDIR)/sentryPlugins/sentry_msg_monitor/sentry_msg_monitor $(BINDIR)
install -m 600 $(CURCONFIGDIR)/env/sentry_msg_monitor.env $(ETCDIR)/sysconfig/
install -m 600 $(CURCONFIGDIR)/tasks/sentry_msg_monitor.mod $(ETCDIR)/sysSentry/tasks/
install -m 600 $(CURCONFIGDIR)/task_scripts/sentry_msg_monitor.sh $(ETCDIR)/sysSentry/task_scripts/
endif
install -m 550 $(CURSRCDIR)/sentryPlugins/bmc_ras_sentry/output/bmc_ras_sentry $(BINDIR)
install -m 600 $(CURCONFIGDIR)/plugins/bmc_ras_sentry.ini $(ETCDIR)/sysSentry/plugins/
install -m 600 $(CURCONFIGDIR)/tasks/bmc_ras_sentry.mod $(ETCDIR)/sysSentry/tasks/
install -m 644 src/libsentry/python/pySentryNotify/sentry_notify.py $(PYDIR)/xalarm
install -m 644 src/libsentry/python/pySentryCollector/collect_plugin.py $(PYDIR)/sentryCollector
install -m 550 $(CURLIBDIR)/build/libxalarm/libxalarm.so $(LIBINSTALLDIR)
install -d -m 700 $(INCLUDEDIR)/xalarm
install -m 644 $(CURLIBDIR)/libxalarm/register_xalarm.h $(INCLUDEDIR)/xalarm/
install -m 644 src/libs/pyxalarm/register_xalarm.py $(PYDIR)/xalarm
install -m 550 $(CURSRCDIR)/libsentry/c/log/build/libsentry_log.so $(LIBINSTALLDIR)
install -m 550 $(CURSRCDIR)/libsentry/c/io/build/libsentry_io.so $(LIBINSTALLDIR)
ebpf_clean:
cd $(CURSRCDIR)/services/sentryCollector/ebpf_collector && make clean
hbm_clean:
cd $(CURSRCDIR)/sentryPlugins/hbm_online_repair && make clean
smm_clean:
cd $(CURSRCDIR)/sentryPlugins/sentry_msg_monitor && make clean
bmc_clean:
cd $(CURSRCDIR)/sentryPlugins/bmc_ras_sentry && sh build.sh clean
srs_clean:
cd $(CURSRCDIR)/sentryPlugins/soc_ring_sentry && make clean
clean: ebpf_clean hbm_clean smm_clean bmc_clean srs_clean
rm -rf $(CURLIBDIR)/build
rm -rf $(CURSRCDIR)/build
rm -rf $(CURSRCDIR)/libsentry/c/log/build
rm -rf $(CURSRCDIR)/libsentry/c/io/build
rm -rf $(CURSRCDIR)/sentryPlugins/bmc_ras_sentry/build/
rm -rf $(CURSRCDIR)/sentryPlugins/cpu_sentry/catlib/build/
rm -rf $(CURSRCDIR)/syssentry.egg-info
rm -rf $(CURSRCDIR)/SENTRY_FILES
uninstall:
rm -rf $(BINDIR)/sentryctl
rm -rf $(BINDIR)/syssentry
rm -rf $(BINDIR)/xalarmd
rm -rf $(BINDIR)/sentryCollector
rm -rf $(BINDIR)/hbm_online_repair
rm -rf $(BINDIR)/soc_ring_sentry
rm -rf $(BINDIR)/sentry_msg_monitor
rm -rf $(BINDIR)/bmc_ras_sentry
rm -rf $(BINDIR)/ebpf_collector
rm -rf $(LIBINSTALLDIR)/libxalarm.so
rm -rf $(INCLUDEDIR)/xalarm
rm -rf $(LIBINSTALLDIR)/libsentry_log.so
rm -rf $(LIBINSTALLDIR)/libsentry_io.so
rm -rf $(ETCDIR)/sysSentry
rm -rf $(ETCDIR)/hbm_online_repair.env
rm -rf $(ETCDIR)/soc_ring_sentry.env
rm -rf $(ETCDIR)/sentry_msg_monitor.env
rm -rf $(LOGSAVEDIR)/sysSentry
rm -rf $(PYDIR)/syssentry
rm -rf $(PYDIR)/xalarm
rm -rf $(PYDIR)/sentryPlugins
rm -rf $(PYDIR)/sentryCollector
rm -rf $(PYDIR)/$(PKGVEREGG)
rm -rf $(PYDIR)/xalarm
rm -rf $(BINDIR)/cpu_sentry
rm -rf $(BINDIR)/cat-cli
rm -rf $(LIBINSTALLDIR)/libcpu_patrol.so
rm -rf $(BINDIR)/avg_block_io
rm -rf $(BINDIR)/ai_block_io
rm -rf $(SYSTEMDDIR)/sysSentry.service
rm -rf $(SYSTEMDDIR)/sysSentry.socket
rm -rf $(SYSTEMDDIR)/xalarmd.service
rm -rf $(SYSTEMDDIR)/xalarmd.socket
rm -rf $(SYSTEMDDIR)/sentryCollector.service
systemctl daemon-reload
test:
@if [[ -z "$(log)" ]]; then \
log="console"; \
fi
@if [[ -z "$t" ]]; then \
cd $(CURTESTDIR) && sh ./test.sh "all" $(log); \
else \
cd $(CURTESTDIR) && sh ./test.sh $t $(log); \
fi
startup:
systemctl daemon-reload
systemctl enable xalarmd.socket
systemctl enable sysSentry.socket
systemctl start xalarmd.socket
systemctl start sysSentry.socket
systemctl restart xalarmd
systemctl restart sysSentry
systemctl restart sentryCollector