Zabbix 基础部分

Zabbix 简介

Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利
zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题
zabbix主要由2部分构成zabbix server和zabbix agent,可选组建zabbix proxy
zabbix server可以通过SNMP,zabbix agent,fping端口监视等方法对远程服务器或网络状态完成监视,数据收集等功能。同时支持Linux以及Unix平台,Windows平台只能安装客户端


Zabbix 功能

  • ①具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)

  • ②支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)

  • ③支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)

  • ④支持分布式,能集中展示、管理分布式的监控点

  • ⑤扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)编写插件容易,可以自定义监控项,报警级别的设置。

  • ⑥数据收集

    1.可用和性能检测 ;支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET
    2.自定义的检测,自定义收集数据的频率
    3.服务器/代理和客户端模式
    4.灵活的触发器 ;可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值
    5.高可定制的报警 ;发送通知,可定制的报警升级,收件人,媒体类型 ;通知可以使用宏变量有用的变量
    6.自动操作包括远程命令
    7.实时的绘图功能 ;监控项实时的将数据绘制在图形上面
    8.WEB 监控能力 ;ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间
    9.Api 功能 ;应用api功能,可以方便的和其他系统结合,包括手机客户端的使用。

更多功能请查看官网文档:http://www.zabbix.com/documentation.php


Zabbix优缺点

优点

 1、开源,无软件成本投入
 2、Server 对设备性能要求低
 3、支持设备多,自带多种监控模板
 4、支持分布式集中管理,有自动发现功能,可以实现自动化监控
 5、开放式接口,扩展性强,插件编写容易
 6、当监控的item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从
 7、server 端去下载需要监控的item 然后取数据上传到server 端。这种方式对服务器的负载比较小。
 8、Api 的支持,方便与其他系统结合

缺点

  需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据很大,瓶颈主要在数据库。


Zabbix监控原理:

Zabbix 通过C/S 模式采集数据,通过B/S模式在web 端展示和配置。

被监控端:主机通过安装agent 方式采集数据,网络设备通过SNMP 方式采集数据
Server 端:通过收集SNMP 和agent 发送的数据,写入数据库(MySQL,ORACLE 等),再通过php+apache 在web 前端展示。


Zabbix 运行条件:

Server:Zabbix Server 需运行在LAMP(Linux+Apache+Mysql+PHP)环境下(或者LNMP),对硬件要求低
Agent:目前已有的agent 基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、
windows
SNMP:支持各类常见的网络设备 ;SNMP(Simple Network Management Protocol,简单网络管理协议

**Zabbix监控过程逻辑图 **


监控类型

**硬件监控:**适用于物理机、远程管理卡(iDRAC),IPMI(只能平台管理接口)
ipmitools:,MegaCli(查看Raid磁盘)
系统监控: 监控cpt:lscpu、uptime、top、vmstat 1 、mpstat 1、htop
监控内存: free -m
**监控硬盘:**df -h、iotop
**监控网络:**iftop、netstat、ss
**应用服务监控:**nfs、MySQL、nginx、apache、php、rsync
更详细的监控类型可以参考:http://www.abcdocker.com/abcdocker/1376

所有监控范畴,都可以整合到Zabbix中
   硬件监控:Zabbix、IPMI、lnterface
   系统监控:Zabbix、Agent、Interface
   Java监控:Zabbix、JMX、lnterface
   网络设备监控:Zabbix、SNMP、lnterface
   应用服务监控:Zabbix、Agent、UserParameter
   MySQL数据库监控:percona-monitoring-plulgins
   URL监控:Zabbix Web监控



Zabbix 环境配置

Centos 7 yum安装

服务端

yum安装方式全部为默认位置,如果是已搭建了LANMP或LNMP环境,编译安装要指定位置。
1、环境信息

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[root@localhost ~]# uname -r
3.10.0-327.28.3.el7.x86_64

2、安装
使用阿里云yum源,官方yum源下载会比较慢。官网:https://www.zabbix.com/download

#Centos 7
rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
#Centos 6
rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm

下载release版本,会在yum.repos.d下面生成一个zabbix.repo的文件

3、服务端安装相关软件包
如果已经安装了数据库,这里就不用安装数据库了。

yum install -y mariadb-server mariadb zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-agent zabbix-java-gateway zabbix-sender zabbix-web-japanese

注:如果Server端也需要监控则需要安装zabbix-agent;在Centos7中,mysql改名为mariadb

4、修改PHP时区设置

sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf

注:要注意需要改的配置文件是**/etc/httpd/conf.d/zabbix.conf而不是/etc/php.ini**


数据库设置

1.启动数据库
systemctl start mariadb

2.创建zabbix数据库及用户

mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
exit

3.导入数据

cd /usr/share/doc/zabbix-server-mysql-3.0.4/
ll          #可看到有create.sql.gz文件
zcat create.sql.gz |mysql -uzabbix -p123456 zabbix

注:我们使用zcat,可以查看压缩包包,和cat基本相似;类似的还有:zgrep、zless、zdiff 等

4.修改zabbix配置文件

vim /etc/zabbix/zabbix_server.conf 
DBHost=localhost    #数据库所在主机
DBName=zabbix       #数据库名
DBUser=zabbix       #数据库用户
DBPassword=123456   #数据库密码

5.启动zabbix及apache

cp -R /usr/share/zabbix /data/wwwroot/default/      
# yum安装的zabbix默认是apache服务器的/usr/share/目录下,需要拷贝到自己的web服务器目录下

systemctl start zabbix-server
systemctl start httpd
systemctl start nginx

注:如果没有启动成功,要看一下是不是80端口被占用
如果是Nginx,拷贝web文件到网页目录(只运行zabbix则可修改网站根目录)

cp -R /usr/share/zabbix /data/wwwroot/default/
chown -R www:www /data/wwwroot/default/

6.Web管理界面的安装
访问地址:http://IP/zabbix/setup.php
点击Next step进行安装
首先要确保没有no,如果时区没有改好会提示我们进行修改

账号密码都是我们刚刚在配置文件中设置的,端口默认就是3306

为我们的zabbix起个名字,一会在右上角会显示

最后是展示我们的配置信息,可以查看到哪里有错误
点击Finish 默认账户密码是:[Admin//zabbix]

提示:登录之后请立即修改密码


配置zabbix-agent端

vim /etc/zabbix/zabbix_agentd.conf 
Server=127.0.0.1           #修改Server端的IP地址(被动模式IP地址)
ServerActive=127.0.0.1     #主动模式,主动向server端报告
systemctl start zabbix-agent

查看端口号:netstat -lntp
10051为server端口,10050为agent端口

或者脚本方式

#!/bin/bash
export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
# #######################
# Author: LeoLan
# Blog: www.leolan.top
# Data: 20170605
# ENV: Centos 7
# Script: Install Zabbix-agent
# #######################

rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

yum install -y zabbix-get zabbix-agent zabbix-sender

systemctl stop zabbix-agent

sed -i 's/LogFileSize=0/LogFileSize=1/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/Server=127.0.0.1/Server=192.168.10.101/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.10.101/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/Hostname=Zabbix server/Hostname=system.hostname/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/SELINUX=enforcing/SELINUX=disable/' /etc/selinux/config
setenforce 0
systemctl start zabbix-agent && systemctl enable zabbix-agent

# 配置防火墙
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --reload
# 或:
/sbin/iptables -I INPUT -p tcp --dport 10050 -j ACCEPT
service iptables save && service iptables restart

# 移除zabbix源,避免使用yum update时更新zabbix相关文件导致zabbix无法使用的问题(特别是使用nginx的情况)。
mv /etc/yum.repos.d/zabbix.repo /etc/yum.repos.d/zabbix.repo.bak     



源码编译安装

服务器已安装好一键LNMP,数据库用的是mariadb。

服务端

基本环境安装,不安装组件在编译时会报各种错误。

yum install -y tar svn gcc automake make nmap traceroute iptstate wget net-snmp-devel net-snmp-libs net-snmp net-snmp-perl iksemel net-snmp-python net-snmp-utils java-1.8.0-openjdk python-pip java-1.8.0-openjdk-devel mariadb-devel libxml2-devel gettext libcurl-devel OpenIPMI-devel mysql iksemel-devel libssh2-devel unixODBC unixODBC-devel mysql-connector-odbc postgresql-odbc openldap openldap-devel telnet net-tools snmptt rubygems
# 关闭SELinux
vim /etc/sysconfig/selinux
SELINUX=disabled

# 新建用户
groupadd zabbix -g 201 
useradd -g zabbix -u 201 -m zabbix

# 下载安装包
# 官网下载Zabbix Sources:https://www.zabbix.com/download
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz
tar zxvf zabbix-3.2.7.tar.gz
cd zabbix-3.2.7

# 开启大多数常用功能,如果报错,出错原因,一步一步来,不要一次性粘贴代码。这里注意mysql_config的路径可能不是这个。
./configure --prefix=/usr --sysconfdir=/etc/zabbix --with-mysql=/usr/local/mariadb/bin/mysql_config --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-unixodbc --with-ldap --with-ssh2 --enable-Java

make install
# 安装出错找原因,安装成功启动就好了。

# 服务修改
systemctl restart zabbix-server
systemctl restart zabbix-agent
systemctl enable zabbix-server
systemctl enable zabbix-agent


# 防火墙放行
vim /etc/sysconfig/iptables
# 放行10050和10051端口或关闭防火墙
systemctl disable firewalld

reboot   #重启SELinux才生效

客户端 Agent

Linux(命令稍微改一下就行)
# 下载安装包
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz
tar zxvf zabbix-3.2.7.tar.gz
cd zabbix-3.2.7

# 编译安装
./configure --prefix=/usr --sysconfdir=/etc/zabbix --enable-agent
make install

#设置
mkdir /var/log/zabbix 
useradd zabbix
chown zabbix.zabbix /var/log/zabbix 
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 
chmod 755 /etc/init.d/zabbix_agentd 
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/#g" /etc/init.d/zabbix_agentd

# 添加到系统服务
vim /etc/services 

zabbix-agent 10050/tcp #ZabbixAgent 
zabbix-agent 10050/udp #ZabbixAgent 
zabbix-trapper 10051/tcp #ZabbixTrapper 
zabbix-trapper 10051/udp #ZabbixTrapper


# 修改配置
vim /etc/zabbix/zabbix_agentd.conf

# 日志最大值,默认1M,超出会rotate
LogFileSize=1
# 被动模式下服务器地址,可以是ip或者hostname
Server=192.168.0.1
# 主动模式下服务器地址,可以ip或者hostname
ServerActive=192.168.0.1
# 被监控机的ip或hostname,注意的是该值必须和你在server的监控界面中定义的server name要保持一致
Hostname=192.168.0.2

# 重启一下agent服务
systemctl restart zabbix-agent

批量安装:https://my.oschina.net/u/2316994/blog/376916
agent配置文件详解: http://blog.chinaunix.net/uid-29155617-id-4668602.html


Windows

下载:http://www.zabbix.com/downloads/3.2.0/zabbix_agents_3.2.0.win.zip

#设置成windows服务
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe -c c:\zabbix_agents_3.2.0.win\conf\zabbix_agentd.win.conf -i
#启动
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe -s
#停止
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe -x

防火墙增加可通行程序或放行10050端口,服务自动启动
查看端口:netstat -an | find "10050"

脚本方式:

下载解压到你需要的目录,修改好配置文件。
在一级目录下新建以下两个文件
start_zabbix_agent.bat
@echo off
c:\auto_bat\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe -s

stop_zabbix_agent.bat
@echo off
c:\auto_bat\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe -x

在conf下新建
install_zabbix_agent_service.bat
@echo off
c:\auto_bat\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe -c c:\auto_bat\zabbix_agents_3.2.0.win\conf\zabbix_agentd.win.conf -i
netsh firewall set portopening TCP 10050 zabbix_agent_10050
exit

# 直接运行脚本就行了

需要卸载时,先停止服务再卸载服务,不然是无法卸载干净的,下次安装新版本时会使用老版本的文件和服务。
一键安装zabbix_agent:http://www.tuicool.com/articles/rUFjqm7


Web管理界面的安装

复制/root/zabbix-3.0.8/frontends下的PHP文件夹到web服务器根目录,改名为zabbix。
访问地址:http://IP/zabbix/setup.php 进行安装。参考yum的设置方式。


Web界面配置

找到Configuration---->Hosts 添加一台监控主机

开启后,如果出现错误我们可以看一下zabbix的日志:ls /var/log/zabbix/zabbix_
看这两个文件:zabbix_agentd.log **zabbix_server.log **

当ZBX变成绿色的时候,说明监控成功。因为我们没有配置SNMP、JMX、IPMI等。所以我发监控

因为我们现在只安装了一台服务器,所以只有一个主机。我们可以查看现在这台主机的CPU等及基本的信息

点击Monitoring-----Graphs,选择我们要监控的内容

我们选择可以随便选择一个进行查看信息
例如:我们查看CPU的负载

某一段时间内,CPU正在处理以及等待CPU处理的进程数的之和。Load Average是从另一个角度来体现CPU的使用状态的。

这些监控其实就是zabbix在数据库查找数据,然后使用jd进行画图,所以Zabbix性能依赖于mysql数据库


Zabbix页面安全设置

1、设置默认账号密码

设置完中文


Zabbix 菜单说明

Zabbix 上方的菜单简单介绍说明

Doshboard下面可以设置你想设置的图形,添加方法如下:

这时,就可以找到你喜爱的了,直接打开

screens其实就是一个聚合图形,可以把多个图片合在一起。然后放在大屏幕上,供别人查看

maps就是一个架构图

Status of Zabbix就是一个状态栏

 第一行:Server是否运行[yes]和后面的运行地址
 第二行:监控的机器 (启用的/关闭的/模板)
 第三行:监控项 (启用的/关闭的/不支持的)
 第四行:触发器的状态 (启用的/关闭的/【故障/正常】)
 第五行:当前用户数量 (在线数量)
 第六行:zabbix每秒可以收到的一个新值

告警的级别

我们可以设置报警响铃,让他在前端响

我们首页的监控列表是可以随意拖动的

我们还可以将它关闭,并且设置刷新时间

Zabbix 基础完!

参考:http://www.abcdocker.com/abcdocker/1402


Zabbix字符集乱码

Centos补全安装软件包:yum install -y bash-completion

在c:\windows\fonts下找到“楷体常规”的字符包,上传到/web目录/zabbix/fonts目录下。

find / -type f -name "defines.inc.php"
#defines.inc.php文件一般在/web目录/zabbix/include/defines.inc.php

编辑配置文件/web目录/zabbix/include/defines.inc.php:
#第一处
define('ZBX_FONT_NAME', 'DejaVuSans');
#改为
define('ZBX_FONT_NAME', 'simkai');  #去掉后缀

#第二处
define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); 
#改为
define('ZBX_GRAPH_FONT_NAME', 'SIMKAI');#去掉后缀
其中simkai为字符包的名字,不包含tty后缀

保存退出刷新zabbix web界面就生效了。


Zabbix-get

zabbix_get -h
 Zabbix get v2.2.1 (revision 40808) (09 December 2013)
usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>
Options:
 -s --host <host name or IP>          Specify host name or IP address of a host
 -p --port <port number>              Specify port number of agent running on the host. Default is 10050
 -I --source-address <IP address>     Specify source IP address
-k --key <key of metric>             Specify key of item to retrieve value for
-h --help                            Give this help
 -V --version                         Display version number
Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"

测试服务器间的连接,

zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg15]"
zabbix_get -s 127.0.0.1 -p 10050 -I 127.0.0.1 -k "system.hostname"
zabbix_get -s 192.168.30.131 -p 10050 -k "system.uptime"


Zabbix 进阶

-未完-

参考:
zabbix_server.conf配置文件详解:http://www.ttlsa.com/zabbix/zabbix_server-conf-detail/
http://itnihao.blog.51cto.com
https://www.abcdocker.com/abcdocker/1510


文章作者: Leo
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeoLan的小站
监控 zabbix
喜欢就支持一下吧