Zabbix是由 Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各类网络服务、服务器和网络机器等状态。整合了Catic和Nagios的特性。php
使用各类 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制做的。Zabbix 可使用多种方式监视。能够只使用 Simple Check 不须要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各类协定作监视。html
在客户端如 UNIX, Windows 中安装 Zabbix Agent 以后,可监视 CPU Load、网络使用情况、硬盘容量等各类状态。而就算没有安装 Agent 在监视对象中,Zabbix 也能够经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。前端
一个监控系统运行的大概的流程是这样的:
zabbix agent须要安装到被监控的主机上,它负责按期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展示和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内须要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。mysql
zabbix由如下几个组件部分构成:
一、Zabbix Server:负责接收agent发送的报告信息的核心组件,全部配置,统计数据及操做数据均由其组织进行;ios
二、Database Storage:专用于存储全部配置信息,以及由zabbix收集的数据;web
三、Web interface:zabbix的GUI接口,一般与Server运行在同一台主机上;正则表达式
四、Proxy:可选组件,经常使用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;sql
五、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;数据库
角色 | IP地址 |
---|---|
zabbix-server | 192.168.58.149 |
zabbix-client | 192.168.58.157 |
首先搭建LAMP环境,我这里选择的是使用YUM仓库安装。vim
[root@promote ~]# yum install -y \ > httpd \ > mariadb-server mariadb \ > php \ > php-mysql \ > php-gd \ > libjpeg* \ > php-ldap \ > php-odbc \ > php-pear \ > php-xml \ > php-xmlrpc \ > php-mhash
安装好lamp架构后,修改httpd.conf配置文件。
[root@promote ~]# vim /etc/httpd/conf/httpd.conf <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
修改php的配置文件php.ini修改时区,不然会报错。
[root@promote ~]# vim /etc/php.ini [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = PRC #修改成中国时区、
关闭防火墙和SELinux功能。
[root@promote ~]# systemctl stop firewalld.service [root@promote ~]# setenforce 0
开启httpd和mariadb服务,进行配置。
[root@promote ~]# systemctl start httpd.service [root@promote ~]# systemctl start mariadb.service [root@promote ~]# netstat -ntap | egrep '(80|3306)' tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 68787/mysqld tcp6 0 0 :::80 :::* LISTEN 67276/httpd #能够看到80和3306端口已经开启
下面能够对mariadb进行一些安全设置。
[root@promote ~]# mysql_secure_installation #能够根据本身状况选择对应的设置
编写php测试页面,进行测试。
[root@promote ~]# vim /var/www/html/index.php <?php phpinfo(); ?>
访问http://192.168.58.149/index.php,容易过访问到下面界面说明LAMP搭建成功。
进入数据库建立给zabbix储存数据的数据库,已经赋予相关权限。
[root@promote ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6 Server version: 5.5.60-MariaDB MariaDB Server Copyright (c) 2000, 2018, 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的数据库,默认字符集为utf-8 MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123'; Query OK, 0 rows affected (0.00 sec) #赋予权限 MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) #刷新权限
下面编写数据库测试登陆页面。
[root@promote ~]# vim /var/www/html/index.php <?php $link=mysql_connect('192.168.58.149','zabbix','admin123'); if($link) echo "<h1>Success!!</h1>"; else echo "Fail!!"; mysql_close(); ?>
再来访问http://192.168.58.149/index.php,能够看到fail,这里缘由是在数据库中有空用户的存在。
[root@promote ~]# mysql -u root -p Enter password: MariaDB [(none)]> select user,host from mysql.user; +--------+-------------------------+ | user | host | +--------+-------------------------+ | zabbix | % | | root | 127.0.0.1 | | root | ::1 | | | localhost | | root | localhost | | | promote.cache-dns.local | | root | promote.cache-dns.local | +--------+-------------------------+ 7 rows in set (0.00 sec) #能够看到有两个空用户,咱们将这两个空用户删除。 MariaDB [(none)]> drop user ''@localhost; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> drop user ''@'promote.cache-dns.local'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> select user,host from mysql.user; +--------+-------------------------+ | user | host | +--------+-------------------------+ | zabbix | % | | root | 127.0.0.1 | | root | ::1 | | root | localhost | | root | promote.cache-dns.local | +--------+-------------------------+ 5 rows in set (0.00 sec)
而后咱们再来访问http://192.168.58.149/index.php,能够看到访问成功。
下面安装Zabbix Server,首先安装相关依赖包。
[root@promote ~]# yum install php-bcmath php-mbstring -y
下载zabbix的yum源。
[root@promote ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm [root@promote ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo zabbix.repo #能够看到自动生成了zabbix.repo文件。
安装zabbix-server相关软件包。
[root@promote ~]# yum install zabbix-server-mysql zabbix-web-mysql -y
在数据库中生成zabbix的数据库文件。
[root@promote ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -uzabbix -p zabbix Enter password: #注意这里是使用zabbix用户和密码登陆的。
咱们查看zabbix-server的配置文件并使用正则表达式进行过滤。
[root@promote ~]# grep -n '^[a-Z]' /etc/zabbix/zabbix_server.conf 38:LogFile=/var/log/zabbix/zabbix_server.log 49:LogFileSize=0 72:PidFile=/var/run/zabbix/zabbix_server.pid 82:SocketDir=/var/run/zabbix 101:DBName=zabbix 117:DBUser=zabbix 356:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log 474:Timeout=4 517:AlertScriptsPath=/usr/lib/zabbix/alertscripts 528:ExternalScripts=/usr/lib/zabbix/externalscripts 564:LogSlowQueries=3000
这里咱们只要插入一行DBPassword=admin123.
[root@promote ~]# sed -i '127aDBPassword=admin123' /etc/zabbix/zabbix_server.conf [root@promote ~]# grep -n '^[a-Z]' /etc/zabbix/zabbix_server.conf 38:LogFile=/var/log/zabbix/zabbix_server.log 49:LogFileSize=0 72:PidFile=/var/run/zabbix/zabbix_server.pid 82:SocketDir=/var/run/zabbix 101:DBName=zabbix 117:DBUser=zabbix 128:DBPassword=admin123 357:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log 475:Timeout=4 518:AlertScriptsPath=/usr/lib/zabbix/alertscripts 529:ExternalScripts=/usr/lib/zabbix/externalscripts 565:LogSlowQueries=3000
将httpd服务中zabbix用户的zabbix.conf中的时区改成Asia/Shanghai。
[root@promote ~]# vim /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 always_populate_raw_post_data -1 php_value date.timezone Asia/Shanghai </IfModule>
下面主要是解决安装好zabbix后,网页显示会用乱码的问题,首先将配置文件中的字体都改成kaiti。
vim /usr/share/zabbix/include/defines.inc.php define('ZBX_FONT_NAME', 'graphfont'); #这是默认字体 [root@promote ~]# sed -i 's/graphfont/kaiti/g' /usr/share/zabbix/include/defines.inc.php [root@promote ~]# sed -n '/graphfont/p' /usr/share/zabbix/include/defines.inc.php #能够看到全部的都替换为了kaiti [root@promote ~]# cp STKAITI.TTF /usr/share/zabbix/fonts/ #将字体文件复制到zabbix的字体目录中
启动zabbix-server服务。
[root@promote ~]# systemctl enable zabbix-server Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. [root@promote ~]# systemctl start zabbix-server [root@promote ~]# netstat -anpt | grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 93906/zabbi_server tcp6 0 0 :::10051 :::* LISTEN 93906/zabbi #能够看到zabbix服务已经开启,相对应的端口已经打开
重启httpd服务。
[root@promote ~]# systemctl restart httpd.service
访问http://192.168.58.149/zabbix/
配置完服务端后,下面配置客户端,也就是须要被监控的客户机端。首先,配置zabbix的yum源。
[root@www1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm [root@www1 ~]# yum install -y zabbix-agent
下面修改zabbix_agentd.conf配置文件
[root@www1 ~]# grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf 13:PidFile=/var/run/zabbix/zabbix_agentd.pid 32:LogFile=/var/log/zabbix/zabbix_agentd.log 43:LogFileSize=0 98:Server=127.0.0.1 139:ServerActive=127.0.0.1 150:Hostname=Zabbix server 268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
主要修改下面几行
Server=192.168.58.149 ServerActive=192.168.58.149 Hostname=Zabbix1 #这个随意更改
关闭防火墙和SELinux功能
[root@www1 ~]# systemctl stop firewalld.service [root@www1 ~]# setenforce 0
启用zabbix-agent功能。
[root@www1 ~]# systemctl enable zabbix-agent.service Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service. [root@www1 ~]# systemctl restart zabbix-agent.service [root@www1 ~]# netstat -anpt | grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 4936/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 4936/zabbix_agentd #能够看到监听端口10050已经开启
下面须要在zabbix检测网页上添加被监控主机。
最后咱们测试,关闭被监控主机的ssh服务,查看是否会有报警。
[root@www1 ~]# systemctl stop sshd.service