注明:以下学习过程参考了很多文档,如有问题,请留言联系!谢谢


一、系统版本

    CentOS-6.5-x86_64


二、环境

1、主机名

1.1 hostname

1.2 vim /etc/sysconfig/network

HOSTNAME=

    2、网卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0

            DEVICE=eth0   

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.2.35


    3、selinux

vim /etc/selinux/config

SELINUX=disabled

setenforce 0 #使配置立即生效


    4、时间同步

ntpdate 0.pool.ntp.org

方法二

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

vi /etc/ntp/step-tickers

加入一行:

pool.ntp.org

service ntpd start

    5、防火墙

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

iptables -I INPUT -p tcp --dport 21 -j ACCEPT

iptables -I INPUT -p tcp --dport 5901 -j ACCEPT

service iptables save

或:service iptables  stop 关闭防火墙


二、LAMP环境

        yum  -y groupinstall  "Development Tools"

1、安装Apache

        yum install -y httpd

vim /etc/httpd/conf/httpd.conf

ServerName www.domain.com:80去掉注释并把域名改成localhost或本机地址

service httpd start

chkconfig httpd on         


2、安装PHP与关联

yum -y install php php-gd php-xml php-bcmath  php-mbstring php-mysql


    3、安装Mysql

yum -y install mysql mysql-server mysql-devel

service mysqld start

chkconfig mysqld on

mysqladmin -u root password '123456'         创建数据库登陆账户和密码

查看数据库:show databases;

查看库中的表:show tables FROM zabbix


    4、测试

vim /var/www/html/index.php

<?php phpinfo(); ?>


三、安装zabbix

    1、安装依赖软件包

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc libxml2*

2、下载zabbix(可供选择的下载地址)

http://www.zabbix.com/download.php

http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/ http://jaist.dl.sourceforge.net/project/zabbix/


    3、下载,解压zabbix (在官网选择要安装的版本)

2.4

wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.0/zabbix-2.4.0.tar.gz

2.48(汉化)

http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz

2.2

wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz

tar xf zabbix

cd zabbix

4、编译

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2


注1://--prefix指定zabbix安装目录,--enable-server 支持zabbix服务器,--enable-agent支持zabbix代理,--enable-proxy 支持zabbix代理服务器,--with-mysql 使用MySQL客户端库可以选择指定路径mysql_config,--with-net-snmp 使用net - snmp软件包,择性地指定路径NET- SNMP配置,--with-libcurl 使用curl包


注2:

报错:error: MySQL library not found

安装:yum install mariadb-devel

报错:error: LIBXML2 library not found,

安装:yum install -y libxml2*

报错:error: Invalid Net-SNMP directory

安装:yum install -y net-snmp-devel

5、安装执行

make&&make install


    6、 进入zabbix目录创建用户

groupadd zabbix                                 创建用户组zabbix

useradd -g zabbix -m zabbix                     创建用户zabbix属于zabbix组

chown -R zabbix.zabbix /usr/local/zabbix   改变zabbix安装目录的拥有者和组群


    7、创建数据库

mysql -u root -p

mysql> create database zabbix character set utf8;

mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';

授权:本机能访问mysql,root用户下授权

mysql> flush privileges;    ##刷新系统授权

mysql>quit;


    8、导入数据库

在解压后的zabbix目录中执行

mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql

mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql

mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql

    10、服务器端配置文件     

        vim /usr/local/zabbix/etc/zabbix_server.conf

        DBName=zabbix        数据库名

        DBUser=zabbix        数据库登陆账户

        DBPassword=zabbix    数据登陆密码

    11、配置PHP

vi /etc/php.ini

max_input_time = 600 

# sed -i 's/max_input_time = 60/max_input_time = 600/g' php.ini

max_execution_time = 300 

# sed -i 's/max_execution_time = 30/max_execution_time = 300/g' php.ini

date.timezone = Asia/Shanghai 

post_max_size = 16M 

# sed -i 's/post_max_size = 8M/post_max_size = 16M/g' php.ini

memory_limit = 128M 

service httpd restart

12、启动设置

1、修改启动参数

修改启动脚本中的路径/usr/local改成/usr/local/zabbix

cp misc/init.d/fedora/core/* /etc/init.d/

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_server

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd

2、启动进程

echo "/etc/init.d/zabbix_server start" >> /etc/rc.local

echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local

/etc/init.d/zabbix_server start

/etc/init.d/zabbix_agentd start

ps -ef | grep zabbix   查看进程

3、开放端口

iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT

iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT

service iptables save

查看端口

netstat -npl|grep 10050

netstat -npl|grep 10051


四、页面初始化

cd zabbix-2.2.5

cp -R frontends/php/ /var/www/html/zabbix

打开:

http://192.168.2.35/zabbix/



五、客户机端安装配置

1、主机名

1.1 hostname

1.2 vim /etc/sysconfig/network

HOSTNAME=

2、依赖环境

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc

3、下载与服务器端同版本,步骤相似

编译:

./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2

4.1、客户端配置文件

vim /usr/local/zabbix/etc/zabbix_agentd.conf

Server= #修改为zabbix服务器端IP

ServerActive= #修改为zabbix服务器端IP

Hostname=Zabbix server

UnsafeUserParameters=1 #启用自定义key

5、防火墙,端口

iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT

iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT

service iptables save

或:service iptables stop

6、进入zabbix目录创建用户

groupadd zabbix                                 创建用户组zabbix

useradd -g zabbix -m zabbix                     创建用户zabbix属于zabbix组

chown -R zabbix.zabbix /usr/local/zabbix   改变zabbix安装目录的拥有者和组群

7、启动设置

1、修改启动参数

修改启动脚本中的路径/usr/local改成/usr/local/zabbix

cp misc/init.d/fedora/core/* /etc/init.d/

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd

2、启动进程

echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local

/etc/init.d/zabbix_agentd start

ps -ef | grep zabbix   查看进程

3、开放端口

iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT

iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT

service iptables save

查看端口

netstat -npl|grep 10050

netstat -npl|grep 10051

8、测试与主机的链接(在zabbix-service端)

/usr/local/zabbix/bin/zabbix_get -s 192.168.190.2 -p 10050 -k "system.uptime"

注:192.168.190.2 指agentd端IP

#有数据显示说明通信正常

9、服务重启(如不能正常重启,则使用以下方法)

查看进程

ps ax|grep zabbix_agentd

关闭进程

ps ax|grep zabbix_agentd|grep -v grep |awk '{print $1}'|xargs kill -9

启动服务

/etc/init.d/zabbix_agentd restart


六、控制台使用

1、添加主机(主机组一样的创建方法)

configuration(配置)---> Hosts(主机)---> Create host(创建主机)

1.1 Host选项

host name 主机IP

visible name (显示的名字)

Groups (组)

New host group (新建组)

Agent interfaces

IP address 被监控端IP

1.2 链接模板

configuration ---> hosts ---> Name前选择要链接的服务器 ---> 左下角(下拉菜单)选择mass update(go) ---> 模板 ---> 选择模板“Template OS liunx”

2、用户

创建新登录用户

管理 ---> 用户 ---> 右上下拉菜单处选择‘用户’ ---> 右上‘创建用户’ ---> 组群(添加超级超级管理员组) --->  添加媒介(比如邮件) ---> 许可权 ---> 保存

注:许可权 指:权限,当前用户对哪些主机有权限,选择”超级管理员“。

3、图表数据

Monitoring ---> Graphs ---> group / host / Graph

4、item(监控项)

configuration(配置)---> Hosts(主机)---> (主机) ---> (item) ---> Create item

重点:key

Name item的名字

Type item类型,采集数据的方式

key item的标识符(标记item的键),唯一,可接受参数

Type of information 采集的数据类型

Flexible intervals 采集数据间隔数据

New flexible interval   添加采集数据间隔数据

application item组

5、创建图像

5.1 Graphs

Configuration  ---> Hosts ---> Graphs ---> Create Graphs

Name 图像名

Graph type 图像类型

items (add) 添加需要加进来的item(监控项)

5.2 Screen

configuration(配置)---> Screen ---> Create Screen

6、Triggers(触发器)

6.1 表达格式:{<server>:<key>.<function>(<parameter>)}<operator><constant>

server 主机名

key 主机上关系,相应监控项(item)的key

function 评估采集到的数据是否在河里范围内时所使用的函数

parameter 函数参数

举例:

{192.168.0.104:system.cpu.load[all,avg1].last(0)}>3

说明:

主机192.168.0.104上所有CPU的过去1分钟内的平均负载的最后一次取值大于3时将触发状态变换

6.2 创建triggers(触发器)

configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers

6.2.1 Triggers(触发器)

configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers

Name (Triggers名)

Expression (定义条件)

Severity 触发级别

7、action (动作,操作)

(宏参考文档:https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location)

7.1 定义媒介

Administration ---> Media types ---> Create media type

Name:媒介名字(自定义)

Type:(媒介类型)

7.2 接收人配置

Administration ---> Users ---> (用户)---> Media ---> add:

Type: (选择上一步自定义的媒介名)

send to:(收件邮箱)

---> add ---> save


7.3设置Action

Configration ---> Action ---> Create action

1.Actions项(发送邮件的格式和内容)

Name:action的名字

Default message (信息内容)

Recovery message (转换成OK时发送信息)

2.Conditions(发送警告的条件)

Trigge = PROBLEM (触发器)

3.Operation ---> New

Step (告警级别)

Operation type (告警方式)

Send message(发送信息)

******Remote command (命令操作)

Send to User groups (发送到的用户组)

Send to Users (发送到的用户)

Send only to (选择调用脚本)

---> add ---> save

8、模板

Configration ---> Templates

Create Templates (创建模板)


七、web监控


网页状态码获取(正常值为200):

curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" www.baidu.com


1、首页是否能打开

创建application

1.1********* configuration ---> Host ---> Application ---> create application

1.2 configuration ---> Host ---> 你的主机 ---> web ---> 右上角Create scenario

scenario 主要选项:

Name:监控项的名称

Application:放到哪个应用中

Update interval:更新周期,默认60秒

Agetn:模拟浏览器

Variables:宏变量(没有可以不填)

steps 主要选项

name:当前step名称,item key中可以用到

url:需要检测的网址

POST:你需要post提交上去的内容(没有可以不填)

Timeout:超时时间,默认15秒

Required status codes:响应代码必须包含在里面,多个响应代码用逗号分隔

正常响应码为:200

web监控方案创建后自动添加以下item,可在创建trigger中直接使用

说明:使用时,Scenario换为真是方案的名称

web.test.in[Scenario,,bps]

说明:页面(step)的下载速度,默认单位bps

web.test.fail[Scenario]

说明:出现错误的步骤(步骤指监控的页面):ailed step of scenario "Scenario".

web.test.error[Web1]

说明:最后一次的错误信息:Last error message of scenario "Scenario".

web.test.in[Scenario,step,bps]

说明:页面(step)的下载速度(指定相应方案Scenario的相应步骤step)

web.test.rspcode[Scenario,step]

说明:指定步骤中的页面的响应码,页面正常的响应码为200

web.test.time[Scenario,step,resp]

说明:指定步骤中的页面的响应时间

2、登陆*********

scenario 选项:

Variables:宏变量

用来定义能登录的账号密码

user=

password

steps 主要选项

POST:你需要post提交上去的内容,

例如:使用宏变量:user={user}&password={password}&Sign in

3、验证登录*********

steps 主要选项:

Required string :Profile

4、查看结果

monitorning ---> web---> 筛选出你的主机 ---> 查看“WEB性能监控_FOR_TTLSA”,Status,显示OK 便是正常

5、监控项*********

web方案监控项当web监控项创建好之后,下面的key会被自动添加好(备注:Scenario为web方案的名称)

web.test.in[Scenario,,bps] 整个阶段中的下载速度,单位字节/秒

web.test.rspcode[Scenario,Step] 检索指定阶段的http响应代码

八、自定义邮件报警

1、linux zabbix-server端配置

mutt+msmtp下载安装:

下载MSMTP

# wget http://down1.chinaunix.net/distfiles/msmtp-1.4.30.tar.bz2 

# tar xvf msmtp-1.4.17.tar.bz2 

# cd msmtp-1.4.17 

# ./configure --prefix=/usr/local/msmtp 

# make 

# make install 

# cd /usr/local/msmtp/ 

# mkdir etc #配置文件目录和配置文件都要自己建 

# cd etc 

# vim msmtprc #手动创建配置文件 

# account default 

# host smtp.163.com

# port 25 

# from xman@163.com #要从哪个邮箱发出 

# auth login #这里如果使用on的话会报 "msmtp: cannot use a secure authentication method"错误 

# tls off 

# user xman@163.com #邮箱用户名 

# password xmanufo  #邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性 

# logfile /var/log/mmlog

保存退出。简单测试一下

/usr/local/msmtp/bin/msmtp xman@163.com 

随便输入一些内容用ctrl+d结束。然后到邮箱查看

安装MUTT 

yum -y install mutt

# vim /etc/Muttrc 

# set sendmail="/usr/local/msmtp/bin/msmtp"  

# set use_from=yes 

# set realname="fan******_007@163.com" 

# set editor="vim" 


测试一下吧!

echo "testmail" | mutt -s "测试" ufo@sina.com 

这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名


脚本路径

cd /usr/local/zabbix/share/zabbix/alertscripts/

编写sendmail脚本:

#!/bin/bash

#zabbix use msmtp+mutt sendmail script.

echo $1; #to email address.

echo $2; #title.

echo $3; #content.

echo "$3" | mutt -s "$2" $1


脚本权限:

chmod +x sendmail.sh

  

测试:

./sendmail.sh $1 $2 $3

$1 收邮件地址

$2 邮件标题

$3 邮件内容


2、控制台配置使用sendmail.sh脚本

2.1创建媒介

Administration ---> Media types ---> Create media type

# Name:媒介名字(自定义)

# Type :Script (选择脚本Script)

# Scriptname:sendmail.sh (脚本名)

2.2接收人配置

Administration ---> Users ---> (用户)---> Media ---> add:

# Type: (选择上一步自定义的媒介名)

# send to:(收件邮箱)

---> add ---> save


2.3设置Action

(宏参考文档:https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location)

Configration ---> Action ---> Create action

1.Actions项(发送邮件的格式和内容)

Name:action的名字

# Default message (信息内容)

# Recovery message (转换成OK时发送信息)

2.Conditions(发送警告的条件)

# Trigger value = PROBLEM (触发器)

3.Operation ---> New

Step (告警级别)

Operation type (告警方式,选择:Send message(发送信息))

Send to User groups (发送到的用户组)

# Send to Users (发送到的用户)

# Send only to (选择调用脚本)

# ---> add ---> save

2.4 测试

十、测试操作

1、 主机:node1 无任何模板和触发器

用户:admin

2、自定义item

选定node1对应的items ---> greate item --->

Name:Network Outbound Rating

key:net.if.out[eth0]

store value:Delta(speed per second)

application:Net

Name:Network Inbound Rating

key:net.if.in[eth0]

store value:Delta(speed per second)

application:Net

Name:CPU Switches

key:system.cpu.switches

store value:As is

application:CPU

Name:CPU Interrupts

key:system.cpu.intr

store value:As is

application:CPU

save 保存

查看各个item采集的数据图像

Monitoring  ---> Latest data ---> Graph

3、 可视图

3.1 自定义Graphs

图一: Network Outbound Rating

Network Inbound Rating

图二: CPU Switches

CPU Interrupts

3.2 自定义Screen

4、Triggers(触发器)

configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers

自定义:Network Inbound Rating 的 Triggers(触发器)

Expression (定义条件)

{node1:net.if.in[eth0].last()}>10000

Severity 触发级别

High

5、设置邮件报警

当触发Triggers,邮箱便会收到邮件

十一:本机测试

1、创建媒介

Administration ---> Media types ---> Create media type

name:localhost_mail(自定义名)

Type:Email

SMTP server:localhost

SMTP helo:localhost

SMTP email:zabbix@localhost

2、创建收件人媒介配置(测试用admin配置)

Administration ---> Users ---> (admin)---> Media ---> add:

# Type: localhost_mail

# send to:root@localhost

---> add ---> save

3、action动作配置

Configration ---> Action ---> Create action

1.Actions项(发送邮件的格式和内容)

Name:action的名字

# Default message (信息内容)

# Recovery message (转换成OK时发送信息)

2.Conditions(发送警告的条件)

# Trigger value = PROBLEM (触发器)

3.Operation ---> New

Step:1-3 (告警级别)

Operation type: (告警方式,选择:Send message(发送信息))

# Send to Users:Admin

# Send only to:localhost_mail

# ---> add ---> save


十二、自定义宏

官方参考文档:

https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location

变量可以用于如下地方:

 item 名称

 item key 参数

 触发器名称和描述

 触发器表达式

 其他地方

宏变量优先级:

 主机宏(checked first)

 主机模板定义的宏,如果有多个模板,那么按照模板越靠前那么宏的优先级越高

 全局宏(checked last)

自定义宏

定义全局宏

Administration → General → Macros

十三、自定义监控

客户端配置文件 zabbix_angentd.conf 里面配置 UserParameter=1.

语法如下:

UserParameter=<key>,<command>

示例:

1、自定义监控客户端free,(zabbix_angentd端添加)

vim zabbix-agentd.conf #zabbix-agent配置文件添加

UserParameter=memory.free,/usr/bin/free | awk '/^Mem/{print $4}'

重启zabbix_angentd

测试是否定义成功:(在zabbix_server端)

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.free"

返回了数据,即表示成功

控制台添加items

key:memory.free


灵活的自定义 key:

UserParameter=key[*],command


示例:

自定义监控cat /proc/meminfo下的所有项,[*]指/proc/meminfo下的项目参数

UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk '/^$1:/{print $$2}'


测试是否定义成功:(在zabbix_server端)

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage[Buffers]"

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage[MemFree]"

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage[MemTotal]"


控制台添加items

key:memory.usage[Buffers]

key:memory.usage[MemFree]

key: memory.usage[MemTotal]

实战:监控nginx(本机IP:192.168.0.106)

(参考文档:http://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/)

nginx status信息

curl http://127.0.0.1/ngx_status

yum安装nginx:

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

yum -y install nginx

service nginx start

配置:

cd /etc/nginx/conf.d/

vim default.conf

nginx.status开启方法:

server{

...

location /status {

stub_status on;

access_log off;

allow 192.168.0.0/16;

deny all;

}

}

nginx -t  检查语法

状态页面各项数据的意义

active connections - 当前 Nginx 正处理的活动链接数

serveraccepts handled requests - 总共处理了233851个链接,成功创建233851次握手(证明中间没有失败的),总共处理了687942个请求(平均每场握手处理了2.94个数据请求)

reading - nginx 读取到客户端的 header 信息数

writing - nginx 返回给客户端的 header 信息数

waiting - 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是Nginx已处理完正在等候下一次骑牛指令的驻留链接

nginx压力测试:

ab -n 1000 -c 100 http://192.168.0.106/status/

vim /usr/local/zabbix/etc/zabbix_agentd.conf 

修改 

UnsafeUserParameters=1

文档末尾:添加以下内容:

UserParameter=Nginx.active[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/{print $NF}'

UserParameter=Nginx.reading[*],/usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2

UserParameter=Nginx.writing[*],/usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4

UserParameter=Nginx.waiting[*],/usr/bin/curl -s "http://$1:$2/status" | grep 'Waiting' | cut -d" " -f6

UserParameter=Nginx.accepted[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/{print $$1}'

UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/{print $$2}'

UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/{print $$3}'

说明:

$1 指主机HOST(IP或域名)

$2 端口

服务器端测试:

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.106 -k "Nginx.accepted[192.168.0.106,80]"

控制台(192.168.0.105/zabbix)key

Nginx.active[192.168.0.106,80] as is

Nginx.reading[192.168.0.106,80] as is

Nginx.writing[192.168.0.106,80] as is

Nginx.waiting[192.168.0.106,80] as is

Nginx.accepted[192.168.0.106,80] delta

Nginx.handled[192.168.0.106,80] delta

Nginx.requests[192.168.0.106,80] delta

网页的http_code:

UserParameter=web.http_code:curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" 192.168.2.35/index.php


第一阶段总结:定义一次完整的监控:

1、添加主机(主机组)

2、添加item(内置的简单图形 Monitoring ---> Latest data)

3、trigger(event:OK ---> Problem,Recovery)

4、action(发通知 message(通知信息中使用宏)conditond(自定义触发条件),operation(step))

5、媒介 Administration ---> Media types

Email

Script (脚本)

6、自定义图形

1、Graphs

2、screen

7、map(拓扑图)***********

8、定义模板

configuration --->  Templates 

十四、自动发现

1、定义模板

1、创建定义模板

configuration --->  Templates ---> creat Template 

必填参数:

Template name

Visible name

Groups

New group

2、为自定义的模板添加item

configuration --->  Templates ---> 创建的模板 ---> item ---> create item

3、为创建的item创建trigger

4、为创建的item创建graphs

2、discovery(发现)设置:

configuration ---> Discovery ---> create Discovery rule(自定义发现规则)

Name

Discovery by proxy

IP range:(IP范围,如:192.168.2.1-100)

Delay (in sec):(延迟时间)

Checks (New)

Check type:zabbix agent (发现规则)

Port range:10050

Key:(获取其中监控的一个key作为获取的手段)

Device uniqueness criteria: IP address

3、action添加主机:(添加主机:定义接口,关联模板)

configuration ---> Action ---> Event source:(discovery) ---> create action

1、action

Name

2、Conditions (发现条件)

New condition

Host IP=

Discovery rule = 

Discovery status = Discovered

3、operations (发现后的操作)

Add host (添加发现的主机)

Link to templates: Test-Template (为添加的主机连接测试模板)

自动注册

configuration ---> Action --->Event source:(Auto registration) ---> create action

4、移除主机

configuration ---> Action ---> Event source:(discovery) ---> create action

1、action

Name

2、Conditions

Discovery status = "Lost"

Host IP=

3、operations (发现后的操作)

Remove host


十五、分布式环境中使用zabbix_proxy

1、依赖环境

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc

2、proxy安装配置

下载,解压zabbix (在官网选择要安装的版本)

2.4

wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.0/zabbix-2.4.0.tar.gz

2.48(汉化)

http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz

2.2

wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz

3、下载与服务器端同版本,步骤相似

编译:

./configure --prefix=/usr/local/zabbix --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl 

注:如需监控proxy端,可安装:--enable-agent

make && make install


4、安装mysql

yum -y install mysql mysql-server mysql-devel

service mysqld start

chkconfig mysqld on

mysqladmin -u root password '123456'         创建数据库登陆账户和密码

查看数据库:show databases;

查看库中的表:show tables FROM zabbix


5、创建数据库

mysql -u root -p

mysql> create database zabbix_proxy character set utf8;

注:创建数据库 zabbix_proxy

mysql> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';

授权:本机能访问mysql的zabbix_proxy库,root用户下授权

mysql> grant all on zabbix_proxy.* to zabbix@'192.168.%.%' identified by 'zabbix';

授权:192.168.网段的用户能访问mysql的zabbix_proxy库,root用户下授权

注:在其他服务器登录

mysql -u zabbix -h192.168.%.% -p

mysql> flush privileges;    ##刷新系统授权

mysql>quit;


6、导入数据库

在解压后的zabbix目录中执行

mysql -uzabbix -pzabbix -hlocalhost zabbix_proxy < database/mysql/schema.sql

7、配置文档

vim /usr/local/zabbix/etc/zabbix_proxy.conf

Server= #zabbix-server端IP

Hostname= #必须和控制台端的Proxy name 保持一直,建议使用IP

DBHost=localhost #数据库主机

DBName=zabbix_proxy #数据库名,与前面创建的数据名一定要相同

DBUser=zabbix #数据库登录用户

DBPassword= zabbix #数据库密码

ConfigFrequency=1 #默认3600秒,建议修改为短时间

DataSenderFrequency=10 #默认1秒,建议修改为10-30秒

ProxyOfflineBuffer=1 #默认1小时


8、进入zabbix目录创建用户

groupadd zabbix                                 创建用户组zabbix

useradd -g zabbix -m zabbix                     创建用户zabbix属于zabbix组

chown -R zabbix.zabbix /usr/local/zabbix  

9、启动设置******

/usr/local/zabbix/sbin/zabbix_proxy

查看proxy端是否启动

ss -tanlp

重启方法:同zabbix-agentd端重启方法

10、需要被proxy监控的host的zabbix_agentd.conf的Server=指向proxy的IP

11、配置zabbix-server控制台端

11.1、创建proxy

Administration ---> DM ---> creat proxy

必填选项:

Proxy name

#必须和zabbix_proxy.conf配置文件的Hostname=保持一致

Proxy mode:Active

11.2、创建主机

Configuration ---> Hosts ---> creat host

必填选项:

Host name

Visible name

Agent interfaces

Monitored by proxy

重点:选择创建proxy时的Proxy name

11.3、创建item、trigger或嵌套模板


十六、监控Windows

1、agents端win版下载(官方下载)

conf目录存放是agent配置文件 bin文件存放windows下32位和64位安装程序

示例:

c:/zabbix

c:/zabbix/bin/ 

c:/zabbix/conf/ 

c:/zabbix/logs/

2、配置与安装

2.1 配置zabbix agent相关配置。

找到conf下的配置文件 zabbix_agentd.win.conf ,修改以下参数:

LogFile=c:/zabbix/logs/ #日志路径

Server #zabbix-server端IP

Hostname #本机名

ServerActive #zabbix-server端IP


3、启动

开始  ---> 运行 ---> CMD

cd c:\zabbix\bin

zabbix-agentd.exe -c c:\zabbix\conf/zabbix_agentd.win.conf  

安装成Windows服务

service.msc 开始Windows服务控制台--->开启服务

netstat -an   查看端口是否被监控

4、控制台设置

添加主机、item、trigger


十七、监控类型

zabbix agent

zabbix 自带的客户端程序(被动模式)

需要注意的是,server 检索数据有超时限制,最大超时时间 30 秒,如果检索数据经常超过 30 秒,那么,不建议你使用主动模式的agent

zabbix agent (active )

agent主动模式

simple check

基本的检测,可以检测网络、端口、fping 这些,功能很少并且无需安装客户端。

snmp check

适用于以下场景:

客户基于安全考虑,不同意安装agent

路由器、打印机等无法安装的设备



十八、维护模式

Configuration(配置) → Maintenance(维护)—>点击 Create maintenance period (创建维护周期)

Maintenance

Maintenance type 维护类型

With data collection – 依旧收集数据

No data collection– 暂停收集数据

Active since   维护周期开始时间

Active till   维护结束时间

Periods:维护周期

十九、zabbix命令

19.1、zabbix_server

启动zabbix_server端

zabbix_server -c <file>

<file> 指配置.conf文件路径

19.2、获取agent端的key的数据

zabbix_get -s --host<hostname or IP> -p <post> -k --key <key of metric>

--host<hostname or IP> 指客户端主机名或IP

<post> 指监控端口

--key <key of metric>  指客户端的key

实例

./zabbix-get -s 127.0.0.1 -p 10050 -k "system.hostname"

19.3、zabbix_agentd

启动zabbix_agentd端

zabbix_agentd -c <file>

<file> 指配置.conf文件路径

19.4、zabbix_proxy 

启动 zabbix_proxy 端

zabbix_proxy -c <file>

<file> 指配置.conf文件路径

二十、优化

1、操作系统优化

2、数据库优化

3、数据库分离

4、数据库引擎

mysql5.6或更高的版本

5、其他优化

减少item获取时间

减少不必要的监控项


终章:实战

zabbix监控

puppet_master

mem cached

mysql (master)

mysql (slave)

nginx(mogilefs) amoeba

mogilefs mogstored

tomcat













其它:

zabbix-service端安装配置,页面初始化“简易脚本”


#!/bin/bash

#

# 环境

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc libxml2*

# 下载安装

cd /usr/local/src

wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz

tar xf zabbix-2.2.5.tar.gz

cd zabbix-2.2.5

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2

make && make install

# 创建用户

groupadd zabbix

useradd -g zabbix -m zabbix

chown -R zabbix.zabbix /usr/local/zabbix

# 数据库设置

mysql -u root -p123456 -e "

create database zabbix character set utf8;

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

flush privileges;

quit"

#数据库导入

mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql

mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql

mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql

# 修改配置文件:zabbix_server.conf

cd /usr/local/zabbix/etc/

sed -i 's/DBUser=root/DBUser=zabbix/g' zabbix_server.conf

echo DBPassword=zabbix >> zabbix_server.conf

# 修改php配置文件

cd /etc/

sed -i 's/max_input_time = 60/max_input_time = 600/g' php.ini

sed -i 's/max_execution_time = 30/max_execution_time = 300/g' php.ini

sed -i 's/post_max_size = 8M/post_max_size = 16M/g' php.ini

echo 'date.timezone = Asia/Shanghai' >> php.ini

service httpd restart

# 启动设置

cd /usr/local/src/zabbix-2.2.5/

cp misc/init.d/fedora/core/* /etc/init.d/

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_server

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd

echo "/etc/init.d/zabbix_server start" >> /etc/rc.local

echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local

/etc/init.d/zabbix_server start

/etc/init.d/zabbix_agentd start

cp -R frontends/php/ /var/www/html/zabbix