
With the previous post I showed you how you can use the zabbix-server on one or multiple machines with my wdijkerman-zabbix puppet module. At the end I said that you could also do this with the zabbix-proxy. So this blog item is showing how to setup the zabbix-proxy on 1 or 2 nodes. I don’t know if people are using it like this, but when I was busy for the zabbix-server, I thought that I also had to do this for the zabbix-proxy. 🙂
So sit back and watch the show. 🙂
Single node
PostgreSQL
So, we first show you have to do this with the PostgreSQL as backend.
node 'proxy.example.com'
class { 'postgresql::server': }
class { 'zabbix::proxy':
zabbix_server_host => '192.168.20.11',
zabbix_server_port => '10051',
}
}
As you see in this manifests file, we have configured to use the postgresql-server class and the zabbix-proxy class. This zabbix-proxy class needs 1 parameter: ‘zabbix_server_host’. This is the ip address or fqdn of the zabbix-server host. The parameter ‘zabbix_server_port’ is optional, you only have to use this parameter when the zabbix-server is running on a different port than 10051.
MySQL
Okay, so you want to use MySQL as database backend? No worries, take a look at this:
node 'proxy.example.com'
class { 'mysql::server': }
class { 'zabbix::proxy':
zabbix_server_host => '192.168.20.11',
zabbix_server_port => '10051',
database_type => 'mysql',
}
}
Like the zabbix-server, the zabbix-proxy uses the PostgreSQL as default database. So we have to use the ‘database_type’ parameter for specifying mysql.
Multi node
With the following example, we have 2 servers:
- server11.example.com, which will be running the zabbix-proxy.
- server12.example.com, which will be running the database.
MySQL
Lets start the manifests file again with the MySQL as ‘database_type’:
node 'server11.example.com' {
# My ip: 192.168.30.11
class { 'mysql::client': }
class { 'zabbix::proxy':
zabbix_server_host => '192.168.20.11',
manage_database => false,
database_host => 'server12.example.com',
database_type => 'mysql',
}
}
node 'server12.example.com' {
# My ip: 192.168.30.12
class { 'mysql::server':
override_options => {
'mysqld' => {
'bind_address' => '192.168.30.12',
},
},
}
class { 'zabbix::database':
database_type => 'mysql',
zabbix_type => 'proxy',
zabbix_proxy => 'server11.example.com',
database_name => 'zabbix-proxy',
database_user => 'zabbix-proxy',
database_password => 'zabbix-proxy',
}
}
On the node of the zabbix-proxy, we had to add a new parameter: ‘manage_database’. We had to set it to false, the proxy class isn’t responsible for creating the database and loading the files. Thats what the ‘zabbix::database’ will do on the 2nd host.
PostgreSQL
Now with the PostgreSQL as ‘database_type’:
node 'server11.example.com' {
# My ip: 192.168.30.11
class { 'postgresql::client': }
class { 'zabbix::proxy':
zabbix_server_host => '192.168.20.11',
manage_database => false,
database_host => 'server12.example.com',
}
}
node 'server12.example.com' {
# My ip: 192.168.30.12
class { 'postgresql::server':
listen_addresses => '192.168.30.12'
}
class { 'zabbix::database':
zabbix_type => 'proxy',
zabbix_proxy_ip => '192.168.30.11',
database_name => 'zabbix-proxy',
database_user => 'zabbix-proxy',
database_password => 'zabbix-proxy',
}
}
With the above setup for both MySQL as PostgreSQL as ‘database_type’, we had to use the ‘database_name’ and ‘database_password’ parameters. The default values for the ‘zabbix::database’ class is for both parameters ‘zabbix-server’. Which is a kind of strange for the proxy. 🙂
Note
With the default installation on both the single as the multi node setup, the password for the database is ‘zabbix-server’. I would strongly recommend that you use the parameter: ‘database_password’ and give it a nice password.