前言

   在安全监控领域有很多的开源监控软件,例如zabbix,nagios,open-falcon,prometheus等众多软件。这些软件各有各的特点,基本上都能够满足日常的运维工作需要。同时在大的互联网公司一般都会根据自己的实际业务需求进行定制的监控系统开发,例如open-falcon就是小米公司自己的开源的监控系统。而且,在集群规模达到一定的数量级之后,一套监控系统应该已经不能满足生产需要,通常都会有多套监控系统一起协作来完成日常监控工作。
   今天主要介绍的就是zabbix的安装和使用。接下来会向大家介绍,如何安装zabbix以及如何对zabbix进行初始化设置。

下载

   百度搜索zabbix,就可以进入到zabbix的官方网站。进入到下载目录,可以看到这里有很多的版本可以下载。

   我们选择最新的版本进行下载,点击链接进入列表页。这里列举了非常多的下载项,并且提供了很多的版本。对于初学者来说,需要下载哪些内容,并不是容易确定下来,但是却可以通过这个列表了解到,如果想要完整的运行zabbix都需要依赖哪些模块。
   很幸运的是,zabbix提供一个非常好的安装方式,我们只下载箭头指向的那一个rpm安装包就可以。

   使用rpm命令安装一下下载的安装包。然后使用 rpm -ql zabbix-release 命令查看一下安装的文件。

[root@localhost ]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-3.4
/usr/share/doc/zabbix-release-3.4/GPL

   我们看到安装了一个repo文件,这说明,我们接下来可以使用yum 来安装我们所需要的模块。
   接下来我们就开始准备安装zabbix了。安装开始之前,请先关闭掉SELinux,以及iptables。

安装Mariadb

   zabbix采集的数据需要存储在数据库中,同时zabbix 的成功运行也需要数据库的支持,所以我们需要先安装mysql数据库。

yum install mariadb mariadb-server

   修改mysql的配置文件,编辑 /etc/my.cnf.d/server.cnf。在server 模块下加入下面一些配置。具体配置的含义,可以查阅mysql的相关资料进行了解。

[server]
skip_name_resolve = ON
innodb_file_per_table = ON
innodb_buffer_pool_size = 256M
max_connections = 2000

# 启用二进制日志
log-bin = master-log

   数据库安装成功之后,可以执行一下mysql_secure_installation 来对数据库进行安装初始化。然后使用 systemctl start mariadb.service 来启动MySQL。

   接下来,我们在mysql中创建用于zabbix 使用的数据库。

 CREATE DATABASE zbxdb CHARACTER SET 'utf8';

 GRANT ALL PRIVILEGES ON zbxdb.* TO 'zbxuser'@'192.168.0.%' IDENTIFIED BY 'zbxpass';

 FLUSH PRIVILEGES;

安装zabbix 相关组件

   zabbix 是基于C/S架构的一款监控软件。同时提供了web端的监控界面。也就是说,在被监控主机上,agent端能够主动地向server端send数据,而server端也可以主动向agent端去get数据,因此我们需要安装下面一些基本组件。

 yum install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent zabbix-get zabbix-sender

   使用rpm 命令 rpm -ql zabbix-server-mysql查看一下 zabbix-server-mysql 的安装文件。

... ...

/usr/share/doc/zabbix-server-mysql-3.4.5/create.sql.gz  

... ...

   将这个压缩包进行解压,我们可以使用head 命令来查看文件中内容。

[root@localhost ~]# gzip -d create.sql.gz 

[root@localhost ~]# head -20 create.sql 
CREATE TABLE `users` (
        `userid`                 bigint unsigned                           NOT NULL,
        `alias`                  varchar(100)    DEFAULT ''                NOT NULL,
        `name`                   varchar(100)    DEFAULT ''                NOT NULL,
        `surname`                varchar(100)    DEFAULT ''                NOT NULL,
        `passwd`                 char(32)        DEFAULT ''                NOT NULL,
        `url`                    varchar(255)    DEFAULT ''                NOT NULL,
        `autologin`              integer         DEFAULT '0'               NOT NULL,
        `autologout`             varchar(32)     DEFAULT '15m'             NOT NULL,
        `lang`                   varchar(5)      DEFAULT 'en_GB'           NOT NULL,
        `refresh`                varchar(32)     DEFAULT '30s'             NOT NULL,
        `type`                   integer         DEFAULT '1'               NOT NULL,
        `theme`                  varchar(128)    DEFAULT 'default'         NOT NULL,
        `attempt_failed`         integer         DEFAULT 0                 NOT NULL,
        `attempt_ip`             varchar(39)     DEFAULT ''                NOT NULL,
        `attempt_clock`          integer         DEFAULT 0                 NOT NULL,
        `rows_per_page`          integer         DEFAULT 50                NOT NULL,
        PRIMARY KEY (userid)
) ENGINE=InnoDB;
CREATE UNIQUE INDEX `users_1` ON `users` (`alias`); 

   可以看出这是zabbix的建表语句。所以我们直接在之前创建的数据库中创建zabbix运行所需要的数据库表就可以。

mysql -uzbxuser -h192.168.0.19 -pzbxpass  zbxdb < create.sql  

修改zabbix配置文件

   进入到 /etc/zabbix目录下,编辑zabbix-server.conf文件。将与数据库相关的内容都进行修改一下。


# 发起数据采集请求的主机ip地址
SourceIP=192.168.0.19

# 这一点很重要 需要根据创建数据库时指定的权限来指定
DBHost=192.168.0.19

DBName=zbxdb

DBUser=zbxuer

DBPassword=zbxpass

   可以通过相关的命令来查看 zabbix 的配置文件中一共有哪些配置,以便对zabbix有一个全面的了解。


[root@localhost zabbix]# grep -i "^###" zabbix_server.conf
############ GENERAL PARAMETERS #################
### Option: ListenPort
### Option: SourceIP
### Option: LogType
### Option: LogFile
### Option: LogFileSize
### Option: DebugLevel
### Option: PidFile
### Option: SocketDir
### Option: DBHost
### Option: DBName
### Option: DBSchema
### Option: DBUser
### Option: DBPassword
### Option: DBSocket
### Option: DBPort
### Option: HistoryStorageURL
### Option: HistoryStorageTypes
############ ADVANCED PARAMETERS ################
### Option: StartPollers
### Option: StartIPMIPollers
### Option: StartPreprocessors
### Option: StartPollersUnreachable
### Option: StartTrappers
### Option: StartPingers
### Option: StartDiscoverers
### Option: StartHTTPPollers
### Option: StartTimers
### Option: StartEscalators
### Option: StartAlerters
### Option: JavaGateway
### Option: JavaGatewayPort
### Option: StartJavaPollers
### Option: StartVMwareCollectors
### Option: VMwareFrequency
### Option: VMwarePerfFrequency
### Option: VMwareCacheSize
### Option: VMwareTimeout
### Option: SNMPTrapperFile
### Option: StartSNMPTrapper
### Option: ListenIP
### Option: HousekeepingFrequency
### Option: MaxHousekeeperDelete
### Option: CacheSize
### Option: CacheUpdateFrequency
### Option: StartDBSyncers
### Option: HistoryCacheSize
### Option: HistoryIndexCacheSize
### Option: TrendCacheSize
### Option: ValueCacheSize
### Option: Timeout
### Option: TrapperTimeout
### Option: UnreachablePeriod
### Option: UnavailableDelay
### Option: UnreachableDelay
### Option: AlertScriptsPath
### Option: ExternalScripts
### Option: FpingLocation
### Option: Fping6Location
### Option: SSHKeyLocation
### Option: LogSlowQueries
### Option: TmpDir
### Option: StartProxyPollers
### Option: ProxyConfigFrequency
### Option: ProxyDataFrequency
### Option: AllowRoot
### Option: User
### Option: Include
### Option: SSLCertLocation
### Option: SSLKeyLocation
### Option: SSLCALocation
####### LOADABLE MODULES #######
### Option: LoadModulePath
### Option: LoadModule
####### TLS-RELATED PARAMETERS #######
### Option: TLSCAFile
### Option: TLSCRLFile
### Option: TLSCertFile
### Option: TLSKeyFile

   接下来就可以直接启动zabbix,使用 systemctl start zabbix-server.service

   剩下的还有一个非常重要的关键点。通过rpm -ql zabbix-web命令可以查看到web界面的安装文件。我们需要对zabbix-web设置时区。我们可以在zabbix-web的配置文件中进行设定,/etc/httpd/conf.d/zabbix.conf,这样设置的时区仅仅对zabbix的应用有效。当然也可以在PHP的配置文件中进行设定,这样的话,对于所有的PHP程序都有效。我们就在php的配置文件/etc/php.ini中进行设置。

date.timezone = Asia/Shanghai 

初始化zabbix-web

   zabbix-web的运行需要http服务的支持。所以在安装zabbix的时候,如果没有安装httpd的话,会自动进行安装。所以我还需要启动httpd。

systemctl start httpd.service

   启动浏览器,在地址栏输入http://192.168.0.19/zabbix/就可以看到下面的界面。

   接下来就是检查zabbix安装过程中的需要的检查项,尤其是时区,这里最容易出现问题。

   然后就是这只zabbix数据库的相关内容,这里的设置一定要与zabbix的配置文件中数据库信息一致。

   接下来就是zabbix服务的相关信息。然后一路安装就可以了。

   这样就zabbix就安装成功了。接下来使用admin/zabbix 就可以成功登陆zabbix的web管理界面了。

总结

   这里只是介绍了zabbix的安装。详细记录了安装过程中的每一步操作,以及应该注意的细节。可以将此博客作为zabbix的安装手册来进行使用。在以后的文章中,会介绍zabbix的详细使用。