zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各类网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各类问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server能够经过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它能够运行在Linux,Ubuntu,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix agent须要安装在被监视的目标服务器上,它主要完成对硬件信息或与操做系统有关的内存,CPU等信息的收集。
zabbix server能够单独监视远程服务器的服务状态;同时也能够与zabbix agent配合,能够轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
另外zabbix server还支持SNMP (v1,v2),能够与SNMP软件(例如:net-snmp)等配合使用。php
Zabbix能监视各类网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各类问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
agent端:主机经过安装agent方式采集数据。前端
zabbix的主要特色:java
Zabbix主要功能:
node
一个监控系统运行的大概的流程是这样的:
zabbix agent须要安装到被监控的主机上,它负责按期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展示和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内须要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。mysql
[root@wlw ~]# yum -y install net-snmp-devel libevent-devel [root@wlw ~]# cd /usr/src/ [root@wlw src]# ls apr-1.6.5 apr-util-1.6.1.tar.gz httpd-2.4.38.tar.bz2 php-7.2.8 apr-1.6.5.tar.gz debug kernels php-7.2.8.tar.xz apr-util-1.6.1 httpd-2.4.38 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz [root@wlw src]# rz [root@wlw src]# ls apr-1.6.5 apr-util-1.6.1.tar.gz httpd-2.4.38.tar.bz2 php-7.2.8 apr-1.6.5.tar.gz debug kernels php-7.2.8.tar.xz apr-util-1.6.1 httpd-2.4.38 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz zabbix-3.4.12.tar.gz [root@wlw src]# tar xf zabbix-3.4.12.tar.gz [root@wlw src]# cd [root@wlw ~]# groupadd -r zabbix [root@wlw ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix [root@wan ~]# source /etc/profile.d/mysql.sh [root@wan ~]# mysql -uroot -pwlw123! mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.25 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.01 sec) mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ' wlw123!'; Query OK, 0 rows affected, 2 warnings (0.02 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye [root@wan ~]# cd /usr/src/zabbix-3.4.12/database/mysql/ [root@wan mysql]# ls data.sql images.sql schema.sql [root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < schema.sql mysql: [Warning] Using a password on the command line interface can be insecure. [root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < images.sql mysql: [Warning] Using a password on the command line interface can be insecure. [root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < data.sql mysql: [Warning] Using a password on the command line interface can be insecure. [root@wan zabbix-3.4.12]# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 [root@wan zabbix-3.4.12]# make install [root@wan zabbix-3.4.12]# cd [root@wan ~]# ls /usr/local/etc/ zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d [root@wan ~]# vim /usr/local/etc/zabbix_server.conf [root@wan ~]# zabbix_server [root@wan ~]# zabbix_agentd [root@wan ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 *:10051 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 80 :::3306 :::*
1:重要组件
zabbix由如下几个组件部分构成:linux
注:zabbix node也是 zabbix server的一种 。
2:常见进程
默认状况下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。ios
在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。
1:server-client架构
也是zabbix的最简单的架构,监控机和被监控机之间不通过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。
2:server-proxy-client架构
其中proxy是server、client之间沟通的一个桥梁,proxy自己没有前端,并且其自己并不存放数据,只是将agentd发来的数据暂时存放,然后再提交给server 。该架构常常是和master-node-client架构作比较的架构 ,通常适用于跨机房、跨网络的中型网络架构的监控。
3:master-node-client架构
该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每一个node同时也是一个server端,node下面能够接proxy,也能够直接接client 。node有自已的配置文件和数据库,其要作的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。
其实zabbix作的仍是挺人性化的,给了咱们下载地址:http://repo.zabbix.com/ 里面能够选不少版本,但这里就给你们提供一个目前最新版本4.2的部署及添加客户端方式。c++
zabbix配置文件有两种:web
参数 做用 LogFile 设置服务端日志文件存放路径 ListenIP 设置服务端监听IP ListenPort 设置服务端监听的端口号 PidFile 设置服务端进程号文件存放路径 DBHost 指定zabbix的数据库服务器IP DBName 指定zabbix使用的数据库库名 DBUser 指定zabbix数据库登陆用户 DBPassword 指定zabbix数据库登陆密码 DBPort 指定zabbix数据库端口号 User 设置zabbix以什么用户的身份运行 AlertScriptsPath 设置告警脚本存放路径 ExternalScripts 外部脚本存放路径
环境说明:sql
环境 | IP | 要安装的应用 |
---|---|---|
服务器t | 192.168.66.128 | lamp架构zabbix serverzabbix agent |
客户端 | 192.168.66.130 | zabbix agent |
由于zabbix是用php语言开发的,因此必须先部署lamp架构,使其可以支持运行php网页
安装依赖包(lamp安装见个人lamp那篇博客,这里脚本安装好了) [root@wlw ~]# yum -y install net-snmp-devel libevent-devel //下载zabbix [root@wlw ~]# cd /usr/src/ [root@wlw src]# ls apr-1.6.5 apr-util-1.6.1.tar.gz httpd-2.4.38.tar.bz2 php-7.2.8 apr-1.6.5.tar.gz debug kernels php-7.2.8.tar.xz apr-util-1.6.1 httpd-2.4.38 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz [root@wlw src]# rz [root@wlw src]# ls apr-1.6.5 apr-util-1.6.1.tar.gz httpd-2.4.38.tar.bz2 php-7.2.8 apr-1.6.5.tar.gz debug kernels php-7.2.8.tar.xz apr-util-1.6.1 httpd-2.4.38 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz zabbix-3.4.12.tar.gz //解压 [root@wlw src]# tar xf zabbix-3.4.12.tar.gz [root@wlw src]# cd //建立zabbix用户和组 [root@wlw ~]# groupadd -r zabbix [root@wlw ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix [root@wan ~]# source /etc/profile.d/mysql.sh //配置zabbix数据库 [root@wan ~]# mysql -uroot -pwlw123! mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.25 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.01 sec) mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ' wlw123!'; Query OK, 0 rows affected, 2 warnings (0.02 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye //编译安装zabbix [root@wan ~]# cd /usr/src/zabbix-3.4.12/database/mysql/ [root@wan mysql]# ls data.sql images.sql schema.sql [root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < schema.sql mysql: [Warning] Using a password on the command line interface can be insecure. [root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < images.sql mysql: [Warning] Using a password on the command line interface can be insecure. [root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < data.sql mysql: [Warning] Using a password on the command line interface can be insecure. [root@wan zabbix-3.4.12]# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 [root@wan zabbix-3.4.12]# make install [root@wan zabbix-3.4.12]# cd [root@wan ~]# ls /usr/local/etc/ zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d [root@wan ~]# vim /usr/local/etc/zabbix_server.conf [root@wan ~]# zabbix_server [root@wan ~]# zabbix_agentd [root@wan ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 *:10051 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 80 :::3306 :::*
[root@wan ~]# ls /usr/local/etc/ zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server .conf.d //修改服务端配置文件 // 设置数据库信息 [root@wan ~]# vim /usr/local/etc/zabbix_server.conf .... DBPassword=zabbix123! //设置数据库链接密码 //启动zabbix_server和zabbix_agentd [root@wan ~]# zabbix_server [root@wan ~]# zabbix_agentd [root@wan ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 *:10051 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 80 :::3306 :::*
9.3.1zabbix web 界面安装前配置
[root@wan ~]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini [root@wan ~]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini [root@wan ~]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini [root@wan ~]# [root@wan ~]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini [root@wan ~]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@wan ~]# cd /usr/src/zabbix-3.4.12 [root@wan zabbix-3.4.12]# ls aclocal.m4 ChangeLog config.log configure.ac frontends m4 man README AUTHORS compile config.status COPYING include Makefile misc sass bin conf config.sub database INSTALL Makefile.am missing src build config.guess configure depcomp install-sh Makefile.in NEWS upgrades [root@wan zabbix-3.4.12]# mkdir /usr/local/apache/htdocs/zabbix [root@wan zabbix-3.4.12]# cp -a frontends/php/* /usr/local/apache/htdocs/zabbix/ [root@wan zabbix-3.4.12]# chown -R apache.apache /usr/local/apache/htdocs/ [root@wan zabbix-3.4.12]# cd [root@wan ~]# vim /etc/httpd24/httpd.conf [root@wan ~]# chmod 777 /usr/local/apache/htdocs/zabbix/conf [root@wan ~]# ll -d /usr/local/apache/htdocs/zabbix/conf drwxrwxrwx. 2 apache apache 81 7月 30 2018 /usr/local/apache/htdocs/zabbix/conf [root@wan ~]# source /etc/profile.d/httpd.sh [root@wan ~]# apachectl -t Syntax OK [root@wan ~]# apachectl restart [root@wan ~]# apachectl stop [root@wan ~]# apachectl start [root@wan ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 *:10051 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 80 :::3306 :::*
再进入电脑的C盘的 Windows System32 dirvers etc 的hosts 里面添加映射
密码是zabbix123!
再恢复zabbix/conf目录的权限为755:
[root@wan ~]# chmod 755 /usr/local/apache/htdocs/zabbix/conf [root@wan ~]# ll -d /usr/local/apache/htdocs/zabbix/conf drwxr-xr-x. 2 apache apache 104 5月 14 22:45 /usr/local/apache/htdocs/zabbix/conf
实如今另外一台主机安装zabbix_agentd客户端,能实现zabbix对客户端监控。
[root@wlw ~]# yum install -y gcc gcc-c++ pcre-devel [root@wlw ~]# cd /usr/src/ [root@wlw src]# tar xf zabbix-3.4.12.tar.gz [root@wlw src]# cd zabbix-3.4.12 [root@wlw zabbix-3.4.12]# ./configure --enable-agent [root@wlw ~]# groupadd -r zabbix [root@wlw ~]# useradd -r -M -s /sbin/nologin -g zabbix zabbix [root@wlw ~]# cd /usr/src/zabbix-3.4.12 [root@wlw zabbix-3.4.12]# make install [root@wlw ~]# cd /usr/local/etc/ [root@wlw etc]# ls zabbix_agentd.conf zabbix_agentd.conf.d [root@wlw etc]# vim zabbix_agentd.conf 找到server改为Server=192.168.66.130 找到ServerActive改为ServerActive=192.168.66.130 找到Hostname改为Hostname=ww(ww是随便取的名字要记住) [root@wlw etc]# zabbix_agentd [root@wlw etc]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 80 :::3306 :::* [root@wlw etc]# systemctl stop firewalld [root@wlw etc]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@wlw etc]# vim /etc/selinux/config [root@wlw etc]# setenforce 0