Zabbix

来自 Alpine Linux

本文档旨在帮助在 Alpine Linux 操作系统上安装 Zabbix 服务器软件和 Zabbix agent。有关如何配置和使用 Zabbix 的说明以及许多有用的教程,请访问 https://www.zabbix.com

注意: 安装 Zabbix 所需的 Alpine Linux 最低版本为 Alpine 2.2。本指南已更新至 Zabbix 3.0
注意: 此处有另一组说明 Zabbix_-_cgi_and_mysql

安装 Lighttpd 和 PHP

基本安装

要首先安装其他软件包,请激活 community 软件包仓库 并更新软件包索引

安装所需的软件包

# apk add lighttpd php82 fcgi php82-cgi

配置 Lighttpd

编辑 lighttpd.conf (/etc/lighttpd/lighttpd.conf) 并取消注释以下行

内容 /etc/lighttpd/lighttpd.conf

... include "mod_fastcgi.conf" ...

编辑 mod_fastcgi.conf (/etc/lighttpd/mod_fastcgi.conf),查找并更改 /usr/bin/php-cgi/usr/bin/php-cgi82

内容 /etc/lighttpd/mod_fastcgi.conf

... "bin-path" => "/usr/bin/php-cgi82" # php-cgi ...

启动 lighttpd 服务并将其添加到默认运行级别

# rc-service lighttpd start # rc-update add lighttpd default

对于 Zabbix,您将必须安装以下两个额外的软件包,否则 Zabbix 将无法运行。 1. php82-mbstring 2. php82-pgsql

要安装这两个软件包

apk add php82-mbstring php82-pgsql

配置 PostgreSQL

安装 PostgreSQL

apk add postgresql postgresql-client

现在配置 PostgreSQL

rc-service postgresql setup rc-service postgresql start rc-update add postgresql


安装 Postgres 并运行 rc-service postgresql setup 后,我收到了一个错误

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

我必须更改 /var/lib/postgresql/16 的所有权

sudo chown postgres:postgres /var/lib/postgresql/16

安装 Zabbix

apk add zabbix zabbix-pgsql zabbix-webif zabbix-setup

现在我们需要设置 zabbix 数据库。在下面的示例中,将“*********”替换为真实密码

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

为 Zabbix web-frontend 文件创建软链接

rm /var/www/localhost/htdocs -R ln -s /usr/share/webapps/zabbix /var/www/localhost/htdocs

编辑 PHP 配置以满足一些 zabbix 要求。编辑 /etc/php82/php.ini 并至少配置以下值

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

同时注释掉 (doc_root & user_dir),方法是在它们前面加上 #。

在 /etc/zabbix/zabbix_server.conf 中配置以下条目,其中 DBPassword 是为上面的数据库选择的密码

DBName=zabbix

# Database user

DBUser=zabbix

# Database password
# Comment this line if no password used

DBPassword=*********

FpingLocation=/usr/sbin/fping

启动 Zabbix 服务器

rc-update add zabbix-server rc-service zabbix-server start

修复 conf 目录的权限。

chown -R lighttpd /usr/share/webapps/zabbix/conf

现在您应该可以浏览到 Zabbix 前端:http://yourservername/。

现在您应该可以浏览到 Zabbix 设置前端:http://yourserverip/instal.php。

按照设置说明配置 Zabbix,提供上面使用的数据库信息。

设置完成后,使用以下信息登录:登录名:Admin 密码:zabbix。(如 https://www.zabbix.com/documentation/current/en/manual/installation 中所述)

最后,Zabbix 需要特殊权限才能使用 fping 二进制文件。

chmod u+s /usr/sbin/fping

在受监控服务器上安装 Zabbix Agent

Zabbix 可以监控几乎任何操作系统,包括 Alpine Linux 主机。完成以下步骤以在 Alpine Linux 上安装 Zabbix agent。

注意: 自 linux-grsec-2.6.35.9-r2 起,已添加支持允许 zabbix-agentd 查看 Alpine Linux 上的运行进程。请确保您已安装该内核,然后再尝试运行 zabbix-agentd。

确保 readproc 组存在(自 alpine-baselayout-2.0_rc1-r1 起添加了支持),方法是将以下行添加到 /etc/group

readproc:x:30:zabbix

安装 agent 软件包

apk add zabbix-agent

编辑 /etc/zabbix/zabbix_agentd.conf 文件并至少配置以下选项

Server=<ip or hostname of zabbix server>
Hostname=<ip or hostname of zabbix agent>
ListenPort=10050

启动 zabbix-agent

rc-update add zabbix-agentd rc-service zabbix-agentd start

如果您想在远程机器上使用 SNMP agent 进行监控,则必须在 zabbix 服务器上添加这些软件包

apk add net-snmp net-snmp-tools

并在远程机器上添加这些软件包

apk add net-snmp


可选:添加主机、检查和通知的速成课程

注意: 这是可选的,因为它不是 Alpine Linux 特有的,但我想添加一些关于如何在未安装 agent 的服务器上执行简单检查并在状态更改时收到通知的说明。

管理 -> 媒介类型 -> 电子邮件

  • 设置服务器、helo、电子邮件发件人地址

管理 -> 用户

  • 设置每个将收到通知的用户,确保他们已添加媒介类型“电子邮件”及其地址

配置 -> 主机 -> 创建主机

  • 在 Linux 服务器主机组中
  • 定义 dns 名称、ip、通过 IP 连接
  • 如果机器是仅使用 SNMP 监控的简单网络设备,请将其添加到 Template_SNMPv2_Device,即可完成。

配置 -> 模板 -> 创建模板

  • 给它一个名称(Template_Alpine_Linux_Infra_HTTP)
  • 在模板组中

配置 -> 模板 -> Template_Alpine_Linux_Infra_HTTP -> 项目

  • 创建项目
  • 主机:Template_Alpine_Linux_Infra_HTTP
  • 描述:HTTP 基本检查
  • 类型:简单检查
  • 键:http,80

配置 -> 模板 -> Template_Alpine_Linux_Infra_HTTP -> 触发器

  • 创建触发器
  • 名称:“HTTP 触发器”
  • 表达式:{Template_Alpine_Linux_Infra_HTTP:http,80.last(0)}#1
  • 严重性:高

配置 -> 动作 ->

  • 创建动作
  • 名称:电子邮件通知
  • 事件源:触发器
  • 默认主题:在开头添加“{HOST.DNS}:”
  • 默认消息:在开头添加“{HOST.DNS}:”
  • 条件:使主机必须来自“Linux 服务器”主机组,并且 Template_Alpine_Linux_Infra_HTTP:HTTP 触发器”不是 1
  • 向受影响的用户发送电子邮件