文章目录
背景
Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。
1.zabbix
1.1 zabbix简介
- zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
- zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- zabbix由2部分构成,zabbix server与可选组件zabbix agent。
- zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
1.2 zabbix架构
重要组件说明
1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;
2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3)web interface:zabbix的GUI接口;
4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;
5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;
1.3 监控系统运行的流程
一个监控系统运行的大概的流程是这样的:
- agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
- 这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
1.4 zabbix特点与功能
1.4.1 zabbix的主要特点
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
1.4.2 Zabbix主要功能:
- CPU负荷、内存使用、磁盘使用、网络状况、端口监视与日志监视。
2.zabbix 监控的部署
2.1 相关环境部署
服务器 | IP |
---|---|
Zabbix服务器(zabbix-server) | 192.168.140.13/24(监控端) |
Linux服务器(zabbix-client) | 192.168.140.14/24(被监控端) |
- 注意:Zabbix的安装需要公网,Zabbix安装需要在LAMP平台上安装,因此第一步是部署LAMP架构
2.2 部署LAMP架构
2.2.1 关闭防火墙、核心防护
systemctl stop firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2.2.2 安装依赖包
- 首先导入CentOS7-Base-163.repo环境,并重新建立缓存
[root@zabbix-server ~]# cd /etc/yum.repos.d/
[root@zabbix-server yum.repos.d]# ls
backup CentOS7-Base-163.repo local.repo
[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum makecache
- yum安装相关依赖包
[root@zabbix-server ~]# 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
2.2.3 修改apache和php配置文件
[root@zabbix-server ~]# vi /etc/httpd/conf/httpd.conf
95 ServerName www.example.com:80 //开启域名
164 DirectoryIndex index.php index.html //添加index.php
[root@zabbix-server ~]# vi /etc/php.ini
878 date.timezone = PRC
2.2.4 开启 apache和mariadb服务
[root@zabbix-server ~]# systemctl start httpd
[root@zabbix-server ~]# systemctl start mariadb.service
[root@zabbix-server ~]# netstat -anpt | grep 80
tcp6 0 0 :::80 :::* LISTEN 14116/httpd
[root@zabbix-server ~]# netstat -anpt | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 14411/mysqld
2.2.5 初始化数据库
[root@zabbix-server ~]# mysql_secure_installation
Enter current password for root (enter for none):# 输入root的当前密码(为none输入) //按回车即可
Set root password? [Y/n] y //设置密码,输入y
New password: //设置密码为:123456(密码可以随意)
Re-enter new password: //123456
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] y //移除匿名账号,y
... Success!
Disallow root login remotely? [Y/n] n //不允许 root 账号远程登录,n
... skipping.
Remove test database and access to it? [Y/n] y //移除test数据库,y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] y //重置权限列表,y
... Success!
2.2.6 测试
- 登录数据库
[root@zabbix-server ~]# mysql -uroot -p123456
- 测试 php 网页
[root@zabbix-server ~]# vi /var/www/html/index.php
<?php
phpinfo();
?>
2.2.7 创建数据库监控信息表并授权
[root@zabbix-server ~]# mysql -uroot -p123456
...
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
//数据库监控信息的表为zabbix,字符集为utf8,每一个字符区分大小写
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
- 注意:还需要验证php与mysql的联动性
[root@zabbix-server ~]# vi /var/www/html/index.php
<?php
$link=mysql_connect('192.168.140.13','zabbix','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!!";
mysql_close();
?>
2.3 部署zabbix服务器
2.3.1 添加zabbix源并重新建立缓存
- 添加阿里云源区域
系统源
[root@zabbix-server ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[Ali]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
zabbix源
[root@zabbix-server ~]# vi /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/
enabled=1
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/\$basearch/
enabled=1
gpgcheck=0
[root@zabbix-server ~]# yum makecache
2.3.2 安装zabbix依赖包
[root@zabbix-server ~]# yum install -y php-mbstring php-bcmath
2.3.3 下载zabbix源并安装zabbix服务端软件
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
获取https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.NmvBlG: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-4.0-2.el7 ################################# [100%]
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql -y --nogpgcheck
2.3.4 导入zabbix监控数据库
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.27/create.sql.gz | mysql -uzabbix -padmin123 zabbix
[root@zabbix-server ~]# grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf
//查看zabbix未注释的生效行
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
100:DBName=zabbix
116:DBUser=zabbix
356:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
473:Timeout=4
516:AlertScriptsPath=/usr/lib/zabbix/alertscripts
527:ExternalScripts=/usr/lib/zabbix/externalscripts
563:LogSlowQueries=3000
2.3.5 修改 zabbix 配置文件
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf
124 DBPassword=admin123
[root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf
20 php_value date.timezone Asia/Shanghai //修改时区,将此行注释去掉修改即可
[root@zabbix-server ~]# vi /usr/share/zabbix/include/defines.inc.php //添加配置
:%s /graphfont/kaiti/g //命令行模式直接输入,修改图表中文乱码
- 从微软系统C:\Windows\Fonts下复制相应的字体 (楷体) 文件到 /usr/share/zabbix/assets/fonts 目录中
注意字体名称要对应配置文件改为kaiti.ttf,且注意大小写
[root@zabbix-server ~]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix-server fonts]# rz -E //将楷体复制到桌面并修改,直接拉到该目录下
rz waiting to receive.
[root@zabbix-server fonts]# ls
graphfont.ttf kaiti.ttf.ttf
2.3.6 启动 zabbix 服务并监听端口
[root@zabbix-server ~]# systemctl start zabbix-server
[root@zabbix-server ~]# 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@zabbix-server ~]# netstat -anpt | grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 54668/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 54668/zabbix_server
2.3.7 重启 apache 服务
[root@zabbix-server ~]# systemctl restart httpd.service
2.4 访问 zabbix 登录并安装
- 登录,http://192.168.140.13/zabbix/
- 状态检查
- 连接数据库
- 起zabbix服务器名称
- 信息总览
- 安装完成
- 登录zabbix
2.5 设置linux版zabbix客户端
2.5.1 关闭防火墙、核心防护
[root@zabbix-client ~]# systemctl stop firewalld
[root@zabbix-client ~]# setenforce 0
[root@zabbix-client ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2.5.2 设置yum源
[root@zabbix-client ~]# vi /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
2.5.3 安装zabbix-agent,并修改客户端配置
- 安装zabbix-agent
[root@zabbix-client ~]# yum -y install zabbix-agent --nogpgcheck
- 修改 zabbix-agent 客户端配置
[root@zabbix-client ~]# vi /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=192.168.140.13 //服务端 ip
139 ServerActive=192.168.140.13 //服务端 ip
150 Hostname=client1 //客户端在服务端的名字
123 StartAgents=3 //去掉注释,开启被动模式
268 Include=/etc/zabbix/zabbix_agentd.d/*.conf
- 启动 zabbix-agent 服务
[root@zabbix-client ~]# 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@zabbix-client ~]# systemctl restart zabbix-agent.service
[root@zabbix-client ~]# netstat -anpt | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 13456/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 13456/zabbix_agentd
2.6 设置监控语言设置为中文
- 注意:更改完后刷新页面
2.7 服务端创建被监控主机
2.7.1 设置服务端监控自己
- 即zabbix server需要把自己设置为客户端
##安装服务并配置
[root@zabbix-server ~]# yum -y install zabbix-agent --nogpgcheck
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_agentd.conf
98 Server=192.168.140.13
139 ServerActive=192.168.140.13
150 Hostname=server
##启动服务
[root@zabbix-server ~]# systemctl start zabbix-agent
[root@zabbix-server ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@zabbix-server ~]# netstat -anpt | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 57034/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 54668/zabbix_server
tcp6 0 0 :::10050 :::* LISTEN 57034/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 54668/zabbix_server
2.7.2 创建被监控主机
- 创建第一个
- 创建第二个
- 查看创建的被监控主机
2.7.3 创建监控主机的内容
- 创建第一台模板
- 创建第二台模板,与第一台的操作一样
3.监控的应用
3.1 邮箱报警设置
- 在服务器上配置
[root@zabbix-server ~]# vi /etc/mail.rc
...//末尾添加以下配置
set from=1538966762@qq.com //发送邮箱地址
set smtp=smtp.qq.com //邮箱使用的smtp服务器的域名
set smtp-auth-user=1538966762@qq.com //smtp邮件发送时登录的账号
set smtp-auth-password=zymvytiagqynfidf // QQ邮箱授权码
set smtp-auth=login //smtp的状态,登录状态
- 编写发邮件脚本
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/ //注意:必须在此目录下创建脚本
[root@zabbix-server alertscripts]# vi mailx.sh
#!/bin/bash
#send mail
message=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${message}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
[root@zabbix-server alertscripts]# touch /tmp/mailx.log
- 授权
[root@zabbix-server ~]# chown -R zabbix.zabbix /tmp/mailx.log
[root@zabbix-server ~]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
[root@zabbix-server ~]# chown -R zabbix.zabbix /usr/lib/zabbix/
- 脚本测试
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# ./mailx.sh 1538966762@qq.com "test mail" "success"
//test mail 为 主题、success 为内容
3.2 网页报警设置
3.2.1 创建报警类型
3.2.2 用户添加报警媒介
3.2.3 创建动作触发报警
- 选择主机 --》再点击主机下的添加
- 操作 --》如下配置
默认操作步骤持续时间 60
默认接收人 : {TRIGGER.STATUS}:{TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
- 在之前的操作里添加恢复操作
恢复操作:{TRIGGER.STATUS}:{TRIGGER.NAME}
恢复信息:
恢复主机:{HOST.NAME}
恢复 IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID:{EVENT.ID}
- 注意:配置完后重启服务器
[root@zabbix-server ~]# systemctl restart zabbix-server
[root@zabbix-server ~]# systemctl restart zabbix-agent
3.3 邮件报警测试
3.3.1 模拟故障
- 当禁用客户机网卡时
[root@zabbix-client ~]# ifconfig ens33 down
-
查看问题
-
邮箱查看
3.3.2 故障恢复
- 重新开启客户机网卡
[root@zabbix-client ~]# ifconfig ens33 up
- 查看监测问题
- 查看邮箱