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等平台上。
Zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
Zabbix主要功能
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
Zabbix 工作原理
监控流程:
- zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行
- database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
- web interface:zabbix的GUI接口
- proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力
- agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端
zabbix 安装与配置
Zabbix 3.0以上的版本最好在CentOS 7.0上安装部署,所以先在虚拟机中安装好CentOS 7.0 x86_64,并设置好IP,允许虚拟机联网。
防护关闭:
防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
SELinux:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
grep SELINUX /etc/selinux/config
reboot
依赖安装:
启动nat网
阿里云网站源:https://developer.aliyun.com/mirror/
wget 下载使用 163 或者 阿里的网络源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo |
实验可以不执行,工作中看版本要求
yum –y update
yum -y install net-snmp-devel OpenIPMI-devel httpd openssl-devel java lrzsz fping-devel libcurl-devel perl-DBI pcre-devel libxml2 libxml2-devel mysql-devel gcc php php-bcmath php-gd php-xml php-mbstring php-ldap php-mysql.x86_64 php-pear php-xmlrpc net-tools |
安装Mariadb:
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!
yum install -y mariadb mariadb-server systemctl start mariadb httpd systemctl enable mariadb httpd mysqladmin -uroot password 123456 |
注:mysql_secure_installation
Enter current passwdord for root #回车,设置mysql密码
Remove anonymous users? #删除匿名用户?
Disallow root login remotely? #禁止root远程登陆
Remove test database and access to it? #删除测试数据库并且和访问它
Reload privilege tables now? #重新载入特权表
安装 zabbix:
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
安装 server和web端,基于mysql数据库
yum -y install zabbix-server-mysql zabbix-web-mysql
MariaDB初始化完毕后,我们现在来创建zabbix数据库及其用户,使用如下命令:
mysql -uroot -p123456
MariaDB [(none)]>:
create database zabbix default character set utf8 collate utf8_bin;
grant all on zabbix.* to "zabbix"@"localhost" identified by "123456";
grant all on zabbix.* to "zabbix"@"%" identified by "123456";
版本不同该命令版本号改变
cd /usr/share/doc/zabbix-server-mysql-3.0.32/
导入zabbix数据库结构
zcat create.sql.gz | mysql -uroot zabbix -p123456
修改 Zabbix Server 配置,并启动 Zabbix Server 服务
vim /etc/zabbix/zabbix_server.conf
找到取消注释修改
DBHost=localhost DBPassword=123456 |
#默认:
DBName=zabbix
DBUser=zabbix
启动、自启动zabbix-server服务
systemctl start zabbix-server systemctl enable zabbix-server |
启动 zabbix 管理界面
编辑PHP配置
vim /etc/httpd/conf.d/zabbix.conf
修改时区内容:
php_value date.timezone Asia/Shanghai |
重启Apache服务
systemctl restart httpd
登陆 Zabbix 管理页面http://虚拟机IP/zabbix/,显示Zabbix安装向导
环境检测
数据库连接
密码:123456
注:port 0 就是使用默认端口,即3306
Zabbix服务器信息
信息展示:
安装成功
登录
用户名:Admin (大写开头) 密码:zabbix
点击人头
修改支持中文
绝大部分汉化(图像部分没有汉化)
控制面板——字体——微软雅黑——右键复制——粘贴到桌面
cd /usr/share/zabbix/fonts/
拖拉至xshell
mv msyh.ttc msyh.ttf
查看默认字体
grep FONT_NAME /usr/share/zabbix/include/defines.inc.php -n
vim /usr/share/zabbix/include/defines.inc.php
替换45行,93行内容为msyh
重启服务:
systemctl restart httpd zabbix-server
安装zabbix agent-实现将本机和另一台机器都监控
yum -y install zabbix-agent
zabbix agent的配置很简单,只需要修改zabbix agent配置文件中的Server、ServerActive和Hostname这三项即可。
其中Server、ServerActive是zabbix server服务器的IP地址,Hostname是被监控端的IP地址,如下:
vim /etc/zabbix/zabbix_agentd.conf
修改监听ip,如果只监听本机,只修改Hostname
Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=127.0.0.1 |
注: 若客户机为其他主机,则需要按照对应IP填写
启动zabbix-agent服务
systemctl start zabbix-agent systemctl enable zabbix-agent |
Web界面添加对本机的监控
配置——主机——状态点击启动——图形查看状态
通过数据库查看zabbix账号密码
进入数据库
select name,alias,passwd from users;
通过百度MD5解密获取密码
监控linux 主机:
安装zabbix-agent
设置nat网
wget http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.32-1.el7.x86_64.rpm yum -y install zabbix-agent-3.0.32-1.el7.x86_64.rpm |
vim /etc/zabbix/zabbix_agentd.conf
修改以下内容:
Server、ServerActive是zabbix server服务器的IP地址,Hostname是被监控端的IP地址
Server=服务器IP ServerActive=服务器IP Hostname=本机IP |
启动并设置开机自启服务
systemctl start zabbix-agent.service systemctl enable zabbix-agent.service |
服务器端添加主机
也可以自己创建新的群组
添加对应的模板
记得一定要添加Template OS Linux 的模板,Linux系统资源的记录
若对应模板没有图形显示,需要自己添加图形显示
压力测试:
dd if=/dev/zero of=/dev/null &
监控windows
Download and install Zabbix 下载指定版本的agent 包
下载——解压——剪切内容——在c盘中创建zabbix目录并粘贴——编辑conf文件——创建log目录
找到conf下的配置文件 zabbix_agentd.win.conf ,修改LogFile、Server、、ServerActive、Hostname这四个参数。具体配置如下:
LogFile=c:\zabbix\log\zabbix_agentd.log Server=192.168.9.104 Hostname=192.168.9.1 ServerActive=192.168.9.104 #zabbix server地址 |
其中logfile是zabbix日志存放地址。Server 是zabbix服务端ip地址。Hostname是本机机器名。
配置好后,开始安装zabbix-agent,其实就是将zabbix-agent添加到windows服务中;
在windows控制台下执行以下命令:(注意windows的位数 64 | 32)
使用管理员身份进入命令提示符
c:\zabbix\bin\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.conf -i
启动服务:
c:\zabbix\bin\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.conf -s
可以使用 netstat –an | find “10050” #windows下默认端口也是 10050
并确定服务正常启动成功
关闭防火墙:
控制面板——防火墙
在zabbix server 上添加监控主机
Zabbix 警告通知(服务器端)
sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash、perl和web站点使用。
下载软件、创建目录、解压软件、进入目录、复制文件,并设置权限、安装组件
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz mkdir /usr/local/bin tar zxf sendEmail-v1.56.tar.gz -C /usr/src cd /usr/src/sendEmail-v1.56 cp -a sendEmail /usr/local/bin chmod +x /usr/local/bin/sendEmail yum install perl-Net-SSLeay perl-IO-Socket-SSL -y |
测试邮件功能
/usr/local/bin/sendEmail -f 发件人IP -t 收件人IP -s 发件人所在服务器 -u "邮件标题" -o message-content-type=html -o message-charset=utf8 -xu 发件人账号 -xp 发件人密码 -m "邮件内容" -l /var/log/sendMyEmail.log -o tls=no
命令说明:
/usr/local/bin/sendEmail 命令主程序
-f from@163.com 发件人邮箱
-t to@163.com 收件人邮箱
-s smtp.163.com 发件人邮箱的smtp服务器
-u "我是邮件主题" 邮件的标题
-o message-content-type=html 邮件内容的格式,html表示它是html格式
-o message-charset=utf8 邮件内容编码
-xu from@163.com 发件人邮箱的用户名
-xp 123456 发件人邮箱密码
-m "我是邮件内容" 邮件的具体内容
-l /var/log/sendMyEmail.log 非必输项,邮件发送日志记录到日志文件
准备2个邮箱账号
rsov49@163.com AHSTJTIZEPASSQSY
gwlw11@163.com
/usr/local/bin/sendEmail -f rsov49@163.com -t gwlw11@163.com -s smtp.163.com -u "message" -xu rsov49@163.com -xp AHSTJTIZEPASSQSY -m "test" -l /var/log/sendMyEmail.log -o tls=no
查看编辑脚本配置
进入zabbix自定义的指定目录,我这里是/etc/zabbix/
可以查看zabbix_server.conf配置文件AlertScriptsPath变量是如何定义的。
vim etc/zabbix/zabbix_server.conf
找到AlertScriptsPath选项,可以自定义位置
AlertScriptsPath=/usr/lib/zabbix/alertscripts
编辑脚本
cd /usr/lib/zabbix/alertscripts
vim sendEmail.sh
内容如下:
#!/bin/bash to=$1 subject=$2 body=$3 /usr/local/bin/sendEmail -f rsov49@163.com -t "$to" -s smtp.163.com -u "$subject" -xu rsov49@163.com -xp AHSTJTIZEPASSQSY -m "$body" -o message-content-type=html -o message-charset=utf8 -l /var/log/sendMyEmail.log -o tls=no |
说明:
from@163.com 替换成自己的发件邮箱
smtp.163.com 表示邮箱的smtp服务器,这里展示使用的是163邮箱,替换自己的邮箱SMTP地址
password 替换成发件邮箱密码
编辑完成后,给脚本权限
chmod +x sendEmail.sh chown zabbix:zabbix sendEmail.sh |
./sendEmail.sh gwlw11@163.com 测试邮箱 谢谢
web界面配置
分别对应sendEmail.sh脚本需要的3个参数:收件人地址、主题、详细内容
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE} |
管理——用户——报警媒介类型——添加
查看用户群组是否已启动
修改权限,选择所有然后添加,再更新
设置发信规则(设置并启用)
动作——操作——编辑
修改持续时间为60秒
修改步骤为3,表示触发3次动作(可不改)
选择用户Admin(可不改)
选择仅送到sendEmail.sh(可不改)
点击更新
默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户和zabbix administrator组。假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送,间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。
最后启用该规则
因为我用sendEmail.sh脚本指定格式是html,换行用<br/>
添加中文提示:
默认信息和恢复信息是一样的
告警主机: {HOSTNAME1}<br/>
告警时间: {EVENT.DATE} {EVENT.TIME}<br/>
告警等级: {TRIGGER.SEVERITY}<br/>
告警信息: {TRIGGER.NAME}<br/>
告警项目: {TRIGGER.KEY1}<br/>
问题详情: {ITEM.NAME}: {ITEM.VALUE}<br/>
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}<br/>
事件ID: {EVENT.ID}