zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Windows,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)等配合使用。
安装与配置简单,学习成本低
支持多语言(包括中文)
免费开源
自动发现服务器与网络设备
分布式监视以及WEB集中管理功能
可以无agent监视
用户安全认证和柔软的授权方式
通过WEB界面设置或查看监视结果
email等通知功能
CPU负荷
内存使用
磁盘使用
网络状况
端口监视
日志监视
服务器端配置文件(/usr/local/etc/zabbix_server.conf)
客户端配置文件(/usr/local/etc/zabbix_agentd.conf)
zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)
服务器端配置文件zabbix_server.conf常用配置参数:
参数 | 作用 |
---|---|
LogFile | 设置服务端日志文件存放路径 |
ListenIP | 设置服务端监听IP |
ListenPort | 设置服务端监听的端口号 |
PidFile | 设置服务端进程号文件存放路径 |
DBHost | 指定zabbix的数据库服务器IP |
DBName | 指定zabbix使用的数据库库名 |
DBUser | 指定zabbix数据库登录用户 |
DBPassword | 指定zabbix数据库登录密码 |
DBPort | 指定zabbix数据库端口号 |
User | 设置zabbix以什么用户的身份运行 |
AlertScriptsPath | 设置告警脚本存放路径 |
ExternalScripts | 外部脚本存放路径 |
参数 | 作用 |
---|---|
Server | 指定zabbix服务器的IP或域名 |
ServerActive | 指定zabbix服务器的IP或域名 |
Hostname | 指定本机的主机名,此项必须与web界面配置项一致 |
UnsafeUserParameters | 是否启用自定义监控项,可选值为{1 |
UserParameter | 指定自定义监控脚本参数 |
LogFile | 设置客户端日志文件存放路径 |
环境说明:
服务器名称: xxx
环境 | IP | 要安装的应用 |
---|---|---|
服务器 | 192.168.125.129 | lamp架构 zabbix server zabbix agent |
客户端 | 192.168.125.128 | zabbix agent |
[root@xxx src]# yum -y install net-snmp-devel libevent-devel --安装依赖包
...
[root@ src]#wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz 、--下载zabbix
[root@xxx src]# tar xf zabbix-4.0.3.tar.gz --解压
[root@xxx src]# groupadd -r zabbix --创建组
[root@xxx src]# useradd -r -g zabbix -M -s /sbin/nologin zabbix --创建用户
[root@xxx src]# mysql -uroot -p --配置zabbix数据库
Enter password:
...
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'xj123456'; --允许zabbix里所有的表以zabbix用户在本地用密码登录
Query OK, 0 rows affected, 2 warnings (0.08 sec)
mysql> flush privileges; --刷新权限
Query OK, 0 rows affected (0.01 sec)
[root@xxx src]# cd /usr/src/zabbix-4.0.3/database/mysql/
[root@xxx mysql]# ll --按顺序导入数据
总用量 5808
-rw-r--r--. 1 1001 1001 3802313 12月 20 19:24 data.sql --3
-rw-r--r--. 1 1001 1001 1978341 12月 20 19:24 images.sql --2
-rw-r--r--. 1 1001 1001 392 12月 20 19:24 Makefile.am
-rw-r--r--. 1 1001 1001 15711 12月 20 19:24 Makefile.in
-rw-r--r--. 1 1001 1001 140265 12月 20 19:24 schema.sql --1
导入数据
[root@xxx mysql]# mysql -uzabbix -pxj123456 zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@xxx mysql]# mysql -uzabbix -pxj123456 zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@xxx mysql]# mysql -uzabbix -pxj123456 zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
编译安装zxbbix
[root@xxx mysql]# cd /usr/src/zabbix-4.0.3
[root@xxx zabbix-4.0.3]# ./configure --prefix=/usr/local/zabbix --enable-server \
> --enable-agent \
> --with-mysql \
> --with-net-snmp \
> --with-libcurl \
> --with-libxml2
...
[root@xxx zabbix-4.0.3]# make install
...
[root@xxx ~]# ls /usr/local/etc/
zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d
[root@xxx ~]# vim /usr/local/etc/zabbix_server.conf --修改配置文件,将zabbix密码写入
# Mandatory: no
# Default:
DBPassword=xj123456
开启zabbix--server和zabbix--agentd
[root@xxx ~]# zabbix_server
[root@xxx ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 5 *:873 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 5 :::873 :::*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
[root@xxx ~]# zabbix_agentd
[root@xxx ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
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 5 *:873 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 5 :::873 :::*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
修改/etc/php.ini的配置并重启php-fpm,否则不能启用zabbix服务端的web界面
[root@xxx ~]# vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
;date.timezone = Asia/Shanghai
[root@xxx ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@xxx ~]# cd /usr/src/zabbix-4.0.3
[root@xxx zabbix-4.0.3]# 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
[root@xxx zabbix-4.0.3]# mkdir /usr/local/apache/htdocs/zabbix-xj --创建网站目录
[root@xxx zabbix-4.0.3]# cp -a frontends/php/* /usr/local/apache/htdocs/zabbix-xj/ --将网页文件拷贝到网站目录
[root@xxx zabbix-4.0.3]# chown -R apache.apache /usr/local/apache/htdocs --将属主属组都改为apache
[root@xxx zabbix-4.0.3]# ll /usr/local/apache/htdocs
[root@xxx zabbix-4.0.3]# ll /usr/local/apache/htdocs
总用量 8
-rw-r--r--. 1 apache apache 45 6月 12 2007 index.html
drwxr-sr-x. 2 apache apache 22 2月 22 10:59 xj.com
drwxr-sr-x. 13 apache apache 4096 2月 22 14:54 zabbix-xj
`配置appache虚拟主机
[root@xxx zabbix-4.0.3]# vim /etc/httpd24/httpd.conf
DocumentRoot "/usr/local/apache/htdocs/zabbix-xj"
ServerName www.zabbix-xj.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix-xj/$1
Options none
AllowOverride none
Require all granted
设置zabbix/conf目录的权限,让zabbix有权限生成配置文件zabbix.conf.php
[root@xxx zabbix-4.0.3]# chmod 777 /usr/local/apache/htdocs/zabbix-xj/conf
[root@xxx zabbix-4.0.3]# ll /usr/local/apache/htdocs/zabbix-xj/conf -d
drwxrwsrwx. 2 apache apache 78 12月 20 19:24 /usr/local/apache/htdocs/zabbix-xj/conf
重启apache服务
[root@xxx zabbix-4.0.3]# apachectl restart
[root@xxx zabbix-4.0.3]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
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 5 *:873 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 5 :::873 :::*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
安装依赖包
[root@xj ~]# yum -y install net-snmp-devel libevent-devel openssl-devel prce-devel gcc gcc-g++
创建zabbix用户和组
[root@xj ~]#groupadd -r zabbix
[root@xj ~]#useradd -r -g zabbix -M -s /sbin/nologin zabbix
[root@xj ~]# cd /usr/local/
[root@xj local]# tar xf zabbix-4.0.3.tar.gz --解压
[root@xj local]# make install
[root@xj local]#vim /usr/local/etc/zabbix_agentd.conf --修改配置文件
Server=192.168.125.129 改为客户端ip
...
ServerActive=192.168.125.128
...
Hostname=xj001 --唯一标志符
启动服务
[root@xj local]# zabbix_agentd
[root@xj local]# ss -anlt
[root@xj local]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::22 :::*
zabbix中监控项仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,“触发器"就用于为监控项所收集的数据定义阈值,每一个触发器仅能管理至一个监控项,但是可以为一个监控项同时使用多个触发器;意思就是,为一个监控项定义多个具有不同阈值的触发器,可以实现不同级别的报警。一个触发器由一个表达式构成,它定义了监控项所采集的数据的一个值,一旦某次采集的数据超出了触发器定义的值,触发器状态将会转为"problem”(问题);而当采取的数据再次回归至合理的范围内时,其状态将重新返回到"OK"
创建监控项
通过脚本监控进程
[root@xj ~]# vim /usr/local/etc/zabbix_agentd.conf --更改配置文件
UnsafeUserParameters=1
...
UserParameter=jiankong_mysqld,/test/jiankong_process.sh mysqld
[root@xj test]# cat jiankong_process.sh
#!/bin/bash
X=$(ps -ef |egrep -v "grep|$0"|grep $1|wc -l)
if [ $X -eq 0 ];then
echo 1
else
echo 0
fi
[root@xj ~]#pkill zabbix
[root@xj ~]#zabbix_agentd
把键值key添加到监控项中
创建触发器,1为进程没开启
测试关闭mysqld服务,出现问题
开启服务,问题解决
从官网下载log.py文件
官网
[root@xj ~]# vim /usr/local/etc/zabbix_agentd.conf
...
UserParameter=jiankong_log_apache, python /test/log.py /var/log/messages
[root@xj ~]#pkill zabbix
[root@xj ~]#zabbix_agentd
创建监控项
创建触发项
测试,往日志里加error
指定关键字
[root@xj ~]# vim /usr/local/etc/zabbix_agentd.conf
...
UserParameter=jiankong_log_apache, python /test/log.py /var/log/messages /opt/xxx(路径) xj(关键词)
链接
邮件监控的两种情况:
1、Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本地邮箱账号(例如:[email protected]),只能发送,不能接收外部邮件。
2、使用一个可以在互联网上正常收发邮件的邮箱账号(例如:[email protected]),通过在Zabbix服务端中设置,使其能够发送报警邮件到指定邮箱。
配置邮件监控-服务器
[root@xxx ~]# systemctl stop postfix --停止系统邮箱服务
[root@xxx ~]# systemctl disable postfix
rm '/etc/systemd/system/multi-user.target.wants/postfix.service'
[root@xxx ~]# yum -y install mailx --安装邮箱工具
....
更改配置文件
[root@xxx ~]# vim /etc/mail.rc
set [email protected] --发送的邮箱
sey smtp=smtp.163.com --邮箱服务器地址
set [email protected] --认证用户
set smtp-auth-password=xj1998 (邮箱密码或者授权码)
set smtp-auth=login --认证 登录
手动测试发送邮件
[root@xxx ~]# echo 'zabbix xj mail'|mail -s 'zabbix' [email protected]
创建报警媒介内型
管理 -报警媒介类型-创建媒介类型
在用户添加报警媒介
更改完成后点更新
维护-动作–创建动作(触发器)
动作–操作
点击新的
选择完成后点击添加
问题恢复后发送邮件确认
恢复操作 点击新的
配置邮箱配置文件
[root@xxx ~]# vim /etc/mail.rc
set [email protected] --发件人邮箱地址
set smtp=smtp.163.com --邮箱服务器地址
set [email protected] --发件人邮箱地址
set smtp-auth-password=xj1998 --密码或者授权码
set smtp-auth=login
添加zabbix邮件发送脚本
[root@xxx ~]# vim /usr/local/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/etc/scripts.mail --更改脚本默认的位置
[root@xxx ~]# mkdir /usr/local/etc/scripts.mail
[root@xxx ~]# vim /usr/local/etc/scripts.mail/mail.sh
[root@xxx ~]# cat /usr/local/etc/scripts.mail/mail.sh
#!/bin/bash
echo "$3" |mail -s "$2" $1
[root@xxx scripts.mail]# chmod +x mail.sh
[root@xxx scripts.mail]# cd /usr/local/etc/
[root@xxx etc]# chown -R zabbix.zabbix scripts.mail/ --将脚本目录属主改为zabbix
[root@xxx etc]# ll scripts.mail/ -d
drwxr-xr-x. 2 zabbix zabbix 20 2月 22 22:25 scripts.mail/
[root@xxx etc]# ll scripts.mail/
总用量 4
-rwxr-xr-x. 1 zabbix zabbix 43 2月 22 22:25 mail.sh
重启zabbix服务
[root@xxx ~]# pkill zabbix
[root@xxx ~]# zabbix_server
[root@xxx ~]# zabbix_agentd
测试脚本,临时切换到zabbix用户测试
[root@xxx ~]# su - zabbix -s /bin/bash
上一次登录:五 2月 22 22:37:40 CST 2019pts/1 上
su: 警告:无法更改到 /home/zabbix 目录: 没有那个文件或目录
-bash-4.2$ /usr/local/etc/scripts.mail/mail.sh [email protected] "sss" "sss"