一.Zabbix概述
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
它是一个用于网络,操作系统和应用程序的开源监控软件,由拉脱维亚的Alexei Vladishev创建。它旨在监视和跟踪各种网络服务,服务器和其他网络硬件的状态。
Zabbix可以使用MySQL,MariaDB,PostgreSQL,SQLite,Oracle或IBM DB2来存储数据。它的后端用C语言编写,Web前端用PHP编写。Zabbix提供多种监控选项:
简单检查可以验证标准服务(如SMTP或HTTP)的可用性和响应性,而无需在受监视主机上安装任何软件。
还可以在UNIX和Windows主机上安装Zabbix 代理,以监视CPU负载,网络利用率,磁盘空间等统计信息。
作为在主机上安装代理的替代方法,Zabbix支持通过SNMP,TCP和ICMP检查以及IPMI,JMX,SSH,Telnet和使用自定义参数进行监控。Zabbix支持各种近实时通知机制,包括XMPP。
二.Zabbix特点
1.自动发现服务器和网络设备,支持在底层自动发现
2.分布式的监控体系和集中式的web管理
3.支持主动监控和被动监控模式
4.支持多种操作系统 Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD, OS X
5.安全的用户认证模式以及灵活的用户权限设置。
6.支持自由的自定义事件和邮件发送。
7.高水平的业务视图监控资源并支持日志审计。
三.Zabbix的组件及进程
组件
zabbix由以下几个组件部分构成:
1.Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行
2.Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据
3.Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上
4.Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端
5.Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端
注:zabbix node也是 zabbix server的一种 。
进程
默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。
1.zabbix_agentd
客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
2.zabbix_get
zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
3.zabbix_sender
zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
4.zabbix_server
zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server
备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
5.zabbix_proxy
zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。
6.zabbix_java_gateway
zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。
四.zabbix监控环境中相关术语
1.主机(host):要监控的网络设备,可由IP或DNS名称指定;
2.主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
3.监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由”key”标识;
4.触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从”OK”转变为”Problem”,当数据再次恢复到合理范围,又转变为”OK”;
5.事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
6.动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
7.报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
8.媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
9.通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
10.远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
11.模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;
12.应用(application):一组item的集合;
13.web场景(web scennario):用于检测web站点可用性的一个活多个HTTP请求;
14.前端(frontend):Zabbix的web接口;
五.部署Zabbix
1.基础环境配置
节点配置主机名:
[root@localhost ~]# hostnamectl set-hostname zabbix-server 第一台
//退出并重新连接虚拟机
[root@user1 ~]# hostnamectl
Static hostname: zabbix-server
Icon name: computer-vm
Chassis: vm
Machine ID: 17d24d21f1c34b699c19d5e84762b3fe
Boot ID: 6ea800f863564e11afc5d91d65fafb3f
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.el7.x86_64
[root@localhost ~]# hostnamectl set-hostname zabbix-agent 第二台
//退出并重新连接虚拟机
[root@user2 ~]# hostnamectl
Static hostname: zabbix-agent
Icon name: computer-vm
Chassis: vm
Machine ID: 17d24d21f1c34b699c19d5e84762b3fe
Boot ID: d6c808d94d6b4501b5ad740429e23aa4
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.el7.x86_64
Architecture: x86-64
Yum源配置
上传zabbix包解压到/opt下
在/etc/yum.repo.d目录下创建local.repo文件,文件内容如下:
[root@zabbix-server ~]# cat /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=file:///opt/zabbix
gpgcheck=0
enabled=1
[root@zabbix-agent ~]# yum repolst
Loaded plugins: fastestmirror
No such command: repolst. Please use /usr/bin/yum --help
[root@zabbix-agent ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
ftp ftp 3,971
zabbix zabbix 37
repolist: 4,008
[root@zabbix-agent ~]#
接下来配置zabbix-agent节点的YUM源。首先在zabbix-server节点上安装vsftpd服务。
[root@zabbix-server ~]# yum install vsftpd -y
修改vsftpd服务的配置文件vsftpd.conf,在配置文件的最上面,添加一行代码,命令如下:
[root@zabbix-server ~]# vi /etc/vsftpd/vsftpd.conf
anon_root=/opt
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
保存修改并退出,启动vsftpd服务,命令如下:
[root@zabbix-server ~]# systemctl start vsftpd
[root@zabbix-server ~]# systemctl status vsftpd
vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
Active: active (running) since Fri 2019-10-04 19:04:54 UTC; 5s ago
Process: 10014 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 10015 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─10015 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Oct 04 19:04:54 zabbix-server systemd[1]: Started Vsftpd ftp daemon.
到zabbix-agent节点上,首先将/etc/yum.repo.d目录下的所有文件移动到/media目录下,然后创建local.repo文件,文件内容如下所示:
[root@zabbix-agent ~]# mv /etc/yum.repos.d/* /media/
[root@zabbix-agent ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=ftp://192.168.100.11/centos
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=ftp://192.168.100.11/zabbix
gpgcheck=0
enabled=1
至此,2个节点的Yum源全部配置完毕。
安装LAMP+Zabbix服务(在zabbix-server节点执行)
安装httpd服务,命令如下:
[root@zabbix-server ~]# yum install httpd -y
安装数据库服务,命令如下:
[root@zabbix-server ~]# yum install -y mariadb-server mariadb
安装Zabbix服务,命令如下:
[root@zabbix-server ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
升级trousers服务,命令如下:
[root@zabbix-server ~]# yum install trousers -y
2.zabbix分布式监控系统部署
1.配置并启动Zabbix服务
(1)启动httpd服务
使用命令启动httpd服务,并设置开机自启,最后查看运行状态。命令如下:
[root@zabbix-server ~]# systemctl start httpd
[root@zabbix-server ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
[root@zabbix-server ~]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since Fri 2019-10-04 19:34:32 UTC; 27s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 10215 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─10215 /usr/sbin/httpd -DFOREGROUND
├─10217 /usr/sbin/httpd -DFOREGROUND
├─10218 /usr/sbin/httpd -DFOREGROUND
├─10219 /usr/sbin/httpd -DFOREGROUND
├─10220 /usr/sbin/httpd -DFOREGROUND
└─10221 /usr/sbin/httpd -DFOREGROUND
Oct 04 19:34:31 zabbix-server systemd[1]: Starting The Apache HTTP Server...
Oct 04 19:34:32 zabbix-server httpd[10215]: AH00557: httpd: apr_sockaddr_info_get() fa...er
Oct 04 19:34:32 zabbix-server httpd[10215]: AH00558: httpd: Could not reliably determi...ge
Oct 04 19:34:32 zabbix-server systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
(2)启动并配置数据库服务
启动数据库服务,并设置开机自启,命令如下:
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'
登录数据库,创建zabbix库(中文编码格式),命令如下:
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.44-MariaDB MariaDB Server
Copyright (c) 2000, 2015, 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 character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
授予zabbix用户的访问权限,命令如下:
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
退出数据库,进入到/usr/share/doc/zabbix-server-mysql-3.4.15/目录,导入数据库文件,命令如下:
MariaDB [(none)]> Ctrl-C -- exit!
Aborted
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/
[root@zabbix-server zabbix-server-mysql-3.4.15]# ll
total 2120
-rw-r--r-- 1 root root 98 Nov 12 2018 AUTHORS
-rw-r--r-- 1 root root 866545 Nov 12 2018 ChangeLog
-rw-r--r-- 1 root root 17990 Nov 12 2018 COPYING
-rw-r--r-- 1 root root 1267039 Nov 12 2018 create.sql.gz
-rw-r--r-- 1 root root 52 Nov 12 2018 NEWS
-rw-r--r-- 1 root root 1062 Nov 12 2018 README
[root@zabbix-server zabbix-server-mysql-3.4.15]# zcat create.sql.gz |mysql -uroot zabbix
至此,数据库配置完毕。
(3)设置时区
编辑/etc/php.ini文件,设置时区,在[Date]字段下,设置date.timezone=PRC,命令如下:
[root@zabbix-server ~]# vi /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = PRC
编辑/etc/httpd/conf.d/zabbix.conf文件,修改时区,修改php_value date.timezone 为Asia/Shanghai,命令如下:
[root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf
<IfModule mod_php5.c>
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 max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Shanghai //添加这一行
</IfModule>
修改完配置文件后重启httpd服务,命令如下:
[root@zabbix-server ~]# systemctl restart httpd
(4)修改Zabbix配置文件并启动
修改/etc/zabbix/zabbix_server.conf配置文件,修改完的配置文件如下所示: