Zabbix: Difference between revisions
(Revert Zabbix to pre cgi+mysql; add link to Zabbix+cgi+mysql) |
(values in /etc/php82/php.ini are all lowercase) |
||
(6 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
The purpose of this document is to assist in installing the Zabbix server software and Zabbix agent on the Alpine Linux operating system. Instructions on how to configure and use Zabbix - as well as many useful tutorials - can be found at | The purpose of this document is to assist in installing the Zabbix server software and Zabbix agent on the Alpine Linux operating system. Instructions on how to configure and use Zabbix - as well as many useful tutorials - can be found at https://www.zabbix.com. | ||
{{Note|The minimum required version of Alpine Linux required to install Zabbix is Alpine 2.2. this guide has been updated to zabbix 3.0}} | {{Note|The minimum required version of Alpine Linux required to install Zabbix is Alpine 2.2. this guide has been updated to zabbix 3.0}} | ||
{{Note|There is an alternate set of instructions here [[Zabbix_-_cgi_and_mysql]].}} | |||
= Install Lighttpd, and PHP = | = Install Lighttpd, and PHP = | ||
Line 9: | Line 9: | ||
For Zabbix you will have to install following two extra packages otherwise Zabbix will not run. | For Zabbix you will have to install following two extra packages otherwise Zabbix will not run. | ||
1. | 1. php82-mbstring 2. php82-pgsql | ||
To Install these two packages | To Install these two packages | ||
{{Cmd|apk add | {{Cmd|apk add php82-mbstring php82-pgsql}} | ||
= Configure PostgreSQL = | = Configure PostgreSQL = | ||
Line 20: | Line 20: | ||
Now configure PostgreSQL: | Now configure PostgreSQL: | ||
{{Cmd| | {{Cmd|rc-service postgresql setup | ||
rc-service postgresql start | |||
rc-update add postgresql}} | rc-update add postgresql}} | ||
After installing Postgres and running rc-service postgresql setup I got an error: | |||
{{Cmd|initdb: error: could not access directory "/var/lib/postgresql/16/data": Permission denied | |||
mv: can't rename '/var/lib/postgresql/16/data/postgresql.conf': No such file or directory | |||
mv: can't rename '/var/lib/postgresql/16/data/pg_hba.conf': No such file or directory | |||
mv: can't rename '/var/lib/postgresql/16/data/pg_ident.conf': No such file or directory | |||
$: sudo ls -l /var/lib/postgresql/ | |||
total 4 | |||
drwxr-x--- 3 root root 4096 Mar 19 11:27 16}} | |||
I had to change the ownership of /var/lib/postgresql/16 | |||
{{Cmd|sudo chown postgres:postgres /var/lib/postgresql/16}} | |||
= Install Zabbix = | = Install Zabbix = | ||
Line 44: | Line 58: | ||
ln -s /usr/share/webapps/zabbix /var/www/localhost/htdocs}} | ln -s /usr/share/webapps/zabbix /var/www/localhost/htdocs}} | ||
Edit PHP configuration to satisfy some zabbix requirements. Edit /etc/ | Edit PHP configuration to satisfy some zabbix requirements. Edit /etc/php82/php.ini and configure the following values at least: | ||
<pre> | <pre> | ||
max_execution_time = 600 | |||
expose_php = Off | |||
date.timezone = <insert your timezone here> | |||
post_max_size = 32M | post_max_size = 32M | ||
upload_max_filesize = 16M | upload_max_filesize = 16M | ||
Line 78: | Line 92: | ||
{{Cmd|rc-update add zabbix-server | {{Cmd|rc-update add zabbix-server | ||
rc-service zabbix-server start}} | |||
Fix permissions on conf directory. | Fix permissions on conf directory. | ||
Line 84: | Line 98: | ||
{{Cmd|chown -R lighttpd /usr/share/webapps/zabbix/conf}} | {{Cmd|chown -R lighttpd /usr/share/webapps/zabbix/conf}} | ||
You should now be able to browse to the Zabbix frontend: http://yourservername/. | You should now be able to browse to the Zabbix frontend: <nowiki>http://yourservername/</nowiki>. | ||
or | or | ||
You should now be able to browse to the Zabbix setup frontend: http://yourserverip/instal.php. | You should now be able to browse to the Zabbix setup frontend: <nowiki>http://yourserverip/instal.php</nowiki>. | ||
Follow the setup instructions to configure Zabbix, supplying the database information used above. | Follow the setup instructions to configure Zabbix, supplying the database information used above. | ||
After setup, login using: Login name: '''Admin''' Password:'''zabbix'''. (as described at | After setup, login using: Login name: '''Admin''' Password:'''zabbix'''. (as described at https://www.zabbix.com/documentation/current/en/manual/installation) | ||
Finally, Zabbix requires special permissions to use the fping binary. | Finally, Zabbix requires special permissions to use the fping binary. | ||
Line 122: | Line 136: | ||
{{Cmd|rc-update add zabbix-agentd | {{Cmd|rc-update add zabbix-agentd | ||
rc-service zabbix-agentd start}} | |||
In case you want to monitor using SNMP agent on remote machines you have to add these packages on zabbix server: | In case you want to monitor using SNMP agent on remote machines you have to add these packages on zabbix server: |
Latest revision as of 16:58, 19 March 2024
The purpose of this document is to assist in installing the Zabbix server software and Zabbix agent on the Alpine Linux operating system. Instructions on how to configure and use Zabbix - as well as many useful tutorials - can be found at https://www.zabbix.com.
Install Lighttpd, and PHP
Basic Installation
For installing the additional packages first activate community packages and update the package index
Install the required packages:
# apk add lighttpd php82 fcgi php82-cgi
Configure Lighttpd
Edit lighttpd.conf (/etc/lighttpd/lighttpd.conf) and uncomment the line:
Contents of /etc/lighttpd/lighttpd.conf
Edit mod_fastcgi.conf (/etc/lighttpd/mod_fastcgi.conf), find and change /usr/bin/php-cgi to /usr/bin/php-cgi82.
Contents of /etc/lighttpd/mod_fastcgi.conf
Start lighttpd
service and add it to default runlevel
# rc-service lighttpd start # rc-update add lighttpd default
For Zabbix you will have to install following two extra packages otherwise Zabbix will not run. 1. php82-mbstring 2. php82-pgsql
To Install these two packages
apk add php82-mbstring php82-pgsql
Configure PostgreSQL
Install PostgreSQL
apk add postgresql postgresql-client
Now configure PostgreSQL:
rc-service postgresql setup rc-service postgresql start rc-update add postgresql
After installing Postgres and running rc-service postgresql setup I got an error:
initdb: error: could not access directory "/var/lib/postgresql/16/data": Permission denied mv: can't rename '/var/lib/postgresql/16/data/postgresql.conf': No such file or directory mv: can't rename '/var/lib/postgresql/16/data/pg_hba.conf': No such file or directory mv: can't rename '/var/lib/postgresql/16/data/pg_ident.conf': No such file or directory $: sudo ls -l /var/lib/postgresql/ total 4 drwxr-x--- 3 root root 4096 Mar 19 11:27 16
I had to change the ownership of /var/lib/postgresql/16
sudo chown postgres:postgres /var/lib/postgresql/16
Install Zabbix
apk add zabbix zabbix-pgsql zabbix-webif zabbix-setup
Now we need to set up the zabbix database. Substitute '*********' in the example below for a real password:
psql -U postgres postgres=# create user zabbix with password '*********'; postgres=# create database zabbix owner zabbix; postgres=# \q cd /usr/share/zabbix/database/postgresql cat schema.sql | psql -U zabbix zabbix cat images.sql | psql -U zabbix zabbix cat data.sql | psql -U zabbix zabbix
Create a softlink for the Zabbix web-frontend files:
rm /var/www/localhost/htdocs -R ln -s /usr/share/webapps/zabbix /var/www/localhost/htdocs
Edit PHP configuration to satisfy some zabbix requirements. Edit /etc/php82/php.ini and configure the following values at least:
max_execution_time = 600 expose_php = Off date.timezone = <insert your timezone here> post_max_size = 32M upload_max_filesize = 16M max_input_time = 600 memory_limit = 256M
Also comment (doc_root & user_dir ) by putting # before these.
Configure the following entries in /etc/zabbix/zabbix_server.conf, where DBPassword is the password chosen for the database above:
DBName=zabbix # Database user DBUser=zabbix # Database password # Comment this line if no password used DBPassword=********* FpingLocation=/usr/sbin/fping
Start Zabbix server:
rc-update add zabbix-server rc-service zabbix-server start
Fix permissions on conf directory.
chown -R lighttpd /usr/share/webapps/zabbix/conf
You should now be able to browse to the Zabbix frontend: http://yourservername/.
or
You should now be able to browse to the Zabbix setup frontend: http://yourserverip/instal.php.
Follow the setup instructions to configure Zabbix, supplying the database information used above.
After setup, login using: Login name: Admin Password:zabbix. (as described at https://www.zabbix.com/documentation/current/en/manual/installation)
Finally, Zabbix requires special permissions to use the fping binary.
chmod u+s /usr/sbin/fping
Install Zabbix Agent on Monitored Servers
Zabbix can monitor almost any operating system, including Alpine Linux hosts. Complete the following steps to install the Zabbix agent on Alpine Linux.
Ensure that the readproc group exists (support added since alpine-baselayout-2.0_rc1-r1), by adding the following line to /etc/group:
readproc:x:30:zabbix
Install the agent package:
apk add zabbix-agent
Edit the /etc/zabbix/zabbix_agentd.conf file and configure at least the following option:
Server=<ip or hostname of zabbix server> Hostname=<ip or hostname of zabbix agent> ListenPort=10050
Start the zabbix-agent:
rc-update add zabbix-agentd rc-service zabbix-agentd start
In case you want to monitor using SNMP agent on remote machines you have to add these packages on zabbix server:
apk add net-snmp net-snmp-tools
And add these packages on remote machines:
apk add net-snmp
Optional: Crash course in adding hosts, checks, and notifications
Note: This is optional since it's not specific to Alpine Linux, but I wanted a couple notes for how to perform a simple check on a server that doesn't have the agent installed on it, and be notified on state changes.
Administration -> Media Types -> Email
- Setup server, helo, email from address
Administration -> Users
- Setup each user who'll get notified, make sure they have media type "Email" added with their address
Configuration -> Hosts -> Create host
- In Linux Servers hostgroup
- Define dns name, ip, connect by IP
- If the machine is a simple networking device that will only be monitored using SNMP, add it to Template_SNMPv2_Device, and you're done.
Configuration -> Templates -> Create template
- Give it a name (Template_Alpine_Linux_Infra_HTTP)
- In Templates group
Configuration -> Templates -> Template_Alpine_Linux_Infra_HTTP -> Items
- Create Item
- Host: Template_Alpine_Linux_Infra_HTTP
- Description: HTTP Basic Check
- Type: Simple_check
- Key: http,80
Configuration -> Templates -> Template_Alpine_Linux_Infra_HTTP -> Triggers
- Create Trigger
- Name: "HTTP Trigger"
- Expression: {Template_Alpine_Linux_Infra_HTTP:http,80.last(0)}#1
- Severity: High
Configuration -> Actions ->
- Create Action
- name: Email notifications
- Event source: triggers
- Default Subject: add "{HOST.DNS}:" to the beginning
- Default message: add "{HOST.DNS}:" to the beginning
- Conditions: make host have to be from "Linux Servers" hostgroup, and Template_Alpine_Linux_Infra_HTTP:HTTP trigger" is not 1
- Email affected users