Hi,

On 09 Apr 2016, at 13:58, Toussaint OTTAVI 
<t.ott...@bc-109.com<mailto:t.ott...@bc-109.com>> wrote:

Hi,

I'm new to this ML. I'm planning to migrate from Nagios, and I'm evaluating 
Icinga2.

I read a lot of things about the new sytax of the configuration files, and all 
the advices telling to re-write configuration files from scratch.

Yep. That’s our experience from now 2 years of community and customer support. 
And I am doing quite a lot of support, as others say.


But... that clearly won't be possible on our production environment ! We have 
hundreds of hosts, and thousands of services. Re-writing all the config files 
by hand, just to get the same thing as before, would involve several days 
(weeks ?) of work. I don't have that time.

You haven’t started yet, so you can’t estimate it anyways. Give it a try once 
you’re learned the new syntax and do a small prototype first.


Having the ability to import, let's say, 80% of the actual config (even it is 
not optimized at all), would be the minimum. Without that, Icinga may be the 
best software in the world, I can't afford spending too much time re-writing 
existing files with another syntax.

We discussed writing a config parser for the Icinga 1.x language, just in 
Icinga 2. That was iirc in late 2012 or somewhere in 2013. We decided against 
it. Then we would have to maintain two configuration languages and users will 
never switch to a new format. The one were a lot of effort has been running 
into allowing to easily deploy thousands of services with some simple apply 
rules.

You will see the old world partially, as there’s status.dat or DB IDO or the 
command pipe. In the end you don’t care much when looking into the Icinga Web 2 
frontend. One thing which could be interesting as well is the REST API which 
allows your to create objects at runtime without doing a reload.


About the "migration script", I didn't really understand what's the currest 
status : Is it still a "standalone" tool ? Is it integrated in the icingacli (I 
didn't find it) ? Is there any documentation (I didn't ever find ow to specify 
the source path for old files) ? Is it still supported, or is it considered as 
"deprecated" and "unuseful” ?

The answer is simple - everyone thought a migration script will solve the pain 
of rewriting the configs. So we created one. Turns out that your config objects 
look horrible and you are not able to maintain such in production.

Even harder - doing a migration automatically will hide several cool new 
features from you, and later on you will find yourself needing to learn about 
the new stuff in a short while. Especially when you ask for support and someone 
sees your “vars.ARG1” custom attributes. That works but is far from elegant in 
production.

I’m the author of that script which partially uses code for parsing the old 
config done by Tom. It will never get integrated into icingacli, bugs won’t be 
fixed and it is now deprecated. Will be removed soon enough allowing anyone to 
copy the code if they want to.

The future in terms of configuration tools is the Icinga Director, which I have 
been eagerly waiting for. If you have some sort of CMDB or $datastorage you can 
import your monitoring data from, look into that. Better than any migration 
script.


I understand all what has been said about the advantages of the new file 
structure. But without a decent migration tool, I just can't afford spending so 
much time in rewriting my existing Nagios files by hand.

Instead of fearing the time it would take, you should do an inventory at first 
glance.

Find out what’s running currently, find similarities and identify your plugins, 
check commands, and checkable objects. Further, dive into the notification and 
dependency world. Get to know your contacts and parents.

There is no unique guidance in doing such a migration, as each Nagios/Icinga1 
system has grown over time to something special in your very own environment 
and daily usage.

I guess you are also using one of the many “object tricks”, e.g. assigning 
services to a hostgroup where hosts are members of. They inherit the service 
relation then. Cool stuff, can be done with Icinga 2’s apply rules.

But there is more to go for. Do you have multiple ping services with different 
thresholds, based on the server type (or hostgroup)? Go for apply rules with 
conditionals for command arguments (custom attributes).

apply Service “ping4” {

  check_command = “ping4"

  if (host.vars.server_type == “prod”) {
    vars.ping_wrta = 50
  } else {
    vars.ping_wrta = 100
  }

  assign where host.vars.server_type
}

There’s probably room for improvement on the migration hints, as we learned 
from community feedback and we also added new features since the initial 
release 2.0.0 two years ago. At that time we did not have apply-for rules, 
conditionals, functions, object accessors, and so on.

Though Icinga has a vibrant community and we as developers are active in many 
channels. We cannot do your migration, but help you with guidance on specific 
examples. The faster you learn from the community’s advice, the sooner your 
migration is finished.

Kind regards,
Michael


Thank you in advance for your help and advices.
_______________________________________________
icinga-users mailing list
icinga-users@lists.icinga.org<mailto:icinga-users@lists.icinga.org>
https://lists.icinga.org/mailman/listinfo/icinga-users


-- 
Michael Friedrich, DI (FH)
Senior Developer

NETWAYS GmbH | Deutschherrnstr. 15-19 | D-90429 Nuernberg
Tel: +49 911 92885-0 | Fax: +49 911 92885-77
CEO: Julian Hein, Bernd Erk | AG Nuernberg HRB18461
http://www.netways.de | michael.friedr...@netways.de

** OSDC 2016 - April - netways.de/osdc **
** OSBConf 2016 - September - osbconf.org **
_______________________________________________
icinga-users mailing list
icinga-users@lists.icinga.org
https://lists.icinga.org/mailman/listinfo/icinga-users

Reply via email to