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.