zabbix
zabbix是一个可灵活的监控服务资源,基于web界面的开源软件,由C语言编写的底层架构(server端和agent端)
具备主机的性能监控,网络设备监控,数据库性能监控,多种告警方式,信息报表,图标的绘制等等。检测队形可以是linux或者window服务器,也可以是路由器,交换机等设备。通过SNMP(简单网络管理协议)。
zabbix,agent,ping,端口监控等方法提供了对远程网络服务器的监控,数据收集等功能
官网:http://www.zabbix.com
运行条件
- zabbix server需要运行在lamp环境下,对硬件要求低。
- agent:支持市面上常见的os
- snmp:支持各类常见的网络设备
优缺点
- 优点:开源,无软件成本投入,server对设备性能要求低,支持多设备,支持分布式集中管理,开放式接口,扩展性强。
- 缺点:需要在监控主机上安装agent,所有数据都在数据库,产生的数据很大。
监控原理
- zabbix server:负责接受agent发送的报告信息的核心组件,所有配置,统计数据及操作数据都有它组织进行
- database storage:专门用于存储所有配置信息,以及有zabbix收集的数据
- web interface:zabbix的GUI接口
- proxy:可选组件,常用于监控节点很多的分布式环境,代理server收集部分数据转发到server,可以减轻server的压力
- agent:部署在被监控的主机上,负责收集主机本地数据如:CPU,内存,数据库等数据发往server端
服务流程
agentd需要安装在被监控的主机上,它负责定期收集各项数据,并发送到zabbix server上,zabbix server将数据存储在数据库中,zabbix web根据数据在前端进行展示和绘图
客户端守护进程
- zabbix_get:zabbix工具,单独使用命令,通常在server或者proxy端执行获取远程客户端信息的命令。
- zabbix_sender:用于发送数据,通常用于耗时长的检查
- zabbix_server:服务端守护进程
- zabbix_proxy:代理守护进程,只是一个中转站
- zabbix_jave_gateway:只用于Java方面且能主动的获取数据
zabbix安装
#首先安装网络源
yum -y install httpd mariadb-server mariadb mariadb-devel php php-mbstring php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-sump net-sump-devel libxml2 libxml2-devel ntpdate curl-devel #安装lamp环境,以及所需要的软件包
[root@server04 ~]# systemctl start mariadb
[root@server04 ~]# systemctl start httpd
[root@server04 ~]# systemctl enable mariadb
[root@server04 ~]# systemctl enable httpd
#准备Java环境
[root@server04 ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@server04 ~]# javac -version
javac 1.8.0_181
[root@server04 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
tar xf zabbix... -C /usr/src
cd /usr/src/zabbix...
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java && make -j2 && make install
##--enable-server --enable-agent 其用zabbix和agent
#mysql数据库授权
create database zabbix character set utf8;
grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
grant all on zabbix.* to zabbix@'192.168.200.12' identified by 'zabbix';
flush privileges;
[root@server04 zabbix-3.4.11]# mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql #导入zabbix锁需要的mysql数据
[root@server04 zabbix-3.4.11]# mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql
[root@server04 zabbix-3.4.11]# mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql
#查看上传是否成功
use zabbix;
show tables;
#创建zabbix程序用户并授权防止权限错误
[root@server04 ~]# useradd -M -s /bin/nologin zabbix
[root@server04 ~]# cd /usr/local/
[root@server04 local]# chown -R zabbix:zabbix zabbix/
[root@server04 local]# cd ./zabbix/
[root@server04 zabbix]# pwd
/usr/local/zabbix
[root@server04 zabbix]# mkdir logs
[root@server04 zabbix]# chown zabbix:zabbix logs/
[root@server04 zabbix]# cp -p etc/zabbix_server.conf{,.bak}
[root@server04 zabbix]# cp -p etc/zabbix_agentd.conf{,.bak}
#修改zabbix配置文件
cd /usr/local/zabbix/etc/
vim zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log #指定zabbix日志位置
PidFile=/tmp/zabbix_server.pid #指定zabbix_pid文件位置
DBHost=192.168.200.111 #指定数据库主机
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户
DBPassword=zabbix #数据库密码
DBSocket=/var/lib/mysql/mysql.sock #指定mariadb数据库的sock文件
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
vim zabbix_agent.pid
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.200.111
ServerActive=192.168.200.111
Hostname=server.zabbix.com #指定zabbixserver主机名
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
#配置php与Apache
[root@server ~]# mv /usr/src/zabbix-3.4.11/frontends/php/ /var/www/html/zabbix
[root@server ~]# chown -R apache:apache /var/www/html/zabbix/
[root@server ~]# vim /etc/php.ini
878:date.timezone = Asia/Shanghai #时区
384:max_execution_time = 300 #单位秒,时间限制
394:max_input_time = 300 #php程序上传文件解析数据时的时间限制
672:post_max_size = 32M #post方式请求数据锁允许的大小
405:memory_limit = 128M #设置php程序的内存限制
854:extension=bcmath.so #添加zabbix程序需要的模块bcmath.so
[root@server ~]# systemctl restart httpd.service
[root@server ~]# netstat -lnptu | egrep ':10050|:10051|:80'
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 22746/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 22741/zabbix_server
tcp6 0 0 :::80 :::* LISTEN 22984/httpd
tcp6 0 0 :::10050 :::* LISTEN 22746/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 22741/zabbix_server