首页 > 技术文章 > zabbix的安装部署及自定义监控的实现

huandada 2018-08-03 18:13 原文

此篇感谢我的小师傅。

1. Zabbix主要功能和优劣势说明

1. Zabbix主要功能和优劣势说明

1.1 Zabbix主要功能:

1Application monitoring 应用监控

数据库/SSH/Apache/Nginx等应用程序的监控。

2)Server monitoring 服务器监控

CPU,内存,SWAP,磁盘空间,网卡流量的监控等,可以通过浏览器实时查看Grafana。

3)Network monitoring 网络设备监控

支持Cisco, Juniper, 3Com等网络设备,网络设备通过SNMP(SNMP (v1,v2,v3) devices)协议进行监控。

4)添加自定义监控,对于Zabbix无法满足的监控,可以添加自定义监控。

1.2 Zabbix 主要优势:

1)安装配置简单,支持多种语言,包括中文。

2)系统自带多种监控模板,可以直接使用,能够满足企业大多数需求。

3)支持分布式部署和WEB集中管理(通过WEB页面设置或查看报警结果)。

  4)自动发现主机和网络设备(discovery of file systems,network interfaces,hosts and netwrok devices)。

  5)WEB监控:可以监控WEB下载速度,返回码及响应时间。

6)提供实时和历史的监控分析数据,可自定义数据存储时长,方便调用可查看。

  7)EMAIL报警,按照故障级别|服务器类型|业务类型发送EMAIL邮件到相关负责人。

8)数据可视化,以图形的方式展示出来,而不是一大堆代码。

9)报警后可自动在agent端运行一些命令,这些命令可以使获取运维人员需要的信息,也可以是自动修复,比如重启服务等----触发报警后可以远程执行命令。

1.3 Zabbix主要劣势:

1)需要在被监控机器上面安装agent。

2)All configuration information都存储在数据库里面,数据库是整个监控平台的瓶颈。

1.3.1 Zabbix部分名词的定义:

l Zabbix ServerZabbix的控制中心收集数据写入数据库都是它的工作

l Zabbix Agent部署在被监控服务器上的一个进程负责和Zabbix Server交互执行命令

l Host:广义上的服务器,大多数指代的是刀片机这类,在少部分时间会指代包括交换机在内的,被Zabbix监控的实体。

l Item对于某一个指标的监控对应的是Item英文原意是“物品”。比如某台服务器的CPU负债就是一个Item

l Trigger一些逻辑规则的组合他有三个值正常异常未知

l ActionTrigger符合某个值的时候Zabbix会进行的操作比如最常见的发邮件

2. Zabbix分布式部署需求分析

目前最新版本为3.2,以3.0为例说明:

官方推荐的软件配置:

Name

平台

CPU /内存

数据库

监控主机

小型规模

CentOS

虚拟设备

MySQLInnoDB引擎

100

中型规模

CentOS

2CPU核心/ 2GB

MySQLInnoDB引擎

500

大型规模

红帽企业版Linux

4CPU核心/ 8GB

RAID10MySQLInnoDBPostgreSQL

> 1000

很大型

红帽企业版Linux

8CPU内核/ 16GB

快速RAID10MySQLInnoDBPostgreSQL

> 10000

 

Software

Version

Comments

MySQL

5.0.3 or later

Required if MySQL is used as Zabbix backend database. InnoDB engine is required.

3.1分布式部署拓扑图

补充说明:

proxy部署为主动模式(Active)时,Zabbix Server的负载最小。

 1)Server:负责把数据写入到数据库,然后通过Apache|Nginx +php在WEB前端显示。

 2)Proxy:帮助server采集被监控端的数据,并把采集到的数据主动传送给Server,proxy只负责数据收集。

 3)Database:所有的配置信息都存储在数据库里面,Zabbix server数据库和proxy数据库必须独立。

 4)Agent:agent的作用就是获取host数据,然后将收集到的数据发送给server(主动模式),或者是server主动来拿取数据(被动模式)。

 5)Email:通过Qmail|postfix的SMTP负责报警邮件的发送(故障邮件和故障恢复邮件)。

效果预览图:

3.2 Zabbix分布式安装部署:

安装服务端:

Server

下载yum源

#cd /etc/yum.repos.d/

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

#yum clean all

#yum check-update

 #yum install zabbix-server-mysql zabbix-web zabbix-agent  zabbix-web-mysql zabbix-sender zabbix-get  -y

 对服务器端来说,如果自己不监控自己zabbix-agentzabbix-sender可以不装

 

 安装web GUI

~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml

~]# yum install zabbix-web zabbix-web

 

 安装数据库

 ~]#yum install mariadb-server.x86_64

 

 创建Zabbix使用的数据库

 ~]#mysql -uroot -p

 MariaDB [(none)]>create database zabbix default charset utf8;

 

 授权Zabbix连接的账号密码

 MariaDB [(none)]> grant all on zabbix.* to USERNAME@'X.X.X.X' identified by 'PASSWORD'; (最大权限有点危险)

grant all on zabbix.* to zabbix@"localhost" identified by "zabbix";

grant all on zabbix.* to zabbix@"%" identified by "zabbix";

MariaDB [(none)]> flush privileges;

 

 Server端数据库初始化

2.x版本:三个sql脚本;

3.x版本:一个sql脚本;

~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/

~]# gzip  -d  create.sql.gz

~]# mysql –hx.x.x.x  -uUSERNAME -p PASSWORD < create.sql(如果有报错写成-h127.0.0.1

 

zabbix server配置启动

配置文件:/etc/zabbix/zabbix_server.conf

配置段:

~]# grep "^#####" zabbix_server.conf

############ GENERAL PARAMETERS #################

############ ADVANCED PARAMETERS ################

####### LOADABLE MODULES #######

####### TLS-RELATED PARAMETERS #######

通用参数:

ListenPort=10051(无需修改,默认就行)

SourceIP=

LogType=file

LogFile=/var/log/zabbix/zabbix_server.log

LogFileSize=0

DebugLevel=3

(以上默认都不需要改,按需求)

DBHost=localhost

DBName=zabbix(默认数据库名字就是zabbix,可以不改,看你的数据库名字)

DBUser=zabbix

DBPassword=zabbix

DBSocket=/tmp/mysql.sock(如果默认安装在同一台服务器此路径在/var/lib/mysql/mysql.sock下,就不会用到下面的3306端口了,基于127.0.0.1访问的)

DBPort=3306

启动

~]#systemctl start zabbix-server.service

 
配置zabbix-web:

配置php的时区设定:

(1) /etc/php.ini (对全局都生效)

(2) /etc/httpd/conf.d/zabbix.conf(只对zabbix生效) 

改为  php_value date.timezone Asia/Shanghai

 

 systemctl restart httpd

Agent

~]# yum install zabbix-agent zabbix-sender –y

 

 配置文件:/etc/zabbix/zabbix_agentd.conf

############ GENERAL PARAMETERS #################

##### Passive checks related

被动监控相关配置,agent要等待server主动过来拉取数据;

##### Active checks related

主动监控相关配置,agent端主动向server周期性发送数据;

############ ADVANCED PARAMETERS #################

####### USER-DEFINED MONITORED PARAMETERS #######

用户自定义参数

####### LOADABLE MODULES #######

####### TLS-RELATED PARAMETERS #######                        

 

##### Passive checks related

Server=IP1, IP2, ...(指的是定义了允许哪些地址的主机过来获取数据,授权哪些服务器获取数据 

ListenPort=10050

ListenIP=0.0.0.0 

StartAgents=3(启动的agent进程数量)

 

##### Active checks related

ServerActive=IP1[:port], IP2[:port], ...(发送到哪台主机,即代理服务器或zabbix-server ip)

Hostname=Unique_HOSTNAME(用来向服务器端表明当前主机的识别名,至关重要)

必须与服务器配置的监控主机的主机名称保持一致;

 

启动服务:

systemctl start zabbix-agent.service

zabbix的web页面访问:

ip:80/zabbix

端口都不需要改,0代表默认。zabbix server detail里的Name也不需要填

用户名密码默认为:Admin / zabbix

-----------------------------------------------------------------------------------

zabbix 自定义脚本监控的实现

1.监控oracle的进程数:

zabbix-agent端:

 

使用脚本获取oracle的进程数

 vim /etc/zabbix/bash/oracle_session.sh(权限)

#!/bin/bash

source /home/oracle/.bash_profile#查询使用的数据库的账户/密码

sqlplus -s zibbix/密码 <<EOF  

set heading off

set feedback off

set pagesize 0

set verify off

select count(*) from v\$session;

EOF

 

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=oracle_session[*],sudo /bin/bash /etc/zabbix/bash/oracle_session.sh | /bin/sed  's/[[:space:]]*//g'

#因为取出的数据前边有空格,故sed去掉空格。

 

vim /etc/sudoers

# Defaults    requiretty

zabbix ALL=(ALL) NOPASSWD: ALL

 

重启服务:

 service zabbix-agent restart

 再配置web界面对应的监控项。见下有例子

 

在zabbix-server的命令行查看数据获取:

zabbix_get  -s agentip  -p 监听端口 -k  “监控项对应的key”

zabbix_get  -s  10.100.x.x  -p  10050  -k  "orabbix-sessions"

 

2.监控日志的交易平均返回时间(步骤同上)

 脚本获取agent上日志中的交易平均返回时间

vim /etc/zabbix/bash/channel_ARTime.sh

#!/bin/bash

dir=$1

DAY=`date +'%d'`

TRC=/home/$1/trc/$DAY

FILE=`ls $TRC/$2`

tail -n 1000 $FILE | grep -a connector | tail -n 30 | awk -F '|' '{print $5}' | awk '{sum+=$1} END {printf "%d\n",sum/NR}'

 

vim /etc/zabbix/zabbix_agentd.conf  

UserParameter=muniefsbart[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTimeTime.sh $1 muniefsb_*.trc

UserParameter=tpospay1art[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTime.sh $1 tpospay1_*.trc

UserParameter=tposmsg1art[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTime.sh $1 tposmsg1_*.trc

UserParameter=tposfne1art[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTime.sh $1 tposfne1_*.trc

#以上$1zabbix-server web界面配置监控项的key[]括号中输入值(此处为用户)。 xxx.trc为不同服务对应的不同日志

 

 

 

 

 

 

推荐阅读