使用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', }
最终结果应与此类似:
所有代理都会自动向服务器注册。