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监控vcenter模板 zabbix监控方案_linux

监控流程:

  1. zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行
  2. database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
  3. web interface:zabbix的GUI接口
  4. proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力
  5. 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

安装 serverweb端,基于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安装向导

zabbix监控vcenter模板 zabbix监控方案_服务器_02

环境检测

zabbix监控vcenter模板 zabbix监控方案_php_03

数据库连接

密码:123456

zabbix监控vcenter模板 zabbix监控方案_php_04

注:port  0 就是使用默认端口,即3306

Zabbix服务器信息

zabbix监控vcenter模板 zabbix监控方案_php_05

信息展示:

zabbix监控vcenter模板 zabbix监控方案_linux_06

安装成功

zabbix监控vcenter模板 zabbix监控方案_运维_07

登录

zabbix监控vcenter模板 zabbix监控方案_linux_08

用户名:Admin    (大写开头)     密码:zabbix

点击人头

zabbix监控vcenter模板 zabbix监控方案_linux_09

修改支持中文

zabbix监控vcenter模板 zabbix监控方案_php_10

绝大部分汉化(图像部分没有汉化)

zabbix监控vcenter模板 zabbix监控方案_zabbix监控vcenter模板_11

控制面板——字体——微软雅黑——右键复制——粘贴到桌面

cd /usr/share/zabbix/fonts/

拖拉至xshell

mv msyh.ttc msyh.ttf

查看默认字体

grep FONT_NAME /usr/share/zabbix/include/defines.inc.php  -n

zabbix监控vcenter模板 zabbix监控方案_服务器_12

vim /usr/share/zabbix/include/defines.inc.php

替换45行,93行内容为msyh

zabbix监控vcenter模板 zabbix监控方案_服务器_13

重启服务:

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

修改以下内容:

ServerServerActivezabbix server服务器的IP地址,Hostname是被监控端的IP地址


Server=服务器IP

ServerActive=服务器IP

Hostname=本机IP


启动并设置开机自启服务


systemctl start zabbix-agent.service

systemctl enable zabbix-agent.service


服务器端添加主机

zabbix监控vcenter模板 zabbix监控方案_linux_14

zabbix监控vcenter模板 zabbix监控方案_运维_15

也可以自己创建新的群组

添加对应的模板

zabbix监控vcenter模板 zabbix监控方案_php_16

记得一定要添加Template OS Linux 的模板,Linux系统资源的记录

若对应模板没有图形显示,需要自己添加图形显示

zabbix监控vcenter模板 zabbix监控方案_php_17

压力测试:

dd if=/dev/zero of=/dev/null &

 

监控windows

Download and install Zabbix 下载指定版本的agent

zabbix监控vcenter模板 zabbix监控方案_服务器_18

下载——解压——剪切内容——在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

zabbix监控vcenter模板 zabbix监控方案_linux_19

启动服务:

c:\zabbix\bin\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.conf -s

可以使用 netstat –an | find “10050”        #windows下默认端口也是 10050

并确定服务正常启动成功

关闭防火墙:

控制面板——防火墙

zabbix监控vcenter模板 zabbix监控方案_zabbix监控vcenter模板_20

zabbix server 上添加监控主机

   

zabbix监控vcenter模板 zabbix监控方案_zabbix监控vcenter模板_21

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界面配置

zabbix监控vcenter模板 zabbix监控方案_运维_22

分别对应sendEmail.sh脚本需要的3个参数:收件人地址、主题、详细内容


{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}


管理——用户——报警媒介类型——添加

zabbix监控vcenter模板 zabbix监控方案_zabbix监控vcenter模板_23

查看用户群组是否已启动

zabbix监控vcenter模板 zabbix监控方案_linux_24

修改权限,选择所有然后添加,再更新

zabbix监控vcenter模板 zabbix监控方案_php_25

zabbix监控vcenter模板 zabbix监控方案_服务器_26

设置发信规则(设置并启用)

动作——操作——编辑

    修改持续时间为60秒

    修改步骤为3,表示触发3次动作(可不改)

    选择用户Admin(可不改)

    选择仅送到sendEmail.sh(可不改)

    点击更新

默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户和zabbix administrator组。假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送,间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。

zabbix监控vcenter模板 zabbix监控方案_zabbix监控vcenter模板_27

最后启用该规则

zabbix监控vcenter模板 zabbix监控方案_zabbix监控vcenter模板_28

zabbix监控vcenter模板 zabbix监控方案_运维_29

因为我用sendEmail.sh脚本指定格式是html,换行用<br/>

添加中文提示:

默认信息和恢复信息是一样的

告警主机:&nbsp;{HOSTNAME1}<br/>

告警时间:&nbsp;{EVENT.DATE} {EVENT.TIME}<br/>

告警等级:&nbsp;{TRIGGER.SEVERITY}<br/>

告警信息: &nbsp;{TRIGGER.NAME}<br/>

告警项目:&nbsp;{TRIGGER.KEY1}<br/>

问题详情:&nbsp;{ITEM.NAME}:&nbsp;{ITEM.VALUE}<br/>

当前状态:&nbsp;{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}<br/>

事件ID:&nbsp;{EVENT.ID}