1. 认识zabbix

Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以实现远程服务器/网络状态的监视,数据收集等功,保障服务器及设备的安全运营。

Zabbix的功能和特性

  • 安装与配置简单。
  • 可视化web管理界面。
  • 免费开源。
  • 自动发现。
  • 分布式监控。
  • 实时绘图。

Zabbix的系统组成

  • Zabbix Server:负责接收Agent发送的报告信息,组织所有配置、数据和操作。
  • Database Storage:存储配置信息以及收集到的数据。
  • Web Interface:Zabbix的GUI 接口,通常与Server运行在同一台机器上。
  • Proxy:可选组件,常用于分布式监控环境中。
  • Agent:部署在被监控主机上,负责收集数据发送给Server。

zabbix系统包含的进程

默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。
  • zabbix_agentd 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
  • zabbix_get zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用- - zabbix_get获取客户端的内容的方式来做故障排查。
  • zabbix_sender zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
  • zabbix_server zabbix服务端守护进程。zabbix_agentd、- zabbix_get、zabbix_sender、zabbix_proxy、- zabbix_java_gateway的数据最终都是提交到server
    备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
  • zabbix_proxy zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。
  • zabbix_java_gateway zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

各进程对应的zabbix/3.4/rhel/7/x86_64/(下载地址http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/)安装包如下:

(server端)zabbix-get-3.4.2-1.el7.x86_64.rpm
(server端或额外主机)zabbix-proxy-mysql-3.4.2-1.el7.x86_64.rpm
(server端)zabbix-server-mysql-3.4.2-1.el7.x86_64.rpm
(server端)zabbix-web-3.4.2-1.el7.noarch.rpm
(server端)zabbix-web-mysql-3.4.2-1.el7.noarch.rpm
(client端)zabbix-agent-3.4.2-1.el7.x86_64.rpm 
(client端)zabbix-sender-3.4.2-1.el7.x86_64.rpm

2. Server端各模块安装(proxy与server位于一台主机)

为了避免安装配置过程中出现不必要的麻烦请设置Selinux为disable以及防火墙关闭

因为服务端采集到的数据存储在数据库中,所以首先需要安装数据库,rhel7自带mariadb,如果不会安装请参阅我的博文 MariaDB数据库的安装配置及常用操作
安装完数据库之后建表授权:

[root@lockey ~]# mysql -uroot -phalo
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8';####################建立数据库
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'lockey'@'192.168.%.%' IDENTIFIED BY 'lockey23';##############授权网段
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'lockey'@'localhost' IDENTIFIED BY 'lockey23';##############授权lcoalhost
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

数据库妥当之后我们可以来安装zabbix server端各组件了,所需要安装包如下:

[root@lockey ~]# ls | grep zabbix
zabbix-get-3.4.2-1.el7.x86_64.rpm
zabbix-proxy-mysql-3.4.2-1.el7.x86_64.rpm
zabbix-server-mysql-3.4.2-1.el7.x86_64.rpm
zabbix-web-3.4.2-1.el7.noarch.rpm
zabbix-web-mysql-3.4.2-1.el7.noarch.rpm

yum install -y *.rpm

在rhel7.x86_64系统中yum安装会提示依赖缺失:

Error: Package: zabbix-proxy-mysql-3.4.2-1.el7.x86_64 (/zabbix-proxy-mysql-3.4.2-1.el7.x86_64)
           Requires: fping
Error: Package: zabbix-server-mysql-3.4.2-1.el7.x86_64 (/zabbix-server-mysql-3.4.2-1.el7.x86_64)
           Requires: fping
Error: Package: zabbix-server-mysql-3.4.2-1.el7.x86_64 (/zabbix-server-mysql-3.4.2-1.el7.x86_64)
           Requires: libiksemel.so.3()(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

通过以下方法解决(或者也可以通过rpm包一个个解决,但是比较费事):

# yum install -y epel-release
# yum install -y iksemel fping libiksemel

以上步骤没有出错的话服务端各模块安装完成,进入配置

3. 配置

3.1 数据库的配置
找到数据库文件:

[root@lockey ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.4.2
/usr/share/doc/zabbix-server-mysql-3.4.2/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.4.2/COPYING
/usr/share/doc/zabbix-server-mysql-3.4.2/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.4.2/NEWS
/usr/share/doc/zabbix-server-mysql-3.4.2/README
/usr/share/doc/zabbix-server-mysql-3.4.2/create.sql.gz####
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

解压数据库文件

[root@lockey ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.2/
[root@lockey zabbix-server-mysql-3.4.2]# gunzip create.sql.gz

执行数据库命令:

[root@lockey zabbix-server-mysql-3.4.2]# mysql -ulockey -h 192.168.0.41 -plockey23 zabbix</usr/share/doc/zabbix-server-mysql-3.4.2/create.sql

查看数据库条目确认操作成功:

MariaDB [(none)]> use zabbix
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
。。。
| hosts_groups               |
| hosts_templates            |
。。。
| widget_field               |
+----------------------------+
140 rows in set (0.00 sec)

3.2 zabbix server启动文件配置

[root@lockey ~]# sed -n ‘/#/!p’ /etc/zabbix/zabbix_server.conf

ListenPort=10051//监听端口

SourceIP=192.168.0.41//server 所在主机地址

LogType=file

LogFile=/var/log/zabbix/zabbix_server.log//日志路径

LogFileSize=0 //日志的转储

DebugLevel=3

PidFile=/var/run/zabbix/zabbix_server.pid

SocketDir=/var/run/zabbix

DBHost=localhost//数据库的地址

DBName=zabbix //数据库名字

DBUser=lockey //数据库用户

DBPassword=lockey23 //数据库密码

DBSocket=/var/lib/mysql/mysql.sock//连接数据库的sock

DBPort=3306//数据库端口

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

Timeout=4

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

LogSlowQueries=3000

3.3 zabbix web配置

关于Apache以及php支持的基本配置请参阅本人以前的博客

配置php时区参数(两处)

[root@lockey ~]# cat /etc/php.ini | grep timezone
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai
[root@lockey ~]# cat /etc/httpd/conf.d/zabbix.conf | grep timezone
        php_value date.timezone Asia/Shanghai

启动web服务

[root@lockey ~]# systemctl start httpd

4. web页面初始化

浏览器中访问server所在主机http://HOST/zabbix

网络链路监控技术_mysql

点击next

网络链路监控技术_mysql_02

点击next(如果列出项都是绿色ok)

网络链路监控技术_mysql_03

填写配置点击next

网络链路监控技术_Zabbix_04

点击next(Name为可选)

网络链路监控技术_网络链路监控技术_05

点击next

网络链路监控技术_分布式系统监控_06

确认无误点击next

网络链路监控技术_网络链路监控技术_07

出现登录界面如下(admin/zabbix):

网络链路监控技术_数据库_08

登录成功页面

网络链路监控技术_分布式系统监控_09

记录我本人此过程出现的问题

网络链路监控技术_网络链路监控技术_10


原因:未进行用户的localhost授权

解决:MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'lockey'@'localhost' IDENTIFIED BY 'lockey23';

登录成功提示server出现问题的可以查看日志定位解决

cat /var/log/zabbix/zabbix_server.log

一般安装完成系统默认为英文的,如果需要设置为中文请进行以下操作:

网络链路监控技术_分布式系统监控_11

前提是:

[root@lockey ~]# vim /usr/share/zabbix/include/locales.inc.php###中的这一行内容为如下

'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => true],

待续。。。