使用Puppet配置Zabbix Monitoring Server
我们将使用Puppet来安装和配置Zabbix服务器。
我们还将允许活跃的Zabbix代理自动注册。
测试环境
我们已经安装了CentOS 7 VM,我们希望将其配置为Zabbix服务器:
带有代理程序自动注册的monitoring.igi.local(10.11.1.13)Zabbix服务器
SELinux设置为强制模式。
Zabbix LTS和PHP
我们要使用稳定的Zabbix LTS版本,在撰写本文时为Zabbix 3.0。
请注意,Zabbix 3.0 LTS版本支持PHP 5.4或者更高版本,但是尚不支持PHP v7.
有关更多信息,请参见Zabbix文档。
另请注意,PHP 5.6将在2016年12月31日之前获得安全支持。
有关更多信息,请参见PHP支持的版本。
因此,我们将使用Katello提供的Remi的PHP 5.6存储库(我们在此处进行了配置)。
用Puppet配置
Puppet Master 在Katello服务器上运行。
Puppet模块
我们使用puppet-zabbix Puppet模块来配置服务器。
我们还使用puppetlabs-apache和puppetlabs-mysql配置前端和后端服务。
请参阅每个模块的文档以获取支持的功能和可用的配置选项。
管理防火墙
我们从防火墙配置开始:
firewall { '007 allow Zabbix active checks':
dport => [10051],
source => '10.11.1.0/24',
proto => tcp,
action => accept,
}->
firewall { '008 allow Zabbix WebUI':
dport => [80, 443],
source => '10.11.1.0/24',
proto => tcp,
action => accept,
}
安装Apache
我们使用Apache运行Zabbix前端,并使用MySQL作为Zabbix后端数据库。
仅执行最小限度的Apache安装,但请确保已加载PHP模块:
class { 'apache':
default_vhost => false,
default_ssl_vhost => false,
default_mods
=> false,
mpm_module
=> 'prefork',
server_signature => 'Off',
server_tokens => 'Prod',
trace_enable
=> 'Off',
}
include apache::mod::php
安装MySQL
MySQL 5.7存储库由Katello提供服务(我们在此处进行了配置)。
class { 'mysql::server':
package_name
=> 'mysql-community-server',
service_name
=> 'mysqld',
root_password
=> 'PleaseChangeMe',
create_root_my_cnf => true,
manage_config_file => true,
config_file
=> '/etc/my.cnf',
purge_conf_dir => true,
restart
=> true,
override_options => {
mysqld => {
bind-address => '127.0.0.1',
datadir
=> '/var/lib/mysql',
log-error => '/var/log/mysqld.log',
pid-file => '/var/run/mysqld/mysqld.pid',
wait_timeout => '3600',
interactive_timeout => '3600',
},
mysqld_safe => {
log-error => '/var/log/mysqld.log',
},
},
remove_default_accounts => true,
}
安装Zabbix服务器
Zabbix 3.0存储库由Katello提供。
既然是这种情况,我们将manage_repo设置为false。
class { 'zabbix':
zabbix_version => '3.0',
zabbix_url
=> 'monitoring.igi.local',
database_type => 'mysql',
manage_repo => false,
manage_firewall => true,
manage_vhost => true,
apache_use_ssl => true,
}
如果一切顺利,此时Zabbix应该已启动并正在运行。
配置活动代理自动注册
创建服务器后,应配置此部分。
可以允许活动的Zabbix代理自动注册,然后服务器可以开始监视它们。
这样,可以添加新主机进行监视,而无需在服务器上手动配置它们。
成功安装后,Zabbix Web界面将成为accessibe,我们可以使用默认凭据登录:
- 用户名:Admin
- 密码:zabbix
在Zabbix前端中,转到“配置”>“操作”,选择“自动注册”作为事件源,然后单击“创建操作”。
使用这样的东西:
- 名称:Linux主机自动注册
- 条件:无
- 操作:链接到模板:模板OS Linux
有关更多信息,请参见下面的图像。
我们这里没有使用任何条件,因为它是可选的,对于测试环境来说并不是真正必要的,但是,如果我们想将Linux服务器与Windows分开,则可以使用“ HostMetadataItem = system.uname”。
在所有服务器上安装Zabbix代理
现在,我们应该在启用代理自动注册的情况下运行Zabbix服务器。
剩下要做的一件事是配置Puppet在所有homelab服务器上安装Zabbix代理,并允许Zabbix被动检查。
这需要进入主环境列表文件“ /etc/puppetlabs/code/environments/homelab/manifests/site.pp”,以便将配置应用于所有服务器。
class { 'zabbix::agent':
zabbix_version => '3.0',
## Do not use DNS, use IP address.
server => '10.11.1.13',
## Do not set logtype to 'system' unless you want
## to find yourself debugging SELinux problems.
logtype => 'file',
logfile => '/var/log/zabbix/zabbix_agentd.log',
## Use Katello repository
manage_repo => false,
manage_firewall => false,
manage_selinux => true,
## Zabbix Agent does not work well with SELinux
## See: https://support.zabbix.com/browse/ZBX-12592
selinux_require => [
'type kernel_t',
'type devlog_t',
'type zabbix_agent_t',
'class sock_file write',
'class process setrlimit',
'class unix_dgram_socket {connect create sendto}',
],
selinux_rules => { 'zabbix_agent_t' => [
'allow zabbix_agent_t kernel_t:unix_dgram_socket sendto',
'allow zabbix_agent_t self:process setrlimit',
'allow zabbix_agent_t self:unix_dgram_socket { connect create }',
]
},
## Allow active Zabbix agent auto-registration,
## after which the server can start monitoring them.
serveractive => 'monitoring.igi.local',
hostmetadata => 'system.uname',
}
在所有服务器上配置防火墙,以允许Zabbix被动检查:
firewall { '006 allow Zabbix passive checks':
proto => 'tcp',
source => 'monitoring.igi.local',
dport => '10050',
action => 'accept',
}
最终结果应与此类似:
所有代理都会自动向服务器注册。

