lnxshell
(Oliver)
November 25, 2020, 12:45pm
1
Hi guys,
I am trying to sync (create) services from an existing datasource in icinga director. Alle the prechecks (Check for changes) running fine but on “Trigger this Sync” I am facing the error:
Icinga\Module\Director\Objects\IcingaService uv2-rtt-check-(XXX/1.1.1.1): preg_match(): Unknown modifier ''
My environment:
Icinga Core 2.12.1-1
Director: 1.7.2 (git 9c95fb8680f6f389ca24ff6e41d9002185596cb3)
ipl: 0.5.0
reactbundle: 0.7.0
incubator: 0.5.0
PHP:
php -v
PHP 7.4.12 (cli) (built: Nov 3 2020 14:31:48) ( NTS )
sample data (anonymised) for my import / sync:
rtt_checks_uid
rtt_checks_descr
rtt_checks_ip
rtt_checks_location
rtt_checks_method
sat_descr
sat_ip
sat_rtt_satid
19!1.2.3.4
some office
1.2.3.4
XXX
vpn
AAA
5.6.7.8
19
20!1.2.3.4
some office
1.2.3.4
XXX
vpn
BBB
9.10.11.12
20
key column -> rtt_checks_uid (concat in psql query)
The sync rule:
Source name
Source field
Destination
Prio
uv2-db-rtt-checks
uv2-rtt-check-(${sat_descr}/${rtt_checks_ip})
object_name
uv2-db-rtt-checks
director-template-service-rtt
import
uv2-db-rtt-checks
hostname.domain.tld
host
uv2-db-rtt-checks
${rtt_checks_descr}
notes
Is that a bug?
Thx & br
Oliver
lnxshell
(Oliver)
November 26, 2020, 8:34am
2
Update: I´ve found a similar behavior during editing the used service-template:
preg_match(): Unknown modifier ‘’ (AssignFilterHelper.php:153)
zones.d/director-global/service_templates.conf
template Service "director-template-service-rtt" {
import "director-template-service-generic"
check_command = "check_rtt"
max_check_attempts = "2"
retry_interval = 1s
check_timeout = 10s
enable_notifications = false
vars.rtt_calc_timeframe = "5"
vars.rtt_critical_integer = "30"
vars.rtt_critical_percent = "50"
vars.rtt_easy_query = "1"
vars.rtt_influxdb_host = "1.1.1.1"
vars.rtt_influxdb_measurement = "icmpstats_rtt"
vars.rtt_influxdb_name = "xx"
vars.rtt_influxdb_port = "8086"
vars.rtt_overwrite_result = "false"
vars.rtt_performance_data = "true"
vars.rtt_warning_integer = "12"
}
looking into the file shows me:
protected function matchesExpression(FilterExpression $filter, $object)
{
...
-->>> return (bool) preg_match($pattern, $value);
...
}
The weird thing is: The error is shown but the changes have been saved after pressing the STORE button. Unfortunately this does not working during an director sync-rule import.
lnxshell
(Oliver)
November 26, 2020, 6:22pm
3
Solution: I had one service-group apply in director using the following filter rule:
service.name = director-apply-http-(*\/US\/*)
-> deleted -> everything is working fine. The backslash somehow caused all the troubles.