使用主、卫星和代理进行分布式监测¶
本章将指导您完成分布式监控环境的设置,包括高可用性集群和Icinga主机、卫星和代理的设置细节。
角色:主、卫星和代理¶
Icinga 2节点可以被命名以方便理解:
- 一个
主
位于层次结构顶部的节点。 - 一个
卫星
节点的子节点卫星
或主
节点。 - 一个
代理
被连接的节点主
和/或卫星
节点。
将这幅图重新表述为更多细节:
- 一个
主
节点没有父节点。- 一个
主
节点是你通常安装Icinga Web 2的地方。 - 一个
主
Node可以将子节点执行的检查合并到后端和通知中。
- 一个
- 一个
卫星
节点有一个父节点和一个子节点。- 一个
卫星
节点可以自己执行检查,也可以委托子节点执行检查。 - 一个
卫星
节点可以从父节点接收主机/服务等配置。 - 一个
卫星
即使主节点暂时不可用,节点也会继续运行。
- 一个
- 一个
代理
节点只有父节点。- 一个
代理
节点要么运行它自己配置的检查,要么从父节点接收命令执行事件。
- 一个
客户端可以是辅助主机、卫星或代理。它通常从主主节点或父节点请求一些东西。
以下部分将介绍这些角色,并解释它们的区别和这种设置提供的可能性。
请注意
本文档的以前版本使用了这个术语
Icinga客户
.这已经被提炼成Icinga代理
并且可以在文档、后端和web界面中看到。
提示:如果你只想安装一个监控多个主机的主节点(即Icinga代理),请继续阅读——我们将从简单的示例开始。如果您正在计划一个包含多个级别和许多卫星和代理的大型集群设置,请继续阅读——我们将在后面处理这些情况。
在各个系统上的安装方法是相同的:按照安装说明的Icinga 2包和所需的检查插件。
所需的配置步骤大多发生在命令行中。你也可以自动设置.
关于分布式设置,您需要了解的第一件事是单个组件的层次结构。
区¶
Icinga 2层次结构由所谓的区对象。区域依赖于亲子关系,以便相互信任。
看一下这个例子卫星
有主
Zone作为父Zone:
object Zone "master"{//…} object Zone "satellite region 1" {parent = "master" //…} object Zone "satellite region 2" {parent = "master" //…}
子区域有一定的限制,例如,子区域的成员不允许向父区域成员发送配置命令。反之亦然,信任层次结构允许例如主
的配置文件发送到卫星
区。阅读更多这方面的内容安全部分.
代理
节点也有自己独特的区域。按照约定,您必须使用FQDN作为区域名称。
端点¶
属于zone成员的节点称为端点对象。
下面是不同区域中两个端点的配置示例:
“icinga2-master1对象端点。localdomain" {host = "192.168.56.101"} object Endpoint "icinga2-卫星1. localdomain" {host = "192.168.56.101"}Localdomain " {host = "192.168.56.105"}object Zone "master" {endpoints = ["icinga2-master1.]localdomain ")}object Zone "satellite" {endpoints = ["icinga2- satit1 .]Localdomain "] parent = "master"}
同一区域中的所有端点都作为高可用性设置工作。例如,如果有两个节点主
区域,它们将负载平衡检查执行。
端点对象对于指定连接信息非常重要,例如,主机是否应该主动尝试连接到代理。
区域成员关系在区
对象定义时使用端点
属性的数组端点
的名字。
请注意
有一个已知的问题使用>,一个区域中有两个端点和一个消息路由循环。配置验证将记录一个警告,让您知道这一点。
如果你想检查节点的可用性(例如ping检查),你仍然需要一个宿主对象。
ApiListener¶
如果您以后要使用CLI命令,您不必在文本编辑器中从头编写此配置。的ApiListener对象用于加载TLS证书并指定限制,例如接受配置命令。
它也用于Icinga 2 REST API它与Icinga 2集群协议共享相同的主机和端口。
对象配置存储在/etc/icinga2/features-enabled / api.conf
文件。根据属性的配置模式accept_commands
而且accept_config
可以在这里配置。
为了使用api
功能,您需要启用它并重新启动Icinga 2。
icinga2特性启用api
约定¶
按照约定,所有节点都应该使用它们的FQDN进行配置。
此外,您必须确保以下名称在所有配置文件中完全相同:
- 主机证书通用名称。
- 主机的端点配置对象。
- 本地主机的NodeName常量。
在命令行上进行设置将帮助您将工作量降至最低。只要记住,当被问及时,需要对端点和通用名称使用FQDN。
安全¶
虽然有某些机制来确保所有节点之间的安全通信(防火墙、策略、软件加固等),但Icinga 2还提供了额外的安全性:
- 需要TLS v1.2+协议。
- 加固TLS加密列表默认情况下.
- TLS证书是节点间通信必需的。CLI命令向导可以帮助您创建这些证书。
- 子区域只接收其配置对象的更新(检查结果、命令等)。
- 子区域不允许将配置更新推送到父区域。
- zone之间不能相互干扰,也不能相互影响。分配给每个可检查的主机或服务对象一个区域只有。
- 一个区域内的所有节点彼此信任。
- 配置同步而且远程命令端点执行默认禁用。
底层协议使用节点之间交换的JSON-RPC事件通知。该连接是TLS保护的。消息协议使用内部API,因此消息类型和名称可能在内部更改,并且没有记录。
区域在分布式环境中构建信任关系。如果不为代理/附属指定区域,而指定父区域,则其区域成员(例如主实例)将不信任代理/附属。
建立这种信任是分布式环境中的关键。这样,父节点就知道它能够向子区域发送消息,例如配置对象、全局区域中的配置、在该区域/为该端点执行的命令。它还从子区域接收可检查对象(主机/服务)的检查结果。
反之,如果在api特性中启用,代理/卫星服务器信任主服务器并接受配置和命令。如果代理/卫星将配置发送到父区域,父节点将拒绝它。父区域是配置实体,在这方面不信任代理/卫星。例如,一个代理/卫星可能试图修改另一个代理/卫星,或注入带有恶意代码的检查命令。
虽然这对于代理/卫星设置可能听起来很复杂,但它消除了主节点和子节点的不同角色和配置的问题。它们以相同的方式工作,以相同的方式配置(Zone、Endpoint、ApiListener),您可以一次性排除故障和调试它们。
版本和升级¶
通常建议在所有实例上使用相同版本的最新版本。在升级之前,确保计划一个维护窗口。
Icinga项目旨在实现以下兼容性:
Master (2.11) >= satellite (2.10) >= agent (2.9)
旧的代理版本可能可以,但不能保证。请始终记住,旧版本已失去支持,可能包含错误。
在升级方面,确保首先升级主系统,然后是涉及的卫星,最后是Icinga代理。如果您目前使用的是v2.10,那么首先将主实例升级到2.11,然后继续处理辅助实例。有了自动化工具(Puppet、Ansible等),事情变得更容易了。
版本和新特性可能要求您立即升级主/附属实例,这在升级文档如果需要的话。一个例子是自v2.8以来可用的CA代理和按需签名特性,其中所有涉及的实例都需要该版本才能正常工作。
主人设置¶
本节介绍如何使用节点向导
命令。如果您希望进行自动安装,请参阅自动设置部分。
遵循安装说明下载Icinga 2包和所需的检查插件(如果您还没有这样做)。
请注意:主节点设置不支持Windows。
下一步是运行节点向导
CLI命令。在此之前,确保收集所需的信息:
参数 | 描述 |
---|---|
常见的名称(CN) | 必需的。按照惯例,这应该是主机的FQDN。默认为FQDN。 |
主区域名称 | 可选的。允许指定主区域名称。默认为主 . |
全球区域 | 可选的。允许指定更多的全局区域全局模板 而且director-global .默认为n . |
API绑定主机 | 可选的。允许指定ApiListener绑定的地址。仅限高级使用。 |
API绑定端口 | 可选的。允许指定ApiListener绑定的端口。仅用于高级使用(需要在所有地方更改默认端口5665)。 |
禁用conf.d | 可选的。允许禁用include_recursive“conf.d” 指令除外api-users.conf 文件icinga2.conf 文件。默认为y .下面将讨论主服务器上的配置。 |
安装向导将确保执行以下步骤:
- 启用
api
特性。 - 中生成新的证书颁发机构(CA)
/var/lib/icinga2/ca
如果它不存在。 - 为该节点创建由CA密钥签名的证书。
- 更新zones.conf带有新的区域层次结构的文件。
- 更新ApiListener而且常量配置。
- 更新icinga2.conf禁用
conf.d
包含,并添加api-users.conf
文件包含。
的主设置示例icinga2-master1.localdomain
CentOS 7上的节点:
[root@icinga2-master1.localdomain /]# icinga2节点向导欢迎使用Icinga 2安装向导!我们将指导您完成所有必需的配置细节。请指定这是否为附属/代理安装程序('n'安装主安装程序)[Y/n]: n正在启动主安装程序…请指定通用名称(CN) [icinga2-master1]。localdomain]: icinga2-master1。localdomain重新配置Icinga……正在检查公共名称“icinga2-master1.localdomain”的现有证书…尚未生成证书。正在运行“api设置”。为Icinga 2生成主配置。使功能的api。 Make sure to restart Icinga 2 for these changes to take effect. Master zone name [master]: Default global zones: global-templates director-global Do you want to specify additional global zones? [y/N]: N Please specify the API bind host/port (optional): Bind Host []: Bind Port []: Do you want to disable the inclusion of the conf.d directory [Y/n]: Disabling the inclusion of the conf.d directory... Checking if the api-users.conf file exists... Done. Now restart your Icinga 2 daemon to finish the installation!
您可以验证CA公钥和私钥是否存储在/var/lib/icinga2/ca
目录中。保持此路径的安全,并将其包含在备份中。
如果您丢失了CA私钥,您必须生成一个新的CA来签署新的代理/附属证书请求。然后还必须为所有现有节点重新创建新的签名证书。
完成主节点设置后,还可以将此节点用作主节点CSR auto-signing的主人。下面的部分将解释如何使用CLI命令从这个主节点获取已签名的证书。
在主机上签署证书¶
所有证书必须由同一个证书颁发机构(CA)签署。这确保了分布式监视环境中的所有节点彼此信任。
CA是在主人设置和在所有主实例上应该是相同的。
您可以避免签名和部署证书手动通过使用内置的方法自动签署证书签名请求(CSR):
- CSR Auto-Signing它使用在主机上生成的客户机(代理或附属)票证作为信任标识符。
- 随需应变企业社会责任签署它允许对主服务器上挂起的证书请求进行签名。
下面将详细描述这两种方法。
请注意
随需应变企业社会责任签署在Icinga 2 v2.8+中可用。
CSR Auto-Signing¶
客户端可以是辅助主机、卫星或代理。它发送一个证书签名请求(CSR),并且必须以受信任的方式对自己进行身份验证。主服务器生成包含在此请求中的客户机票证。这样,管理员就可以验证请求是否与以前信任的票据匹配,并签署请求。
请注意
Icinga 2 v2.8增加了将卫星上的签名请求转发到主节点的可能性。这就是所谓的
CA代理
在博客文章和设计草案中。的设置三个水平集群和更多。
优点:
- 节点(辅助主机、卫星、代理)可以由收到客户端票证的不同用户安装。
- 主节点上不需要手动交互。
- 自动化工具,如Puppet、Ansible等,可以在它们的客户目录中检索预先生成的票据,并直接运行节点设置。
缺点:
- 需要在主服务器上生成票据,并将其复制到客户机设置向导。
- 没有中央签名管理。
CSR Auto-Signing:准备¶
在使用此模式之前,请确保在签名主服务器上执行了以下步骤:
CSR自动签名:在主机上¶
代理/卫星节点的设置向导将要求您提供这个特定的客户端票证。
有两种可能的方法来检索票据:
所需信息:
参数 | 描述 |
---|---|
常见的名称(CN) | 必需的。代理/卫星的通用名称。按照惯例,这应该是FQDN。 |
下面的示例演示如何在主节点上生成票据icinga2-master1.localdomain
的代理icinga2-agent1.localdomain
:
[root@icinga2-master1.localdomain /]# icinga2 pki ticket——cn icinga2-agent1.localdomain
查询Icinga 2 APImaster上需要一个ApiUser对象至少包含行动/ generate-ticket
许可。
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/conf.d/api-users.conf object ApiUser "client-pki-ticket" {password = "bea11beb7b810ea9ce6ea" //change this permissions = ["actions/generate-ticket"]} [root@icinga2-master1.localdomain /]# systemctl restart icinga2在主节点的icinga2-master1上检索票据。例如:[root@icinga2-master1.localdomain /]# curl -k -s -u client-pki-ticket:bea11beb7b810ea9ce6ea -H 'Accept: application/json' \ -X POST 'https://localhost:5665/v1/actions/generate-ticket' -d '{"cn": "icinga2-agent1。localdomain "}
存储票号代理/卫星设置在下面。
请注意
永远不要向客户节点公开票据盐和/或ApiUser凭证。示例:在Puppet主节点上检索票据,并将编译后的目录发送到授权的Puppet代理节点,该节点将调用自动设置步骤.
随需应变企业社会责任签署¶
客户端可以是辅助主机、附属主机或代理服务器。它向指定的父节点发送证书签名请求,而不发送任何票据。主主机上的管理员负责使用私钥CA检查和签名请求。
这可以直接是主服务器,也可以是将请求转发给签名主服务器的附属服务器。
优点:
- 中央证书请求签名管理。
- 客户端设置不需要预生成票证。
缺点:
- 自动部署的异步步骤。
- 需要对主服务器进行客户端验证。
按需签署CSR:准备工作¶
在使用此模式之前,请确保在签名主服务器上执行了以下步骤:
- 的主人设置成功运行。这包括:
- 生成CA密钥对
- 重新启动主实例。
按需签署CSR:在主机上¶
控件列出挂起的证书签名请求ca列表
CLI命令。
(root@icinga2-master1.localdomain /) # icinga2 ca指纹| | |签署时间戳主题列表 -----------------------------------------------------------------|---------------------|--------|-------- 71700 c28445109416dd7102038962ac3fd421fbb349a6e7303b6033ec1772850 | 2017/09/06 17:20:02 | | CN = icinga2-agent2.localdomain
要显示所有请求,请使用——所有
参数。
(root@icinga2-master1.localdomain /) # icinga2 ca列表——所有指纹| | |签署时间戳的话题 -----------------------------------------------------------------|---------------------|--------|-------- 403年da5b228df384f07f980f45ba50202529cded7c8182abf96740660caa09727 | 2017/09/06 17:02:40 | * | CN = icinga2-agent1。localdomain 71700c28445109416dd7102038962ac3fd421fbb349a6e7303b6033ec1772850 | 2017/09/06 17:20:02 | | CN = icinga2-agent2.localdomain
提示:添加——json
,以获取JSON格式的详细信息。
如果您想签署一个特定的请求,您需要使用ca签署
命令,并传递其指纹作为参数。
[root@icinga2-master1.localdomain /]# icinga2 ca sign 71700c28445109416dd7102038962ac3fd421fbb349a6e7303b6033ec1772850 information/cli: Signed certificate for 'CN = icinga2-agent2.localdomain'。
请注意
ca列表
不能用作历史库存。超过1周的证书签名请求将被自动删除。
方法还可以删除不需要的CSRca删除
命令的语法ca签署
命令。
[root@pym ~]# icinga2 ca remove 5c31ca0e2269c10363a97e40e3f2b2cd56493f9194d5b1852541b835970da46e information/cli: Certificate 5c31ca0e2269c10363a97e40e3f2b2cd56493f9194d5b1852541b835970da46e removed.
ca恢复
.
代理/卫星设置¶
本节描述连接到现有主节点设置的代理程序或附属程序的设置。如果你还没这么做,请告诉我运行主安装程序.
主节点上的Icinga 2必须正在运行并接受端口上的连接5665
.
Linux上的代理/卫星设置¶
中提到的所有步骤,请确保已运行代理/卫星部分.
遵循安装说明下载Icinga 2包和所需的检查插件(如果您还没有这样做)。
下一步是运行节点向导
CLI命令。
在本例中,我们在主节点上生成票据icinga2-master1.localdomain
的代理icinga2-agent1.localdomain
:
[root@icinga2-master1.localdomain /]# icinga2 pki ticket——cn icinga2-agent1.localdomain4f75d2ecd253575fe9180938ebff7cbca262f96e
注意:如果您选择使用,则不需要此步骤随需应变企业社会责任签署.
在代理上启动向导icinga2-agent1.localdomain
:
[root@icinga2-agent1.localdomain /]# icinga2节点向导欢迎使用Icinga 2安装向导!我们将指导您完成所有必需的配置细节。
新闻输入
或添加y
启动卫星或代理程序设置。
请指定这是否是代理/附属安装程序('n'安装主安装程序)[Y/n]:
新闻输入
使用括号内的建议名称,或添加特定的通用名称(CN)。按照惯例,这应该是FQDN。
启动代理/卫星设置程序…请指定通用名(CN) [icinga2-agent1]。localdomain]: icinga2-agent1.localdomain
指定此节点的直接父节点。这可能是你的主icinga2-master1.localdomain
或者是多层集群场景中的卫星节点。
请指定该节点应连接到的父端点(主或卫星):主/卫星通用名(来自主/卫星节点的CN): icinga2-master1.localdomain
新闻输入
或选择y
来建立到父节点的连接。
是否要从此节点建立到父节点的连接?[Y / n]:
注意:
如果该节点无法连接到父节点,请选择
n
.安装向导将为该场景提供说明—届时将禁用签名问题。
的连接详细信息icinga2-master1.localdomain
.
主/卫星端点主机(IP地址或FQDN): 192.168.56.101主/卫星端点端口[5665]:5665
如果需要,您可以添加更多的父节点。新闻输入
或选择n
如果你不想加的话。如果你有多个父节点,例如两个主节点或两个卫星节点,这就很方便了。
添加更多的主/卫星端点?[y / N]:
验证父节点的证书:
父证书信息:主题:CN = icinga2-master1。localdomain发行人:CN = Icinga CA有效时间:9月7日13:41:24 2017 GMT有效时间:9月3日13:41:24 2032 GMT指纹:AC 99 8B 2B 3D B0 01 00 E5 21 FA 05 2E EC D5 A9 EF 9E AA E3此信息正确吗?[y / N]: y
安装向导获取父节点的证书并要求您验证此信息。这是为了防止MITM攻击或任何类型的不可信的父级关系。
可在所连接的节点上执行如下命令验证指纹:
Openssl x509 -noout -fingerprint -sha256 -in\“/ var / lib / icinga2 /组/$ (主机名——fqdn).crt”
注意:如果选择不连接到父节点,则不会获取证书。
继续添加可选的客户端票证CSR auto-signing:
请指定在Icinga 2主机上生成的请求票证(可选)。(提示:# icinga2 pki ticket -cn 'icinga2-agent1.localdomain'): 4f75d2ecd253575fe9180938ebff7cbca262f96e
如果你选择使用随需应变企业社会责任签署你可以把票证问题留空。
相反,Icinga 2告诉您稍后在主节点上批准请求。
没有指定票。请在主服务器上手动批准证书签名请求(有关详细信息,请参阅“icinga2 ca列表”和“icinga2 ca签名—帮助”)。
可以指定不同的绑定主机和/或端口。
请指定API绑定主机/端口(可选):
下一步要求您接受配置(需要配置同步模式)和命令(需要命令端点模式).
接受父节点的配置吗?[y/N]: y Accept command from parent node?[y / N]: y
接下来,您可以选择指定本地和父区域名称。这将反映在生成的区域配置文件中。
如果正在安装附属主实例或辅助主实例,请将本地区域名称设置为其他名称。
本地区域名称[icinga2-agent1.localdomain]:
将父分区名称设置为主
如果该代理连接到卫星实例而不是主实例。
父分区名称[master]:
可以添加更多全局区域全局模板
而且director-global
如果有必要的话)。新闻输入
或选择n
,如果你不想添加任何额外的。
重新配置Icinga……是否要指定额外的全局分区?[y / N]: N
最后但同样重要的是,向导会询问您是否要禁用在中包含本地配置目录conf.d
,或不是。默认为禁用,因为代理要么通过命令端点检查,要么从父区域接收同步的配置。
Do you want to disable the include of the conf.d目录[Y/n]: Y禁止包含conf.d目录…
向导继续执行,您可以开始了。
完成了。现在重新启动Icinga 2守护进程以完成安装!
请注意
如果选择不连接到父节点,则还不能启动Icinga 2。向导要求您手动将主服务器的公共CA证书文件复制到
/var/lib/icinga2/certs/ca.crt
.你需要在主节点上手动签署CSR.
按要求重新启动Icinga 2。
[root@icinga2-agent1.localdomain /]# systemctl restart icinga2 .使用实例
以下是所有参数的详细概述:
参数 | 描述 |
---|---|
常见的名称(CN) | 必需的。按照惯例,这应该是主机的FQDN。默认为FQDN。 |
掌握常见的名字 | 必需的。使用您之前为主节点指定的通用名称。 |
建立到父节点的连接 | 可选的。节点是否应该尝试连接到父节点。默认为y . |
主/卫星端点主机 | 如果代理需要连接到主/卫星,则需要。父端点的IP地址或FQDN。该信息包含在端点 对象配置zones.conf 文件。 |
主/卫星端点端口 | 如果代理需要连接到主/卫星,则可选。父端点的侦听端口。该信息包含在端点 对象配置。 |
添加更多的主/卫星端点 | 可选的。如果配置了多个主/附属节点,请在这里添加它们。 |
父母证书信息 | 必需的。验证连接的主机确实是请求的主节点。 |
请求的机票 | 可选的。添加票在主机上生成。 |
API绑定主机 | 可选的。允许指定ApiListener绑定的地址。仅限高级使用。 |
API绑定端口 | 可选的。允许指定ApiListener绑定的端口。仅用于高级使用(需要在所有地方更改默认端口5665)。 |
接受配置 | 可选的。该节点是否接受来自主节点的配置同步(需要配置同步模式).为安全原因这个默认值n . |
接受命令 | 可选的。该节点是否接受来自主节点的命令执行消息(需要命令端点模式).为安全原因这个默认值n . |
本地区域名 | 可选的。允许指定本地区域的名称。当这个实例是卫星而不是代理时,这就很方便了。默认为FQDN。 |
父母带名字 | 可选的。允许指定父分区的名称。如果代理有一个附属实例作为父实例,而不是主实例,那么这一点很重要。默认为主 . |
全球区域 | 可选的。允许指定更多的全局区域全局模板 而且director-global .默认为n . |
禁用conf.d | 可选的。控件的包含conf.d 保存本地示例配置的目录。客户机应该从父节点检索它们的配置,或者充当命令端点执行桥。默认为y . |
安装向导将确保执行以下步骤:
- 启用
api
特性。 - 为本地节点创建证书签名请求(CSR)。
- 在主节点上请求签名证书(可选的,提供票证号)。
- 允许验证父节点的证书。
- 将已签名的代理/卫星证书和ca.crt存储在
/var/lib/icinga2/certs
. - 更新
zones.conf
带有新的区域层次结构的文件。 - 更新
/etc/icinga2/features-enabled / api.conf
(accept_config
,accept_commands
),constants.conf
. - 更新
/etc/icinga2/icinga2.conf
和注释掉include_recursive“conf.d”
.
您可以验证证书文件是否存储在/var/lib/icinga2/certs
目录中。
请注意
如果代理没有直接连接到证书签名主服务器,则签名请求和响应可能需要几分钟才能完全更新代理证书。
如果你选择使用随需应变企业社会责任签署证书需要首先在主服务器上签名。无需买票的设置需要在所有涉及的实例上至少使用Icinga 2 v2.8+。
现在您已经成功安装了Linux/Unix代理/卫星实例,请继续配置模式.
Windows上的代理设置¶
下面列出了支持的Windows代理版本在这里.
要求:
- Microsoft .NET Framework 4.6或更高版本。这是Windows Server 2016或更高版本的默认设置。
- Windows通用C运行时适用于Windows Server 2012及以上版本。
Windows上的代理安装:安装程序¶
下载MSI-Installer包https://packages.www.directade.com/windows/.首选的口味是x86_64
对于现代Windows系统来说。
Windows包提供本机监控插件二进制文件让你更容易上手。安装程序包还包括NSClient + +包允许使用它的内置插件。你可以在里面找到更多的细节这一章.
请注意
请注意,Icinga 2被设计为在Windows上作为轻量级代理运行。不支持附属实例。
运行MSI-Installer包,并按照屏幕截图中显示的说明操作。
图形化安装程序提供运行Icinga代理设置向导后安装。选择复选框继续。
提示
您还可以稍后从开始菜单运行Icinga代理设置向导。
Windows上的代理设置:配置向导¶
在新安装中,安装向导将指导您完成初始配置。对象发送证书请求的机制CSR签署主.
需要进行以下配置:
参数 | 描述 |
---|---|
实例名 | 必需的。按照惯例,这应该是主机的FQDN。默认为FQDN。 |
设置的机票 | 可选的。粘贴之前生成的票数量.如果为空,则证书请求必须为在主节点上签名. |
填写所需信息,单击添加
添加一个新的主连接。
添加以下信息:
参数 | 描述 |
---|---|
实例名 | 必需的。主/附属端点名称,此代理是其直接子结点。 |
主/卫星端点主机 | 必需的。主机或卫星的IP地址或FQDN。该信息包含在端点 对象配置zones.conf 文件。 |
主/卫星端点端口 | 可选的。主或卫星的监听端口。该信息包含在端点 对象配置。 |
在需要时,您可以添加一个额外的全局区域(这些区域全局模板
而且director-global
默认添加):
可选地启用以下设置:
参数 | 描述 |
---|---|
接受来自主/附属实例的命令 | 可选的。该节点是否接受来自主节点的命令执行消息(需要命令端点模式).为安全原因默认情况下是禁用的。 |
接受来自主/附属实例的配置更新 | 可选的。该节点是否接受来自主节点的配置同步(需要配置同步模式).为安全原因默认情况下是禁用的。 |
以该用户运行Icinga 2服务 | 可选的。请指定不同的Windows用户。这个默认值NT AUTHORITY) \网络服务 并且对于更特权的服务检查是必需的。 |
安装/更新捆绑NSClient + + | 可选的。Windows安装程序捆绑了nsclient++安装程序插件检查. |
禁用包含本地` conf。d '目录 | 可选的。允许禁用include_recursive“conf.d” 指令除外api-users.conf 文件icinga2.conf 文件。默认为真正的 . |
验证来自该节点应该连接到的主/附属实例的证书。
捆绑NSClient + +设置¶
如果您选择安装/更新nsclient++包,Icinga 2安装向导会要求您这样做。
选择通用的
设置。
选择自定义
设置类型。
默认情况下,nsclient++不安装样例配置。如截图所示进行更改。
生成安全密码并启用web server模块。请注意: webserver模块从NSClient++ 0.5.0开始可用。需要Icinga 2 v2.6+,其中包括这个版本。
完成安装。
打开一个网络浏览器并导航到https://localhost:8443
.输入您在安装过程中配置的密码。万一你弄丢了,看看C:\Program Files\ NSClient + + \ nsclient.ini
配置文件。
NSClient++ REST API可用于查询指标。check_nscp_api使用此传输方法。
完成Windows代理安装¶
完成Windows安装向导。
如果没有提供设置票证,则需要在主服务器上签署证书请求。设置向导会告诉您这样做。Icinga 2服务此时已经在运行,并将自动接收和更新已签名的客户端证书。
Icinga 2作为Windows服务自动启动。
Icinga 2配置存储在C: \ ProgramData \ icinga2
目录中。点击检查配置
打开一个新的资源管理器窗口。
配置文件可以通过您喜欢的编辑器进行修改,例如Powershell中的notepad++或vim(通过chocolatey)。
为了使用自顶向下代理配置准备以下步骤。
在代理上不需要任何本地配置,只有CheckCommand定义可以使用上面的全局区域进行同步。因此禁用包含conf.d
目录icinga2.conf
文件。
导航到C: \ ProgramData \ icinga2 \ etc \ icinga2
并打开icinga2.conf
在您喜欢的编辑器中归档。删除或评论(//
)下一行:
//注释掉了,在自顶向下模式的代理上不需要//include_recursive "conf.d"
请注意
包>= 2.9在安装向导中提供了禁用此功能的选项。默认为禁用。
在Windows上验证配置,打开管理Powershell并运行以下命令:
C:\> cd C:\Program Files\ICINGA2\sbin C:\Program Files\ICINGA2\ sbin> .\icinga2.exe daemon -C
请注意:您必须在shell中运行此命令管理员
特权。
现在需要重新启动Icinga 2服务。运行services.msc
从开始菜单中重新启动icinga2
服务。或者打开一个管理Powershell并运行以下命令:
C:\> Get-Service icinga2
现在您已经成功安装了Windows代理,请继续到详细配置模式.
配置模式¶
有不同的方法可以确保Icinga 2集群节点执行检查、发送通知等。
首选的方法是在主机上配置监视对象,并将配置分发给卫星和代理。
下面的章节通过实际操作的手动配置示例详细解释了这一点。您应该测试和实现它一次,以完全理解它是如何工作的。
一旦熟悉了Icinga 2和分布式监控,就可以开始使用其他集成来管理和部署配置:
更多细节可以找到在这里.
自顶向下¶
检查执行有两种不同的行为:
- 远程发送命令执行事件:调度器仍在父节点上运行。
- 将主机/服务对象直接同步到子节点:在本地执行检查。
还是那句话,技术上来说,这是不是代理
或者一个卫星
接收配置或命令执行事件。
自顶向下命令端点¶
这种模式强制Icinga 2节点在指定端点上远程执行命令。主机/服务对象配置位于主/卫星上,代理只需要可用的CheckCommand对象定义。
每个端点都有自己的远程检查队列。控件可以在端点上限制同时执行的检查数量MaxConcurrentChecks
中定义的常数constants.conf.如果远程检查队列已满,Icinga 2可能会丢弃检查请求。
优点:
- 不需要在子节点(代理)上定义本地检查。
- 轻量级远程检查执行(异步事件)。
- 没有回放日志对于子节点是必需的。
- 将检查固定到特定端点(如果子区域包含两个端点)。
缺点:
- 如果子节点没有连接,则不再执行检查。
- 需要在主机/服务对象中指定额外的配置属性。
- 需要的地方
CheckCommand
对象配置。最佳实践是使用全球配置区.
为确保所有涉及的节点都将接受配置和/或命令,您需要配置区
而且端点
所有节点上的层次结构。
icinga2-master1.localdomain
是此场景中的配置管理员。icinga2-agent1.localdomain
充当代理,通过命令端点从主服务器接收命令执行消息。此外,它从主机接收全局检查命令配置。
在上包含端点和区域配置这两个文件中的节点/etc/icinga2/zones.conf
.
端点配置可以像这样,例如:
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain" {host = "192.168.56.101"} object Endpoint "icinga2-agent1. localdomain" {host = "192.168.56.101"} object Endpointlocaldomain" {host = "192.168.56.111" log_duration = 0 //禁用命令端点代理的重播日志}
接下来,您需要定义两个区域。没有命名约定,最好的做法是两者都用主
,卫星
/agent-fqdn
或者选择区域名称欧洲
,美国
而且亚洲
,虽然。
请注意:每个代理需要自己的zone和endpoint配置。最佳实践是对所有对象名称使用代理的FQDN。
的主
类的父类icinga2-agent1.localdomain
区:
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf object Zone "master" {endpoints = ["icinga2-master1. conf]对象资源分区“icinga2-agent1”。Localdomain " {endpoints = ["icinga2-agent1. "Localdomain "] parent = "master" //建立分区结构
在代理上不需要任何本地配置,只有CheckCommand定义可以使用上面的全局区域进行同步。因此禁用包含conf.d
目录/etc/icinga2/icinga2.conf
.
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/icinga2.conf //注释掉,不需要代理作为命令端点//include_recursive "conf.d"
请注意
包>= 2.9在安装向导中提供了禁用此功能的选项。默认为禁用。
现在是时候验证配置并在两个节点上重新启动Icinga 2守护进程了。
CentOS 7的示例:
[root@icinga2-agent1.localdomain /]# icinga2 daemon -C [root@icinga2-agent1.localdomain /]# systemctl restart icinga2 [root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2
一旦代理成功连接,就可以进行下一步了:使用命令端点在代理上执行远程检查.
包含主机和服务对象的配置主
区域——这将有助于以后添加二级主机以实现高可用性。
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/master
添加要监视的主机和服务对象。对文件和目录没有限制——最佳实践是按类型排序。
根据约定,主/卫星/代理主机对象应该使用与端点对象相同的名称。还可以添加多个主机,用于对远程服务/代理执行检查。
下面的示例添加agent_endpoint
自定义变量到主机并存储其名称(FQDN)。2.11之前的版本使用client_endpoint
自定义变量。
这个自定义变量有两个目的:1)服务应用规则可以与它匹配。2)应用规则可以检索其值并将其赋给command_endpoint
属性。
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师# vim hosts.conf对象主机“icinga2-agent1”。Localdomain " {check_command = "hostalive" //在主地址= "192.168.56.111" vars上执行检查。Agent_endpoint = name //遵循主机名==端点名}的约定
假设您正在监视一个Linux代理,请添加一个远程磁盘检查。
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "disk" {check_command = "disk" //指定远程代理作为命令执行端点,获取主机自定义变量command_endpoint = host.vars。agent_endpoint //只在主机被标记为代理的地方赋值。agent_endpoint}
如果你有自己的习俗CheckCommand
定义,将其添加到全局区域:
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones. #d/global-templates [root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/global-templates/commands.conf object CheckCommand "my-cmd"{//…}
保存更改并在主节点上验证配置:
[root@icinga2-master1.localdomain /]# icinga2 daemon -C
[root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
以下步骤将会发生:
- Icinga 2在上验证配置
icinga2-master1.localdomain
和重新启动。 - 的
icinga2-master1.localdomain
节点调度并执行检查。 - 的
icinga2-agent1.localdomain
节点接收带有附加命令参数的执行命令事件。 - 的
icinga2-agent1.localdomain
节点将命令参数映射到本地检查命令,在本地执行检查,并返回检查结果消息。
如您所见,在代理本身上不需要来自您端的交互,也不需要在代理上重新加载Icinga 2服务。
您已经了解了关于命令端点检查的基础知识。进行这次场景部分,在那里您可以找到关于扩展设置的详细信息。
自顶向下配置同步¶
该模式同步指定zone内的对象配置文件。如果您想在主节点上配置所有内容并同步辅助检查(磁盘、内存等),那么它就很方便了。卫星运行它们自己的本地调度程序,并将检查结果消息发送回主服务器。
优点:
- 将父分区的配置文件同步到子分区。
- 子节点上不需要手动重新启动,因为同步、验证和重新启动都是自动进行的。
- 直接在子节点的调度程序上执行检查。
- 如果连接断开,则重放日志(对于保持检查历史同步很重要,例如SLA报告)。
- 使用全局专区来同步模板、组等。
缺点:
- 需要主节点上的配置目录,下面有区域名称
/etc/icinga2/zones.d
. - 需要额外的区域和端点配置。
- 在连接丢失后重新连接时复制重播日志。这可能会增加数据传输并在连接上造成过载。
请注意
该模式只支持配置文本文件Icinga。不要滥用此功能来同步二进制文件,这是不受支持的,可能会损害您的生产环境。配置同步使用校验和来检测更改,二进制文件可能会触发重新加载循环。
这是一个合理的警告。如果你想部署插件二进制文件,为依赖管理创建包,并使用基础设施生命周期工具,如Foreman, Puppet, Ansible等。
为确保所有涉及的节点都接受配置和/或命令,您需要配置区
而且端点
所有节点上的层次结构。
icinga2-master1.localdomain
是此场景中的配置管理员。icinga2-satellite1.localdomain
充当从主服务器接收配置的附属服务器。检查安排在本地。
在上包含端点和区域配置这两个文件中的节点/etc/icinga2/zones.conf
.
端点配置看起来像这样:
[root@icinga2-satellite1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain" {host = "192.168.56.101"} object Endpoint "icinga2-卫星1. localdomain" {host = "192.168.56.101"}Localdomain " {host = "192.168.56.105"}
接下来,您需要定义两个区域。没有命名约定,最好的做法是两者都用主
,卫星
/agent-fqdn
或者选择区域名称欧洲
,美国
而且亚洲
,虽然。
的主
类的父类卫星
区:
[root@icinga2-agent2.localdomain /]# vim /etc/icinga2/zones.conf object Zone "master" {endpoints = ["icinga2-master1. conf]object Zone "satellite" {endpoints = ["icinga2-satellite . xml "}Localdomain "] parent = "master" //建立分区结构
编辑api
卫星上的特色icinga2-satellite1.localdomain
在/etc/icinga2/features-enabled / api.conf
文件和设置accept_config
来真正的
.
[root@icinga2-satellite1.localdomain /]# vim /etc/icinga2/features-enabled/api.conf object ApiListener "api"{//…Accept_config = true}
现在是时候验证配置并在两个节点上重新启动Icinga 2守护进程了。
CentOS 7的示例:
[root@icinga2-satellite1.localdomain /]# icinga2 daemon -C [root@icinga2-satellite1.localdomain /]# systemctl restart icinga2 [root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2
提示:最佳实践是使用全局专区对于常见的配置项(检查命令、模板、组等)。
一旦卫星连接成功,就该进行下一步了:使用配置同步在卫星上执行本地检查.
导航到/etc/icinga2/zones.d
在主节点上icinga2-master1.localdomain
并创建一个与您的卫星/代理区域名称相同的新目录:
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/卫星
添加要监视的主机和服务对象。对文件和目录没有限制——最佳实践是按类型排序。
根据约定,主/卫星/代理主机对象应该使用与端点对象相同的名称。您还可以添加多个主机,通过这些主机对远程服务/代理执行检查命令端点检查。
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones.d/卫星(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim hosts.conf对象主机“icinga2-satellite .conf”。Localdomain " {check_command = "hostalive" address = "192.168.56.112" zone = "master" //可选技巧:同步所需的主机对象到卫星,但强制"master"区域执行检查}
假设您正在监视一个Linux附属系统,请添加一个本地服务器磁盘检查。
(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim services.conf object服务"disk" {host_name = "icinga2- satit1 . d/satellite]Localdomain " check_command = "disk"}
保存更改并在主节点上验证配置:
[root@icinga2-master1.localdomain /]# icinga2 daemon -C
重新启动Icinga 2守护进程(例如CentOS 7):
[root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
以下步骤将会发生:
- Icinga 2在上验证配置
icinga2-master1.localdomain
. - Icinga 2将配置复制到它的区域配置存储中
/var/lib/icinga2/api/zones
. - 的
icinga2-master1.localdomain
节点向相同或直接子区域中的所有端点发送配置更新事件。 - 的
icinga2-satellite1.localdomain
Node接受配置,并使用接收到的配置文件填充本地区域配置存储区。 - 的
icinga2-satellite1.localdomain
节点验证配置并自动重启。
同样,卫星本身不需要相互作用。
您还可以在高可用分区内使用配置同步,以确保所有配置对象在分区成员之间同步。
请注意:在存储配置的区域中只能有一个所谓的“配置主”zones.d
目录中。中的配置文件中的多个节点zones.d
目录是不支持.
既然您已经了解了配置同步的基础知识,那么就继续进行场景部分,在那里您可以找到关于扩展设置的详细信息。
如果你渴望重新开始,你可以看看Icinga导演.
场景¶
下面的示例将使您了解如何构建自己的分布式监视环境。我们已经在生产环境中看到了它们,并从我们的欧宝app官网网址而且合作伙伴支持渠道:
- 单主带代理.
- HA主机使用代理作为命令端点
- 三个水平集群与配置HA主机,卫星接收配置同步,并使用命令端点检查代理。
您还可以将集群树深度扩展到四个级别,例如使用2个卫星级别。只要记住,在出现错误的情况下,多个级别将更难调试。
您也可以从一个主设置开始,然后再添加一个辅助主端点。方法需要额外的步骤初始同步用于克隆运行时状态。这将被详细描述在这里.
主与代理¶
在此场景中,单个主节点运行检查调度程序、通知和IDO数据库后端,并使用命令端点模式对远程代理执行检查。
icinga2-master1.localdomain
是主主节点。icinga2-agent1.localdomain
而且icinga2-agent2.localdomain
将两个子节点作为代理。
安装要求:
编辑zones.conf
主服务器上的配置文件:
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain“{// That's us}对象端点”icinga2-agent1。localdomain" {host = "192.168.56.111" //主机主动尝试连接到代理log_duration = 0 //禁用命令端点代理的重播日志}对象endpoint "icinga2-agent2. log "localdomain" {host = "192.168.56.112" //主机主动尝试连接到代理log_duration = 0 //禁用命令终端代理的重播日志}object安全区域"master" {endpoints = ["icinga2-master1. localdomain" {host = "192.168.56.112" //主机主动尝试连接到代理log_duration = 0 //禁用命令终端代理的重播日志}object安全区域"master" {endpoints = ["icinga2-master1. localdomain" {host = "192.168.56.112"localdomain"]} object资源分区"icinga2-agent1.使用实例Localdomain " {endpoints = ["icinga2-agent1. "Localdomain "] parent = "master"}object Zone "icinga2-agent2.localdomain" { endpoints = [ "icinga2-agent2.localdomain" ] parent = "master" } /* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
两个代理节点不需要相互了解。唯一重要的是,它们知道父区域及其端点成员(还有全局区域)。
如果指定宿主
属性icinga2-master1.localdomain
端点对象时,代理将主动尝试连接到主节点。因为已经在主节点上指定了代理端点的属性,所以不希望代理连接到主节点。选择一个连接方向.
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//不主动连接到主服务器,省略'host'属性}对象Endpoint "icinga2-agent1。localdomain" {// That's us} object Zone "master" {endpoints = ["icinga2-master1. "localdomain"]} object资源分区"icinga2-agent1.使用实例Localdomain " {endpoints = ["icinga2-agent1. "Localdomain "] parent = "master"}/* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
[root@icinga2-agent2.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//不主动连接到主服务器,省略'host'属性}对象Endpoint "icinga2-agent2。localdomain" {// That's us} object Zone "master" {endpoints = ["icinga2-master1. "localdomain"]} object资源分区"icinga2-agent2.使用实例Localdomain " {endpoints = ["icinga2-agent2. "Localdomain "] parent = "master"}/* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
现在是时候定义两个代理主机并使用命令端点执行方法在它们上应用服务检查了。注意:您也可以在这里使用配置同步模式。
在主节点上创建一个新的配置目录:
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/master
将两个agent节点添加为主机对象:
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师# vim hosts.conf对象主机“icinga2-agent1”。Localdomain " {check_command = "hostalive" address = "192.168.56.111" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.111"agent_endpoint= name //follows the convention that host name == endpoint name } object Host "icinga2-agent2.localdomain" { check_command = "hostalive" address = "192.168.56.112" vars.agent_endpoint = name //follows the convention that host name == endpoint name }
使用命令端点检查添加服务:
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "ping4" {check_command = "ping4" //检查在主节点上执行assign where host. d/master]# vim services.conf apply地址}apply Service "disk" { check_command = "disk" // Execute the check on the remote command endpoint command_endpoint = host.vars.agent_endpoint // Assign the service onto an agent assign where host.vars.agent_endpoint }
验证配置并在主节点上重新启动Icinga 2icinga2-master1.localdomain
.
[root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
打开Icinga Web 2并检查两个新创建的代理主机和两个新服务—一个在本地执行(ping4
)和使用命令endpoint (磁盘
).
请注意
您不必将代理端点/区域配置对象添加到主服务器的zones.conf文件中。相反,你可以把它们放进
/etc/icinga2/zones.d/master
无论是在hosts.conf
如上所示,或在一个新文件称为agents.conf
.提示:
加起来是个好主意健康检查确保您的集群在发生故障时通知您。
就运行状况检查而言,请考虑为此场景添加以下内容:
- 主节点检查与代理的连接
- 可选:为代理主机添加依赖项,以防止在代理不可达时不必要的通知
继续在这一章.
带代理的高可用性主机¶
这个场景类似于前一节.唯一的区别是,我们现在将在高可用性设置中设置两个主节点。这些节点必须配置为区域和端点对象。
该设置使用Icinga 2集群的功能。所有zone成员彼此之间复制集群事件。除此之外,Icinga 2还可以启用几个特性HA功能.
最佳实践是在专用服务器/集群上运行数据库后端,只向Icinga和IDO特性公开一个虚拟IP地址。默认情况下,只有一个端点会主动写入后端。MySQL集群的典型设置包括Master-Master-Replication (Master-Slave-Replication双向复制)或Galera,更多提示可以在我们的欧宝app官网网址社区论坛.IDO对象必须具有相同的属性instance_name
在所有主节点上。
请注意:同一分区内的所有节点都需要启用相同的HA特性。
概述:
icinga2-master1.localdomain
是config master主节点。icinga2-master2.localdomain
备用主节点是否没有配置zones.d
.icinga2-agent1.localdomain
而且icinga2-agent2.localdomain
将两个子节点作为代理。
安装要求:
- 设置
icinga2-master1.localdomain
作为主. - 设置
icinga2-master2.localdomain
作为卫星(我们将修改生成的配置). - 设置
icinga2-agent1.localdomain
而且icinga2-agent2.localdomain
作为代理(当被要求添加多个主控时,设置为y
并添加二级主机icinga2-master2.localdomain
).
如果不想使用CLI命令,还可以手动创建和同步所需的TLS证书。我们将在这里修改和讨论自动生成的配置的所有细节。
由于现在在同一区域中有两个节点,我们必须考虑高可用性特性.
- 检查和通知在两个主节点之间平衡。这很好,但它需要检查插件和通知脚本存在于两个节点上。
- 缺省情况下,IDO特性只在一个节点上激活。因为所有事件都在两个节点之间复制,所以只拥有一个中心数据库更容易。
一种可能是使用专用的MySQL集群VIP(外部应用程序集群),并保留启用了HA功能的IDO特性。或者,您可以禁用HA特性,并在每个节点上写入本地数据库。这两种方法都要求相应地配置Icinga Web 2(监视后端、IDO数据库、使用的传输等)。
请注意
你也可以从一个单一的主界面开始在这里然后再添加第二个master。方法需要额外的步骤初始同步用于在完成后克隆运行时状态。完成之后,继续这里。
在此场景中,我们没有立即将代理配置添加到zones.conf
文件,但稍后将建立层次结构。
第一个master是这样的:
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain“{// That's us}对象端点”icinga2-master2。localdomain" {host = "192.168.56.102" //主动连接到备用主机}对象安全区域"master"{端点= ["icinga2-master1. localdomain" {host = "192.168.56.102"localdomain”、“icinga2-master2。localdomain ")}/* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
辅助主服务器等待第一个主服务器的连接尝试,因此不会尝试再次连接到它。
[root@icinga2-master2.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。icinga2-master2. localdomain"{//第一个master已经连接到我们}对象Endpoint "localdomain" {// That's us} object Zone "master" {endpoints = ["icinga2-master1. "localdomain”、“icinga2-master2。localdomain ")}/* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
重新启动两个主机,确保初始连接和TLS握手正常工作。
两个代理节点不需要相互了解。唯一重要的是,它们知道父区域及其端点成员(还有全局区域)。
如果指定宿主
属性icinga2-master1.localdomain
而且icinga2-master2.localdomain
端点对象时,代理将主动尝试连接到主节点。因为我们已经在主节点上指定了代理端点的属性,所以我们不希望代理连接到主节点。选择一个连接方向.
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//不主动连接到主机,省略'host'属性}对象Endpoint "icinga2-master2。localdomain"{//不主动连接到主服务器,省略'host'属性}对象Endpoint "icinga2-agent1。localdomain" {// That's us} object Zone "master" {endpoints = ["icinga2-master1. "localdomain”、“icinga2-master2。localdomain ")}object Zone "icinga2-agent1.localdomain" { endpoints = [ "icinga2-agent1.localdomain" ] parent = "master" } /* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
[root@icinga2-agent2.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//不主动连接到主机,省略'host'属性}对象Endpoint "icinga2-master2。localdomain"{//不主动连接到主服务器,省略'host'属性}对象Endpoint "icinga2-agent2。localdomain" {//That's us} object Zone "master" {endpoints = ["icinga2-master1. "localdomain”、“icinga2-master2。localdomain ")}object Zone "icinga2-agent2.localdomain" { endpoints = [ "icinga2-agent2.localdomain" ] parent = "master" } /* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
现在是时候定义两个代理主机并使用命令端点执行方法应用服务检查了。
在主节点上创建一个新的配置目录icinga2-master1.localdomain
.请注意:备主节点icinga2-master2.localdomain
方法接收配置配置同步模式.
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/master
添加两个代理节点及其区域/端点和主机对象配置。
请注意
为了保持两个HA主服务器之间的内容同步,请保持
zones.conf
文件尽可能小。您可以在主区域内创建代理区域和端点对象,并将它们同步到辅助主区域。集群配置同步强制重新加载,允许辅助主机也连接到代理。
编辑zones.conf
归档并确保代理区域/端点对象为不在这里指定。
然后导航到/etc/icinga2/zones.d/master
并创建一个新文件agents.conf
.
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师d /] # vim agents.conf大师 //----------------------------------------------- // “icinga2-agent1端点对象端点。localdomain" {host = "192.168.56.111" //主机主动尝试连接到代理log_duration = 0 //禁用命令端点代理的重播日志}对象endpoint "icinga2-agent2. log "localdomain" {host = "192.168.56.112" //主机主动尝试连接到代理log_duration = 0 //禁用命令端点代理的重播日志}//----------------------------------------------- // Zone对象Zone "icinga2-agent1. localdomain" {host = "192.168.56.112" //主机主动尝试连接到代理log_duration = 0 //禁用命令端点代理的重播日志}//----------------------------------------------- // Zone对象Zone "icinga2-agent1. localdomain" {host = "192.168.56.112"Localdomain " {endpoints = ["icinga2-agent1. "Localdomain "] parent = "master"}object Zone "icinga2-agent2.localdomain" { endpoints = [ "icinga2-agent2.localdomain" ] parent = "master" }
每当需要再次添加代理时,请编辑上述文件。
接下来,为代理创建相应的主机对象。对主机和端点对象使用相同的名称。
(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim hosts.conf对象主机“icinga2-agent1”。Localdomain " {check_command = "hostalive" address = "192.168.56.111" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.111"agent_endpoint= name //follows the convention that host name == endpoint name } object Host "icinga2-agent2.localdomain" { check_command = "hostalive" address = "192.168.56.112" vars.agent_endpoint = name //follows the convention that host name == endpoint name }
使用命令端点检查添加服务:
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "ping4" {check_command = "ping4" //在主节点上执行Check命令assign where host. conf地址}apply Service "disk" { check_command = "disk" // Check is executed on the remote command endpoint command_endpoint = host.vars.agent_endpoint assign where host.vars.agent_endpoint }
验证配置并在主节点上重新启动Icinga 2icinga2-master1.localdomain
.
[root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
打开Icinga Web 2并检查两个新创建的代理主机和两个新服务—一个在本地执行(ping4
)和使用命令endpoint (磁盘
).
提示:
加起来是个好主意健康检查确保您的集群在发生故障时通知您。
就运行状况检查而言,请考虑为此场景添加以下内容:
- 主节点检查与代理的连接
- 可选:为代理主机添加依赖项,以防止在代理不可达时不必要的通知
继续在这一章.
三层,包括大师,卫星和特工¶
这个场景结合了到目前为止您所学到的所有内容:高可用性主机、从主区域接收配置的卫星,以及通过命令端点从卫星区域检查的代理。
提示:
这可能会变得很复杂,所以拿起笔和纸,把你的想法付诸实践。在生产环境中使用测试设置之前,先试用一下它!
在您的环境中使用卫星的原因有很多。下面的列表解释了比较常见的一些。
- 监控远程位置。除了减少不同位置之间的连接和流量外,当到远程网络的网络连接丢失时,这种设置也有帮助。卫星将继续自己检查和收集数据,并将在连接恢复时发送检查结果。
- 减少安全区域之间的连接。与主服务器位于不同区域(例如DMZ)的卫星将有助于减少通过防火墙的连接。
- 将资源耗尽的检查卸载到其他主机。在非常大的设置中,在您的主机或卫星上运行大量插件可能会在高负载时对性能产生重大影响。您可以引入另一个级别的卫星来运行这些插件并将其结果发送到上游主机。
最佳实践是在专用服务器/集群上运行数据库后端,只向Icinga和IDO特性公开一个虚拟IP地址。默认情况下,只有一个端点会主动写入后端。MySQL集群的典型设置包括Master-Master-Replication (Master-Slave-Replication双向复制)或Galera,更多提示可以在我们的欧宝app官网网址社区论坛.
概述:
icinga2-master1.localdomain
是配置主主节点。icinga2-master2.localdomain
备主主节点没有配置zones.d
.icinga2-satellite1.localdomain
而且icinga2-satellite2.localdomain
a中的卫星节点是主
儿童区。它们将CSR签名请求转发到主区域。icinga2-agent1.localdomain
而且icinga2-agent2.localdomain
将两个子节点作为代理。
安装要求:
- 设置
icinga2-master1.localdomain
作为主. - 设置
icinga2-master2.localdomain
,icinga2-satellite1.localdomain
而且icinga2-satellite2.localdomain
作为代理(我们将修改生成的配置)。 - 设置
icinga2-agent1.localdomain
而且icinga2-agent2.localdomain
作为代理.
当被要求提供提供CSR自动签名功能的父端点时,请添加一个附属节点。请注意:这需要Icinga 2 v2.8+和CA代理
在所有主节点、卫星节点和代理节点上。
的例子icinga2-agent1.localdomain
:
请指定该节点应该连接到的父端点(主端点或附属端点):
父端点是第一个卫星icinga2-satellite1.localdomain
:
主/卫星通用名(来自主/卫星节点的CN): icinga2- Satellite。localdomain是否要从此节点建立到父节点的连接?[Y/n]: Y请指定主/卫星连接信息:主/卫星端点主机(IP地址或FQDN): 192.168.56.105主/卫星端点端口[5665]:5665
添加第二颗卫星icinga2-satellite2.localdomain
作为父母:
添加更多的主/卫星端点?[y/N]: y主/卫星公共名称(CN来自您的主/卫星节点):icinga2- satite2。localdomain是否要从此节点建立到父节点的连接?[Y/n]: Y Please specify the master/satellite connection information: master/satellite endpoint host (IP address or FQDN): 192.168.56.106 master/satellite endpoint port [5665]: 5665 Add more master/satellite endpoint ?[y / N]: N
指定的父节点将把CSR签名请求转发给主实例。
继续添加可选的客户端票证CSR auto-signing:
请指定在Icinga 2主机上生成的请求票证(可选)。(提示:# icinga2 pki ticket -cn 'icinga2-agent1.localdomain'): 4f75d2ecd253575fe9180938ebff7cbca262f96e
如果你选择使用随需应变企业社会责任签署你可以把票证问题留空。
相反,Icinga 2告诉您稍后在主节点上批准请求。
没有指定票。请在主服务器上手动批准证书签名请求(有关详细信息,请参阅“icinga2 ca列表”和“icinga2 ca签名—帮助”)。
可以指定不同的绑定主机和/或端口。
请指定API绑定主机/端口(可选):
下一步要求您接受配置(需要配置同步模式)和命令(需要命令端点模式).
接受父节点的配置吗?[y/N]: y Accept command from parent node?[y / N]: y
接下来,您可以选择指定本地和父区域名称。这将反映在生成的区域配置文件中。
本地区域名称[icinga2-agent1.localdomain]:icinga2-agent1.localdomain
设置父分区名称为卫星
这个代理。
父分区名称[master]:卫星
可以添加更多全局区域全局模板
而且director-global
如果有必要的话)。新闻输入
或选择n
,如果你不想添加任何额外的。
重新配置Icinga……是否要指定额外的全局分区?[y / N]: N
最后但同样重要的是,向导会询问您是否要禁用在中包含本地配置目录conf.d
,或不是。默认为禁用,因为通过命令端点检查代理,示例配置将与此模式发生冲突。
Do you want to disable the include of the conf.d目录[Y/n]: Y禁止包含conf.d目录…
我们将在下面讨论所需配置的细节。大多数配置都可以由设置向导呈现。
区域层次结构可以如下所示。我们在这里只定义直接连接的区域。
主实例应该主动连接到辅助实例,因此配置在icinga2-master1.localdomain
而且icinga2-master2.localdomain
必须包括宿主
卫星端点的属性:
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain“{// That's us}对象端点”icinga2-master2。localdomain" {host = "192.168.56.102" //主动连接到第二个主机。icinga2-satellite it1 .}对象端点。localdomain" {host = "192.168.56.105" //主动连接到卫星。icinga2-satellite ite2.}对象端点。localdomain" {host = "192.168.56.106" //主动连接到卫星。} object Zone "master" {endpoints = ["icinga2-master1.}localdomain”、“icinga2-master2。localdomain ")}
辅助主服务器上的端点配置看起来类似,但是更改了连接属性—第一个主服务器已经尝试连接,不需要再次尝试。
[root@icinga2-master2.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//第一个主机已经连接到我们}对象Endpoint "icinga2-master2. localdomain"{//第一个主机已经连接到我们}localdomain“{// That's us}对象端点”localdomain" {host = "192.168.56.105" //主动连接到卫星。icinga2-satellite ite2.}对象端点。localdomain" {host = "192.168.56.106" //主动连接到卫星。}
两个主机上的区域配置看起来是一样的。把这个加到对应的zones.conf
端点的项。
object Zone "satellite" {endpoints = ["icinga2- satit1 .]localdomain”、“icinga2-satellite2。Localdomain "] parent = "master"}/* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
与此相反,卫星实例icinga2-satellite1.localdomain
而且icinga2-satellite2.localdomain
不应主动连接到主实例。
[root@icinga2-satellite1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//这个端点将连接到我们}对象端点"icinga2-master2。{//这个端点将连接到我们}对象端点。localdomain" {// That's us}对象端点"localdomain" {host = "192.168.56.106" //主动连接到辅助卫星}
同样,只需要一方在HA区域内建立连接。因为satellite it1已经连接到satellite it2,所以省略宿主
属性icinga2-satellite1.localdomain
satellite2。
[root@icinga2-satellite2.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2-master1. conf”。localdomain"{//这个端点将连接到我们}对象端点"icinga2-master2。{//这个端点将连接到我们}对象端点。icinga2- satite2 . localdomain"{//第一个卫星已经连接到我们}对象端点"localdomain"{//那是我们}
两颗卫星上的区域配置看起来是一样的。把这个加到对应的zones.conf
端点的项。
object Zone "master" {endpoints = ["icinga2-master1.]localdomain”、“icinga2-master2。localdomain ")}object Zone "satellite" {endpoints = ["icinga2- satit1 .]localdomain”、“icinga2-satellite2。Localdomain "] parent = "master"}/* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
记住要控制端点连接方向使用宿主
属性,对于同一区域中的其他端点也是如此。
因为我们想用自顶向下命令endpoint检查后,必须配置代理端点和区域对象。
为了尽量减少工作量,我们将把代理区域和端点配置同步到还需要连接信息的卫星。注意:这只适用于卫星区和代理区,因为在主区和卫星区之间已经存在信任关系。到卫星的集群配置同步调用自动重新加载,导致代理连接尝试。
icinga2-master1.localdomain
是存储所有内容的配置主节点:
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones. #D /{master,satellite,global-templates} [root@icinga2-master1.localdomain /]# CD /etc/icinga2/ zoness . #(root@icinga2-master1.localdomain /etc/icinga2/zones. d /卫星# vim icinga2-agent1.localdomain.conf object Endpoint“icinga2-agent1. conf”。localdomain" {host = "192.168.56.111" //卫星主动尝试连接到代理log_duration = 0 //关闭命令终端代理的重播日志}object安全区域"icinga2-agent1. localdomain" {host = "192.168.56.111"Localdomain " {endpoints = ["icinga2-agent1. "Localdomain "] parent = "satellite"}(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim icinga2-agent2.localdomain.conf对象Endpoint“icinga2-agent2. conf”。localdomain" {host = "192.168.56.112" //卫星主动尝试连接到代理log_duration = 0 //关闭命令终端代理的重播日志}object安全区域"icinga2-agent2. log "Localdomain " {endpoints = ["icinga2-agent2. "Localdomain "] parent = "satellite"}
两个代理节点不需要相互了解。唯一重要的是,它们知道父区域(附属区域)及其端点成员(可选的全局区域)。
Tipp
在上面的例子中,我们指定了
宿主
属性。在这种模式下,卫星主动与代理连接。这将消耗卫星上的一些资源—如果您希望将连接尝试卸载到代理,或者您的DMZ需要这样做,您还可以更改连接方向.1)不要设置
宿主
属性中放入的代理端点zones.d /卫星
.2)修改每个座席的zones.conf文件,添加宿主
属性指向所有父卫星。您可以使用节点向导/设置
CLI命令。
特工们正在等待卫星连接,因此他们没有指定宿主
属性在本地端点对象中。
的例子icinga2-agent1.localdomain
:
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2- satite1 .conf”。localdomain"{//不主动连接到卫星,省略'host'属性}对象Endpoint "localdomain"{//不通过省略'host'属性}主动连接到卫星对象Endpoint "icinga2-agent1。localdomain" {// That's us} object Zone "satellite" {endpoints = ["icinga2- satite1 . "localdomain”、“icinga2-satellite2。localdomain ")}object Zone "icinga2-agent1.localdomain" { endpoints = [ "icinga2-agent1.localdomain" ] parent = "satellite" } /* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
的例子icinga2-agent2.localdomain
:
[root@icinga2-agent2.localdomain /]# vim /etc/icinga2/zones.conf对象Endpoint“icinga2- satite1 .conf”。localdomain"{//不主动连接到卫星,省略'host'属性}对象Endpoint "localdomain"{//不通过省略'host'属性}主动连接到卫星对象Endpoint "icinga2-agent2。localdomain" {// That's us} object Zone "satellite" {endpoints = ["icinga2- satite1 . "localdomain”、“icinga2-satellite2。localdomain ")}object Zone "icinga2-agent2.localdomain" { endpoints = [ "icinga2-agent2.localdomain" ] parent = "satellite" } /* sync global commands */ object Zone "global-templates" { global = true } object Zone "director-global" { global = true }
现在是时候在主服务器上定义两个代理主机,将它们同步到卫星服务器,并使用命令端点执行方法对它们应用服务检查。将两个代理节点作为主机对象添加到卫星
区。
我们已经创建了目录/etc/icinga2/zones.d
包括用于代理的区域和端点配置的文件。
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones.d/卫星
对象的主机对象配置icinga2-agent1.localdomain
代理。您应该已经在前面的步骤中创建了配置文件,它应该已经包含端点和区域对象配置。
(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim icinga2-agent1.localdomain.conf object主机“icinga2-agent1. conf”。Localdomain " {check_command = "hostalive" address = "192.168.56.111" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.111"agent_endpoint= name // Follows the convention that host name == endpoint name }
对象的主机对象配置icinga2-agent2.localdomain
代理配置文件:
(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim icinga2-agent2.localdomain.conf object主机“icinga2-agent2. conf”。Localdomain " {check_command = "hostalive" address = "192.168.56.112" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.112"agent_endpoint= name // Follows the convention that host name == endpoint name }
添加一个在卫星节点上执行的服务对象。ping4
).将apply规则固定在卫星
区。
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/satellite]# vim services.conf apply Service "ping4" {check_command = "ping4" //在卫星节点上执行检查assign where host. confZone == "卫星" &&主机。地址}
使用命令端点检查添加服务。将apply规则固定到卫星
区。
(root@icinga2-master1.localdomain /etc/icinga2/zones.# vim services.conf apply Service "disk" {check_command = "disk" //执行对远程命令endpoint的检查command_endpoint = host.vars. d/satellite # vim services.conf applyAgent_endpoint分配给主机。Zone == "satellite" && host.vars。agent_endpoint}
验证配置并在主节点上重新启动Icinga 2icinga2-master1.localdomain
.
[root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
打开Icinga Web 2并检查两个新创建的代理主机和两个新服务—一个在本地执行(ping4
)和使用命令endpoint (磁盘
).
提示:
加起来是个好主意健康检查确保您的集群在发生故障时通知您。
就运行状况检查而言,请考虑为此场景添加以下内容:
- 主节点检查卫星区域是否连通
- 卫星节点检查与代理的连接
- 可选:为代理主机添加依赖项,以防止在代理不可达时不必要的通知
继续在这一章.
最佳实践¶
我们从社区反馈中收集了一些配置示例。欧宝app官网网址如果你想和我们分享你的建议和技巧,请加入欧宝app官网网址社会渠道!
配置同步全局区域¶
全局区域可用于将通用配置对象同步到所有节点。常见的例子是:
- 导入到特定区域对象中的模板。
- 由主机、服务、通知对象引用的命令对象。
- 为服务、通知和依赖应用规则。
- 通知中引用的用户对象。
- 组对象。
- TimePeriod对象。
插件脚本和二进制文件不能同步,这只适用于Icinga 2配置文件。使用您喜欢的包存储库和/或配置管理工具(Puppet、Ansible、Chef等)来保持包和脚本的最新状态。
请注意:不能将可检查对象(主机和服务)放入全局分区。配置验证将终止并出现错误。应用规则在每个端点上进行本地评估时发挥作用。
zone对象配置必须部署在所有应该接收全局配置文件的节点上:
[root@icinga2-master1.localdomain /]# vim /etc/ icinga1 /zones.conf object Zone "global-commands" {global = true}
调用由设置向导生成的默认全局区域全局模板
而且director-global
.
而你可以也应该使用全局模板
对于全局配置,director-global
保留给Icinga导演.请不要手动在其中放置任何配置。
与区域配置同步类似,您需要在中创建一个新目录/etc/icinga2/zones.d
:
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/global-commands . #
接下来,添加一个新的check命令,例如:
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/global-commands/web.conf object CheckCommand "webinject"{//…}
在重新启动父主/附属节点之前,重新启动应该接收全局区域的端点。
然后在主节点上验证配置并重新启动Icinga 2。
提示:您可以拷贝目录中的样例配置文件/etc/icinga2/conf.d
进入默认全局区域全局模板
.
例子:
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/conf. #d (root@icinga2-master1.localdomain /etc/icinga2/conf.D]# cp{命令,组,通知,服务,模板,时间段,用户}.conf /etc/icinga2/zones.d/global-templates .conf /etc/icinga2/zone . D /global-templates .conf
健康检查¶
在网络故障或其他问题的情况下,您的监视可能会有较晚的检查结果,或者只是对未知的检查发出大量警报。
为了尽量减少由此引起的问题,您应该配置额外的运行状况检查。
cluster-zone包含主机和代理¶
的cluster-zone
Check将测试配置的目标区域当前是否连接。对象的运行状况检查哈主用代理的场景.
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/services.conf apply Service "agent-health" {check_command = "cluster-zone" display_name = "cluster-health-" + host.name /*这遵循了代理区域名称为与主机对象名称相同的FQDN的惯例。* / var。集群_zone = host.name assign where host.vars.agent_endpoint }
为了防止不必要的通知,添加一个使用命令端点模式应用到所有服务的服务依赖项。
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/dependencies.conf apply Dependency "agent-health-check" to Service {parent_service_name = "agent-health" states = [OK] //如果父服务状态切换为NOT-OK则失败disable_notifications = true assign where host.vars. confagent_endpoint //自动为匹配主机上的子服务分配所有代理端点检查,忽略service.name == "agent-health" //避免从子服务到父服务的自引用}
集群区,包括主机、卫星和代理¶
对象的运行状况检查Master,卫星和代理场景.
每当主区和卫星区之间的连接断开时,您可能会在Icinga Web中遇到延迟检查结果。为了查看此失败并发送通知,添加以下配置:
首先,将两个主节点作为主机对象添加到主节点区域(如果还不存在的话)。
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/hosts.conf对象主机“icinga2-master1. conf”。localdomain" {check_command = "hostalive" address = "192.168.56.101"} object主机icinga2-master2. localdomain" {check_command = "hostalive" address = "192.168.56.101"}Localdomain " {check_command = "hostalive" address = "192.168.56.102"}
针对卫星区域添加服务运行状况检查。
(root@icinga2-master1.localdomain /) # vim /etc/icinga2/zones.d/master/health.conf应用服务”satellite-zone-health”{check_command =“cluster-zone check_interval = 30年代retry_interval = 10 s var。Cluster_zone = "satellite" assign where match("icinga2-master*. "localdomain”,host.name)}
不要忘记为这些服务创建通知应用规则。
接下来是对连接到卫星区的特工的健康检查。导航到卫星目录zones.d
:
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones.d/卫星
您应该已经配置了下面的代理主机对象主,卫星,特工的场景.添加一个新的配置文件,其中定义了所有的运行状况检查。
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/satellite]# vim health.conf apply Service "agent-health" {check_command = "cluster-zone" display_name = "agent-health-" + host.name //遵循代理区域名称为与主机对象名称相同的FQDN的约定。var。cluster_zone = host.name //为卫星区域assign where host中的代理主机创建健康检查。Zone == "satellite" && host.vars。agent_endpoint}
为了防止不必要的通知,添加一个使用命令端点模式应用到所有服务的服务依赖项。
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/satellite]# vim health.conf apply Dependency "agent-health-check" to Service {parent_service_name = "agent-health" states = [OK] //如果父服务状态切换为NOT-OK则失败disable_notifications = true assign where host. d/satellite # vim health.confZone == "satellite" && host.vars。agent_endpoint//一个utomatically assigns all agent endpoint checks as child services on the matched host ignore where service.name == "agent-health" // Avoid a self reference from child to parent }
这都是在配置主服务器上完成的,并且需要场景完全启动并运行。
集群检查¶
的集群
Check将检查当前区域和直连区域中的所有端点是否正常工作。使用这种检查的缺点是不能使用它监视3个或更多的集群级别。
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/master[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/icinga2-master1.localdomain.conf object Host "icinga2-master1.localdomain" { check_command = "hostalive" address = "192.168.56.101" } [root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/cluster.conf object Service "cluster" { check_command = "cluster" check_interval = 5s retry_interval = 1s host_name = "icinga2-master1.localdomain" }
区域中的引脚检查¶
如果您想将特定的检查固定到给定区域中的端点,则需要使用command_endpoint
属性。中执行本地磁盘检查是合理的主
然后在特定端点上进行分区。
[root@icinga2-master1.localdomain /]# mkdir -p /etc/icinga2/zones.d/master[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/icinga2-master1.localdomain.conf object Host "icinga2-master1.localdomain" { check_command = "hostalive" address = "192.168.56.101" } [root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.d/master/services.conf apply Service "disk" { check_command = "disk" command_endpoint = host.name //requires a host object matching the endpoint object name e.g. icinga2-master1.localdomain assign where host.zone == "master" && match("icinga2-master*", host.name) }
的host.zone
属性检查确保服务对象仅为控件中的主机对象创建主
区。除此之外匹配函数确保只为主节点创建服务。
Windows防火墙¶
ICMP请求¶
缺省情况下,Windows防火墙关闭ICMP请求功能。你可以通过添加新规则.
C:\> netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action= Allow
Icinga 2¶
如果您的主/辅助节点应该主动连接到Windows代理,您还需要确保该端口5665
启用。
C:\> netsh advfirewall firewall add rule name="Open port 5665 (Icinga 2)" dir=in action=allow protocol=TCP localport=5665
NSClient c++ API¶
如果check_nscp_api当使用NSClient++插件查询NSClient++时,需要确保其端口已打开。
C:\> netsh advfirewall firewall add rule name="Open port 8443 (NSClient++ API)" dir=in action=allow protocol=TCP localport=8443
出于安全考虑,建议只启用Icinga代理本地连接的NSClient++ HTTP API。使用遗留HTTP API时,不建议使用到HTTP API的远程连接。
Windows代理和插件¶
Windows上的Icinga 2包已经提供了几个插件。详细的文档可用于所有检查命令定义。
基于主与代理我们现在添加一个本地磁盘检查。
首先,添加代理节点作为主机对象:
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师# vim hosts.conf对象主机“icinga2-agent2”。Localdomain " {check_command = "hostalive" address = "192.168.56.112" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.112"agent_endpoint= name //follows the convention that host name == endpoint name vars.os_type = "windows" }
接下来,使用命令端点检查添加磁盘检查(详细信息见disk-windows文档):
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "disk C:" {check_command = "disk-windows" vars. d/master]disk_win_path = "C:" //指定执行检查的位置command_endpoint = host.vars. disk_win_path = "C:"赋值给host.vars。Os_type == "windows" && host.vars。agent_endpoint}
验证配置并重新启动Icinga 2。
[root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
打开Icinga Web 2并检查您新添加的Windows磁盘检查:)
如果您想添加自己的插件,请勾选这一章的需求。
Windows Agent和NSClient++¶
有两种方法可以查询NSClient++:
两种方法各有优缺点。需要注意的一点是:如果您依赖性能计数器增量计算(如CPU利用率),请使用HTTP API而不是CLI示例调用。
与check_nscp_api NSCLient + +¶
的Windows安装程序已经允许你安装nsclient++包。除Windows插件外,您还可以使用nscp_api命令Icinga模板库(ITL)提供。
nsclient++ API的初始设置和所需的参数在ITL章节中有描述nscp_apiCheckCommand。
基于主与代理我们现在将添加一个本地nscp检查,它查询nsclient++ API来检查空闲磁盘空间。
定义一个名为icinga2-agent2.localdomain
的主人。添加nscp_api_password
自定义变量并指定要检查的驱动器。
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师# vim hosts.conf对象主机“icinga2-agent1”。Localdomain " {check_command = "hostalive" address = "192.168.56.111" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.111"agent_endpoint= name //follows the convention that host name == endpoint name vars.os_type = "Windows" vars.nscp_api_password = "icinga" vars.drives = [ "C:", "D:" ] }
服务检查是使用申请规则的基础上host.vars.drives
:
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "nscp-api-" for (drive in host.vars.drives) {import "generic-service" check_command = "nscp_api" command_endpoint = host.vars.d /master]Agent_endpoint //display_name = " nssp -drive-" +驱动器变量。Nscp_api_host = "localhost" vars。nscp_api_query = "check_drivesize" vars.nscp_api_password = host.vars.nscp_api_password vars.nscp_api_arguments = [ "drive=" + drive ] ignore where host.vars.os_type != "Windows" }
验证配置并重新启动Icinga 2。
[root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
Icinga Web 2中将出现两个新服务(" nscp-drive-D: "和" nscp-drive-C: ")。
注意:您也可以省略command_endpoint
配置以在主服务器上执行命令。这也需要一个不同的值nscp_api_host
它默认为host.address
.
/ / command_endpoint = host.vars。agent_endpoint / / var。nscp_api_host= "localhost"
可以通过查看检查源
Icinga Web 2或REST API中的属性。
如果你想监视特定的Windows服务,你可以使用下面的例子:
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师# vim hosts.conf对象主机“icinga2-agent1”。Localdomain " {check_command = "hostalive" address = "192.168.56.111" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.111"agent_endpoint= name //follows the convention that host name == endpoint name vars.os_type = "Windows" vars.nscp_api_password = "icinga" vars.services = [ "Windows Update", "wscsvc" ] } [root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "nscp-api-" for (svc in host.vars.services) { import "generic-service" check_command = "nscp_api" command_endpoint = host.vars.agent_endpoint //display_name = "nscp-service-" + svc vars.nscp_api_host = "localhost" vars.nscp_api_query = "check_service" vars.nscp_api_password = host.vars.nscp_api_password vars.nscp_api_arguments = [ "service=" + svc ] ignore where host.vars.os_type != "Windows" }
与nscp-local NSCLient + +¶
的Windows安装程序允许您安装绑定的nsclient++包。除Windows插件外,您还可以使用nscp-local命令Icinga模板库(ITL)提供。
添加以下包括
所有节点(主节点、卫星节点、代理节点)上的语句:
Vim /etc/icinga2/icinga2.conf include .conf
CheckCommand定义将自动确定已安装的路径nscp.exe
二进制文件。
基于主与代理我们现在将添加一个查询给定性能计数器的本地NSCP检查。
首先,添加代理节点作为主机对象:
[root@icinga2-master1.localdomain /]# CD /etc/icinga2/zones. #d / (root@icinga2-master1.localdomain /etc/icinga2/zones.大师# vim hosts.conf对象主机“icinga2-agent1”。Localdomain " {check_command = "hostalive" address = "192.168.56.111" vars. Localdomain " {check_command = "hostalive" address = "192.168.56.111"agent_endpoint= name //follows the convention that host name == endpoint name vars.os_type = "windows" }
接下来,使用命令端点检查添加性能计数器检查(详细信息请参见nscp-local-counter文档):
(root@icinga2-master1.localdomain /etc/icinga2/zones.d/master]# vim services.conf apply Service "nscp-local-counter-cpu" {check_command = "nscp-local-counter" command_endpoint = host.vars. d/master]agent_endpoint var。nscp_counter_name = "\\Processor(_total)\\% Processor Time" vars.nscp_counter_perfsyntax = "Total Processor Time" vars.nscp_counter_warning = 1 vars.nscp_counter_critical = 5 vars.nscp_counter_showall = true assign where host.vars.os_type == "windows" && host.vars.agent_endpoint }
验证配置并重新启动Icinga 2。
[root@icinga2-master1.localdomain /]# icinga2 daemon -C [root@icinga2-master1.localdomain /]# systemctl restart icinga2 .使用实例
打开Icinga Web 2,检查你新添加的Windows NSClient++检查:)
提示
为了测量CPU负载,你需要一个运行的NSClient++服务。因此,建议使用本地nscp-api检查它的REST API。
先进的提示¶
如果您喜欢使用自动化设置(设置、证书、配置),您可以在本节中找到其他提示。
汽车更新证书¶
Icinga 2 v2.8+增加了节点自己请求证书更新的可能性。如果它们的过期日期足够快,它们会通过向父节点发送签名请求来自动更新已经签名的证书。如果不需要证书更新,您还会在日志中看到一条消息。
Icinga 2特性的高可用性¶
同一分区中的所有节点都要求您启用相同的特性以实现高可用性。
默认情况下,提供高级HA功能的特性如下:
- 检查(负载平衡,自动故障转移)。
- 通知(负载平衡,自动故障转移)。
- DB被罩(运行一次,自动故障转移)。
- Elasticsearch
- Gelf
- 石墨
- InfluxDB(v1和v2)
- OpenTsdb
- Perfdata(PNP)
高可用性与检查¶
同一区域内的所有实例(例如主
zone作为HA集群)必须具有检查程序
功能启用。
例子:
icinga2特性启用检查程序
同一区域内的所有节点对检查执行进行负载均衡。如果一个实例关闭,其他节点将自动接管剩余的检查。
高可用性与通知¶
同一区域内的所有实例(例如主
zone作为HA集群)必须具有通知
功能启用。
例子:
icinga2特性启用通知
通知在区域中的所有节点之间实现负载平衡。默认情况下,该功能是启用的。如果您的节点应该独立于任何其他节点发出通知(如果处理不当将导致重复通知!),您可以设置enable_ha = false
在NotificationComponent特性。
DB IDO的高可用性¶
同一区域内的所有实例(例如主
zone作为HA集群)必须启用DB IDO特性。
示例DB IDO MySQL:
icinga2特性启用ido-mysql
默认情况下,DB IDO特性只在一个节点上运行。同一区域中的所有其他节点在运行时禁用活动IDO数据库连接。具有活动DB IDO连接的节点不一定是区域主节点。
请注意:关闭DB IDO HA特性enable_ha
属性来假
为IdoMysqlConnection或IdoPgsqlConnection对象所有节点相同区。
所有端点都将启用DB IDO特性,并连接到已配置的数据库,自行转储配置、状态和历史数据。
如果激活DB IDO连接的实例失效,HA功能将自动选择一个新的DB IDO主服务器。
DB IDO特性将尝试确定当前正在向数据库写入数据的集群端点,并在另一个端点处于活动状态时退出。可手动执行以下查询命令进行验证:
icinga=> SELECT status_update_time, endpoint_name FROM icinga_programstatus;status_update_time | endpoint_name ------------------------+--------------- 2016-08-15 15:52:26 + 02 | icinga2-master1。localdomain (1 Zeile)
当端点之间的集群连接中断时,这是很有用的,并且可以防止脑裂场景中的数据复制。的故障转移超时时间可以设置failover_timeout
属性,但不低于60秒。
端点连接方向¶
当其为本地时,端点试图连接到另一个端点端点对象配置指定有效的宿主
属性(FQDN或IP地址)。
以主节点为例icinga2-master1.localdomain
主动连接到代理节点icinga2-agent1.localdomain
:
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.conf //…“icinga2-agent1对象端点。localdomain" {host = "192.168.56.111" //主机主动尝试连接到代理log_duration = 0 //禁用命令端点代理的重播日志}
agent节点示例icinga2-agent1.localdomain
没有主动连接到主节点icinga2-master1.localdomain
:
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf //…“icinga2-master1对象端点。localdomain"{//不主动连接到主机,忽略'host'属性log_duration = 0 //禁用命令端点代理的重播日志}
主节点和代理节点之间不一定都要建立两个连接。Icinga 2只使用一个连接,如果建立了第二个连接,则关闭第二个连接。这会产生无用的CPU周期,并在连接超时时导致阻塞资源。
提示:选择让主/卫星节点与代理节点连接,或让代理节点与主/卫星节点连接。
禁用命令端点的日志持续时间¶
重播日志是一种内置机制,用于确保分布式设置中的节点在节点暂时断开连接然后重新连接时保持相同的历史记录(检查结果、通知等)。
当主/辅助节点向配置为的代理发送检查执行事件时,不需要此功能命令端点检查执行。
的端点对象属性log_duration
可以设置为较低或设置为0,以在代理未连接时完全禁用任何日志重播更新。
主节点上的配置icinga2-master1.localdomain
:
[root@icinga2-master1.localdomain /]# vim /etc/icinga2/zones.conf //…“icinga2-agent1对象端点。localdomain" {host = "192.168.56.111" //主机主动尝试连接到代理log_duration = 0}对象Endpoint "icinga2-agent2. localdomain" {host = "192.168.56.111"localdomain" {host = "192.168.56.112" //主机主动尝试连接到代理log_duration = 0}
代理上的配置icinga2-agent1.localdomain
:
[root@icinga2-agent1.localdomain /]# vim /etc/icinga2/zones.conf //…“icinga2-master1对象端点。localdomain"{//不主动连接到主机,忽略'host'属性log_duration = 0}对象Endpointlocaldomain"{//不主动连接到主机,忽略'host'属性log_duration = 0}
区域内新端点的初始同步¶
请注意
如果您决定将已经运行的单端点生产环境更改为具有两个端点的启用ha的集群区域,则需要这样做。的初始设置2个HA master不需要这个步骤。
为了确保所有区域端点都具有相同的状态,您需要选择权威的正在运行的一个并复制以下内容:
- 状态文件从
/var/lib/icinga2/icinga2.state
- 用于运行时创建的对象(停机时间、注释、主机等)的内部配置包
/var/lib/icinga2/api/packages/_api
如果您需要Director中已经部署的配置包,或者需要同步的集群分区,您还可以同步整个/var/lib/icinga2/api/packages
目录中。这个目录也应该包含在备份策略中。
做不同步/var/lib/icinga2/api/zones*
manual -这是一个内部目录,由Icinga集群配置同步自己处理。
请注意
确保在此过程中关闭所有端点。同步缓存文件之后,继续配置其余端点,让它们知道新的主/附属节点(zones.conf)。
手动创建证书¶
在Master上创建CA¶
选择应该存储证书颁发机构的主机(主节点之一)。
第一步是创建证书颁发机构(CA),以root用户运行以下命令:
[root@icinga2-master1.localdomain /root]# icinga2 pki new-ca .使用实例
创建CSR和证书¶
为本地实例创建一个证书签名请求(CSR):
[root@icinga2-master1.localdomain /root]# icinga2 pki new-cert——cn icinga2-master1.使用实例icinga2-master1.localdomain。Key \——csr icinga2-master1.localdomain.csr
用之前创建的CA签署CSR:
[root@icinga2-master1.localdomain /root]# icinga2 pki sign-csr——csr icinga2-master1.localdomain。企业社会责任- cert icinga2-master1.localdomain
对设置中的所有实例重复上述步骤。
证书副本¶
将主机证书文件和公共CA证书复制到/var/lib/icinga2/certs
:
[root@icinga2-master1.localdomain /root]# mkdir -p /var/lib/icinga2/certs [root@icinga2-master1.localdomain /root]# cp icinga2-master1.localdomain。{crt,key} /var/lib/icinga2/certs [root@icinga2-master1.localdomain /root]# cp /var/lib/icinga2/ca/ca. {crt,key} /var/lib/icinga2/certscrt /var/lib/icinga2/certs
确保设置了适当的权限(替换icinga
使用Icinga 2守护进程用户):
[root@icinga2-master1.localdomain /root]# chown -R icinga:icinga /var/lib/icinga2/certs [root@icinga2-master1.localdomain /root]# chmod 600 /var/lib/icinga2/certs/*. *Key [root@icinga2-master1.localdomain /root]# chmod 644 /var/lib/icinga2/certs/*.crt . Key
CA的公私钥存放在/var/lib/icinga2/ca
目录中。保持此路径的安全,并将其包含在备份中。
创建多个证书¶
使用您喜欢的方法自动化证书生成过程。
[root@icinga2-master1.localdomain /var/lib/icinga2/certs]#用于icinga2-master1中的节点。localdomain icinga2-master2。localdomain icinga2-satellite1.localdomain;执行icinga2 pki new-cert——cn $node——csr $node。企业社会责任——关键node.key美元;写私钥到“icinga2-master1.localdomain.key”。information/base:写入证书签名请求到“icinga2-master1.localdomain.csr”。information/base:正在写私钥到“icinga2-master2.localdomain.key”。information/base:写入证书签名请求到“icinga2-master2.localdomain.csr”。information/base:写入'icinga2-satellite .localdomain.key'的私钥。information/base:向'icinga2-satellite .localdomain.csr'写入证书签名请求。[root@icinga2-master1.localdomain /var/lib/icinga2/certs]#用于icinga2-master1中的节点。localdomain icinga2-master2。localdomain icinga2-satellite1.localdomain; do sudo icinga2 pki sign-csr --csr $node.csr --cert $node.crt; done information/pki: Writing certificate to file 'icinga2-master1.localdomain.crt'. information/pki: Writing certificate to file 'icinga2-master2.localdomain.crt'. information/pki: Writing certificate to file 'icinga2-satellite1.localdomain.crt'.
将这些证书复制并移动到相应的实例中,例如SSH/SCP。
自动化¶
这些提示可以帮助你开始使用自己的自动化工具(Puppet、Ansible、Chef、Salt等)或用于自动设置的自定义脚本。
这些都是从各种社区渠道收集的最佳实践。欧宝app官网网址
如果您更喜欢另一种方法,我们仍然建议保留Icinga 2的所有特性(例如。Icinga2功能启用API
).您还应该使用众所周知的、有文档记录的默认配置文件位置(例如。zones.conf
).这将极大地帮助当有人试图帮助在欧宝app官网网址社会渠道.
沉默的Windows安装程序¶
如果要静默/无人值守安装代理,请使用/ qn
修饰符。安装不应该触发重新启动,但是如果您想完全确定,可以使用/ norestart
修饰符。
C:\Icinga2-v2.5.0-x86。msi / qn / norestart
设置完成后,就可以使用节点设置
cli命令。
通过CLI参数设置节点¶
而不是使用节点向导
CLI命令,也有替代方案节点设置
命令可用,它具有一些先决条件。
请注意: CLI命令支持在Linux/Unix和Windows操作系统上使用。图形化Windows安装向导会主动使用这些CLI命令。
主节点上的节点设置¶
如果您想设置一个主节点,您必须添加——主
参数节点设置
CLI命令。除此之外—cn
可以选择传递(默认为FQDN)。
参数 | 描述 |
---|---|
—cn |
可选的。常见的名字(CN)。按照惯例,这应该是主机的FQDN。默认为FQDN。 |
——区 |
可选的。区域名称。默认为主 . |
——听 |
可选的。收听地址。语法是主机、端口 . |
——disable-confd |
可选的。如果提供,则禁用include_recursive“conf.d” 指令并添加api-users.conf 文件包含icinga2.conf .自v2.9 +可用。由于与Puppet、Ansible、Chef等兼容的原因,没有默认设置。 |
例子:
[root@icinga2-master1.localdomain /]# icinga2 node setup -master . [/
如果你想绑定ApiListener
对象到一个特定的主机/端口,你可以像这样指定它:
——听着192.68.56.101,5665
以防你不需要带任何东西进去conf.d
,使用以下命令行:
[root@icinga2-master1.localdomain /]# icinga2节点设置——master——disable-confd .使用实例
使用代理/卫星设置节点¶
准备工作¶
确保/var/lib/icinga2/certs
目录存在,并且由icinga
用户(或运行Icinga 2的用户)。
[root@icinga2-agent1.localdomain /]# mkdir -p /var/lib/icinga2/certs [root@icinga2-agent1.localdomain /]# chown -R icinga:icinga /var/lib/icinga2/certs . #
首先,您需要生成一个新的本地自签名证书。将以下详细信息传递给pki new-cert
CLI命令:
参数 | 描述 |
---|---|
—cn |
必需的。常见的名字(CN)。按照惯例,这应该是主机的FQDN。 |
——关键 ,——文件 |
必需的。客户端证书文件。这些生成的文件将被放到指定的位置。按照惯例这应该被使用/var/lib/icinga2/certs 目录。 |
例子:
[root@icinga2-agent1.localdomain /]# icinga2 pki new-cert——cn icinga2-agent1.使用实例Localdomain \——key /var/lib/icinga2/certs/icinga2-agent1.localdomain。键\——cert /var/lib/icinga2/certs/icinga2-agent1.localdomain.crt
验证父连接¶
为了验证父连接并避免中间人攻击,请获取父实例的证书并验证它是否与连接匹配。的trusted-parent.crt
文件是传递给的临时文件节点设置
,不需要存储以供以后使用。
将以下详细信息传递给pki save-cert
CLI命令:
参数 | 描述 |
---|---|
——trustedcert |
必需的。存储父证书文件。手动验证您是否信任它。 |
——主机 |
必需的。父主机的FQDN或IP地址。 |
从主主机请求主证书(icinga2-master1.localdomain
)并将其存储为trusted-parent.crt
.检查它并继续。
[root@icinga2-agent1.localdomain /]# icinga2 pki save-cert \——trustedcert /var/lib/icinga2/certs/trusted-parent. /CRT \——host icinga2-master1。localdomain information/cli:正在为'icinga2-master1.localdomain:5665'检索TLS证书。主题:CN = icinga2-master1。localdomain颁发者:CN = icinga2-master1。localdomain有效从:2月4日08:59:05 2020 GMT有效到:1月31日08:59:05 2035 GMT指纹:B4 90 DE 46 81 DD 2E BF EE 9D D5 47 61 43 EF C6 6D 86 A6 CC *** ***为了避免中间人攻击,你必须确保这个证书实际上与父***实例的证书相匹配。*** information/pki:正在写入证书到文件'/var/lib/icinga2/certs/trusted-parent.crt'。
节点设置¶
继续附加的内容节点设置
的一步。指定本地端点和区域名称(icinga2-agent1.localdomain
),并设置主主机(icinga2-master1.localdomain
)作为父分区配置。指定先前存储的受信任父证书的路径(trusted-parent.crt
).
将以下详细信息传递给节点设置
CLI命令:
参数 | 描述 |
---|---|
—cn |
可选的。常见的名字(CN)。按照惯例,这应该是主机的FQDN。 |
——机票 |
必需的。请求的票。添加之前生成的票数量. |
——trustedcert |
必需的。作为连接验证的受信任父证书文件(通过' pki savcert '接收)。 |
——parent_host |
可选的。父主机的FQDN或IP地址。这是命令连接CSR签名的地方。如果不指定,则需要手动将父CA公共证书文件拷贝到/var/lib/icinga2/certs/ca.crt 以便启动Icinga 2。 |
——端点 |
必需的。指定父结点的端点名称。 |
——区 |
必需的。指定代理/卫星区域名称。 |
——parent_zone |
可选的。指定父分区的名称。 |
——accept-config |
可选的。该节点是否接受来自主节点的配置同步(需要配置同步模式). |
——接受命令 |
可选的。该节点是否接受来自主节点的命令执行消息(需要命令端点模式). |
——global_zones |
可选的。允许指定更多的全局区域全局模板 而且director-global . |
——disable-confd |
可选的。如果提供,则禁用include_recursive“conf.d” 指令icinga2.conf .自v2.9 +可用。由于与Puppet、Ansible、Chef等兼容的原因,没有默认设置。 |
请注意
的
master_host
参数已弃用,将被删除。请使用——parent_host
代替。
例子:
[root@icinga2-agent1.localdomain /]# icinga2节点设置——ticket ead2d570e18c78abf285d6b85524970a0f69c22d \——cn icinga2-agent1。Localdomain \——endpoint icinga2-master1。Localdomain \——zone icinga2-agent1。Localdomain \——parent_zone master \——parent_host icinga2-master1。Localdomain \——trustedcert /var/lib/icinga2/certs/trusted-parent。CRT \——accept-commands——accept-config \——disable-confd
如果代理/卫星连接到主节点,则需要修改——端点
参数。cn、主机端口
:
5665年,端点icinga2-master1.localdomain 192.168.56.101
属性指定父分区——parent_zone
参数。如果代理连接到附属实例,而不是主实例,这将非常有用。
——parent_zone卫星
以防代理应该知道额外的全局区域linux-templates
,你需要设置——global-zones
参数。
——global_zones linux-templates
的——主机
参数从v2.9开始是可选的,它允许您执行无连接设置。您无法重新启动Icinga 2, CLI命令要求手动复制父节点的公共CA证书文件/var/lib/icinga2/certs/ca.crt
.Icinga 2启动后,它向父节点发送票据签名请求。如果您提供了票证,主节点签署请求并将其发送回代理/卫星,代理/卫星在内存中执行证书更新。
如果你没有提供机票,你需要提供在主节点上手动签署CSR它保存着CA的密钥对。
您可以在下面找到更多的最佳实践。
如果该代理节点配置为远程命令端点执行您可以安全地禁用检查程序
特性。的节点设置
命令已经禁用通知
特性。
[root@icinga2-agent1.localdomain /]# icinga2功能禁用检查器
可选:添加ApiUser对象配置,用于远程故障排除。
[root@icinga2-agent1.localdomain /]# cat </etc/icinga2/conf.d/api-users.conf object ApiUser "root" {password = "agentsupersecretpassword" permissions = ["*"]
最后重启Icinga 2。
[root@icinga2-agent1.localdomain /]# systemctl restart icinga2 .使用实例
然后,您的自动化工具必须同时配置主节点。
# cat <>/etc/icinga2/zones.conf对象Endpoint“icinga2-agent1. conf”。localdomain" {// Agent连接自己}object Zone "icinga2-agent1.使用实例Localdomain " {endpoints = ["icinga2-agent1. "localdomain"] parent = "master"
使用多个环境¶
请注意
本文档仅涵盖基本内容。完整的功能需要一个尚未发布的插件。
在某些情况下,可能希望在同一主机上运行多个Icinga实例。两种可能的情况包括:
- 相同监视配置的不同版本(例如,生产和测试)
- 对完全不相关的监视环境(例如基础设施和应用程序)的不同检查集
配置是使用全局常数完成的ApiBindHost
而且ApiBindPort
或者是bind_host
而且bind_port
的属性ApiListener对象。
环境必须设置为全局常数环境
或作为对象属性的IcingaApplication对象。
在任何情况下,常量都是属性的默认值,对象中的直接配置具有更高的优先级。添加常量是为了允许在启动时从CLI设置值。
当Icinga建立到另一个集群实例的TLS连接时,它自动使用SNI扩展以指示它试图连接到哪个端点。就其本身而言,它已经可以用于在负载均衡器后面放置多个Icinga实例。
SNI的例子:icinga2-agent1.localdomain
但是,如果环境被配置为生产
, Icinga像这样将环境名称附加到SNI主机名:
SNI环境示例:icinga2-agent1.localdomain:生产
像负载平衡器或TLS代理这样的中间件可以读取SNI标头并将连接路由到适当的目标。也就是说,它使用一个外部可见的TCP端口(通常是5665),并将连接转发到一个或多个绑定到本地TCP端口的Icinga实例。它通过检查作为SNI扩展的一部分发送的环境名称来做到这一点。