Zabbix安装

Zabbix介绍

Zabbix基本功能

数据采集方式:zabbix agent,agent(active),SNMP,SSH等;
数据存储方式:RDBMS,如MySQL,Pgsql等;
数据展示方式:php,web,gui;
报警功能:支持报警升级;

zabbix组件及基础架构

 • Zabbix主要由zabbix server和zabbix agent组成;
• server端负责从agent端收集监控数据,并存储在数据库中,同时对数据进行分析展示,并触发相关报警;
• agent端负责监控数据的采集,并发送给server端;
• 数据采集方式除了在被监控主机上部署agent程序外,还可通过ICMP/IPMI/SNMP等协议对网络设备进行监控,同时配置web监控方式可以监控web页面的下载速率和响应时间等重要参数,很有参考价值哦;
• Zabbix proxy是在大规模分布式监控场景中,采用的一种用以分担server端压力的分层结构,Proxy只负责一定区域内的数据采集工作,然后定期将数据一次性发送给server,极大的减轻了server的负载压力,使得可以支持更大规模的监控需求;

一个完整的zabbix监控组成

主要术语:

 • Host主机:要监控的网络设备;

• Host Group主机组:主机的逻辑容器,可包含主机和模板;通常用于给用户或用户组指派监控权限时使用;

• Item监控项:一个特定监控指标的相关数据,是数据采集的核心,每个item都由key进行唯一标识;

• Trigger触发器:用于为监控项item所收集的数据定义阈值,触发器的状态在OK和PROBLEM间不断切换;

• Event事件:触发器的状态转变,新的agent或重新上线的agent的自动注册等,都会产生event;

• Action动作:指对于特定event实现定义的处理方法,由通知内容、条件、操作这3部分组成;

• Escalation报警升级:发送警报或执行远程命令的自定义方案;

• Media Type媒介:发送通知的手段或通道,如Email,Jabber或SMS等;

• Notification通知:通过选定的media向用户发送的有关某event的信息;

其它术语:

• Remote Command远程命令:预定义的命令,可在被监控主机处于某特定条件下自动执行;

• Template模板:用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application等;

• Application应用:一组item的集合;

• Web scennaria web场景:用于检测web站点可用性的一个或多个HTTP请求;

• Frontend前端:Zabbix的web接口;

其它概念:

UserParameter用户参数:可在被监控端通过设置UserParameter的方式,获得Zabbix预定义的key无法收集到的监控数据
• 语法格式:UserParameter=<key>,<command>

• 如:UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive

• server端的调用的key为:mysql.ping ,可获得被监控主机上mysql程序的存活状况

• 如:UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk '/^$1:/{print $$2}' ,带参数的UserParameter可批量监控多个同类监控项

• server端的调用的key为memory.usage[MemFree] ,获得被监控主机剩余内存的数值

• server端的调用的key为memory.usage[MemTotal} ,获得被监控主机总内存的数值

Macros宏:zabbix基于宏保存预设的文本模式,并在调用时将其替换为其中的文本,可理解为全局变量;
• 宏的名称只能使用大写字母、数字及下划线;

• 分为zabbix内置宏和用户自定义宏;

• 内置的宏,有{HOST.NAME},{HOST.IP},{TRIGGER.NAME},{TRIGGER.DESCRIPTION}等;

• 用户自定义的宏要使用{$MACRO}这种特殊的格式引用,以区别于zabbix内置的宏;

 监控对象: 

数据库: MySQL,MariaDB,Oracle,SQL Server
应用软件:Nginx,Apache,PHP,Tomcat agent
-------------------------------------------------------------------------------------------------------------------------------
集群: LVS,Keepalived,HAproxy,RHCS,F5
虚拟化: VMware,KVM,XEN agent
操作系统:Linux,Unix,Windows性能参数
-------------------------------------------------------------------------------------------------------------------------------
硬件: 服务器,存储,网络设备 IPMI
网络: 网络环境(内网环境,外网环境) SNMP
SNMP协议:硬件上都会支持

zabbix由2部分构成,zabbix server与可选组件zabbix agent。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

安装使用:

zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。

zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用
监控软件:cacti;nagios;zabbix

zabbix的主要特点:

- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能等等
Zabbix主要功能:CPU负荷- 内存使用-磁盘使用- 网络状况- 端口监视- 日志监视。  

Zabbix4.0部署:

获取 Zabbix

获取 Zabbix 安装介质有四种方法:

安全设置 Zabbix 的最佳实践

概述

本章节包含为了以安全的方式设置 Zabbix 应遵守的最佳实践。

Zabbix 的功能不依赖于此处的实践。但建议使用它们以提高系统的安全性。

Zabbix agent 的安全用户

在默认的配置中,Zabbix server 和 Zabbix agent 进程共享一个“zabbix”用户。 如果您希望确保 Zabbix agent 无法访问 Zabbix server 配置中的敏感详细信息(例如,数据库登录信息),则应以不同的用户身份运行 Zabbix agent:

  1. 创建一个安全用户;
  1. 在 Zabbix agent 的 配置文件 中指定此用户(修改 'User' parameter);
  1. 以拥有管理员权限的用户重启 Zabbix agent。之后,此权限将赋予给先前指定的用户。

为 Zabbix 前端设置 SSL

在 RHEL/Centos 操作系统上,安装 mod_ssl 包:

yum install mod_ssl

为 SSL keys 创建目录:

mkdir -p /etc/httpd/ssl/private
chmod 700 /etc/httpd/ssl/private

创建 SSL 证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/private/apache-selfsigned.key -out /etc/httpd/ssl/apache-selfsigned.crt

 

下面提示内容适当填写。 最重要的一行是请求 Common Name 的行。 您需要输入要与服务器关联的域名。 如果您没有域名,则可以输入公共IP地址。 下面将使用 example.com

Country Name (两个字母) [XX]:
State or Province Name (全名) []:
Locality Name (eg, city) [默认的城市]:
Organization Name (eg, company) [默认的公司名]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:

编辑 Apache SSL 配置:

vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/usr/share/zabbix"
ServerName example.com:443
SSLCertificateFile /etc/httpd/ssl/apache-selfsigned.crt
SSLCertificateKeyFile /etc/httpd/ssl/private/apache-selfsigned.key

重启 Apache 服务使以上修改的配置生效:

systemctl restart httpd.service

在 URL 的根目录上启用 Zabbix

将虚拟主机添加到 Apache 配置,并将文档根目录的永久重定向设置为 Zabbix SSL URL。 不要忘记将 example.com 替换为服务器的实际名称。

vim /etc/httpd/conf/httpd.conf
#Add lines

<VirtualHost *:*>
    ServerName example.com
    Redirect permanent / http://example.com
</VirtualHost>

 

重启 Apache 服务使以上修改的配置生效:

systemctl restart httpd.service

禁用曝光的 Web 服务器信息

建议在 Web 服务器强化过程中禁用所有 Web 服务器签名。 默认情况下,Web 服务器正在公开软件签名:

可以通过向 Apache(用作示例)配置文件添加两行来禁用签名:

ServerSignature Off
ServerTokens Prod

可以通过更改 php.ini 配置文件来禁用 PHP 签名(X-Powered-By HTTP header)(默认情况下禁用签名):

expose_php = Off

若要应用配置文件更改,需要重新启动 Web 服务器。

通过在 Apache中 使用 mod_security( libapache2-mod-security2)可以实现额外的安全级别。 mod_security 允许删除服务器签名,而不是仅仅从服务器签名中删除版本。 通过在安装 mod_security 之后将“SecServerSignature”更改为任何所需的值,可以将签名更改为任何值。

请参阅 Web 服务器的文档以获取有关如何删除/更改软件签名的帮助。

Disabling default web server error pages

It is recommended to disable default error pages to avoid information exposure. Web server is using built-in error pages by default:

Red Hat Enterprise Linux/CentOS系统

Zabbix-service端(二进制包)安装:

概述

官方的 Zabbix 发行包适用于 RHEL 7、CentOS 7 和 Oracle Linux 7。在本文中,将使用 RHEL 来指代这三个操作系统。

一些 Zabbix agent 和 Zabbix proxy 发行包也适用于 RHEL 6 和 RHEL 5

添加 Zabbix 软件仓库

安装软件仓库配置包,这个包包含了 yum(软件包管理器)的配置文件。

RHEL 7:

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

  

RHEL 6:

 rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/6/x86_64/zabbix-release-4.0-1.el6.noarch.rpm

RHEL 5:

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/5/x86_64/zabbix-release-4.0-1.noarch.rpm

前端安装的先决条件(可选)

Zabbix 前端需要额外的基础安装包。 您需要在运行 Zabbix 前端的系统中启用可选 rpms 的软件仓库:

RHEL 7:

yum-config-manager --enable rhel-7-server-optional-rpms

安装 Server/proxy/前端

安装 Zabbix server(适用于 RHEL7,在 RHEL 6 上弃用)并使用 MySQL 数据库:

 yum install zabbix-server-mysql

安装 Zabbix proxy 并使用 MySQL 数据库(可选):

yum install zabbix-proxy-mysql  

安装 Zabbix 前端(适用于 RHEL 7,在 RHEL 6 上弃用)并使用 MySQL 数据库:

 yum install zabbix-web-mysql

若使用PostgreSQL,则将命令中的 'mysql' 替换为 'pgsql';SQLite3则替换为 'sqlite3' (仅 Zabbix proxy)。

创建数据库

对于 Zabbix server 和 proxy 守护进程而言,数据库是必须的。而运行 Zabbix agent 是不需要的。

如果 Zabbix server 和 Zabbix proxy 安装在相同的主机,它们必须创建不同名字的数据库!

使用 MySQL 或 PostgreSQL 提供的说明来创建数据库。

导入数据

导入数据库之前先要登录数据库,建库,建用户,以MySQL数据库为例:

安装完数据库后,进行初始化:

mysqld --initialize --user=mysql

如果是MySQL等普通用户则:(可选)

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
systemctl start mysqld
grep  'password'  /var/log/mysqld.log
mysql -u root -p'8N4:=!QJee?.'(根据实际情况填写,登录数据库)
ALTER USER'root'@'localhost' IDENTIFIED BY 'NewPasswd@123';    
create database zabbix character set UTF8 collate utf8_bin;    
grant all privileges on zabbix.* to zabbix@localhost identified by 'ZabbixPasswd@123';
flush privileges; 

使用 MySQL 来导入 Zabbix server 的初始数据库 schema 和数据,

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

系统将提示您输入新创建的数据库密码。

使用 PostgreSQL:

zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u <username> psql zabbix

对于 Zabbix proxy,导入初始的数据库 schema(无proxy,此步骤可以不做):

zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p zabbix

  

对于使用 PostgreSQL(或 SQLite)的 Zabbix proxy:

zcat /usr/share/doc/zabbix-proxy-pgsql*/schema.sql.gz | sudo -u <username> psql zabbix
zcat /usr/share/doc/zabbix-proxy-sqlite3*/schema.sql.gz | sqlite3 zabbix.db

为 Zabbix server/proxy 配置数据库

编辑 zabbix_server.conf 或 zabbix_proxy.conf 文件以使用已创建的数据库。例如:

# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>

在 DBPassword 参数中输入由 MySQL 或 PosgreSQL 创建的 Zabbix 数据库密码。

在 PostgreSQL 使用 DBHost=。 您可能希望保留默认设置 DBHost=localhost(或 IP 地址),但这会使 PostgreSQL 使用网络套接字连接到 Zabbix。 有关说明,详见下面的SELinux 配置

启动 Zabbix server 进程

运行以下命令以启动 Zabbix server 进程:

service zabbix-server start

  

并在系统启动时让它自启:

RHEL 7 或更高版本:

systemctl enable zabbix-server

RHEL 7 之前的版本:

chkconfig --level 12345 zabbix-server on

使用 'zabbix-proxy' 替换命令中的 'zabbix-server' 以启动和自启 Zabbix proxy。

Zabbix 前端配置

对于 RHEL 7 和更高版本,Zabbix 前端的 Apache 配置文件位于 /etc/httpd/conf.d/zabbix.conf。

如果使用 RHEL 6,详见 在 RHEL 6 上使用Zabbix前端 章节来了解如何配置前端。

虽然已经配置了一些 PHP 参数。但是有必要取消 “date.timezone” 注释,并为其 设置正确的时区 。

vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Shanghai

 

以此 前端安装步骤 来完成 Zabbix 前端的安装,并访问新安装的 Zabbix 前端页面。

Zabbix 官方软件仓库提供了 fping、iksemel、libssh2 包。这些包位于 non-supported 目录。

SELinux 配置

在 enforcing 模式下启用 SELinux 状态后,您需要执行以下命令以启用 Zabbix 前端和 Zabbix server 之间的通信:

RHEL 7 或更高版本:

# setsebool -P httpd_can_connect_zabbix on
如果数据库可以通过网络访问(在 PostgreSQL 情况下包括 'localhost'),您也需要允许 Zabbix 前端连接到数据库:
# setsebool -P httpd_can_network_connect_db on

RHEL 7 之前的版本:

# setsebool -P httpd_can_network_connect on
# setsebool -P zabbix_can_network on

待前端和 SELinux 配置完成后,需要重新启动 Apache web 服务器: 

# service httpd restart

Zabbix-Agent端(二进制包)安装:

运行以下命令以安装 Zabbix agent :

添加 Zabbix 软件仓库

参考Zabbix-service端的方法,两者相同

 yum install zabbix-agent

运行以下命令以启动 Zabbix agent:

service zabbix-agent start

在 RHEL 6 上使用 Zabbix 前端

由于 PHP 版本,不支持 RHEL 6 上的 Zabbix 前端。 由于 Zabbix 3.0 的要求是 PHP 5.4.0 或更高版本,而 RHEL 6 最新版本是5.3.3。

在大多数情况下,Zabbix server 和前端安装在同一台机器上。当从 2.2 升级到 3.0 时,Zabbix server 将执行数据库升级,前端会停止工作。无法回滚数据库更改,因此用户将被迫使用第三方软件包升级 PHP。 这就是为什么 Zabbix server 在 RHEL 6 上也被弃用的原因。

如果您仍想在 RHEL 6 上使用 Zabbix 前端并使用第三方软件包升级您的 PHP,则需要首先启用 zabbix-deprecated 软件仓库:

  • 打开 /etc/yum.repos.d/zabbix.repo 文件
  • 找到 [zabbix-deprecated] 部分
  • 将其启用 enabled=1
  • 保存文件

至此,您将不得不进行更多手动配置。 这是因为 Zabbix 无法识别 PHP 所需的 Apache 版本,因此无法为 Zabbix 前端提供正确的 Apache 配置。为此,在 zabbix-web 软件包中包含了 2 个 Apache 配置文件,一个用于 Apache 2.2,另一个用于 2.4,您需要手动与 Apache 配置集成:

  • httpd22-example.conf
  • httpd24-example.conf

要获取文件的完整路径,请执行:

rpm -ql zabbix-web | grep example.conf

配置主服务器地址:

vim /etc/zabbix/zabbix_agentd.conf

zabbix服务器的ip地址;ip地址可以是多个
Server=192.168.100.10,192.168.100.11                                   被动模式 zabbix-server-ip
zabbix监控的对象;也就是被监控者的ip地址
ServerActive=192.168.100.10,192.168.100.11                          主动模式 zabbix-server-ip(谁从我这里采集数据。)
代理的名字 也就是被监控者的名字
Hostname=web1                                                                         建议使用 $HOSTNAME

启动zabbix-agent:10050;服务器是10051

systemctl start zabbix-agent

设置zabbix-agent开机启动:

systemctl enable zabbix-agent

查看zabbix-agent的端口:

ss -anlp |grep :10050

登录Zabbix:

http://zabbix-service-ip/zabbix

欢迎页面:
显示Zabbix安装向导


php检测:


数据库登录:


数据库报错时:


服务器命名:


汇总:


恭喜你
 

登录:
用户名: Admin
密码: zabbix

语言和乱码:



右上角用户图标,更换语言 :




设置中文后,查看图形有乱码,文字变成了方块



解决方案
Win+R打开运行,输入fonts,回车进入Windows字体目录,找到微软雅黑-常规字体,复制出来将文件名修改为msyh.ttf,注意后缀ttf

将msyh.ttf上传到服务器zabbix字体目录中:/usr/share/zabbix/fonts/

查看字体配置:grep FONT_NAME /usr/share/zabbix/include/defines.inc.php -n

执行快捷替换:sed -i "s/graphfont/msyh/g" /usr/share/zabbix/include/defines.inc.php

确认是否替换成功:grep FONT_NAME /usr/share/zabbix/include/defines.inc.php -n
45:define('ZBX_GRAPH_FONT_NAME', 'msyh'); // font file name
93:define('ZBX_FONT_NAME', 'msyh');
字体配置修改成功后,刷新图形界面即可看到图形字体显示正常了。

 

posted @ 2019-04-01 15:38  dulingyulove  阅读(612)  评论(0编辑  收藏  举报