Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1809116
  • 博文数量: 636
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3950
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-06 21:58
个人简介

博客是我工作的好帮手,遇到困难就来博客找资料

文章分类

全部博文(636)

文章存档

2024年(5)

2022年(2)

2021年(4)

2020年(40)

2019年(4)

2018年(78)

2017年(213)

2016年(41)

2015年(183)

2014年(66)

我的朋友

分类: 系统运维

2017-03-17 17:58:33

                    服务端部署

备份原有的yum


[root@ns1 ~]# find /etc/yum.repos.d/ -name '*.repo' -exec mv {} {}.back \;


#配阿里云yum源


[root@ns1 ~]# vim /etc/yum.repos.d/aliyun.repo 

[aliyun]

name=centos6

baseurl=

enabled=1

gpgkey=RPM-GPG-KEY-CentOS-6

gpgcheck=1


[epel]

name=Extra Packages for Enterprise Linux 6 - $basearch

baseurl=

       

failovermethod=priority

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6


安装前端web


[root@ns1 ~]yum -y install httpd php php-mysql mysql-server 


[root@ns1 ~]service httpd start



修改数据库配置文件,把编码改为utf8


[root@ns1 ~]vim /etc/my.cnf

[mysqld]

default-character-set=utf8


[root@ns1 ~]service mysqld start


加入开机自启动


[root@ns1 ~]chkconfig httpd on

[root@ns1 ~]chkconfig mysqld on


安装zabbix服务端


[root@ns1 ~]#yum -y install zabbix22-server

初始化数据库


[root@ns1 ~]#  mysql -uroot <

delete from mysql.user where user='';

update mysql.user set password=password('123') where user='root';

delete from mysql.db where user='';

flush privileges;


create database zabbix default charset utf8;


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


END

找出要导入数据库的数据文件


[root@ns1 ~]# find /usr/share/zabbix-mysql/ -name '*.sql'


/usr/share/zabbix-mysql/images.sql

/usr/share/zabbix-mysql/data.sql

/usr/share/zabbix-mysql/schema.sql


导入数据,这里要注意导入的顺序


[root@ns1 ~]#  mysql -uzabbix -p123 zabbix < /usr/share/zabbix-mysql/mysql.sql

[root@ns1 ~]#  mysql -uzabbix -p123 zabbix

[root@ns1 ~]#  mysql -uzabbix -p123 zabbix


修改zabbix的配置文件,按照自己之前的配置修改数据库名,用户名,密码


[root@ns1 ~]# vim /etc/zabbix/zabbix_server.conf


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

LogFileSize=0

PidFile=/var/run/zabbix/zabbix_server.pid

DBName=zabbix

DBUser=zabbix

DBPassword=123

DBSocket=/var/lib/mysql/mysql.sock   

SNMPTrapperFile=/var/log/snmptt/snmptt.log

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts


启动zabbix


[root@ns1 ~]#  /etc/init.d/zabbix-server start 

Starting Zabbix server:    

                                [确定]

[root@ns1 ~]# chkconfig zabbix-server on



[root@ns1 ~]# netstat -tnlp |grep zabbix


tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      28656/zabbix_server 

tcp        0      0 :::10051                    :::*                        LISTEN      28656/zabbix_server


安装zabbix-web


[root@ns1 ~]# yum -y install zabbix22-web zabbix22-web-mysql


修改php的配置,zabbix有配置要求,具体在web界面安装时会有提示,注意时区是否一致


[root@ns1 ~]#  vim /etc/php.ini 

 440 max_execution_time = 300

 449 max_input_time = 300

 729 post_max_size = 16M

 946 date.timezone = 'Asia/Shanghai'


[root@ns1 ~]#  service httpd restart

此时可进入web界面安装了

本机登录:

非本机登录注意selinux,防火墙


[root@ns1 ~]# setenforce 0

[root@ns1 ~]# iptables -F




           客户端配置


[root@www ~]# find /etc/yum.repos.d/ -name '*.repo' -exec mv {} {}.back \;


#配置阿里云yum


[root@www ~]# vim /etc/yum.repos.d/aliyun.repo 

[aliyun]

name=centos6

baseurl=

enabled=1

gpgkey=RPM-GPG-KEY-CentOS-6

gpgcheck=1


[epel]

name=Extra Packages for Enterprise Linux 6 - $basearch

baseurl=

       

failovermethod=priority

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6



[root@www ~]# yum -y install zabbix22-agent.x86_64 



[root@www ~]# service zabbix-agentd start


[root@www ~]# chkconfig zabbix-agent on


[root@www ~]# cd /etc/zabbix/


[root@www zabbix]# cp zabbix_agent.conf zabbix_agent.conf.bak 


[root@www zabbix]# vim zabbix_agent.conf


Server=192.168.1.111            #服务端ip地址



[root@www ~]# vim /etc/zabbix_agentd.conf 


Server=192.168.1.111

ServerActive=192.168.1.111


[root@www zabbix]# service zabbix-agentd restart


部署完成后在服务端测试,能获取到客户端主机名,说明服务端能对客户端进行监控


[root@ns1 ~]# zabbix_get -s 192.168.1.102 -k system.hostname




1.官方文档地址:

https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages


2.导入源:

rpm -ivh


3.安装zabbix包

yum install zabbix-server-mysql zabbix-web-mysql


清楚的看一下要安装那些包(httpd php基本都依赖安装了)

Package                                Arch                      Version                                   Repository                  Size

=====================================================================================================================

Installing:

 zabbix-server-mysql                    x86_64                    3.0.1-1.el7                               zabbix                     1.7 M

 zabbix-web-mysql                       noarch                    3.0.1-1.el7                               zabbix                     3.5 k

Installing for dependencies:

 OpenIPMI-libs                          x86_64                    2.0.19-11.el7                             base                       501 k

 OpenIPMI-modalias                      x86_64                    2.0.19-11.el7                             base                        15 k

 dejavu-fonts-common                    noarch                    2.33-6.el7                                base                        64 k

 dejavu-sans-fonts                      noarch                    2.33-6.el7                                base                       1.4 M

 fping                                  x86_64                    3.10-4.el7                                epel                        46 k

 httpd                                  x86_64                    2.4.6-40.el7.centos                       base                       2.7 M

 httpd-tools                            x86_64                    2.4.6-40.el7.centos                       base                        82 k

 iksemel                                x86_64                    1.4-6.el7                                 epel                        50 k

 libtool-ltdl                           x86_64                    2.4.2-21.el7_2                            updates                     49 k

 libzip                                 x86_64                    0.10.1-8.el7                              base                        48 k

 mailcap                                noarch                    2.1.41-2.el7                              base                        31 k

 net-snmp-libs                          x86_64                    1:5.7.2-24.el7                            base                       747 k

 php                                    x86_64                    5.4.16-36.el7_1                           base                       1.4 M

 php-bcmath                             x86_64                    5.4.16-36.el7_1                           base                        56 k

 php-cli                                x86_64                    5.4.16-36.el7_1                           base                       2.7 M

 php-common                             x86_64                    5.4.16-36.el7_1                           base                       563 k

 php-gd                                 x86_64                    5.4.16-36.el7_1                           base                       126 k

 php-ldap                               x86_64                    5.4.16-36.el7_1                           base                        51 k

 php-mbstring                           x86_64                    5.4.16-36.el7_1                           base                       503 k

 php-mysql                              x86_64                    5.4.16-36.el7_1                           base                        99 k

 php-pdo                                x86_64                    5.4.16-36.el7_1                           base                        97 k

 php-xml                                x86_64                    5.4.16-36.el7_1                           base                       124 k

 t1lib                                  x86_64                    5.1.2-14.el7                              base                       166 k

 unixODBC                               x86_64                    2.3.1-11.el7                              base                       413 k

 zabbix-web                             noarch                    3.0.1-1.el7                               zabbix                     3.3 M

Transaction Summary

=============================================================================================================================================

Install  2 Packages (+25 Dependent packages)

Total download size: 17 M



4.我们给本机也安装上客户端(如果服务端不需要监控略过此步)


yum install zabbix-agent



5.安装mysql数据库


CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。用mariadb也行。我还是选择了mysql


#导入安装源


rpm -ivh mysql-community-release-el7-5.noarch.rpm


#用 yum 安装 Mysql


yum install mysql-community-server

systemctl enable mysqld  #设置开机启动

systemctl start mysqld   #启动服务


=================================================

备注:1 mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码


      2 grep 'temporary password' /var/log/mysqld.log 找到root默认密码


      3 mysql5.7默认安装了密码安全检查插件(validate_password)


默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误

===================================================

#修改root本地登录密码

mysqladmin -u root  -p oldpass password "Admin@123"

#登录mysql

mysql -uroot -p

mysql> create database zabbix character set utf8 collate utf8_bin;

Query OK, 1 row affected (0.00 sec)

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

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye


(2)进入到这个目录


cd /usr/share/doc/zabbix-server-mysql-3.0.8


运行命令


zcat create.sql.gz | mysql -uroot -p zabbix


6.启动zabbix server服务


修改配置文件:


vi /etc/zabbix/zabbix_server.conf


DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=Admin@123


备注:实际上我的配置文件修改的是DBHost和DBPassword去掉前面的#号。


启动zabbix服务,设置开机自启动


systemctl start zabbix-server

systemctl enable zabbix-server



7.编辑zabbix前端的PHP配合配置


vi /etc/httpd/conf.d/zabbix.conf


php_value max_execution_time 300

php_value memory_limit 128M

php_value post_max_size 16M

php_value upload_max_filesize 2M

php_value max_input_time 300

php_value always_populate_raw_post_data -1

php_value date.timezone Asia/Shanghai

备注:实际上我就是修改了时区


启动apache服务,设置开机自启动

systemctl start httpd

systemctl enable httpd


8.登陆zabbix

显示的界面 




Zabbix之配置文件详解


zabbix的配置文件一般有三种:


zabbixserver的配置文件zabbix_server.conf

zabbixproxy的配置文件zabbix_proxy.conf

zabbix_agentd的配置文件zabbix_agentd.conf


  1. zabbixserver的配置文件:


NodeID=0 #分布式节点id号,0代表是独立服务器,默认是被注释掉的,不强制配置 

ListenPort=10051 #zabbix server的端口,默认是10051,可以自行修改, 


范围是1024-32767 ,一般默认即可 


SourceIP=  #连接的源ip地址,默认为空,默认即可 


LogFile=/tmp/zabbix_server.log #日志文件的存放位置 


LogFileSize=1 #日志文件的大小,单位为MB,当设置为0时,表示不仅行日志轮询, 

默认设置为1,默认即可 


DebugLevel=3 #指定调试级别,默认即可 


PidFile=/tmp/zabbix_server.pid #pid文件的存放位置 


DBHost=localhost #数据库主机名,当设置为localhost时,连接mysql通过sock 

DBName=zabbix #指定存放zabbix数据数据库的名字 

DBUser=zabbix #指定连接数据库的用户名 

DBPassword=123456 #用户连接数据库需要的密码 


DBSocket=/var/lib/mysql/mysql.sock #前文主机设置为localhost,用户 

连接数据库所用的sock位置, 


DBPort=3306 #数据库的端口号,当用sock连接时,无关紧要,当通过网络连接时需设置 


StartPollers=5 #默认即可 

StartIPMIPollers=0 #使用IPMI协议时,用到的参数 

StartTrappers=5 #打开的进程数, 

StartPingers=1 同上 

StartDiscoverers=1 

StartHTTPPollers=1 

JavaGateway=127.0.0.1 #JavaGateway的ip地址或主机名 

JavaGatewayPort=10052 #JavaGateway的端口号 

StartJavaPollers=5 #开启连接javagatey的进程数 


SNMPTrapperFile=/tmp/zabbix_traps.tmp 

StartSNMPTrapper=0 #如果设置为1,snmp trapper进程就会开启 


ListenIP=0.0.0.0 #监听来自trapper的ip地址 


ListenIP=127.0.0.1 

HousekeepingFrequency=1 #zabbix执行Housekeeping的频率,单位为hours 


MaxHousekeeperDelete=500 #每次最多删除历史数据的行 


SenderFrequency=30 #zabbix试图发送未发送的警报的时间,单位为秒 


CacheSize=8M #缓存的大小 


CacheUpdateFrequency=60#执行更新缓存配置的时间,单位为秒数 


StartDBSyncers=4 

HistoryCacheSize=8M 

TrendCacheSize=4M 

HistoryTextCacheSize=16M 

NodeNoEvents=0 

NodeNoHistory=0 

Timeout=3 

TrapperTimeout=300 

UnreachablePeriod=45 

UnavailableDelay=60 

UnreachableDelay=15 


AlertScriptsPath=/usr/local/zabbix/shell #脚本的存放路径


FpingLocation=/usr/local/sbin/fping #fping指令的绝对路径 


SSHKeyLocation= 

LogSlowQueries=0 

TmpDir=/tmp

Include=/usr/local/etc/zabbix_server.general.conf 


Include=/usr/local/etc/zabbix_server.conf.d/ #子配置文件路径 


StartProxyPollers=1 #在zabbix proxy被动模式下用此参数 


ProxyConfigFrequency=3600#同上 

ProxyDataFrequency=1



zabbixagentd的配置文件


PidFile=/tmp/zabbix_agentd.pid #pid文件的存放位置 

LogFile=/tmp/zabbix_agentd.log #日志文件的位置 


LogFileSize=1 #当日志文件达到多大时进行轮询操作 


DebugLevel=3 #日志信息级别 


SourceIP= #连接的源ip地址,默认为空,即可 


EnableRemoteCommands=0 #是否允许zabbix server端的远程指令


0表示不允许, 

1表示允许 


LogRemoteCommands=0 #是否开启日志记录shell命令作为警告 0表示不允许,1表示允许 


Server=127.0.0.1 #zabbix server的ip地址或主机名,可同时列出多个,需要用逗号隔开 

ListenPort=10050 #zabbix agent监听的端口 

ListenIP=0.0.0.0 #zabbix agent监听的ip地址 


StartAgents=3 #zabbix agent开启进程数 

ServerActive=127.0.0.1 #开启主动检查 


Hostname=Zabbix server#在zabbix server前端配置时指定的主机名要相同,最重要的配置 


RefreshActiveChecks=120 #主动检查刷新的时间,单位为秒数 

BufferSend=5 #数据缓冲的时间 

BufferSize=100 #zabbix agent数据缓冲区的大小,当达到该值便会发送所有的数据到zabbixserver


MaxLinesPerSecond=100 #zabbix agent发送给zabbix server最大的数据行 


AllowRoot=0 #是否允许zabbix agent 以root用户运行 


Timeout=3 #设定处理超时的时间 


Include=/usr/local/etc/zabbix_agentd.userparams.conf 


Include=/usr/local/etc/zabbix_agentd.conf.d/ #包含子配置文件的路径 


UnsafeUserParameters=0 #是否允许所有字符参数的传递 

UserParameter= #指定用户自定义参数


zabbixproxy的配置文件


Server=192.168.70.133#指定zabbix server的ip地址或主机名 

Hostname=zabbix-proxy-1.35 #定义监控代理的主机名,需和zabbix server前端配置时指定的节点名相同 

LogFile=/tmp/zabbix_proxy.log #指定日志文件的位置 

PidFile=/tmp/zabbix_proxy.pid #pid文件的位置 

DBName=zabbix_proxy #数据库名 

DBUser=zabbix #连接数据库的用户 

DBPassword=123456#连接数据库用户的密码 


ConfigFrequency=60 #zabbix proxy从zabbix server取得配置数据的频率 


DataSenderFrequency=60 #zabbix proxy发送监控到的数据给zabbix server的频率





                zabbix清理历史数据

zabbix属于一个细度化的监控工具,其入库数据随着细度的增加相应的入库数据量也会较大,当数据量到一定时候的时候其反映速度会比较慢,尽管其监控服务在配置时可以指定数据的保存周期, 但是了解下通过直接操作数据库进行数据删除还是有必要的。


通过数据库进行删除的脚本如下:


#!/bin/bash

User="root"

Passwd="361way"

Date=`date -d $(date -d "-30 day" +%Y%m%d) +%s` #取30天之前的时间戳

$(which mysql) -u${User} -p${Passwd} -e "

use zabbix;

DELETE FROM history WHERE 'clock' < $Date;

optimize table history;

DELETE FROM history_str WHERE 'clock' < $Date;

optimize table history_str;

DELETE FROM history_uint WHERE 'clock' < $Date;

optimize table history_uint;

DELETE FROM  trends WHERE 'clock' < $Date;

optimize table  trends;

DELETE FROM trends_uint WHERE 'clock' < $Date;

optimize table trends_uint;

DELETE FROM events WHERE 'clock' < $Date;

optimize table events;

"

注:其中histroy是详细的历史数据,trends是图表趋势数据。一般情况下,根据我的自定义,会将histroy数据保留7天,trend数据保留365天。


             zabbix_get命令


在zabbix server上执行zabbix_get命令来试着获取item值


zabbix_get命令详解


    命令在zabbix安装目录bin下,如果是window命令自然是zabbix_get.exe,使用方法都是一样的

。端口和源(绑定)IP是可选的,其他参数不能漏掉



# /usr/local/zabbix-2.2.1/bin/zabbix_get -h


 Zabbix get v2.2.1 (revision 40808) (09 December 2013)

usage: zabbix_get [-hV] -s [-p ] [-I ] -k

Options:

 -s --host          Specify host name or IP address of a host

 -p --port              Specify port number of agent running on the host. Default is 10050

 -I --source-address     Specify source IP address

-k --key             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]"



参数说明:

-s --host: 指定客户端主机名或者IP


-p --port:客户端端口,默认10050


-I --source-address:指定源IP,写上zabbix server的ip地址即可,一般留空,服务器如果有多ip的时候,你指定一个。


-k --key:你想获取的key


至于使用长参数还是短的,自己选,我经常使用-s而不是-host,太长了。来个例子


zabbix_get获取数据


获取负载


./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg15]"

0.270000



./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg15]"

0.270000



获取主机名


# ./zabbix_get -s 127.0.0.1 -p 10050 -I 127.0.0.1 -k "system.hostname"

 10-9-4-20



./zabbix_get -s 127.0.0.1 -p 10050 -I 127.0.0.1 -k "system.hostname"

 10-9-4-20 




zabbix_get是什么?


zabbix-get 是Zabbix 中的一个程序,用于zabbix-Server 到zabbix-agent 的数据获取,通常可以用来

检测验证agent 的配置是否正确,类似nagios的./check_nt等监控工具。


zabbix_get作用?


1)Server端和Agent端测试数据


2)判断一些故障问题,或者获取指定数据。


zabbix_get格式:


[root@loganalyzer bin]# ./zabbix_get -h

usage:

  zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key

  zabbix_get -h

  zabbix_get -V

Get data from Zabbix agent.

General 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: 10050)

  -I --source-address IP-address   Specify source IP address

  -k --key item-key          Specify key of the item to retrieve value for

  -h --help                  Display this help message

  -V --version               Display version number

  Example(s):

  zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"

zabbix_get基本参数详解:


-s --host: 指定客户端主机名或者IP

-p --port:客户端端口,默认10050


-I --source-address:指定源IP,写上zabbix server的ip地址即可,一般留空,服务器如果有多ip的


时候,你指定一个。


-k --key:  你想获取的key

-h --help  帮助

-V --version 版本

zabbix_get获取信息案例:


1)获取指定主机cpu五分钟之内的负载


[root@loganalyzer bin]# ./zabbix_get -s 192.168.1.245 -p 10050 -k 'system.cpu.load[all,avg5]'

0.350000

[root@loganalyzer bin]# 




zabbix_get是zabbix中的一个程序,用于zabbix-server到zabbix-agent获取数据。通常用来检测agent的配置是否正确。


获取CPU负载


[root@localhost ~]# zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg15]"

0.000000


key可以加引号,也可以不加。


获取主机名


[root@localhost ~]# zabbix_get -s 127.0.0.1 -p 10050 -k system.hostname

localhost.localdomain



Zabbix_sender命令:

zabbix_sender是什么?有什么作用?


zabbix获取key值有超时时间,如果自定义的key脚本一般需要执行很长时间,这根本没法去做监控,那

怎么办呢?使用zabbix监控类型zabbix trapper,需要配合zabbix_sender给它传递数据。关于trapper

的用法,我们来弄个实例。


执行超长时间脚本,如:脚本去几十台服务器拉去数据,每个日志都上G,然后日志整合在一起,统计出

返回值。这种脚本比如超时,所以我们必须改成让客户端提交数据的方式。


zabbix_sender命令用法:


[root@localhost ~]# zabbix_sender -h

Zabbix Sender v2.2.11 (revision 56693) (12 November 2015)

usage: zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i -r} [-c ]

Options:

  -c --config                   Absolute path to the configuration file

  -z --zabbix-server          Hostname or IP address of Zabbix server

  -p --port              Specify port number of server trapper running on the server. Default is 10051

  -s --host                 Specify host name. Host IP address and DNS name will not work

  -I --source-address     Specify source IP address

  -k --key  

                       Specify item key

  -o --value               Specify value

  -i --input-file         Load values from input file. Specify - for standard input

                                       Each line of file contains whitespace delimited:

                                       Specify - in to use hostname from configuration file or --host argument

  -T --with-timestamps                 Each line of file contains whitespace delimited:

                                       This can be used with --input-file option

                                       Timestamp should be specified in Unix timestamp format

  -r --real-time                       Send metrics one by one as soon as they are received

                                       This can be used when reading from standard input

  -v --verbose                         Verbose mode, -vv for more details

Other options:

  -h --help                            Give this help

  -V --version                         Display version number


使用参数:


  -c --config                   配置文件绝对路径

  -z --zabbix-server          zabbix server的IP地址

  -p --port              zabbix server端口.默认10051

  -s --host                 主机名,zabbix里面配置的主机名(不是服务器的hostname),不能使用ip地址

  -I --source-address     源IP

  -k --key                       监控项的key

  -o --value               key值

  -i --input-file         从文件里面读取hostname、key、value 一行为一条数据,使用空格作为分隔符,如果主机名带空格,那么请使用双引号包起来

  -T --with-timestamps              一行一条数据,空格作为分隔符: ,配合 --input-file option,timestamp为unix时间戳

  -r --real-time                      将数据实时提交给服务器

  -v --verbose                         详细模式, -vv 更详细





zabbix的服务器端与客户端连接的主要工具就是zabbix里bin文件夹下的zabbix_get文件,这个命令只能在zabbix的server端使用,如果在agent端使用就会提示如下的错误:


zabbix_get [7189]: Check access restrictions in Zabbix agent configuration


在server端使用也是有说法,这里先查查看它的官方帮助


[root@chen-zk-001 bin]# ./zabbix_get -h

Zabbix get v2.2.6 (revision 48483) (27 August 2014)

usage: zabbix_get [-hV] -s [-p ] [-I ] -k

Options:

  -s --host          Specify host name or IP address of a host

  -p --port              Specify port number of agent running on the host. Default is 10050

  -I --source-address     Specify source IP address

  -k --key             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]"


里面说明了,-s后面接的是目标地址,-p后面要加端口号,这个一般都是10050, -I 后面加原地址,不过这个一般用不上,-k 后面接的就是item项目里的key。


不过这里要注意一点!-s 后面是要接上web界面里能连上的ip地址,本人实验里,监控zabbix_server使用127.0.0.1会报错,会提示Received empty response from Zabbix Agent at [127.0.0.1]. Assuming that agent dropped connection because of access permission。然后在agentd.conf里把127.0.0.1更改成了机器的内网ip就可以成功监控了。








Item属性含义:(拿3.0举例)

属性 描述

名称 监控项item名称

类型 item类型(常见agent、SNMP、agent(active)等)

Key 监控项item的key,点击select可看到系统很多自带的key,也可以看到用户自定义的key。

主机接口 主机接口,例如agent、SNMP、impi等

信息类型 自己根据要监控项目定义

数据类型 一般十进制

单位 默认情况下,如果原始值超过1000,那么他会先除以1000并且显示出来。

如果单位被指定为 B (byte),那么它会除以1024然后再显示数据。因此在监控流量和文件大小的时候不要用错单位,否则会出现数据不一致的情况。

自定义倍数 启用这个选项,所有接收到的整数或者浮点数都会乘以这个文本框里面的值。使用这个选项,zabbix将会把收到的KB,MBps等数据先转为B,Bps。否则zabbix不能正确设置前缀(K,M,G等等)。

数据更新间隔 数据更新时间注意:如果设置为0,那么这个数据将永久不更新。但是如果在灵活更新间隔(flexible interval)里面设置了一个非0间隔,那么以这个为准

自定义时间间隔 eg:

1-5,11:00-19:00,表示周一到周五的早上10点到晚上19点每十秒更新一次数据。其余时间使用默认值,不会更新。在zabbix主动方式的item不适用

历史数据保留时长 默认天,历史保留天数。

趋势数据存储 默认天

存储值 涉及到计算公式

查看值 值映射,需要配置数字映射到字符的映射表。

新应用 创建一个新的应用

应用集 eg:cpu、disk、network,监控项可以属于多个应用

主机资产记录 自动模式数据自动填充到inventory资产清单的相应属性

描述 监控项的描述

启用 是否启用这个监控项.





 LNMP+zabbix-3.2.1 


一、zabbix服务端部署 


1、解压 

tar -xf nginx-1.10.1.tar.gz 

tar -xf php-5.6.22.tar.gz 

tar -xf freetype-2.4.0.tar.bz2 

tar -xf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz 

tar -xf zabbix-3.2.1.tar.gz  


2、安装Nginx yum -y install gcc openssl-devel pcre-devel  


useradd -s /sbin/nologin nginx 


cd ~/nginx-1.10.1/ 

./configure \ 

>--prefix=/usr/local/nginx \ 

>--user=nginx \ >--group=nginx \ 

>--with-http_ssl_module 


make && make install 


vim /usr/local/nginx/conf/nginx.conf   


location / {             

root    html;             

index    index.php        

index.html        

index.htm;     

}     

location ~ \.php$ {             

root   html;             

fastcgi_pass        

127.0.0.1:9000;             

fastcgi_index        

index.php;             

fastcgi_param        

SCRIPT_FILENAME    $document_root$fastcgi_script_name;             

include            fastcgi_params;     


/usr/local/nginx/sbin/nginx    #启动nginx


3、安装MySQL 


useradd mysql 


mv mysql-5.6.30-linux-glibc2.5-x86_64/ /usr/local/mysql 


chown -R mysql.mysql /usr/local/mysql/ 


su - mysql   


cd /usr/local/mysql/scripts/  


./mysql_install_db \     

>--user=mysql \     

>--basedir=/usr/local/mysql \     

>--datadir=/usr/local/mysql/data  


exit 


cd /usr/local/mysql/support-files/ 


cp my-default.cnf /etc/my.cnf 

cp mysql.server /etc/init.d/mysql 

vim /etc/init.d/mysql     

basedir=/usr/local/mysql     

datadir=/usr/local/mysql/data 


echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile 


source /etc/profile 


chkconfig --add mysql 

chkconfig mysql on 


service mysql start 


/usr/local/mysql/bin/mysqladmin -u root password '123456' mysql -uroot -p123456     

mysql> create database zabbix character set utf8;     

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


4、安装Freetype(可以使用系统自带的) 


cd ~/freetype-2.4.0 

./configure --prefix=/opt/freetype-2.4.0 

make && make install 

yum  -y  install freetype  


5、安装PHP 


yum -y install libjpeg-devel libxml2-devel libpng-devel 


cd ~/php-5.6.22/

./configure \ 

>--prefix=/usr/local/php5/ \ 

>--enable-fpm \ 

>--enable-mbstring \ 

>--enable-bcmath \ 

>--enable-sockets \ 

>--with-config-file-path=/usr/local/php5/etc \ 

>--with-mysql=/usr/local/mysql/ \ 

>--with-mysqli=/usr/local/mysql/bin/mysql_config \ 

>--with-gd \ 

>--with-gettext \ 

>--with-jpeg-dir \ 

>--with-freetype-dir=/opt/freetype-2.4.0/  

#使用系统自带的不用指安装目录 

make && make install 


cp  php.ini-production /usr/local/php5/etc/php.ini 


vim /usr/local/php5/etc/php.ini 


date.timezone = Asia/Shanghai     

max_execution_time = 300     

post_max_size = 32M     

max_input_time = 300     

memory_limit = 128M     

always_populate_raw_post_data = -1 

cd /usr/local/php5/etc/ 

cp php-fpm.conf.default php-fpm.conf 

vim php-fpm.conf     

pid = run/php-fpm.pid     

error_log = log/php-fpm.log     

log_level = error     

daemonize = yes     

user = nginx     

group = nginx     

listen = 127.0.0.1:9000     

pm = dynamic     

pm.max_children = 32     

pm.start_servers = 15     

pm.min_spare_servers = 5     

pm.max_spare_servers = 32 

cd ~/php-5.6.22/sapi/fpm/ 

cp init.d.php-fpm /etc/rc.d/init.d/php-fpm 

chmod +x /etc/rc.d/init.d/php-fpm 

chkconfig --add php-fpm 


chkconfig php-fpm on 


service php-fpm start  


6、安装Zabbix 


yum -y install net-snmp-devel curl-devel 


useradd zabbix 

cd zabbix-3.2.1 

./configure \ 

>--prefix=/usr/local/zabbix \ 

>--enable-server \ 

>--enable-proxy \ 

>--enable-agent \ 

>--with-mysql=/usr/local/mysql/bin/mysql_config \ 

>--with-net-snmp \ 

>--with-libcurl 


make && make install 


cd ~/zabbix-3.2.1/database/mysql/ 

#导入数据库

mysql -uzabbix -pqwe123 zabbix < schema.sql 

mysql -uzabbix -pqwe123 zabbix < images.sql 

mysql -uzabbix -pqwe123 zabbix < data.sql 


mkdir /var/log/zabbix 


chown zabbix.zabbix /var/log/zabbix 


ln -s /usr/local/zabbix/etc/ /etc/zabbix 

ln -s /usr/local/zabbix/bin/* /usr/bin/ 

ln -s /usr/local/zabbix/sbin/* /usr/sbin/ 

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18  

#可以使用设置搜索库文件的路径方式实现 


[root@localhost LNMP+zabbix-3.2.1]# tail -1  /etc/ld.so.conf /usr/local/mysql/lib/ 

[root@localhost LNMP+zabbix-3.2.1]# ldconfig  -v |  grep libmysqlclient.so.18  

cd ~/zabbix-3.2.1/misc/init.d/fedora/core 

cp zabbix_* /etc/init.d/ 


vim /etc/init.d/zabbix_server 


BASEDIR=/usr/local/zabbix 


vim /etc/init.d/zabbix_agentd     


BASEDIR=/usr/local/zabbix 


vim  /etc/services     z

abbix-agent    10050/tcp    # Zabbix Agent     

zabbix-agent    10050/udp    # Zabbix Agent     

zabbix-server    10051/tcp    # Zabbix Trapper     

zabbix-server    10051/udp    # Zabbix Trapper 


vim /etc/zabbix/zabbix_server.conf     

DBName=zabbix     

DBUser=zabbix     

DBPassword=qwe123     

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


vim /etc/zabbix/zabbix_agentd.conf     

Server=127.0.0.1,192.168.100.10     

ServerActive=192.168.100.10:10051     

Hostname=zabbix server     

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

UnsafeUserParemeters=1 

cd ~/zabbix-3.2.1/frontends/ 

cp -r php/ /usr/local/nginx/html/zabbix 


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


service zabbix_server start 

chkconfig zabbix_server on 

service zabbix_agentd start 

chkcongig zabbix_agentd on  


二、zabbix客户端部署 


tar -xf zabbix-3.2.1.tar.gz 


yum -y install gcc 


useradd zabbix 


./configure --prefix=/usr/local/zabbix --enable-agent && make && make install 


mkdir /var/log/zabbix 


chown zabbix.zabbix /var/log/zabbix/ 


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


chmod +x /etc/init.d/zabbix_agentd  


ln -s /usr/local/zabbix/etc/ /etc/zabbix 

ln -s /usr/local/zabbix/bin/* /usr/bin/ 

ln -s /usr/local/zabbix/sbin/* /usr/sbin/ 


vim /etc/zabbix/zabbix_agentd.conf  


LogFile=/var/log/zabbix/zabbix_agentd.log     

Server=127.0.0.1,192.168.100.10     

ServerActive=192.168.100.10:10051     

Hostname=zabbix client     

UnsafeUserParameters=1 


vim /etc/init.d/zabbix_agentd   


BASEDIR=/usr/local/zabbix 


chkconfig zabbix_agentd on 


service zabbix_agentd start





一、           zabbix简介:

zabbix是完全开源的工具,整合了cacti和nagios等特性
附:SNMP(udp 161  udp 162)
众多网络工具都支持此协议,比如常见路由交换,常见OS
其既可以做管理端也可以做被管理端
snmp协议大致有3个版本分别是v1 v2v3

无论是v1 和 v2 的安全性是比较差的,因为传输是明文的, V3的认证密码用MD5/SHA摘要算法加密

 很多工具支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是控制端和agent架构,他们有专属的agent

Zabbix的主要功能:

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

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

支持分布式,能集中展示、管理分布式的监控点,扩展性强

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

数据收集,支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET;

自定义的检测;自定义收集数据的频率;

服务器/代理和客户端模式;

灵活的触发器;可以定义非常灵活的问题阈值,称为触发器;
高可定制的报警;发送通知,可定制的报警升级,收件人,媒体类型。

CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等等。
硬件监控:Zabbix IPMI Interface
系统监控:ZabbixAgent Interface
Java监控:Zabbix JMXInterface
网络设备监控:Zabbix SNMP Interface
应用服务监控:Zabbix Agent UserParameter 
MySQL数据库监控:percona-monitoring-plulgins  
URL监控:Zabbix Web 监控

zabbix重要组件说明:

1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;
2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3)web interface:zabbix的GUI接口;
4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;
5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

一个监控系统运行的大概的流程是这样的:

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

zabbix常用的监控架构平台

1、server-agentd模式:
这个是最简单的架构了,常用于监控主机比较少的情况下。

2、server-proxy-agentd模式:

这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。

zabbix的系统架构:
wKiom1jZHxHxKVjRAALia40Bn5Y669.png


Zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。借助Zabbix,可以很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统的持续运行。下面会逐步介绍Zabbix分布式监控系统的部署及使用

配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器


zabbix server监控服务器:192.168.0.103 #zabbix的服务端(若要监控本机,则需要配置本机的zabbix agent)


Zabbix agent被监控主机:192.168.0.104 #zabbix的客户端(被监控端,需要配置Zabbix agent)


二、Zabbix部署前的LNMP环境的搭建过程:


安装编译工具及库文件


[root@Zabbix-Server ~]# yum -y install make apr* autoconf automake curl-devel gcc gcc-c++  openssl openssl-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng*  libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel




安装mysql5.7.13


安装nginx


解压zlib
[root@Zabbix-Server ~]# tar zxf zlib-1.2.8.tar.gz
说明:不需要编译,只需要解压就行。


解压pcre

[root@Zabbix-Server ~]# tar zxf pcre-8.39.tar.gz 

[root@Zabbix-Server ~]# groupadd www

[root@Zabbix-Server ~]# useradd -g www www -s /sbin/nologin


下载nginx的源码包:
解压源码包:


[root@Zabbix-Server ~]# tar zxf nginx-1.10.2.tar.gz 


[root@Zabbix-Server nginx-1.10.2]# cd nginx-1.10.2/

[root@Zabbix-Server nginx-1.10.2]# ./configure --prefix=/usr/local/nginx1.10 --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module  --with-http_flv_module --with-http_mp4_module --with-pcre=/root/pcre-8.39 --with-zlib=/root/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www && make && make install


[root@Zabbix-Server nginx-1.10.2]# ln -s /usr/local/nginx1.10/sbin/nginx /usr/local/sbin/

[root@Zabbix-Server nginx-1.10.2]# nginx
[root@Zabbix-Server nginx-1.10.2]# netstat -antp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      99063/nginx: master
[root@Zabbix-Server nginx-1.10.2]# firewall-cmd --permanent --add-port=80/tcp
success
[root@Zabbix-Server nginx-1.10.2]# firewall-cmd --reload 
success


安装php
[root@Zabbix-Server ~]# tar zxf libmcrypt-2.5.7.tar.gz 

[root@Zabbix-Server ~]# cd libmcrypt-2.5.7/
[root@Zabbix-Server libmcrypt-2.5.7]# ./configure && make && make install


[root@Zabbix-Server libmcrypt-2.5.7]# cd


[root@Zabbix-Server ~]# tar zxf php-5.6.27.tar.gz

[root@Zabbix-Server ~]# cd php-5.6.27/


[root@Zabbix-Server php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc  --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl && make && make install


[root@Zabbix-Server php-5.6.27]# cp php.ini-production /etc/php.ini


编辑配置文件/etc/php.ini ,修改后的内容如下:编辑配置文件/etc/php.ini ,修改后的内容如下:
找到:
;date.timezone = 
修改为:
date.timezone = PRC #设置时区
找到:
expose_php = On 
修改为:
expose_php = Off #禁止显示php版本的信息
找到:
short_open_tag = Off 
修改为:
short_open_tag = On //支持php短标签
找到:
post_max_size = 8M
修改为:
post_max_size = 16M  //上传文件大小
找到:
max_execution_time = 30
修改为:
max_execution_time = 300  //php脚本最大执行时间
找到:
max_input_time = 60
修改为:
max_input_time = 300  //以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制
找到:
;always_populate_raw_post_data = -1
修改为:
always_populate_raw_post_data = -1
找到:
;mbstring.func_overload = 0
修改为:
mbstring.func_overload= 0

创建php-fpm服务启动脚本:

[root@Zabbix-Server php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root@Zabbix-Server php-5.6.27]# chmod +x /etc/init.d/php-fpm 

[root@Zabbix-Server php-5.6.27]# chkconfig --add php-fpm
[root@Zabbix-Server php-5.6.27]# chkconfig php-fpm on

提供php-fpm配置文件并编辑:

[root@Zabbix-Server php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default  /usr/local/php5.6/etc/php-fpm.conf

[root@Zabbix-Server php-5.6.27]# vi /usr/local/php5.6/etc/php-fpm.conf

修改内容如下:
pid = run/php-fpm.pid
user = www
group = www
listen =127.0.0.1:9000
pm.max_children = 300
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers =50

启动php-fpm服务:

[root@Zabbix-Server php-5.6.27]# service php-fpm start
Starting php-fpm  done
[root@Zabbix-Server php-5.6.27]# netstat -anpt | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      110892/php-fpm: mas 

配置nginx支持php

[root@Zabbix-Server php-5.6.27]# cat /usr/local/nginx1.10/conf/nginx.conf
user  www www;
worker_processes  4;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
use epoll;
    worker_connections  1024;
}
http {
include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
server {
listen       80;
        server_name  localhost;
charset utf-8;
        #access_log  logs/host.access.log  main;
location / {
root   html;
index  index.php index.html index.htm;
        }
location ~ \.php$
root html; 
            fastcgi_pass 127.0.0.1:9000; 
            fastcgi_index index.php; 
include fastcgi.conf; 
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
        }
location /status {
stub_status on;
        }
   }
}


[root@Zabbix-Server php-5.6.27]# nginx -t

nginx: the configuration file /usr/local/nginx1.10/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx1.10/conf/nginx.conf test is successful

[root@Zabbix-Server php-5.6.27]# killall -s HUP nginx

测试LNMP
进入nginx默认的网页根目录,创建.php的测试页


[root@Zabbix-Server php-5.6.27]# cat /usr/local/nginx1.10/html/test1.php
phpinfo()
?>
[root@Zabbix-Server php-5.6.27]# cat /usr/local/nginx1.10/html/test2.php
$link=mysql_connect('localhost','root','123.abc');
if($link) echo "ok";
mysql_close();
?>


至此,LNMP部署完毕。

三、监控系统Zabbix-3.2.1的安装


zabbix-server端的操作
zabbix服务器端要提前安装好LNMP环境(mysql,nginx,php5的安装目录均是/usr/local)

创建Zabbix运行的用户:
[root@Zabbix-Server ~]# groupadd zabbix
[root@Zabbix-Server ~]# useradd -g zabbix zabbix

安装libcurl和net-snmp:
[root@Zabbix-Server ~]# yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel

注:OpenIPMI-devel 和libssh2-devel软件包使用centos在线yum软件源安装


安装Fping:

[root@Zabbix-Server ~]# tar zxf fping-3.12.tar.gz 
[root@Zabbix-Server ~]# cd fping-3.12/
[root@Zabbix-Server fping-3.12]# ./configure && make && make install
[root@Zabbix-Server fping-3.12]# chown root:zabbix /usr/local/sbin/fping 
[root@Zabbix-Server fping-3.12]# chmod 4710 /usr/local/sbin/fping 

安装Zabbix Server:

[root@Zabbix-Server fping-3.12]# cd
[root@Zabbix-Server ~]# tar zxf zabbix-3.2.1.tar.gz 
[root@Zabbix-Server ~]# cd zabbix-3.2.1/
[root@Zabbix-Server zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi


注意:编译时最好带上--enable-java这个参数,方便后续监控tomcat程序所用。

--with-ssh2 是不需要在客户端服务器上面安装Zabbix agent,如果需要使用ssh检查,需要在编译的时候加上这项,最低需要libssh2 1.0.0版本,需要安装ssh开发包
--with-openipmi用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等。

如果添加了--enable-proxy, 那么会生成get和sender两条命令. 如下, 用于接收agent发生过来的信息, 同时发送给server.

[root@Zabbix-Server zabbix-3.2.1]# make && make install

添加系统软连接

[root@Zabbix-Server zabbix-3.2.1]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/

[root@Zabbix-Server zabbix-3.2.1]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

ZabbixServer配置与启动

创建Zabbix数据库和MySQL用户:

mysql> create database zabbix character set utf8;

Query OK, 1 row affected (0.00 sec)
 
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

Query OK, 0 rows affected, 1 warning (0.00 sec)

导入Zabbix初始数据:

切换到zabbix的解压目录下

[root@Zabbix-Server zabbix-3.2.1]# cd database/mysql/
[root@Zabbix-Server mysql]# pwd
/root/zabbix-3.2.1/database/mysql
[root@Zabbix-Server mysql]# ls
data.sql  images.sql  schema.sql

[root@Zabbix-Server mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < schema.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.

[root@Zabbix-Server mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

[root@Zabbix-Server mysql]#  mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

编辑/usr/local/zabbix/etc/zabbix_server.conf:

[root@Zabbix-Server mysql]# grep -v "^#" /usr/local/zabbix/etc/zabbix_server.conf | grep -v "^$"

LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
FpingLocation=/usr/local/sbin/fping

[root@Zabbix-Server mysql]# mkdir -p /usr/local/zabbix/logs

[root@Zabbix-Server mysql]# chown -R zabbix:zabbix /usr/local/zabbix/

启动Zabbix Server:
[root@Zabbix-Server mysql]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

/usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

解决方法:

在ld.so.conf中加入/usr/local/mysql/lib

[root@Zabbix-Server mysql]# find / -name libmysqlclient.so.20

/root/mysql-5.7.13/libmysql/libmysqlclient.so.20

/usr/local/mysql/lib/libmysqlclient.so.20

[root@Zabbix-Server mysql]# vi /etc/ld.so.conf

[root@Zabbix-Server mysql]# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf
/root/mysql-5.7.13/libmysql/
/usr/local/mysql/lib/

加载/etc/ld.so.conf文件生效并再次启动zabbix_server

[root@Zabbix-Server mysql]# ldconfig 

[root@Zabbix-Server mysql]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

[root@Zabbix-Server mysql]# netstat -anpt | grep zabbix_server

tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      15820/zabbix_server 

添加开机启动脚本
[root@Zabbix-Server ~]# cd zabbix-3.2.1/

[root@Zabbix-Server zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
[root@Zabbix-Server zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
[root@Zabbix-Server zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_server 
[root@Zabbix-Server zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@Zabbix-Server zabbix-3.2.1]# chkconfig --add zabbix_server
[root@Zabbix-Server zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@Zabbix-Server zabbix-3.2.1]# chkconfig zabbix_server on
[root@Zabbix-Server zabbix-3.2.1]# chkconfig zabbix_agentd on

修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid    #pid文件路径

:wq! #保存退出


vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路径
:wq! #保存退出

[root@Zabbix-Server zabbix-3.2.1]# systemctl daemon-reload

[root@Zabbix-Server zabbix-3.2.1]# /etc/init.d/zabbix_server stop

Stopping zabbix_server (via systemctl):                    [  OK  ]
[root@Zabbix-Server zabbix-3.2.1]# netstat -antp | grep zabbix

[root@Zabbix-Server zabbix-3.2.1]# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                    [  OK  ]
[root@Zabbix-Server zabbix-3.2.1]# netstat -antp | grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      17223/zabbix_server
设置防火墙规则
[root@Zabbix-Server zabbix-3.2.1]# firewall-cmd --permanent --add-port=10051/tcp
success
[root@Zabbix-Server zabbix-3.2.1]# firewall-cmd --reload 
success
配置zabbix web页面
在安装目录将frontends拷贝到指定的web root:
[root@Zabbix-Server zabbix-3.2.1]# pwd
/root/zabbix-3.2.1
[root@Zabbix-Server zabbix-3.2.1]# cp -r frontends/php/ /usr/local/nginx1.10/html/zabbix
[root@Zabbix-Server zabbix-3.2.1]# chown -R www:www /usr/local/nginx1.10/html/zabbix/

注:/usr/local/nginx/html为Nginx默认站点目录 www为Nginx运行账户

注:PHP需要至少开启扩展:  gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql

如下,查看是否包括了上面所提到的扩展模块

[root@Zabbix-Server zabbix-3.2.1]# /usr/local/php5.6/bin/php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
 
[Zend Modules]



至此 ZABBIX的基础安装完成
注:1.      显示简体中文界面
在安装数据库时已经将zabbix库设置了utf-8字符
首先确定zabbix开启了中文支持功能:
登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/usr/local/nginx1.10/html/zabbix/),打开 locales.inc.php文件
[root@Zabbix-Server include]# pwd
/usr/local/nginx1.10/html/zabbix/include

[root@Zabbix-Server include]# vi locales.inc.php



解决zabbix绘图中出现中文乱码问题:

a.从windows下控制面板->字体->选择一种中文字库例如“楷体”

b.把它拷贝到zabbix的web端的fonts目录下例如:/usr/local/nginx1.10/html/zabbix/fonts/,并且把TTF后缀改为ttf 

并且将之前的字体文件DejaVuSans.ttf移动到别处

c.然后,接着修改代码include/defines.inc.php文件中的字体配置,将里面关于字体设置从DejaVuSans替换成simkai  

vi替换技巧:%s/DejaVuSans/simkai

其中:simkai为字库名字,不包含ttf后缀

[root@Zabbix-Server fonts]# cd /usr/local/nginx1.10/html/zabbix/

[root@Zabbix-Server zabbix]# vi include/defines.inc.php 

在vi编辑器的末行模式下输入%s/DejaVuSans/simkai

这样,修改后,zabbix监控图形中的中文字就不会出现乱码了

四、zabbix客户端的安装
既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent,安装agent比较简单,我们也是按照安装server的流程,下载软件包,在编译的时候,我们只选择agent
192.168.0.104作为zabbix的被监控端,提供web和mysql应用
安装Zabbix,配置Zabbix agent:

[root@Zabbix-agent ~]#tar zxf zabbix-3.2.1.tar.gz
[root@Zabbix-agent ~]# cd zabbix-3.2.1/
[root@Zabbix-agent zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
[root@Zabbix-agent zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@Zabbix-agent zabbix-3.2.1]# mkdir -p /usr/local/zabbix/logs
[root@Zabbix-agent zabbix-3.2.1]# groupadd zabbix
[root@Zabbix-agent zabbix-3.2.1]# useradd -g zabbix zabbix
[root@Zabbix-agent zabbix-3.2.1]# chown -R zabbix:zabbix /usr/local/zabbix/

配置开机自动启动:

[root@Zabbix-agent zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@Zabbix-agent zabbix-3.2.1]# chkconfig zabbix_agentd on

修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路径
:wq! #保存退出
编辑zabbix_agentd.conf

[root@Zabbix-agent zabbix-3.2.1]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
内容如下:
[root@Zabbix-agent zabbix-3.2.1]#grep -v "^#" /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v "^$"
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.0.103
ListenPort=10050
ServerActive=192.168.0.103
Hostname=192.168.0.104
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
注:
其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许192.168.0.103这个ip来我这取数据。而serverActive的192.168.0.103的意思是,客户端主动提交数据给他。

Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样。

启动zabbix_agentd:


[root@Zabbix-agent zabbix-3.2.1]# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf

[root@Zabbix-agent zabbix-3.2.1]# netstat -anpt | grep zabbix_agentd
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      18142/zabbix_agentd

[root@Zabbix-agent zabbix-3.2.1]# firewall-cmd --permanent --add-port=10050/tcp
success
[root@Zabbix-agent zabbix-3.2.1]# firewall-cmd --reload 
success
到此,zabbix3.2.1监控系统的基本环境安装完成。
实现zabbix添加监测项
添加对Linux主机的监控
在浏览器中打开:
登录zabbix,先在“配置”-“主机”里添加主机监控,监控os资源:内存,cpu,io,负载,带宽等.
登录zabbix,先在“配置”-“主机”里单击”创建主机”



zabbix3.0 server已自带mysql的模板了,只需配置好agent客户端,然后在web端给主机增加模板就行了。

Zabbix_agent客户端操作

(1)首先在客户端的mysql里添加权限,即本机使用zabbix账号连接本地的mysql


mysql> grant all on *.* to zabbix@'localhost' identified by '123.abc';
Query OK, 0 rows affected, 1 warning (0.19 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(2)在zabbix_agent服务目录下创建.my.cnf 连接文件,zabbix安装目录是/usr/local/zabbix


[root@Zabbix-agent zabbix-3.2.1]# cd /usr/local/zabbix/etc/
[root@Zabbix-agent zabbix]# vi .my.cnf
[root@Zabbix-agent zabbix]# cat .my.cnf 
[client]
user=zabbix
password=123.abc
注意:
如果在数据库grant授权时,针对的是localhost,这个.my.cnf里面就不用加host参数了【如上配置】

但如果grant授权时针对的是本机的ip(如192.168.0.104),那么在.my.cnf文件里就要加上host参数进行指定了

即在.my.cnf文件就要加上:


host=192.168.0.104
socket= /usr/local/mysql/mysql.sock
user=zabbix
password=123.abc

(3)配置MySQL的key文件

这个可以从zabbix3.2安装时的解压包里拷贝过来,从zabbix_server服务端安装时解压目录

/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf 拷贝到zabbix_agent客户端上的/usr/local/zabbix/etc/zabbix_agentd.conf.d/ 目录下的


[root@Zabbix-agent zabbix]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@Zabbix-agent zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@Zabbix-agent zabbix_agentd.conf.d]# cp /root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf  ./
[root@Zabbix-agent zabbix_agentd.conf.d]# ls userparameter_mysql.conf 
userparameter_mysql.conf

然后查看 userparameter_mysql.conf 文件,看到类似 HOME=/var/lib/zabbix 的路径设置,把路径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目录路径
另外,注意userparameter_mysql.conf 文件里的mysql命令路径(提前做好mysql的系统环境变量,以防mysql命令不被系统识别)
如下:
[root@Zabbix-agent zabbix_agentd.conf.d]# cat userparameter_mysql.conf 
[root@Zabbix-agent zabbix_agentd.conf.d]# cat userparameter_mysql.conf 
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.


# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'


# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[,,].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/zabbix/etc/ mysql -N'


UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V

(4)按照上面修改完之后检查一下,然后重启zabbix_agent


[root@Zabbix-agent zabbix_agentd.conf.d]# pkill -9 zabbix_agent
[root@Zabbix-agent zabbix_agentd.conf.d]# netstat -anpt | grep zabbix_agent
[root@Zabbix-agent zabbix_agentd.conf.d]# /usr/local/zabbix/sbin/zabbix_agentd 

[root@Zabbix-agent zabbix_agentd.conf.d]# netstat -anpt | grep zabbix_agent

tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      100593/zabbix_agent

接着在zabbix_server服务端进行命令行测试[下面的192.168.0.103是客户端的ip]
若下面报错
[root@localhostzabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -p 10050 -k"mysql.status[Uptime]"
sh: mysql: command notfound

解决方法:
在userparameter_mysql.conf中关于mysql命令前面添加绝对路径


[root@Zabbix-Server zabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -p 10050 -k "mysql.status[Uptime]"
6893897
如果出现类似这一串key的数字,就说明配置ok,服务端能监控到客户端的mysql数据了!

成功啦,之后在监控界面增加主机对应的MySQL模板就ok了。

注:zabbix_get命令介绍

参数说明:
-s --host:指定客户端主机名或者IP
-p --port:客户端端口,默认10050
-I --source-address:指定源IP,写上zabbixserver的ip地址即可,一般留空,服务器如果有多ip的时候,你指定一个。
-k --key:你想获取的key
zabbix_get获取数据
获取负载


[root@Zabbix-Server zabbix]# zabbix_get -s 192.168.0.104 -p 10050 -k "system.cpu.load[all,avg15]"
0.050000
获取主机名


[root@Zabbix-Server zabbix]# zabbix_get -s 192.168.0.104 -p 10050 -k "system.hostname"
Zabbix-agent
(5)登录zabbix监控界面,在“配置”-“模板”里可以看到自带的mysql监控模板




zabbix3.2.1邮件报警设置:
Zabbix监控服务端、客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常。
在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱。
具体操作:


以下操作在Zabbix监控服务端进行
下载sendemail软件
然后安装那两个依赖包,命令是:


[root@Zabbix-Server zabbix]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL

解压软件,然后将sendemail复制到/usr/local/bin/目录下,并加上可执行权限,然后修改用户和群组。

[root@Zabbix-Server ~]# tar zxf sendEmail-v1.56.tar.gz 
[root@Zabbix-Server ~]# cd sendEmail-v1.56/
[root@Zabbix-Server sendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail
[root@Zabbix-Server sendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail

[root@Zabbix-Server sendEmail-v1.56]# ll /usr/local/bin/sendEmail 

-rwxr-xr-x. 1 zabbix zabbix 80213 Mar 28 21:42 /usr/local/bin/sendEmail

执行# /usr/local/bin/sendEmail -h查看sendEmail的帮助

[root@Zabbix-Server sendEmail-v1.56]# /usr/local/bin/sendEmail -h
 
sendEmail-1.56 by Brandon Zehm
 
Synopsis:  sendEmail -f ADDRESS [options]
 
  Required:
    -f ADDRESS                from (sender) email address
    * At least one recipient required via -t, -cc, or -bcc
    * Message body required via -m, STDIN, or -o message-file=FILE
 
  Common:
    -t ADDRESS [ADDR ...]     to email address(es)
    -u SUBJECT                message subject
    -m MESSAGE                message body
    -s SERVER[:PORT]          smtp mail relay, default is localhost:25
 
  Optional:
    -a   FILE [FILE ...]      file attachment(s)
    -cc  ADDRESS [ADDR ...]   cc  email address(es)
    -bcc ADDRESS [ADDR ...]   bcc email address(es)
    -xu  USERNAME             username for SMTP authentication
    -xp  PASSWORD             password for SMTP authentication
 
  Paranormal:
    -b BINDADDR[:PORT]        local host bind address
    -l LOGFILE                log to the specified file
    -v                        verbosity, use multiple times for greater effect
    -q                        be quiet (i.e. no STDOUT output)
    -o NAME=VALUE             advanced options, for details try: --help misc
        -o message-content-type=
        -o message-file=FILE         -o message-format=raw
        -o message-header=HEADER     -o message-charset=CHARSET
        -o reply-to=ADDRESS          -o timeout=SECONDS
        -o username=USERNAME         -o password=PASSWORD
        -o tls=         -o fqdn=FQDN
 
 
  Help:
    --help                    the helpful overview you're reading now
    --help addressing         explain addressing and related options
    --help message            explain message body input and related options
    --help networking         explain -s, -b, etc
    --help output             explain logging and other output options
    --help misc               explain -o options, TLS, SMTP auth, and more


[root@Zabbix-Server sendEmail-v1.56]# /usr/local/bin/sendEmail -f 17600339557@163.com -t 17600339557@163.com -s smtp.163.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu 17600339557@163.com -xp 123abc -m "hello"

命令主要选项说明:
/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 WEE78@12l$                            #发件人邮箱密码
-m "我是邮件内容"                            #邮件的具体内容

进入/usr/local/zabbix/share/zabbix/alertscripts/目录

然后在这个目录下创建报警脚本sendmail.sh


[root@Zabbix-Server alertscripts]# vi mail.sh
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -o tls=auto -f 17600339557@163.com -t "$to" -s smtp.163.com -u "$sbuject" -o message-content-type=html -o messag
e-charset=utf8 -xu 17600339557@163.com -xp 123abc -m "$body"


[root@Zabbix-Server alertscripts]# chmod +x mail.sh 
[root@Zabbix-Server alertscripts]# ./mail.sh 17600339557@163.com test 123
*******************************************************************
 Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
 is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
 together with SSL_ca_file|SSL_ca_path for verification.
 If you really don't want to verify the certificate and keep the
 connection open to Man-In-The-Middle attacks please set
 SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
  at /usr/local/bin/sendEmail line 1906.
invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415.
注:进行发送邮件测试时,出现了第一个报错
原因是sendemail软件和perl5里面的ssl版本不兼容导致的,通过修改sendemail里面的内容可以解决这个问题。
解决方法:
在sendemail文件中把1906行的内容


if (!IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
修改为
if(! IO::Socket::SSL->start_SSL($SERVER)) {
即不指定SSL的版本,让程序来自己选择
不管你使用的是163/126邮箱还是qq邮箱,你都必须开通pop3服务,而且126/qq邮箱还要求使用第三方客户端发送邮件是必须使用授权码登录,使用账号密码验证时,会出现下面图片中的错误。


sendEmail[50684]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.163.com:25 failed.
至于邮箱的授权码,自己登录163邮箱去设置就好。
经过上面两个问题的处理后就可以正常发送邮件如下所示显示成功提示


[root@Zabbix-Server alertscripts]# ./mail.sh 17600339557@163.com test 123
*******************************************************************
 Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
 is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
 together with SSL_ca_file|SSL_ca_path for verification.
 If you really don't want to verify the certificate and keep the
 connection open to Man-In-The-Middle attacks please set
 SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
  at /usr/local/bin/sendEmail line 1906.
Mar 28 22:34:28 zabbix-server sendEmail[50764]: Email was sent successfully!



zabbix自定义监控项


1. 编辑客户端配置文件/etc/zabbix/zabbix_agentd.conf
    内容:
    UnsafeUserParameters=1


    # UserParameter=my.net.if[*], /usr/local/sbin/zabbix/net.sh $1 $2
    UserParameter=process.nginx.memory, /tmp/shell/processstatus.sh nginx
    UserParameter=process.nginx.cpu, /tmp/shell/processstatus.sh nginxcpu
    UserParameter=process.mysql.memory, /tmp/shell/processstatus.sh mysql
    UserParameter=process.mysql.cpu, /tmp/shell/processstatus.sh mysqlcpu




说明:增加这一行,其中UserParameter用来自定义键值my.net.if,有参数时,需要加[*],没有参数则省略[*];逗号后面为脚本或命令路径,以及参数变量
    格式:
             UserParameter=key[*],command
     key为唯一值,[*]表示参数
     command为要执行的命令或脚本,key的[*]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令。返回结果
                数据最大为512KB


2. 编辑脚本/tmp/shell/processstatus.sh,并授执行权限+x


#! /bin/bash
##
mysql() {
ps aux|grep 'mysqld' |grep -v "grep" |awk '{sum+=$6}; END{print sum}'
}
 
mysqlcpu() {
ps aux|grep 'mysqld' |grep -v "grep" |awk '{sum+=$3}; END{print sum}'
}
 
nginx() {
ps aux|grep 'nginx' |grep -v "grep" |awk '{sum+=$6}; END{print sum}'
}
 
nginxcpu() {
ps aux|grep 'nginx' |grep -v "grep" |awk '{sum+=$3}; END{print sum}'
}
 
case "$1" in
mysql)
mysql
;;
mysqlcpu)
mysqlcpu
;;
nginx)
nginx
;;
nginxcpu)
nginxcpu
;;
*)
echo "Usage:  $0 (mysql|mysqlcpu|nginx|nginxcpu)"
;;
esac


3. 重启客户端,并在服务端测试脚本是否生效
    /etc/init.d/zabbix-agent restart
    
    zabbix_get -s 172.16.115.162 -p10050 -k process.mysql.memory



# This is a config file for the Zabbix agent daemon (Unix)

# To get more information about Zabbix, visit

 

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

 

### Option: PidFile

#   Name of PID file.

#

# Mandatory: no

# Default:

#pidFile=PID路径

#说明:指定程程序PIDFILE路径,可修改到其它路径,但SNC不建议修改

 PidFile=/smp/sncmon/zabbix_agentd.pid

 

### Option: LogFile

#   Name of log file.

#   If not set, syslog is used.

#

# Mandatory: no

# Default:

# LogFile=

#LogFile=路径

#说明:客户端AGENT运行产生的日志文件路径,可修改到其它路径,如/var/log/zabbix_agnetd.log,视具体情况修改,也可保持默认

LogFile=/smp/sncmon/zabbix_agentd.log

 

### Option: LogFileSize

#   Maximum size of log file in MB.

#   0 - disable automatic log rotation.

#

# Mandatory: no

# Range: 0-1024

# Default:

#LogFileSize=数字

#说明:AGENT产生日志大小控制,默认1M,若为0,则表示不产生任何日志,数字范围(1-1024M)不建议关闭日志功能,建议保持默认

LogFileSize=1

 

### Option: DebugLevel

#   Specifies debug level

#   0 - no debug  无日志级别

#   1 - critical information 灾难信息级别

#   2 - error information   一般错误信息级别

#   3 - warnings  警告级别

#   4 - for debugging (produces lots of information)  调试级别

#说明:0~4级别,日志产生量在相同单位时间,生成的日志量为递增,即0级别日志量最少,4级别最多,默认3级别,建议视具体情况,自行把握

#

# Mandatory: no

# Range: 0-4

# Default:

DebugLevel=3

 

### Option: SourceIP

#   Source IP address for outgoing connections.

#

# Mandatory: no

# Default:

#SourceIP=IP地址

#说明:当系统设置有多个IP时,需要指定一个IP与二级代理或服务端通信,若系统只有一个IP,也建议指定一个IP

SourceIP=192.168.1.3

 

### Option: EnableRemoteCommands

#   Whether remote commands from Zabbix server are allowed.

#   0 - not allowed 不允许

#   1 - allowed 允许

#

# Mandatory: no

# Default:

#EnableRemoteCommands=0或1

#说明:是否允许在本地执行远程命令,建议设置为“允许”,因为SNC对命令下发功能进行了二次开发,功能强大,极大的方便日志运维工作

EnableRemoteCommands=1

 

### Option: LogRemoteCommands

#   Enable logging of executed shell commands as warnings.

#   0 - disabled 不产生日志

#   1 - enabled  产生日志

#

# Mandatory: no

# Default:

#LogRemoteCommands=1或0

#说明:在参数EnableRemoteCommands=1的情况下,执行远程命令是否保存操作日志,若已设置EnableRemoteCommands=1

#建议LogRemoteCommands=1,以便 日后查证。若EnableRemoteCommands=0,此参数不生效

LogRemoteCommands=1

 

##### Passive checks related

#与被动模式有关的参数设置

#什么是被动模式?

#被动模式下,由二级代理或服务端主动请求AGENT,去获取所采集到的监控数据

### Option: Server

#   List of comma delimited IP addresses (or hostnames) of Zabbix servers.

#   Incoming connections will be accepted only from the hosts listed here.

#   If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.

#

# Mandatory: no

# Default:

# Server=

#Server=IP地址或主机名,建议IP地址

#说明:在有二级代理情况下,此IP地址应该填写二级代理服务器的IP,反之,若无二级代理服务器,则此IP应设置为服务端#IP

Server=192.168.1.14

 

### Option: ListenPort

#   Agent will listen on this port for connections from the server.

#

# Mandatory: no

# Range: 1024-32767 (监控端口范围)

# Default:

# ListenPort=数字

#说明:此AGENT端以本地服务的形式运行,需要监听端口,强烈建议设置为10050,以便移动整个系统统一规划管理,当然,特殊情况下可修改为1024-32767 未使用的端口

ListenPort=10050

 

### Option: ListenIP

#   List of comma delimited IP addresses that the agent should listen on.

#   First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks.

#

# Mandatory: no

# Default:

## ListenIP=IP地址

#说明:对应的ListenPort监听到哪个IP上面,建议指定IP时,不用0.0.0.0

# ListenIP=192.168.1.6

 

### Option: StartAgents

#   Number of pre-forked instances of zabbix_agentd that process passive checks.

#   If set to 0, disables passive checks and the agent will not listen on any TCP port.

#

# Mandatory: no

# Range: 0-100 数字范围(0-100)

# Default:

#StartAgents=数字

#说明:在被动模式下,此参数用于设置控制监听进程可启用的子进程的数量,若监控项较多且采集很频繁,建议加大此数值

;若此数值为0,则禁止使用被动模式。另外,一般情况,不建议修改此数值,当且仅当某些监控项无法采集到数据,或数据采集数据有延迟现象时,可调整。第四,启用线程越多,则相对越耗系统资源

StartAgents=5

 

##### Active checks related

#主动模式相关参数设置

#什么时主动模式?

#在主动模式下,AGENT端(即采集客户端)将所采集的结果,主动提交给二级代理服务器或服务器,而此种情况下,二级代理服务器或服务器将被动接收采集信息

### Option: ServerActive

#   List of comma delimited IP:port (or hostname:port) pairs of Zabbix servers for active checks.

#   If port is not specified, default port is used.

#   IPv6 addresses must be enclosed in square brackets if port for that host is specified.

#   If port is not specified, square brackets for IPv6 addresses are optional.

#   If this parameter is not specified, active checks are disabled.

#   Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]

#

# Mandatory: no

# Default:

# ServerActive=

#ServerActive=IP地址或IP地址:端口号

#说明:在主动模式下,ServerActive为二级代理服务器或服务器,默认端口为10051,若需更改端口,则为#ServerActive=IP:port,非特殊情况下,不建议修改。

ServerActive=192.168.1.14

 

### Option: Hostname

#   Unique, case sensitive hostname.

#   Required for active checks and must match hostname as configured on the server.

#   Value is acquired from HostnameItem if undefined.

#

# Mandatory: no

# Default:

# Hostname=

# Hostname=主机名

#说明:手工自定义一个主机名,可以和系统的主机名一样,也可以不一样,此参数可根据实际情况启用或关闭,建议关闭此参数,并启用HostnameItem参数

#Hostname=Zabbix server

 

### Option: HostnameItem

#   Item used for generating Hostname if it is undefined.

#   Ignored if Hostname is defined.

#

# Mandatory: no

# Default:

#HostnameItem:自动获取主机名

#说明:system.hostname是ZABBIX内置的一个自动获取主机名的方法,为了方便配置,建议打开此参数而关闭Hostname参数#。注意:HostnameItem的优化级低于Hostname,当两个参数都启用且配置的情况下,ZABBIX获取的主机名,将以Hostname为#准

HostnameItem=system.hostname

 

### Option: HostMetadata

#   Optional parameter that defines host metadata.

#   Host metadata is used at host auto-registration process.

#   An agent will issue an error and not start if the value is over limit of 255 characters.

#   If not defined, value will be acquired from HostMetadataItem.

#

# Mandatory: no

# Range: 0-255 characters 0-255个字符

# Default:

#  HostMetadata=字符串

#说明:用于定义当前主机唯一标识符,最大长度255个,仅适用于自动发现情况下,默认不定义,建议不定义

# HostMetadata=

 

### Option: HostMetadataItem

#   Optional parameter that defines an item used for getting host metadata.

#   Host metadata is used at host auto-registration process.

#   During an auto-registration request an agent will log a warning message if

#   the value returned by specified item is over limit of 255 characters.

#   This option is only used when HostMetadata is not defined.

#

# Mandatory: no

# Default:

#说明;用于获取主机的HostMetadata,建议保持默认

# HostMetadataItem=

 

### Option: RefreshActiveChecks

#   How often list of active checks is refreshed, in seconds.

#

# Mandatory: no

# Range: 60-3600

# Default:

#RefreshActiveChecks=数字

#说明:被监控的主机多久(秒)重新请求二级代理或服务端刷新一监控列表。范围为60-3600秒。ZABBIX运行原理为:,zabbix客户端启动后,在等待RefreshActiveChecks秒后,开始从二级代理或服务端请求并下载监控项信息,保存在本地专门的buffersend中,再过RefreshActiveChecks秒后,重新获取监控项信息。这就是为什么当配置监控项,要过一会才能生效的原因。这个数值,就是等待时间。建议,不要将此数值设置过小,以免加大AGENT端和服务端及数据库的压力,建议为120秒。

 RefreshActiveChecks=120

 

### Option: BufferSend

#   Do not keep data longer than N seconds in buffer.

#

# Mandatory: no

# Range: 1-3600

# Default:

#BufferSend=数字

#说明:多少秒后,将BUFFER中的数据提交到二级代理或服务端。范围(1-36600)此数值的大小决定了采集后,提交数据的及时性,数值越小,则提交得越频繁,对服务器压力越大,同时对AGENT端系统资源消耗越大,则表现出来的现象是报警非常及时,建议根据实际情况自行考虑,也可保持默认,若发现ZABBIX消耗资源较多,建议加大此数值。

BufferSend=5

 

### Option: BufferSize

#   Maximum number of values in a memory buffer. The agent will send

#   all collected data to Zabbix Server or Proxy if the buffer is full.

#

# Mandatory: no

# Range: 2-65535

# Default:

#BufferSize=数值

#说明:此参数作用设置保存采集数据在内存中的容量大小。若此agent端监控项较多,建议加大此数值。BufferSize与BufferSend之间有联系的。当达到bUFFERSEND或Buffersize已满时,都会触发数据提交动作。

BufferSize=100

 

### Option: MaxLinesPerSecond

#   Maximum number of new lines the agent will send per second to Zabbix Server

#   or Proxy processing 'log' and 'logrt' active checks.

#   The provided value will be overridden by the parameter 'maxlines',

#   provided in 'log' or 'logrt' item keys.

#

# Mandatory: no

# Range: 1-1000

# Default:

#MaxLinesPerSecond=数值

#说明:定义了AGENT在1秒内发送的日志行数,用于避免网络或cpu过载,建议保持默认

# MaxLinesPerSecond=100

 

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

#高级参数设置

### Option: Alias

#   Sets an alias for parameter. It can be useful to substitute long and complex parameter name with a smaller and simpler one.

#

# Mandatory: no

# Range:

# Default:

#设置参数的别名。它可以替代长和复杂的一个小而简单的一个有用的参数名称

#alias_name=long_command

 

### Option: Timeout

#   Spend no more than Timeout seconds on processing

#

# Mandatory: no

# Range: 1-30

# Default:

#Timeout=数值

#说明:当agent采集一个数据时,多长少算超时。建议保持默认

Timeout=30

 

### Option: AllowRoot

#   Allow the agent to run as 'root'. If disabled and the agent is started by 'root', the agent

#   will try to switch to user 'zabbix' instead. Has no effect if started under a regular user.

#   0 - do not allow

#   1 - allow

#

# Mandatory: no

# Default:

#AllowRoot=0或1

#说明:是否允许ROOT帐号运行此客户端。0:不允许,1:允许,当一个脚本执行需要以ROOT身份执行的,则此开关必须打开,建议根据实际情况开启或关闭,

AllowRoot=0

 

### Option: Include

#   You may include individual files or all files in a directory in the configuration file.

#   Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.

#

# Mandatory: no

# Default:

# Include=

# Include=目录路径或扩展配置文件路径

#说明:从配置文件可管理性或扩展性考虑,若需配置大量参数的且为了方便后续管理可以启用此参数,建议根据实际情况考虑,不过,一般情况下无须启用

# Include=/usr/local/etc/zabbix_agentd.userparams.conf

# Include=/usr/local/etc/zabbix_agentd.conf.d/

 

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

#自定义监控脚本

### Option: UnsafeUserParameters

#   Allow all characters to be passed in arguments to user-defined parameters.

#   0 - do not allow

#   1 - allow

#

# Mandatory: no

# Range: 0-1

# Default:

#UnsafeUserParameters=0或1

#说明:是否启用用户自定义监控脚本,1启用,0不启用。由于ZABBIX实现监控方法的多样性,一般都采用脚本来实现监控数据的采集,所以,建议开启,否则功能将受限。

UnsafeUserParameters=1

 

### Option: UserParameter

#   User-defined parameter to monitor. There can be several user-defined parameters.

#   Format: UserParameter=,

#   See 'zabbix_agentd' directory for examples.

#

# Mandatory: no

# Default:

# UserParameter=

 

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

 

### Option: LoadModulePath

#   Full path to location of agent modules.

#   Default depends on compilation options.

#

# Mandatory: no

# Default:

# LoadModulePath=${libdir}/modules

#说明:扩展模块路径,强烈建议不要改动,除非你具有AGENT 开发能力

# LoadModulePath=${libdir}/modules

 

### Option: LoadModule

#   Module to load at agent startup. Modules are used to extend functionality of the agent.

#   Format: LoadModule=.so>

#   The modules must be located in directory specified by LoadModulePath.

#   It is allowed to include multiple LoadModule parameters.

#

# Mandatory: no

# Default:

#说明:扩展模块路径,强烈建议不要改动,除非你具有AGENT 开发能力

# LoadModule=

 

#UserParameter=

#说明:用户自定义监控脚本,当且仅当UnsafeUserParameters=1时UserParameter生效。以下为SNC初始自定监控脚本,不建议修改,已有选项,但可自义添加。

#自定义监控项配置语法

#UserParameter=key,command

#如何使用:以获取mysql监控为例

#步骤1,设置自定义脚本

#UserParameter=mysql.questions,mysqladmin -uroot --password='XXXXX' status|cut -f4 -d":"|cut -f1 -d"S"

#保存退出,并重启AGENT

#步骤2,手工验证

#在二级代理端或服务器端用命令 zabbix_get -s IP -k mysql.questions 将返回采集信息

#步骤3,在管理页面添加监控项

#注意:成功关键,脚本本身具有可执行权限,且脚本运行正常

 

UserParameter=cmd[*],$1 $2 $3 $4 $5 $6 $7 $8 $9

UserParameter=setenv[*],java -jar /smp/sncmon/java/setenv/setenv.jar $1 $2

UserParameter=oracle[*],java -jar /smp/sncmon/java/oracle/oracle.jar $1 /smp/sncmon/java/oracle/

UserParameter=db2[*],/smp/sncmon/java/db2/linux.sh $1

UserParameter=mindwaresctipt,setsid /smp/sncmon/shell/middleware/middle_zabbix.sh

UserParameter=agent.restart,/smp/sncmon/shell/agent/agentrestart.sh

UserParameter=diskmon,/smp/sncmon/shell/diskmon/disk_mon.sh $1




阅读(1334) | 评论(0) | 转发(0) |
0

上一篇:python之socket

下一篇:python ftp和sftp的例子

给主人留下些什么吧!~~