cookbook 'zabbix_lwrp', '= 1.1.14', :supermarket
zabbix_lwrp
(26) Versions
1.1.14
-
Follow8
Installs and configures Zabbix agent and server with PostgreSQL and Nginx. Provides LWRP for creating and modifying Zabbix objects.
cookbook 'zabbix_lwrp', '= 1.1.14'
knife supermarket install zabbix_lwrp
knife supermarket download zabbix_lwrp
Description
Installs and configures Zabbix agent and server with PostgreSQL and Nginx. Provides LWRP for creating and modifying Zabbix objects.
Requirements
Platform:
- Ubuntu
Cookbooks:
- apt
- build-essential
- lvm
- nginx
- postgresql_lwrp
- php-fpm
Attributes
Default
-
node['zabbix']['version']
- Defaults to2.4
. -
node['zabbix']['api-version']
- Defaults to2.4.4
.
Agent
-
node['zabbix']['agent']['include']
- Defaults to/opt/zabbix/etc
. -
node['zabbix']['agent']['scripts']
- Defaults to/opt/zabbix/scripts
. -
node['zabbix']['agent']['templates']
- Defaults to/opt/zabbix/templates
. -
node['zabbix']['agent']['loglevel']
- Defaults to3
. -
node['zabbix']['agent']['remotecmds']
- Defaults to0
. -
node['zabbix']['agent']['timeout']
- Defaults to3
. -
node['zabbix']['agent']['listen_ip']
- Defaults to0.0.0.0
. -
node['zabbix']['agent']['enable_remote_commands']
- Defaults to0
. -
node['zabbix']['agent']['serverhost']
- Defaults tonode['ipaddress']
. -
node['zabbix']['agent']['user_params']
- Defaults to{ ... }
.
Database
-
node['zabbix']['server']['database']['filesystem']
- Defaults toext4
. -
node['zabbix']['server']['database']['lvm_group']
- Defaults toshared
. -
node['zabbix']['server']['database']['lvm_volume']
- Defaults to/dev/sda3
. -
node['zabbix']['server']['database']['partition_size']
- Defaults to10G
. -
node['zabbix']['server']['database']['cluster']
- Defaults tomain
. -
node['zabbix']['server']['database']['databag']
- Defaults tozabbix
. -
node['zabbix']['server']['database']['locale']
- Defaults toen_US.utf8
. -
node['zabbix']['server']['database']['mount_point']
- Defaults to/var/lib/postgresql
. -
node['zabbix']['server']['database']['network']
- Defaults to127.0.0.0/8
. -
node['zabbix']['server']['database']['version']
- Defaults to9.4
. -
node['zabbix']['server']['database']['configuration']['listen_addresses']
- Defaults to127.0.0.1
. -
node['zabbix']['server']['database']['configuration']['port']
- Defaults to5432
. -
node['zabbix']['server']['database']['configuration']['max_connections']
- Defaults to300
. -
node['zabbix']['server']['database']['configuration']['shared_buffers']
- Defaults to128MB
. -
node['zabbix']['server']['database']['configuration']['maintenance_work_mem']
- Defaults to128MB
. -
node['zabbix']['server']['database']['configuration']['work_mem']
- Defaults to8MB
. -
node['zabbix']['server']['database']['configuration']['effective_cache_size']
- Defaults to2GB
. -
node['zabbix']['server']['database']['configuration']['log_min_duration_statement']
- Defaults to1000
. -
node['zabbix']['server']['database']['configuration']['archive_mode']
- Defaults toon
. -
node['zabbix']['server']['database']['configuration']['archive_command']
- Defaults toexit 0
.
Server
-
node['zabbix']['server']['service']
- Defaults tozabbix-server
. -
node['zabbix']['server']['credentials']['databag']
- Defaults tozabbix
. -
node['zabbix']['server']['config']['listenip']
- Defaults to0.0.0.0
. -
node['zabbix']['server']['config']['debuglevel']
- Defaults to3
. -
node['zabbix']['server']['config']['workers']
- Defaults to{ ... }
. -
node['zabbix']['server']['config']['hk']
- Defaults to{ ... }
. -
node['zabbix']['server']['config']['cache']
- Defaults to{ ... }
. -
node['zabbix']['server']['config']['timeouts']
- Defaults to{ ... }
. -
node['zabbix']['server']['config']['global']
- Defaults to{ ... }
. -
node['zabbix']['server']['config']['alerts']
- Defaults to{ ... }
.
Web
-
node['zabbix']['server']['web']['server_name']
- Defaults tolocalhost
. -
node['zabbix']['server']['web']['listen']
- Defaults to127.0.0.1
. -
node['zabbix']['server']['web']['port']
- Defaults to9200
. -
node['zabbix']['server']['web']['max_requests']
- Defaults to500
. -
node['zabbix']['server']['web']['max_children']
- Defaults to5
. -
node['zabbix']['server']['web']['min_spare_servers']
- Defaults to1
. -
node['zabbix']['server']['web']['max_spare_servers']
- Defaults to3
. -
node['zabbix']['server']['web']['process_manager']
- Defaults todynamic
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[date.timezone]']
- Defaults toUTC
. -
node['zabbix']['server']['web']['configuration']['php_admin_flag[display_errors]']
- Defaults tofalse
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[error_reporting]']
- Defaults toE_ALL & ~E_DEPRECATED
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[error_log]']
- Defaults to/var/log/zabbix-php-error.log
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[max_execution_time]']
- Defaults to600
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[max_input_time]']
- Defaults to300
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[memory_limit]']
- Defaults to128M
. -
node['zabbix']['server']['web']['configuration']['php_admin_value[post_max_size]']
- Defaults to32M
. -
node['zabbix']['server']['web']['configuration']['php_admin_flag[register_globals]']
- Defaults totrue
.
Recipes
- zabbix_lwrp::agent - Installs and configures Zabbix agent.
- zabbix_lwrp::connect - Connects to Zabbix API to sync configuration.
- zabbix_lwrp::default - Installs and configures Zabbix official repository and agent.
- zabbix_lwrp::database - Installs and configures Zabbix database.
- zabbix_lwrp::host - Creates host via Zabbix API.
- zabbix_lwrp::partition - Configures LVM for Zabbix database.
- zabbix_lwrp::repository - Installs Zabbix official repository.
- zabbix_lwrp::server - Installs and configures Zabbix server.
- zabbix_lwrp::web - Installs and configures Zabbix frontend.
Data bag
Data bag zabbix
must contains the following items:
* admin (with Zabbix admin password)
* databases
* users
databases
and users
items related to the postgresql database (see postgresql_lwrp cookbook)
For examples see fixture data bag test/fixtures/databags/zabbix/
LWRP
This cookbooks provides next resources: * zabbix_action * zabbix_application * zabbix_connect * zabbix_database * zabbix_graph * zabbix_host * zabbix_media_type * zabbix_screen * zabbix_template * zabbix_user_group * zabbix_user_macro
zabbix_action
Creates zabbix action with operations, conditions and messages.
Actions
<table> <tr> <th>Action</th> <th>Description</th> </tr> <tr> <td>sync</td> <td>Default action. Sync action description with one's in zabbix server</td> </tr> </table>
Attributes
<table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>name</td> <td><strong>Name attribute</strong>. Name of the action (required)</td> <td></td> </tr> <tr> <td>event_source</td> <td>Source of event for action, now only :trigger allowed</td> <td>:triggers</td> </tr> <tr> <td>escalation_time</td> <td>Delay between escalation steps</td> <td>60</td> </tr> <tr> <td>enabled</td> <td>Is action enabled?</td> <td>true</td> </tr> <tr> <td>message_subject</td> <td>Subject of action message</td> <td></td> </tr> <tr> <td>message_body</td> <td>Body of action message</td> <td>true</td> </tr> <tr> <td>send_recovery_message</td> <td>Send recovery message when conditions of action become false</td> <td>false</td> </tr> <tr> <td>recovery_message_subject</td> <td>Subject of recovery message</td> <td></td> </tr> <tr> <td>recovery_message_body</td> <td>Body of recovery message</td> <td></td> </tr> <tr> <td>operation</td> <td>Add an operation to action, see below. It's possible to add more then one operation</td> <td></td> </tr> <tr> <td>condition</td> <td>Add an condition to action, see below. It's possible to add more the one condition</td> <td></td> </tr> </table>
Attributes for operation. <table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>type</td> <td>Type of operation, can be :message or :command</td> <td>:message</td> </tr> <tr> <td>escalation_time</td> <td>Time to escalate to next step</td> <td></td> </tr> <tr> <td>start</td> <td>Start step, when this operation take place</td> <td></td> </tr> <tr> <td>stop</td> <td>Last step, when this operation take place</td> <td></td> </tr> <tr> <td>user_groups</td> <td>Zabbix user group names that'll receive message</td> <td></td> </tr> <tr> <td>message</td> <td>Message description, see below</td> <td>Use default actin message if empty</td> </tr> </table>
Attributes for conditions. <table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>type</td> <td>Type of condition, can be one of :trigger, :trigger_value, :trigger_serverity, :host_group, :maintenance</td> <td></td> </tr> <tr> <td>operator</td> <td>Operator for condition, can be one of :equal, :not_equal, :like, :not_like, :in, :gte, :lte, :not_in</td> <td></td> </tr> <tr> <td>value</td> <td>Value for condition.</td> <td></td> </tr> </table>
It also possible to use short form of condition, like:
ruby
condition :trigger, :equal, '42th trigger name'
Attributes for message. <table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>use_default_message</td> <td>Use default message from action</td> <td></td> </tr> <tr> <td>subject</td> <td>Message subject</td> <td></td> </tr> <tr> <td>message</td> <td>Message body</td> <td></td> </tr> <tr> <td>media_type</td> <td>Name of media type to use</td> <td>By default all media types are used</td> </tr> </table>
Examples
zabbix_action 'Test action' do
action :sync
event_source :triggers
operation do
user_groups 'Test group'
message do
use_default_message false
subject 'Test {TRIGGER.SEVERITY}: {HOSTNAME1} {TRIGGER.STATUS}: {TRIGGER.NAME}'
message "Trigger: {TRIGGER.NAME}\n"\
"Trigger status: {TRIGGER.STATUS}\n" \
"Trigger severity: {TRIGGER.SEVERITY}\n" \
"\n" \
"Item values:\n" \
'{ITEM.NAME1} ({HOSTNAME1}:{TRIGGER.KEY1}): {ITEM.VALUE1}'
media_type 'sms'
end
end
condition :trigger_severity, :gte, :high
condition :host_group, :equal, 'Main'
condition :maintenance, :not_in, :maintenance
end
zabbix_application
Creates application, items and triggers. You should think about items and triggers like nested resources inside zabbix_application lwrp.
Actions
<table> <tr> <th>Action</th> <th>Description</th> </tr> <tr> <td>sync</td> <td>Default action. Sync application description with one's in zabbix server</td> </tr> </table>
Attributes
<table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>name</td> <td><strong>Name attribute</strong>. Name of the application (required)</td> <td></td> </tr> <tr> <td>item</td> <td>Add an item to application, see below. It's possible to add more then one item</td> <td></td> </tr> <tr> <td>trigger</td> <td>Add an trigger to application, see below. It's possible to add more the one trigger</td> <td></td> </tr> </table>
Item attributes
Create/update zabbix item <table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>key</td> <td><strong>Name attribute</strong>. Zabbix key for an item, should be unique.</td> <td></td> </tr> <tr> <td>type</td> <td>Type of zabbix check, possible values :zabbix, :trapper, :active, :calculated </td> <td></td> </tr> <tr> <td>name</td> <td>Descriptive name of zabbix check, shown in web-interface </td> <td></td> </tr> <tr> <td>frequency</td> <td>How often zabbix checks this item in seconds</td> <td>60</td> </tr> <tr> <td>history</td> <td>How many days store item's history</td> <td>7 days</td> </tr> <tr> <td>multiplier</td> <td>Set a multiplier for item</td> <td>0</td> </tr> <tr> <td>trends</td> <td>How many days store item's trends (archived history)</td> <td>365</td> </tr> <tr> <td>units</td> <td>Set a unit for item</td> <td></td> </tr> <tr> <td>value_type</td> <td>Type of gathered value, possible values :float, :character, :log_line, :unsigned_int, :text </td> <td>:unsigned_int</td> </tr> </table>
Trigger attributes
<table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> </table>
Examples
zabbix_application "Test application" do
action :sync
item 'vfs.fs.size[/var/log,free]' do
type :active
name 'Free disk space on /var/log'
frequency 600
value_type :unsigned_int
end
trigger "Number #{node.fqdn} of free inodes on log < 10%" do
expression "{#{node.fqdn}:vfs.fs.size[/var/log,free].last(0)}>0"
severity :high
end
end
zabbix_connect
Examples
zabbix_connect 'default' do
action :make
apiurl 'http://localhost/api_jsonrpc.php'
databag 'zabbix'
end
zabbix_database
Examples
zabbix_database db_name do
db_user db_user
db_pass db_pass
db_host db_host
db_port db_port
action :create
end
zabbix_graph
Examples
zabbix_graph 'Test Graph' do
action :create
width 640
height 480
graph_items [:key => 'vfs.fs.size[/var/log,free]', :color => '111111']
end
zabbix_host
Examples
zabbix_host node['fqdn'] do
action :create
host_group 'Hosts'
use_ip true
ip_address node['ipaddress']
end
zabbix_media_type
Examples
zabbix_media_type 'sms' do
action :create
type :sms
modem '/dev/modem'
end
zabbix_screen
Examples
zabbix_screen 'Test Screen' do
action :sync
screen_item 'Test Graph' do
resource_type :graph
end
end
zabbix_template
Actions
<table> <tr> <th>Action</th> <th>Description</th> </tr> <tr> <td>add</td> <td>Default action. Add a template to node</td> </tr> <tr> <td>import</td> <td>Import templates from xml file to zabbix server</td> </tr> </table>
Attributes
<table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>path</td> <td><strong>Name attribute</strong>. Path to file for :import or name of template for :add action (required)</td> <td></td> </tr> <tr> <td>host_name</td> <td>Name of host new template to add</td> <td>FQDN of current node</td> </tr> </table>
Examples
zabbix_template '/opt/zabbix/templates/zbx_templates_linux.xml' do
action :import
end
zabbix_template 'Linux_Template'
action :add
end
zabbix_user_group
Actions
<table> <tr> <th>Action</th> <th>Description</th> </tr> <tr> <td>create</td> <td>Default action. Create a new zabbix user group</td> </tr> </table>
Attributes
<table> <tr> <th>Attribute</th> <th>Description</th> <th>Default</th> </tr> <tr> <td>name</td> <td><strong>Name attribute</strong>. Name of new zabbix user group (required)</td> <td></td> </tr> </table>
Examples
zabbix_user_group 'Test group' do
action :create
end
zabbix_user_macro
Examples
zabbix_user_macro 'Test_macro' do
action :create
value 'foobar'
end
Usage
To install Zabbix agent just include zabbix_lwrp
default recipe into your node's run_list
:
{
"name":"my_node",
"run_list": [
"recipe[zabbix_lwrp]"
]
}
This recipe should be included before all usage of LWRP, because connection to zabbix server is established here.
To install Zabbix server include the following recipes:
{
"name":"my_node",
"run_list": [
"recipe[zabbix_lwrp::default]",
"recipe[zabbix_lwrp::database]",
"recipe[zabbix_lwrp::server]",
"recipe[zabbix_lwrp::web]"
]
}
For examples of LWRP see fixture cookbook in tests/fixtures/cookbooks
.
License and Maintainer
Maintainer:: LLC Express 42 (cookbooks@express42.com)
License:: MIT
Dependent cookbooks
php-fpm >= 0.0.0 |
postgresql_lwrp >= 0.0.0 |
nginx >= 0.0.0 |
lvm >= 0.0.0 |
build-essential >= 0.0.0 |
apt >= 0.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
CHANGELOG for zabbix_lwrp
This file is used to list changes made in each version of zabbix_lwrp.
1.1.14
- Update zabbix api version
1.1.13
- Fix default serverhost for agent
1.1.12
- Do not update hosts on each chef run, because in some cases it leads to error with items linked with interfaces.
1.1.11:
- Fix bug with empty attributes
- Fix rubocop issues
- Add official nginx repo to fixture cookbook
1.1.10:
- Remove official nginx repository setup
1.1.9:
- Remove setup official postgresql repository setup
1.1.8:
- Fix run under Chef 11
1.1.7:
- Update docs
1.1.6:
- Use the latest Chef client
- Fix compatibility with Chef 12.4.0
1.1.5:
- Fix issues
1.1.4:
- Remove chef search from server and web recipes
1.1.3:
- Switch to php-fpm cookbook
- Fix issues
1.1.2:
- Add partition, host and connect recipes
- Add build-essential cookbook
- Fix issues
1.1.1:
- Remove express42 helpers dependencies
1.1.0:
- Change name for all zabbix resources from zabbix_lwrp_* to zabbix_*
1.0.1:
- Fix import triggers from xml template
- Remove postgresql and nginx repos
1.0.0:
- Initial release of zabbix_lwrp cookbook
Check the Markdown Syntax Guide for help with Markdown.
The Github Flavored Markdown page describes the differences between markdown on github and standard markdown.
Foodcritic Metric
1.1.14 passed this metric
1.1.14 passed this metric