1# Icinga 2 CLI Commands <a id="cli-commands"></a>
2
3Icinga 2 comes with a number of CLI commands which support bash autocompletion.
4
5These CLI commands will allow you to use certain functionality
6provided by and around Icinga 2.
7
8Each CLI command provides its own help and usage information, so please
9make sure to always run them with the `--help` parameter.
10
11Run `icinga2` without any arguments to get a list of all available global
12options.
13
14```
15# icinga2
16icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
17
18Usage:
19  icinga2 <command> [<arguments>]
20
21Supported commands:
22  * api setup (setup for API)
23  * ca list (lists all certificate signing requests)
24  * ca restore (restores a removed certificate request)
25  * ca remove (removes an outstanding certificate request)
26  * ca sign (signs an outstanding certificate request)
27  * console (Icinga debug console)
28  * daemon (starts Icinga 2)
29  * feature disable (disables specified feature)
30  * feature enable (enables specified feature)
31  * feature list (lists all available features)
32  * node setup (set up node)
33  * node wizard (wizard for node setup)
34  * object list (lists all objects)
35  * pki new-ca (sets up a new CA)
36  * pki new-cert (creates a new CSR)
37  * pki request (requests a certificate)
38  * pki save-cert (saves another Icinga 2 instance's certificate)
39  * pki sign-csr (signs a CSR)
40  * pki ticket (generates a ticket)
41  * pki verify (verify TLS certificates: CN, signed by CA, is CA; Print certificate)
42  * variable get (gets a variable)
43  * variable list (lists all variables)
44
45Global options:
46  -h [ --help ]             show this help message
47  -V [ --version ]          show version information
48  --color                   use VT100 color codes even when stdout is not a
49                            terminal
50  -D [ --define ] arg       define a constant
51  -a [ --app ] arg          application library name (default: icinga)
52  -l [ --library ] arg      load a library
53  -I [ --include ] arg      add include search directory
54  -x [ --log-level ] arg    specify the log level for the console log.
55                            The valid value is either debug, notice,
56                            information (default), warning, or critical
57  -X [ --script-debugger ]  whether to enable the script debugger
58
59Report bugs at <https://github.com/Icinga/icinga2>
60Icinga home page: <https://icinga.com/>
61```
62
63
64## Icinga 2 CLI Bash Autocompletion <a id="cli-commands-autocompletion"></a>
65
66Bash Auto-Completion (pressing `<TAB>`) is provided only for the corresponding context.
67
68While `--config` suggests and auto-completes files and directories on disk,
69`feature enable` only suggests disabled features.
70
71RPM and Debian packages install the bash completion files into
72`/etc/bash_completion.d/icinga2`.
73
74You need to install the `bash-completion` package if not already installed.
75
76RHEL/CentOS/Fedora:
77
78```bash
79yum install bash-completion
80```
81
82SUSE:
83
84```bash
85zypper install bash-completion
86```
87
88Debian/Ubuntu:
89
90```bash
91apt-get install bash-completion
92```
93
94Ensure that the `bash-completion.d` directory is added to your shell
95environment. You can manually source the icinga2 bash-completion file
96into your current session and test it:
97
98```bash
99source /etc/bash-completion.d/icinga2
100```
101
102
103## Icinga 2 CLI Global Options <a id="cli-commands-global-options"></a>
104
105### Application Type
106
107By default the `icinga2` binary loads the `icinga` library. A different application type
108can be specified with the `--app` command-line option.
109Note: This is not needed by the average Icinga user, only developers.
110
111### Libraries
112
113Instead of loading libraries using the [`library` config directive](17-language-reference.md#library)
114you can also use the `--library` command-line option.
115Note: This is not needed by the average Icinga user, only developers.
116
117### Constants
118
119[Global constants](17-language-reference.md#constants) can be set using the `--define` command-line option.
120
121### Config Include Path <a id="config-include-path"></a>
122
123When including files you can specify that the include search path should be
124checked. You can do this by putting your configuration file name in angle
125brackets like this:
126
127```
128include <test.conf>
129```
130
131This causes Icinga 2 to search its include path for the configuration file
132`test.conf`. By default the installation path for the [Icinga Template Library](10-icinga-template-library.md#icinga-template-library)
133is the only search directory.
134
135Using the `--include` command-line option additional search directories can be
136added.
137
138## CLI command: Api <a id="cli-command-api"></a>
139
140Provides helper functions to enable and setup the
141[Icinga 2 API](12-icinga2-api.md#icinga2-api-setup).
142
143### CLI command: Api Setup <a id="cli-command-api-setup "></a>
144
145```
146# icinga2 api setup --help
147icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
148
149Usage:
150  icinga2 api setup [<arguments>]
151
152Setup for Icinga 2 API.
153
154Global options:
155  -h [ --help ]             show this help message
156  -V [ --version ]          show version information
157  --color                   use VT100 color codes even when stdout is not a
158                            terminal
159  -D [ --define ] arg       define a constant
160  -I [ --include ] arg      add include search directory
161  -x [ --log-level ] arg    specify the log level for the console log.
162                            The valid value is either debug, notice,
163                            information (default), warning, or critical
164  -X [ --script-debugger ]  whether to enable the script debugger
165
166Command options:
167  --cn arg                  The certificate's common name
168
169Report bugs at <https://github.com/Icinga/icinga2>
170Get support: <https://icinga.com/support/>
171Documentation: <https://icinga.com/docs/>
172Icinga home page: <https://icinga.com/>
173```
174
175## CLI command: Ca <a id="cli-command-ca"></a>
176
177List and manage incoming certificate signing requests. More details
178can be found in the [signing methods](06-distributed-monitoring.md#distributed-monitoring-setup-sign-certificates-master)
179chapter. This CLI command is available since v2.8.
180
181```
182# icinga2 ca --help
183icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
184
185Usage:
186  icinga2 <command> [<arguments>]
187
188Supported commands:
189  * ca list (lists all certificate signing requests)
190  * ca sign (signs an outstanding certificate request)
191  * ca restore (restores a removed certificate request)
192  * ca remove (removes an outstanding certificate request)
193
194Global options:
195  -h [ --help ]             show this help message
196  -V [ --version ]          show version information
197  --color                   use VT100 color codes even when stdout is not a
198                            terminal
199  -D [ --define ] arg       define a constant
200  -a [ --app ] arg          application library name (default: icinga)
201  -l [ --library ] arg      load a library
202  -I [ --include ] arg      add include search directory
203  -x [ --log-level ] arg    specify the log level for the console log.
204                            The valid value is either debug, notice,
205                            information (default), warning, or critical
206  -X [ --script-debugger ]  whether to enable the script debugger
207
208Report bugs at <https://github.com/Icinga/icinga2>
209Icinga home page: <https://icinga.com/>
210```
211
212
213### CLI command: Ca List <a id="cli-command-ca-list"></a>
214
215```
216icinga2 ca list --help
217icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
218
219Usage:
220  icinga2 ca list [<arguments>]
221
222Lists pending certificate signing requests.
223
224Global options:
225  -h [ --help ]             show this help message
226  -V [ --version ]          show version information
227  --color                   use VT100 color codes even when stdout is not a
228                            terminal
229  -D [ --define ] arg       define a constant
230  -I [ --include ] arg      add include search directory
231  -x [ --log-level ] arg    specify the log level for the console log.
232                            The valid value is either debug, notice,
233                            information (default), warning, or critical
234  -X [ --script-debugger ]  whether to enable the script debugger
235
236Command options:
237  --all                     List all certificate signing requests, including
238                            signed. Note: Old requests are automatically
239                            cleaned by Icinga after 1 week.
240  --removed                 List all removed CSRs (for use with 'ca restore')
241  --json                    encode output as JSON
242
243Report bugs at <https://github.com/Icinga/icinga2>
244Get support: <https://icinga.com/support/>
245Documentation: <https://icinga.com/docs/>
246Icinga home page: <https://icinga.com/>
247```
248
249## CLI command: Console <a id="cli-command-console"></a>
250
251The CLI command `console` can be used to debug and evaluate Icinga 2 config expressions,
252e.g. to test [functions](17-language-reference.md#functions) in your local sandbox.
253
254```
255$ icinga2 console
256Icinga 2 (version: v2.11.0)
257<1> => function test(name) {
258<1> ..   log("Hello " + name)
259<1> .. }
260null
261<2> => test("World")
262information/config: Hello World
263null
264<3> =>
265```
266
267Further usage examples can be found in the [library reference](18-library-reference.md#library-reference) chapter.
268
269```
270# icinga2 console --help
271icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
272
273Usage:
274  icinga2 console [<arguments>]
275
276Interprets Icinga script expressions.
277
278Global options:
279  -h [ --help ]             show this help message
280  -V [ --version ]          show version information
281  --color                   use VT100 color codes even when stdout is not a
282                            terminal
283  -D [ --define ] arg       define a constant
284  -a [ --app ] arg          application library name (default: icinga)
285  -l [ --library ] arg      load a library
286  -I [ --include ] arg      add include search directory
287  -x [ --log-level ] arg    specify the log level for the console log.
288                            The valid value is either debug, notice,
289                            information (default), warning, or critical
290  -X [ --script-debugger ]  whether to enable the script debugger
291
292Command options:
293  -c [ --connect ] arg      connect to an Icinga 2 instance
294  -e [ --eval ] arg         evaluate expression and terminate
295  -r [ --file ] arg         evaluate a file and terminate
296  --syntax-only             only validate syntax (requires --eval or --file)
297  --sandbox                 enable sandbox mode
298
299Report bugs at <https://github.com/Icinga/icinga2>
300Icinga home page: <https://icinga.com/>
301```
302
303
304On operating systems without the `libedit` library installed there is no
305support for line-editing or a command history. However you can
306use the `rlwrap` program if you require those features:
307
308```bash
309rlwrap icinga2 console
310```
311
312The debug console can be used to connect to a running Icinga 2 instance using
313the [REST API](12-icinga2-api.md#icinga2-api). [API permissions](12-icinga2-api.md#icinga2-api-permissions)
314are required for executing config expressions and auto-completion.
315
316> **Note**
317>
318> The debug console does not currently support TLS certificate verification.
319>
320> Runtime modifications are not validated and might cause the Icinga 2
321> daemon to crash or behave in an unexpected way. Use these runtime changes
322> at your own risk and rather *inspect and debug objects read-only*.
323
324You can specify the API URL using the `--connect` parameter.
325
326Although the password can be specified there process arguments on UNIX platforms are
327usually visible to other users (e.g. through `ps`). In order to securely specify the
328user credentials the debug console supports two environment variables:
329
330  Environment variable | Description
331  ---------------------|-------------
332  ICINGA2_API_USERNAME | The API username.
333  ICINGA2_API_PASSWORD | The API password.
334
335Here's an example:
336
337```
338$ ICINGA2_API_PASSWORD=icinga icinga2 console --connect 'https://root@localhost:5665/'
339Icinga 2 (version: v2.11.0)
340<1> =>
341```
342
343Once connected you can inspect variables and execute other expressions by entering them at the prompt:
344
345```
346<1> => var h = get_host("icinga2-agent1.localdomain")
347null
348<2> => h.last_check_result
349{
350        active = true
351        check_source = "icinga2-agent1.localdomain"
352        command = [ "/usr/local/sbin/check_ping", "-H", "127.0.0.1", "-c", "5000,100%", "-w", "3000,80%" ]
353        execution_end = 1446653527.174983
354        execution_start = 1446653523.152673
355        exit_status = 0.000000
356        output = "PING OK - Packet loss = 0%, RTA = 0.11 ms"
357        performance_data = [ "rta=0.114000ms;3000.000000;5000.000000;0.000000", "pl=0%;80;100;0" ]
358        schedule_end = 1446653527.175133
359        schedule_start = 1446653583.150000
360        state = 0.000000
361        type = "CheckResult"
362        vars_after = {
363                attempt = 1.000000
364                reachable = true
365                state = 0.000000
366                state_type = 1.000000
367        }
368        vars_before = {
369                attempt = 1.000000
370                reachable = true
371                state = 0.000000
372                state_type = 1.000000
373        }
374}
375<3> =>
376```
377
378You can use the `--eval` parameter to evaluate a single expression in batch mode.
379Using the `--file` option you can specify a file which should be evaluated.
380The output format for batch mode is JSON.
381
382The `--syntax-only` option can be used in combination with `--eval` or `--file`
383to check a script for syntax errors. In this mode the script is parsed to identify
384syntax errors but not evaluated.
385
386Here's an example that retrieves the command that was used by Icinga to check the `icinga2-agent1.localdomain` host:
387
388```
389$ ICINGA2_API_PASSWORD=icinga icinga2 console --connect 'https://root@localhost:5665/' --eval 'get_host("icinga2-agent1.localdomain").last_check_result.command' | python -m json.tool
390[
391    "/usr/local/sbin/check_ping",
392    "-H",
393    "127.0.0.1",
394    "-c",
395    "5000,100%",
396    "-w",
397    "3000,80%"
398]
399```
400
401## CLI command: Daemon <a id="cli-command-daemon"></a>
402
403The CLI command `daemon` provides the functionality to start/stop Icinga 2.
404Furthermore it allows to run the [configuration validation](11-cli-commands.md#config-validation).
405
406```
407# icinga2 daemon --help
408icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
409
410Usage:
411  icinga2 daemon [<arguments>]
412
413Starts Icinga 2.
414
415Global options:
416  -h [ --help ]             show this help message
417  -V [ --version ]          show version information
418  --color                   use VT100 color codes even when stdout is not a
419                            terminal
420  -D [ --define ] arg       define a constant
421  -a [ --app ] arg          application library name (default: icinga)
422  -l [ --library ] arg      load a library
423  -I [ --include ] arg      add include search directory
424  -x [ --log-level ] arg    specify the log level for the console log.
425                            The valid value is either debug, notice,
426                            information (default), warning, or critical
427  -X [ --script-debugger ]  whether to enable the script debugger
428
429Command options:
430  -c [ --config ] arg       parse a configuration file
431  -z [ --no-config ]        start without a configuration file
432  -C [ --validate ]         exit after validating the configuration
433  -e [ --errorlog ] arg     log fatal errors to the specified log file (only
434                            works in combination with --daemonize or
435                            --close-stdio)
436  -d [ --daemonize ]        detach from the controlling terminal
437  --close-stdio             do not log to stdout (or stderr) after startup
438
439Report bugs at <https://github.com/Icinga/icinga2>
440Icinga home page: <https://icinga.com/>
441```
442
443### Config Files <a id="cli-command-daemon-config-files"></a>
444
445You can specify one or more configuration files with the `--config` option.
446Configuration files are processed in the order they're specified on the command-line.
447
448When no configuration file is specified and the `--no-config` is not used
449Icinga 2 automatically falls back to using the configuration file
450`ConfigDir + "/icinga2.conf"` (where ConfigDir is usually `/etc/icinga2`).
451
452### Validation <a id="cli-command-daemon-validation"></a>
453
454The `--validate` option can be used to check if configuration files
455contain errors. If any errors are found, the exit status is 1, otherwise 0
456is returned. More details in the [configuration validation](11-cli-commands.md#config-validation) chapter.
457
458## CLI command: Feature <a id="cli-command-feature"></a>
459
460The `feature enable` and `feature disable` commands can be used to enable and disable features:
461
462```
463# icinga2 feature disable <tab>
464--app              --define           --include          --log-level        --version          checker            graphite           mainlog
465--color            --help             --library          --script-debugger  api                command            ido-mysql          notification
466```
467
468```
469# icinga2 feature enable <tab>
470--app              --define           --include          --log-level        --version          debuglog           ido-pgsql          livestatus         perfdata           syslog
471--color            --help             --library          --script-debugger  compatlog          gelf               influxdb           opentsdb           statusdata
472```
473
474The `feature list` command shows which features are currently enabled:
475
476```
477# icinga2 feature list
478Disabled features: compatlog debuglog gelf ido-pgsql influxdb livestatus opentsdb perfdata statusdata syslog
479Enabled features: api checker command graphite ido-mysql mainlog notification
480```
481
482## CLI command: Node <a id="cli-command-node"></a>
483
484Provides the functionality to setup master and client
485nodes in a [distributed monitoring](06-distributed-monitoring.md#distributed-monitoring) scenario.
486
487```
488# icinga2 node --help
489icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
490
491Usage:
492  icinga2 <command> [<arguments>]
493
494Supported commands:
495  * node setup (set up node)
496  * node wizard (wizard for node setup)
497
498Global options:
499  -h [ --help ]             show this help message
500  -V [ --version ]          show version information
501  --color                   use VT100 color codes even when stdout is not a
502                            terminal
503  -D [ --define ] arg       define a constant
504  -a [ --app ] arg          application library name (default: icinga)
505  -l [ --library ] arg      load a library
506  -I [ --include ] arg      add include search directory
507  -x [ --log-level ] arg    specify the log level for the console log.
508                            The valid value is either debug, notice,
509                            information (default), warning, or critical
510  -X [ --script-debugger ]  whether to enable the script debugger
511
512Report bugs at <https://github.com/Icinga/icinga2>
513Icinga home page: <https://icinga.com/>
514```
515
516## CLI command: Object <a id="cli-command-object"></a>
517
518The `object` CLI command can be used to list all configuration objects and their
519attributes. The command also shows where each of the attributes was modified and as such
520provides debug information for further configuration problem analysis.
521That way you can also identify which objects have been created from your [apply rules](17-language-reference.md#apply).
522
523Runtime modifications via the [REST API](12-icinga2-api.md#icinga2-api-config-objects)
524are not immediately updated. Furthermore there is a known issue with
525[group assign expressions](17-language-reference.md#group-assign) which are not reflected in the host object output.
526You need to restart Icinga 2 in order to update the `icinga2.debug` cache file.
527
528More information can be found in the [troubleshooting](15-troubleshooting.md#troubleshooting-list-configuration-objects) section.
529
530```
531# icinga2 object --help
532icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
533
534Usage:
535  icinga2 <command> [<arguments>]
536
537Supported commands:
538  * object list (lists all objects)
539
540Global options:
541  -h [ --help ]             show this help message
542  -V [ --version ]          show version information
543  --color                   use VT100 color codes even when stdout is not a
544                            terminal
545  -D [ --define ] arg       define a constant
546  -a [ --app ] arg          application library name (default: icinga)
547  -l [ --library ] arg      load a library
548  -I [ --include ] arg      add include search directory
549  -x [ --log-level ] arg    specify the log level for the console log.
550                            The valid value is either debug, notice,
551                            information (default), warning, or critical
552  -X [ --script-debugger ]  whether to enable the script debugger
553
554Report bugs at <https://github.com/Icinga/icinga2>
555Icinga home page: <https://icinga.com/>
556```
557
558## CLI command: Pki <a id="cli-command-pki"></a>
559
560Provides the CLI commands to
561
562* generate a new certificate authority (CA)
563* generate a new CSR or self-signed certificate
564* sign a CSR and return a certificate
565* save a master certificate manually
566* request a signed certificate from the master
567* generate a new ticket for the client setup
568
569This functionality is used by the [node setup/wizard](11-cli-commands.md#cli-command-node) CLI commands.
570You will need them in the [distributed monitoring chapter](06-distributed-monitoring.md#distributed-monitoring).
571
572```
573# icinga2 pki --help
574icinga2 - The Icinga 2 network monitoring daemon (version: v2.12.0)
575
576Usage:
577  icinga2 <command> [<arguments>]
578
579Supported commands:
580  * pki new-ca (sets up a new CA)
581  * pki new-cert (creates a new CSR)
582  * pki request (requests a certificate)
583  * pki save-cert (saves another Icinga 2 instance's certificate)
584  * pki sign-csr (signs a CSR)
585  * pki ticket (generates a ticket)
586  * pki verify (verify TLS certificates: CN, signed by CA, is CA; Print certificate)
587
588Global options:
589  -h [ --help ]             show this help message
590  -V [ --version ]          show version information
591  --color                   use VT100 color codes even when stdout is not a
592                            terminal
593  -D [ --define ] arg       define a constant
594  -a [ --app ] arg          application library name (default: icinga)
595  -l [ --library ] arg      load a library
596  -I [ --include ] arg      add include search directory
597  -x [ --log-level ] arg    specify the log level for the console log.
598                            The valid value is either debug, notice,
599                            information (default), warning, or critical
600  -X [ --script-debugger ]  whether to enable the script debugger
601
602Report bugs at <https://github.com/Icinga/icinga2>
603Icinga home page: <https://icinga.com/>
604```
605
606## CLI command: Variable <a id="cli-command-variable"></a>
607
608Lists all configured variables (constants) in a similar fashion like [object list](11-cli-commands.md#cli-command-object).
609
610```
611# icinga2 variable --help
612icinga2 - The Icinga 2 network monitoring daemon (version: v2.11.0)
613
614Usage:
615  icinga2 <command> [<arguments>]
616
617Supported commands:
618  * variable get (gets a variable)
619  * variable list (lists all variables)
620
621Global options:
622  -h [ --help ]             show this help message
623  -V [ --version ]          show version information
624  --color                   use VT100 color codes even when stdout is not a
625                            terminal
626  -D [ --define ] arg       define a constant
627  -a [ --app ] arg          application library name (default: icinga)
628  -l [ --library ] arg      load a library
629  -I [ --include ] arg      add include search directory
630  -x [ --log-level ] arg    specify the log level for the console log.
631                            The valid value is either debug, notice,
632                            information (default), warning, or critical
633  -X [ --script-debugger ]  whether to enable the script debugger
634
635Report bugs at <https://github.com/Icinga/icinga2>
636Icinga home page: <https://icinga.com/>
637```
638
639## Enabling/Disabling Features <a id="enable-features"></a>
640
641Icinga 2 provides configuration files for some commonly used features. These
642are installed in the `/etc/icinga2/features-available` directory and can be
643enabled and disabled using the `icinga2 feature enable` and `icinga2 feature disable`
644[CLI commands](11-cli-commands.md#cli-command-feature), respectively.
645
646The `icinga2 feature enable` CLI command creates symlinks in the
647`/etc/icinga2/features-enabled` directory which is included by default
648in the example configuration file.
649
650You can view a list of enabled and disabled features:
651
652```
653# icinga2 feature list
654Disabled features: api command compatlog debuglog graphite icingastatus ido-mysql ido-pgsql livestatus notification perfdata statusdata syslog
655Enabled features: checker mainlog notification
656```
657
658Using the `icinga2 feature enable` command you can enable features:
659
660```
661# icinga2 feature enable graphite
662Enabling feature graphite. Make sure to restart Icinga 2 for these changes to take effect.
663```
664
665You can disable features using the `icinga2 feature disable` command:
666
667```
668# icinga2 feature disable ido-mysql livestatus
669Disabling feature ido-mysql. Make sure to restart Icinga 2 for these changes to take effect.
670Disabling feature livestatus. Make sure to restart Icinga 2 for these changes to take effect.
671```
672
673The `icinga2 feature enable` and `icinga2 feature disable` commands do not
674restart Icinga 2. You will need to restart Icinga 2 using the init script
675after enabling or disabling features.
676
677
678
679## Configuration Validation <a id="config-validation"></a>
680
681Once you've edited the configuration files make sure to tell Icinga 2 to validate
682the configuration changes. Icinga 2 will log any configuration error including
683a hint on the file, the line number and the affected configuration line itself.
684
685The following example creates an apply rule without any `assign` condition.
686
687```
688apply Service "my-ping4" {
689  import "generic-service"
690  check_command = "ping4"
691  //assign where host.address
692}
693```
694
695Validate the configuration:
696
697```
698# icinga2 daemon -C
699
700[2014-05-22 17:07:25 +0200] critical/ConfigItem: Location:
701/etc/icinga2/conf.d/tests/my.conf(5): }
702/etc/icinga2/conf.d/tests/my.conf(6):
703/etc/icinga2/conf.d/tests/my.conf(7): apply Service "my-ping4" {
704                                        ^^^^^^^^^^^^^
705/etc/icinga2/conf.d/tests/my.conf(8):   import "test-generic-service"
706/etc/icinga2/conf.d/tests/my.conf(9):   check_command = "ping4"
707
708Config error: 'apply' is missing 'assign'
709[2014-05-22 17:07:25 +0200] critical/ConfigItem: 1 errors, 0 warnings.
710Icinga 2 detected configuration errors.
711```
712
713If you encounter errors during configuration validation, please make sure
714to read the [troubleshooting](15-troubleshooting.md#troubleshooting) chapter.
715
716You can also use the [CLI command](11-cli-commands.md#cli-command-object) `icinga2 object list`
717after validation passes to analyze object attributes, inheritance or created
718objects by apply rules.
719Find more on troubleshooting with `object list` in [this chapter](15-troubleshooting.md#troubleshooting-list-configuration-objects).
720
721
722## Reload on Configuration Changes <a id="config-change-reload"></a>
723
724Every time you have changed your configuration you should first tell Icinga 2
725to [validate](11-cli-commands.md#config-validation). If there are no validation errors, you can
726safely reload the Icinga 2 daemon.
727
728```bash
729systemctl reload icinga2
730```
731
732The `reload` action will send the `SIGHUP` signal to the Icinga 2 daemon
733which will validate the configuration in a separate process and not stop
734the other events like check execution, notifications, etc.
735