Projekt

Allgemein

Profil

Setup zabbix-server30 » Historie » Version 1

Jeremias Keihsler, 11.02.2019 11:23

1 1 Jeremias Keihsler
h1. Install Zabbix Server 3.0.x
2
3
h2. preliminary note
4
5
this procedure is based on [[dw_os_cos6:Setup_zabbix-server22]]
6
7
you may also check 
8
https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages
9
10
**this procedure has not yet been used or tested, use with caution**
11
remove this flag as soon as the first installation has succeeded.
12
13
* [[setup_apache| Apache]]
14
* [[setup_mariadb| MariaDB]]
15
16
h2. Server-Install
17
18
<pre><code class="bash">
19
dnf update
20
dnf install httpd httpd-devel
21
dnf install zabbix30-server-mysql zabbix30-agent zabbix30-web-mysql
22
dnf install mariadb-server
23
systemctl start httpd.service
24
systemctl enable httpd.service
25
systemctl start mariadb.service
26
systemctl enable mariadb.service
27
/usr/bin/mysql_secure_installation
28
mysql -u root -p
29
</code></pre>
30
<pre><code class="bash">
31
mysql> create database zabbix character set utf8 collate utf8_bin;
32
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
33
mysql> exit
34
</code></pre>
35
<pre><code class="bash">
36
cd /usr/share/zabbix-mysql/
37
mysql -u root -p zabbix < schema.sql
38
mysql -u root -p zabbix < images.sql
39
mysql -u root -p zabbix < data.sql
40
vim /etc/zabbix/zabbix_server.conf
41
</code></pre>
42
<pre>
43
# line 116: uncomment and add DB password for Zabbix
44
DBPassword=password
45
</pre>
46
<pre><code class="bash">
47
vim /etc/zabbix/zabbix_agentd.conf
48
</code></pre>
49
<pre>
50
# line 133: change to your hostname
51
Hostname=zabbix.server.com
52
</pre>
53
<pre><code class="bash">
54
vim /etc/php.ini
55
</code></pre>
56
<pre>
57
# line 384: change to Zabbix recommended
58
max_execution_time = 300
59
 
60
# line 394: change to Zabbix recommended
61
max_input_time = 300
62
 
63
# line 405: change to Zabbix recommended
64
memory_limit = 128M
65
 
66
# line 672: change to Zabbix recommended
67
post_max_size = 16M
68
 
69
# line 800: change to Zabbix recommended
70
upload_max_filesize = 2M
71
 
72
# line 879: uncomment and add your timezone
73
date.timezone = Europe/Vienna
74
</pre>
75
<pre><code class="bash">
76
systemctl start zabbix-server
77
systemctl enable zabbix-server-mysql
78
systemctl start zabbix-agent
79
systemctl enable zabbix-agent
80
systemctl restart httpd
81
</code></pre>
82
83
h3. Firewall
84
85
if you are going to monitor other systems than the @localhost@ then you have to open ports @10050@ and @10051@
86
87
<pre><code class="bash">
88
firewall-cmd --permanent --add-port=10050/tcp
89
firewall-cmd --permanent --add-port=10051/tcp
90
systemctl restart firewalld
91
</code></pre>
92
93
h3. SELinux
94
95
as SELinux prevents the web-client to establish a connection to @localhost:10050@ you will get a wrong indication on Server-Status. Allow access to the server via
96
<pre><code class="bash">
97
setsebool -P httpd_can_connect_zabbix 1
98
</code></pre>
99
100
as SELinux prevents zabbix from fetching the SSH-state you will get a wrong indication on SSH-Status. Allow access to the service via
101
<pre><code class="bash">
102
setsebool -P zabbix_can_network on
103
</code></pre>
104
105
106
h1. Backup Zabbix config
107
108
is taken from https://github.com/maxhq/zabbix-backup/
109
110
This script is a simple way to backup all configuration tables (eg. templates, hostgroups, hosts, triggers…) without the history data.
111
112
As the result is very small, is possible run this backup many times per day.
113
114
The backup-script may be invoked by cron
115
116
@/etc/cron.d/zabbix-backup@
117
<pre>
118
# JKE 2016-04-10
119
#
120
# minute hour day month dayofweek
121
# m h d m d
122
# - - - - -
123
# | | | | |
124
# | | | | +-day of week (0-7) sunday=0 or 7
125
# | | | +---month (1-12)
126
# | | +-----day of month (1-31)
127
# | +-------hour (0-23)
128
# +---------min (0-59)
129
# 
130
	5	1	*	*	*	root	/usr/local/bin/zabbix-mysql-backupconf.sh -p password -o /var/cache/myzabbixdump -r 5 -q
131
</pre>
132
133
@zabbix-mysql-backupconf.sh@
134
<pre>
135
#!/usr/bin/env bash
136
#
137
# NAME
138
#     zabbix-mysql-dump - Configuration Backup for Zabbix with MySQL
139
#
140
# SYNOPSIS
141
#     This is a MySQL configuration backup script for Zabbix 1.x and 2.x.
142
#     It does a full backup of all configuration tables, but only a schema
143
#     backup of large data tables.
144
#
145
#     The script is based on a script by Ricardo Santos
146
#     (http://zabbixzone.com/zabbix/backuping-only-the-zabbix-configuration/)
147
#
148
# CONTRIBUTORS
149
#      - Ricardo Santos
150
#      - Jens Berthold (maxhq)
151
#      - Oleksiy Zagorskyi (zalex)
152
#      - Petr Jendrejovsky
153
#      - Jonathan Bayer
154
#      - Andreas Niedermann (dre-)
155
#      - Mi?u Moldovan (dumol)
156
#      - Daniel Schneller (dschneller)
157
#
158
# HISTORY
159
#     0.8.0 (2016-01-22)
160
#         FIX: Only invoke `dig` if available
161
#         ENH: Option -c to use a MySQL config ("options") file (suggested by Daniel Schneller)
162
#         ENH: Option -r to rotate backup files (Daniel Schneller)
163
#         ENH: Add database version to filename if available
164
#         ENH: Add quiet mode. IP reverse lookup optional (Daniel Schneller)
165
#         ENH: Bash related fixes (Misu Moldovan)
166
#         CHG: Default output directory is now $PWD instead of script dir
167
#
168
#     0.7.1 (2015-01-27)
169
#         NEW: Parsing of commandline arguments implemented
170
#         ENH: Try reverse lookup of IPs and include hostname/IP in filename
171
#         REV: Stop if database password is wrong
172
# 
173
#     0.7.0 (2014-10-02)
174
#         ENH: Complete overhaul to make script work with lots of Zabbix versions
175
#
176
#     0.6.0 (2014-09-15)
177
#         REV: Updated the table list for use with zabbix v2.2.3
178
#
179
#     0.5.0 (2013-05-13)
180
#         NEW: Added table list comparison between database and script
181
#
182
#     0.4.0 (2012-03-02)
183
#         REV: Incorporated mysqldump options (suggested by Jonathan Bayer)
184
#
185
#     0.3.0 (2012-02-06)
186
#         ENH: Backup of Zabbix 1.9.x / 2.0.0, removed unnecessary use of
187
#              variables (DATEBIN etc) for commands that use to be in $PATH
188
#
189
#     0.2.0 (2011-11-05)
190
#
191
# AUTHOR
192
#     Jens Berthold (maxhq), 2016
193
194
195
#
196
# DEFAULT VALUES
197
# 
198
# DO NOT EDIT THESE VALUES!
199
# Instead, use command line parameters or a config file to specify options.
200
#
201
DUMPDIR="$PWD"
202
DBHOST="127.0.0.1"
203
DBNAME="zabbix"
204
DBUSER="zabbix"
205
DBPASS=""
206
QUIET="no"
207
REVERSELOOKUP="yes"
208
GENERATIONSTOKEEP=0
209
210
#
211
# SHOW HELP
212
#
213
if [ -z "$1" ]; then
214
	cat <<EOF
215
USAGE
216
	$(basename $BASH_SOURCE) [options]
217
	
218
OPTIONS
219
	-h HOST
220
		Hostname/IP of MySQL server.
221
		Default: $DBHOST
222
223
	-d DATABASE
224
		Zabbix database name.
225
		Default: $DBNAME
226
227
	-u USER
228
		MySQL user to access Zabbix database.
229
		Default: $DBUSER
230
231
	-p PASSWORD
232
		MySQL user password (specify "-" for a prompt).
233
		Default: no password
234
235
	-o DIR
236
		Save Zabbix MySQL dumps to DIR.
237
		Default: $DUMPDIR
238
239
	-c FILE
240
		Use FILE for MySQL options (passed via --defaults-extra-file).
241
		PLEASE NOTE:
242
		mysqldump needs the database to be specified via command line.
243
		So the first "database" options found in the config file is
244
		used for mysqldump.
245
246
	-r NUM
247
		Rotate backups while keeping up to NUM generations.
248
		Uses filename to match.
249
		Default: keep all backups
250
251
	-n
252
		Skip reverse lookup of IP address for host.
253
254
	-q
255
		Quiet mode: no output except for errors (for batch/crontab use).
256
257
EXAMPLES
258
	$(basename $BASH_SOURCE) -h 1.2.3.4 -d zabbixdb -u zabbix -p test
259
	$(basename $BASH_SOURCE) -u zabbix -p - -o /tmp
260
	$(basename $BASH_SOURCE) -c /etc/mysql/mysql.cnf
261
	$(basename $BASH_SOURCE) -c /etc/mysql/mysql.cnf -d zabbixdb
262
263
EOF
264
	exit 1
265
fi	
266
267
#
268
# PARSE COMMAND LINE ARGUMENTS
269
#
270
DB_GIVEN=0
271
while getopts ":h:d:u:p:o:r:c:qn" opt; do
272
	case $opt in
273
		h)  DBHOST="$OPTARG" ;;
274
		d)  DBNAME="$OPTARG"; DB_GIVEN=1 ;;
275
		u)  DBUSER="$OPTARG" ;;
276
		p)  DBPASS="$OPTARG" ;;
277
		c)  CNFFILE="$OPTARG" ;;
278
		o)  DUMPDIR="$OPTARG" ;;
279
		r)  GENERATIONSTOKEEP=$(printf '%.0f' "$OPTARG") ;;
280
		n)  REVERSELOOKUP="no" ;;
281
		q)  QUIET="yes" ;;
282
		\?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;;
283
		:)  echo "Option -$OPTARG requires an argument" >&2; exit 1 ;;
284
	esac
285
done
286
287
# Password prompt
288
if [ "$DBPASS" = "-" ]; then
289
	read -s -p "Enter MySQL password for user '$DBUSER' (input will be hidden): " DBPASS
290
	echo ""
291
fi
292
293
# Config file validations
294
if [ ! -z "$CNFFILE" ]; then
295
	if [ ! -r "$CNFFILE" ]; then
296
		echo "ERROR: Cannot read configuration file $CNFFILE" >&2
297
		exit 1
298
	fi
299
	# Database name needs special treatment:
300
	# For mysqldump it has to be specified on the command line!
301
	# Therefore we need to get it from the config file
302
	if [ $DB_GIVEN -eq 0 ]; then
303
		DBNAME=$(grep -m 1 ^database= "$CNFFILE" | cut -d= -f2)
304
	fi
305
fi
306
307
#
308
# CONSTANTS
309
#
310
MYSQL_OPTS=()
311
[ ! -z "$CNFFILE" ] && MYSQL_OPTS=("${MYSQL_OPTS[@]}" --defaults-extra-file="$CNFFILE")
312
[ ! -z "$DBHOST" ] && MYSQL_OPTS=("${MYSQL_OPTS[@]}" -h $DBHOST)
313
[ ! -z "$DBUSER" ] && MYSQL_OPTS=("${MYSQL_OPTS[@]}" -u $DBUSER)
314
[ ! -z "$DBPASS" ] && MYSQL_OPTS=("${MYSQL_OPTS[@]}" -p"$DBPASS")
315
316
MYSQL_OPTS_BATCH=("${MYSQL_OPTS[@]}" --batch --silent)
317
[ ! -z "$DBNAME" ] && MYSQL_OPTS_BATCH=("${MYSQL_OPTS_BATCH[@]}" -D $DBNAME)
318
319
# Host name: try reverse lookup if IP is given
320
DBHOSTNAME="$DBHOST"
321
command -v dig >/dev/null 2>&1
322
FIND_DIG=$?
323
if [ "$REVERSELOOKUP" == "yes" -a $FIND_DIG -eq 0 ]; then
324
	# Try resolving a given host ip
325
	newHostname=$(dig +noall +answer -x $DBHOST | sed -r 's/((\S+)\s+)+([^\.]+)\..*/\3/')
326
	test \! -z "$newHostname" && DBHOSTNAME="$newHostname"
327
fi
328
329
#
330
# CONFIG DUMP
331
#
332
if [ "$QUIET" == "no" ]; then
333
	cat <<-EOF
334
	Configuration:
335
	 - host:     $DBHOST ($DBHOSTNAME)
336
	 - database: $DBNAME
337
	 - user:     $DBUSER
338
	 - output:   $DUMPDIR
339
340
	EOF
341
fi
342
343
#
344
# FUNCTIONS
345
#
346
347
# Returns TRUE if argument 1 is part of the given array (remaining arguments)
348
elementIn () {
349
	local e
350
	for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
351
	return 1
352
}
353
354
#
355
# CHECKS
356
#
357
if [ ! -x /usr/bin/mysqldump ]; then
358
	echo "mysqldump not found." >&2
359
	echo "(with Debian, \"apt-get install mysql-client\" will help)" >&2
360
	exit 1
361
fi
362
363
#
364
# READ TABLE LIST from __DATA__ section at the end of this script
365
# (http://stackoverflow.com/a/3477269/2983301) 
366
#
367
DATA_TABLES=()
368
while read line; do
369
	table=$(echo "$line" | cut -d" " -f1)
370
	echo "$line" | cut -d" " -f5 | grep -qi "DATA"
371
	test $? -eq 0 && DATA_TABLES+=($table)
372
done < <(sed '0,/^__DATA__$/d' "$BASH_SOURCE" | tr -s " ")
373
374
# paranoid check
375
if [ ${#DATA_TABLES[@]} -lt 5 ]; then
376
	echo "ERROR: The number of large data tables configured in this script is less than 5." >&2
377
	exit 1
378
fi
379
380
#
381
# BACKUP
382
#
383
# Read table list from database
384
[ "$QUIET" == "no" ] && echo "Fetching list of existing tables..."
385
DB_TABLES=$(mysql "${MYSQL_OPTS_BATCH[@]}" -e "SELECT table_name FROM information_schema.tables WHERE table_schema = '$DBNAME'" 2>&1)
386
if [ $? -ne 0 ]; then echo -e "ERROR while trying to access database:\n$DB_TABLES" 2>&1; exit 1; fi
387
DB_TABLES=$(echo "$DB_TABLES" | sort)
388
DB_TABLE_NUM=$(echo "$DB_TABLES" | wc -l)
389
390
# Query Zabbix database version
391
VERSION=""
392
DB_VER=$(mysql "${MYSQL_OPTS_BATCH[@]}" -N -e "select optional from dbversion;" 2>&1)
393
if [ $? -eq 0 ]; then
394
	# version string is like: 02030015
395
	re='(.*)([0-9]{2})([0-9]{4})'
396
	if [[ $DB_VER =~ $re ]]; then
397
		VERSION="_db-${BASH_REMATCH[1]}.$(( ${BASH_REMATCH[2]} + 0 )).$(( ${BASH_REMATCH[3]} + 0 ))"
398
	fi
399
fi
400
401
# Assemble file name
402
DUMPFILENAME_PREFIX="zabbix_cfg_${DBHOSTNAME}"
403
DUMPFILEBASE="${DUMPFILENAME_PREFIX}_$(date +%Y%m%d-%H%M)${VERSION}.sql"
404
DUMPFILE="$DUMPDIR/$DUMPFILEBASE"
405
406
PROCESSED_DATA_TABLES=()
407
i=0
408
409
mkdir -p "${DUMPDIR}"
410
411
[ "$QUIET" == "no" ] && echo "Starting table backups..."
412
while read table; do
413
	# large data tables: only store schema
414
	if elementIn "$table" "${DATA_TABLES[@]}"; then
415
		dump_opt="--no-data"
416
		PROCESSED_DATA_TABLES+=($table)
417
	# configuration tables: full dump
418
	else
419
		dump_opt="--extended-insert=FALSE"
420
	fi
421
422
	mysqldump "${MYSQL_OPTS[@]}" \
423
		--routines --opt --single-transaction --skip-lock-tables \
424
		$dump_opt \
425
		$DBNAME --tables ${table} >> "$DUMPFILE"
426
427
	if [ "$QUIET" == "no" ]; then
428
		# show percentage
429
		i=$((i+1)); i_percent=$(($i * 100 / $DB_TABLE_NUM))
430
		if [ $(($i_percent % 12)) -eq 0 ]; then
431
			echo -n "${i_percent}%"
432
		else
433
			if [ $(($i_percent % 2)) -eq 0 ]; then echo -n "."; fi
434
		fi
435
	fi
436
done <<<"$DB_TABLES" 
437
438
#
439
# COMPRESS BACKUP
440
#
441
if [ "$QUIET" == "no" ]; then
442
	echo -e "\n"
443
	echo "For the following large tables only the schema (without data) was stored:"
444
	for table in "${PROCESSED_DATA_TABLES[@]}"; do echo " - $table"; done
445
	
446
	echo 
447
	echo "Compressing backup file..."
448
fi
449
gzip -f "$DUMPFILE"
450
if [ $? -ne 0 ]; then
451
	echo -e "\nERROR: Could not compress backup file, see previous messages" >&2
452
	exit 1
453
fi
454
455
[ "$QUIET" == "no" ] && echo -e "\nBackup Completed:\n${DUMPFILE}.gz"
456
457
#
458
# ROTATE OLD BACKUPS
459
#
460
if [ $GENERATIONSTOKEEP -gt 0 ]; then
461
	[ "$QUIET" == "no" ] && echo "Removing old backups, keeping up to $GENERATIONSTOKEEP"
462
	REMOVE_OLD_CMD="cd \"$DUMPDIR\" && ls -t \"${DUMPFILENAME_PREFIX}\"* | /usr/bin/awk \"NR>${GENERATIONSTOKEEP}\" | xargs rm -f "
463
	eval ${REMOVE_OLD_CMD}
464
	if [ $? -ne 0 ]; then
465
		echo "ERROR: Could not rotate old backups" >&2
466
		exit 1
467
	fi
468
fi
469
470
exit 0
471
472
################################################################################
473
# List of all known table names and a flag indicating data (=large) tables
474
#
475
476
__DATA__
477
acknowledges              1.3.1    - 2.4.0  DATA
478
actions                   1.3.1    - 2.4.0
479
alerts                    1.3.1    - 2.4.0  DATA
480
application_template      2.1.0    - 2.4.0
481
applications              1.3.1    - 2.4.0
482
auditlog                  1.3.1    - 2.4.0  DATA
483
auditlog_details          1.7      - 2.4.0  DATA
484
autoreg                   1.3.1    - 1.3.4
485
autoreg_host              1.7      - 2.4.0
486
conditions                1.3.1    - 2.4.0
487
config                    1.3.1    - 2.4.0
488
dbversion                 2.1.0    - 2.4.0
489
dchecks                   1.3.4    - 2.4.0
490
dhosts                    1.3.4    - 2.4.0
491
drules                    1.3.4    - 2.4.0
492
dservices                 1.3.4    - 2.4.0
493
escalations               1.5.3    - 2.4.0
494
events                    1.3.1    - 2.4.0  DATA
495
expressions               1.7      - 2.4.0
496
functions                 1.3.1    - 2.4.0
497
globalmacro               1.7      - 2.4.0
498
globalvars                1.9.6    - 2.4.0
499
graph_discovery           1.9.0    - 2.4.0
500
graph_theme               1.7      - 2.4.0
501
graphs                    1.3.1    - 2.4.0
502
graphs_items              1.3.1    - 2.4.0
503
group_discovery           2.1.4    - 2.4.0
504
group_prototype           2.1.4    - 2.4.0
505
groups                    1.3.1    - 2.4.0
506
help_items                1.3.1    - 2.1.8
507
history                   1.3.1    - 2.4.0  DATA
508
history_log               1.3.1    - 2.4.0  DATA
509
history_str               1.3.1    - 2.4.0  DATA
510
history_str_sync          1.3.1    - 2.2.6  DATA
511
history_sync              1.3.1    - 2.2.6  DATA
512
history_text              1.3.1    - 2.4.0  DATA
513
history_uint              1.3.1    - 2.4.0  DATA
514
history_uint_sync         1.3.1    - 2.2.6  DATA
515
host_discovery            2.1.4    - 2.4.0
516
host_inventory            1.9.6    - 2.4.0
517
host_profile              1.9.3    - 1.9.5
518
hostmacro                 1.7      - 2.4.0
519
hosts                     1.3.1    - 2.4.0
520
hosts_groups              1.3.1    - 2.4.0
521
hosts_profiles            1.3.1    - 1.9.2
522
hosts_profiles_ext        1.6      - 1.9.2
523
hosts_templates           1.3.1    - 2.4.0
524
housekeeper               1.3.1    - 2.4.0
525
httpstep                  1.3.3    - 2.4.0
526
httpstepitem              1.3.3    - 2.4.0
527
httptest                  1.3.3    - 2.4.0
528
httptestitem              1.3.3    - 2.4.0
529
icon_map                  1.9.6    - 2.4.0
530
icon_mapping              1.9.6    - 2.4.0
531
ids                       1.3.3    - 2.4.0
532
images                    1.3.1    - 2.4.0
533
interface                 1.9.1    - 2.4.0
534
interface_discovery       2.1.4    - 2.4.0
535
item_condition            2.3.0    - 2.4.0
536
item_discovery            1.9.0    - 2.4.0
537
items                     1.3.1    - 2.4.0
538
items_applications        1.3.1    - 2.4.0
539
maintenances              1.7      - 2.4.0
540
maintenances_groups       1.7      - 2.4.0
541
maintenances_hosts        1.7      - 2.4.0
542
maintenances_windows      1.7      - 2.4.0
543
mappings                  1.3.1    - 2.4.0
544
media                     1.3.1    - 2.4.0
545
media_type                1.3.1    - 2.4.0
546
node_cksum                1.3.1    - 2.2.6
547
node_configlog            1.3.1    - 1.4.7
548
nodes                     1.3.1    - 2.2.6
549
opcommand                 1.9.4    - 2.4.0
550
opcommand_grp             1.9.2    - 2.4.0
551
opcommand_hst             1.9.2    - 2.4.0
552
opconditions              1.5.3    - 2.4.0
553
operations                1.3.4    - 2.4.0
554
opgroup                   1.9.2    - 2.4.0
555
opmediatypes              1.7      - 1.8.21
556
opmessage                 1.9.2    - 2.4.0
557
opmessage_grp             1.9.2    - 2.4.0
558
opmessage_usr             1.9.2    - 2.4.0
559
optemplate                1.9.2    - 2.4.0
560
profiles                  1.3.1    - 2.4.0
561
proxy_autoreg_host        1.7      - 2.4.0
562
proxy_dhistory            1.5      - 2.4.0
563
proxy_history             1.5.1    - 2.4.0
564
regexps                   1.7      - 2.4.0
565
rights                    1.3.1    - 2.4.0
566
screens                   1.3.1    - 2.4.0
567
screens_items             1.3.1    - 2.4.0
568
scripts                   1.5      - 2.4.0
569
service_alarms            1.3.1    - 2.4.0
570
services                  1.3.1    - 2.4.0
571
services_links            1.3.1    - 2.4.0
572
services_times            1.3.1    - 2.4.0
573
sessions                  1.3.1    - 2.4.0
574
slides                    1.3.4    - 2.4.0
575
slideshows                1.3.4    - 2.4.0
576
sysmap_element_url        1.9.0    - 2.4.0
577
sysmap_url                1.9.0    - 2.4.0
578
sysmaps                   1.3.1    - 2.4.0
579
sysmaps_elements          1.3.1    - 2.4.0
580
sysmaps_link_triggers     1.5      - 2.4.0
581
sysmaps_links             1.3.1    - 2.4.0
582
timeperiods               1.7      - 2.4.0
583
trends                    1.3.1    - 2.4.0  DATA
584
trends_uint               1.5      - 2.4.0  DATA
585
trigger_depends           1.3.1    - 2.4.0
586
trigger_discovery         1.9.0    - 2.4.0
587
triggers                  1.3.1    - 2.4.0
588
user_history              1.7      - 2.4.0
589
users                     1.3.1    - 2.4.0
590
users_groups              1.3.1    - 2.4.0
591
usrgrp                    1.3.1    - 2.4.0
592
valuemaps                 1.3.1    - 2.4.0
593
594
</pre>