summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Pykhalov <go.wigust@gmail.com>2018-07-28 01:08:47 +0300
committerOleg Pykhalov <go.wigust@gmail.com>2018-08-01 03:24:42 +0300
commit31f38400bb782833c3a6f3fa28f22171c359ddcc (patch)
tree98a1a2254e5637631b70a6a98f75b264c3445af7
parentwigust: cdrkit-libre: Apply Guix suggestions. (diff)
downloadguix-wigust-31f38400bb782833c3a6f3fa28f22171c359ddcc.tar.gz
wigust: services: Update zabbix service.
* wigust/services/monitoring.scm: Update zabbix service.
-rw-r--r--wigust/services/monitoring.scm109
1 files changed, 82 insertions, 27 deletions
diff --git a/wigust/services/monitoring.scm b/wigust/services/monitoring.scm
index 9d45478..b88f6a1 100644
--- a/wigust/services/monitoring.scm
+++ b/wigust/services/monitoring.scm
@@ -26,33 +26,34 @@
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (ice-9 match)
- #:export (zabbix-service-type))
+ #:export (zabbix-server-service-type
+ zabbix-agentd-service-type))
-(define (uglify-field-name field-name)
- (string-delete #\? (symbol->string field-name)))
-
-(define (serialize-field field-name val)
- (format #t "~a=~a\n" (uglify-field-name field-name) val))
-
-(define (serialize-string field-name val)
- (if (and (string? val) (string=? val ""))
- ""
- (serialize-field field-name val)))
+(define (zabbix-server-account config)
+ "Return the user accounts and user groups for CONFIG."
+ (let ((zabbix-user "zabbix")
+ (zabbix-group "zabbix"))
+ (list (user-group (name zabbix-group) (system? #t))
+ (user-account
+ (name zabbix-user)
+ (system? #t)
+ (group zabbix-group)
+ (comment "zabbix privilege separation user")
+ (home-directory (string-append "/var/run/" zabbix-user))
+ (shell #~(string-append #$shadow "/sbin/nologin"))))))
-;; (define-configuration zabbix-configuration
-;; (state-directory
-;; (string "/var/run/zabbix")
-;; "")
-;; (log-directory
-;; (string "/var/log/zabbix")
-;; "")
-;; (library-directory
-;; (string "/var/lib/zabbix")
-;; "")
-;; (pid-file
-;; (string "/var/run/zabbix/zabbix_server.pid")))
+(define (zabbix-server-activation config)
+ "Return the activation GEXP for CONFIG."
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((user (getpw "zabbix"))
+ (group (getpw "zabbix")))
+ (let ((dir "/var/run/zabbix"))
+ (mkdir-p dir)
+ (chmod dir #o700)
+ (chown dir (passwd:uid user) (group:gid group))))))
-(define (zabbix-account config)
+(define (zabbix-agentd-account config)
"Return the user accounts and user groups for CONFIG."
(let ((zabbix-user "zabbix")
(zabbix-group "zabbix"))
@@ -65,9 +66,63 @@
(home-directory (string-append "/var/run/" zabbix-user))
(shell #~(string-append #$shadow "/sbin/nologin"))))))
-(define zabbix-service-type
+(define (zabbix-agentd-activation config)
+ "Return the activation GEXP for CONFIG."
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((user (getpw "zabbix"))
+ (group (getpw "zabbix")))
+ (let ((dir "/var/run/zabbix"))
+ (mkdir-p dir)
+ (chmod dir #o700)
+ (chown dir (passwd:uid user) (group:gid group))))))
+
+(define (zabbix-server-shepherd-service config)
+ "Return a <shepherd-service> for Zabbix server with CONFIG."
+ (list (shepherd-service
+ (provision '(zabbix-server))
+ (documentation "Run zabbix daemon.")
+ (start #~(make-forkexec-constructor
+ (list #$(file-append zabbix "/sbin/zabbix_server")
+ "--config" "/etc/zabbix/zabbix_server.conf")
+ #:user "zabbix"
+ #:group "zabbix"
+ #:pid-file "/var/run/zabbix/zabbix_server.pid"))
+ (stop #~(make-kill-destructor)))))
+
+(define (zabbix-agentd-shepherd-service config)
+ "Return a <shepherd-service> for Zabbix agent with CONFIG."
+ (list (shepherd-service
+ (provision '(zabbix-agentd))
+ (documentation "Run zabbix daemon.")
+ (start #~(make-forkexec-constructor
+ (list #$(file-append zabbix "/sbin/zabbix_agentd")
+ "--config" "/etc/zabbix/zabbix_agentd.conf")
+ #:user "zabbix"
+ #:group "zabbix"
+ #:pid-file "/var/run/zabbix/zabbix_agentd.pid"))
+ (stop #~(make-kill-destructor)))))
+
+(define zabbix-server-service-type
+ (service-type
+ (name 'zabbix-server)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ zabbix-server-shepherd-service)
+ (service-extension account-service-type
+ zabbix-server-account)
+ (service-extension activation-service-type
+ zabbix-server-activation)))
+ (default-value '())))
+
+(define zabbix-agentd-service-type
(service-type
- (name 'zabbix)
+ (name 'zabbix-agentd)
(extensions
- (list (service-extension account-service-type zabbix-account)))
+ (list (service-extension shepherd-root-service-type
+ zabbix-agentd-shepherd-service)
+ (service-extension account-service-type
+ zabbix-agentd-account)
+ (service-extension activation-service-type
+ zabbix-agentd-activation)))
(default-value '())))