zabbix


目录


I.zabbix简介

回目录

zabbix是完全开源的工具,整合了cactinagios等特性 附:SNMP(udp 161 udp 162) 众多网络工具都支持此协议,比如常见路由交换,常见OS 其既可以做管理端也可以做被管理端 snmp协议大致有3个版本分别是v1 v2 v3 无论是v1v2 的安全性是比较差的,因为传输是明文的,V3的认证密码用MD5/SHA摘要算法加密

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

i.Zabbix的主要功能

回目录

  • 具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)
  • 支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)
  • 支持分布式,能集中展示、管理分布式的监控点,扩展性强
  • server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现),编写插件容易,可以自定义监控项,报警级别的设置。
  • 数据收集,支持 snmp(包括 trapping and polling ),IPMIJMXSSHTELNET
  • 自定义的检测;自定义收集数据的频率;

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

回目录

  • 灵活的触发器;可以定义非常灵活的问题阈值,称为触发器;
  • 高可定制的报警;发送通知,可定制的报警升级,收件人,媒体类型。 CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等等。
  • 硬件监控:Zabbix IPMI Interface
  • 系统监控:ZabbixAgent Interface
  • Java监控:Zabbix JMX Interface
  • 网络设备监控:Zabbix SNMP Interface
  • 应用服务监控:Zabbix Agent UserParameter
  • MySQL数据库监控:percona-monitoring-plulgins
  • URL监控:Zabbix Web 监控

iii.zabbix重要组件说明

回目录

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

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

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

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

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

zabbix常用的监控架构平台

1、server-agentd模式: 这个是最简单的架构了,常用于监控主机比较少的情况下。 2、server-proxy-agentd模式: 这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。 zabbix的系统架构:

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

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

  • zabbix监控服务器:192.168.130.76 #zabbix的服务端(若要监控本机,则需要配置本机的zabbix agent)
  • Zabbix agent被监控主机:192.168.130.78#zabbix的客户端(被监控端,需要配置Zabbix agent

II.Zabbix部署前的LNMP环境的搭建过程

回目录

安装编译工具及库文件(zabbix server)

[root@mysqla ~]# 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

i.MySQL安装参见Memcache文档

回目录

ii.安装nginx

回目录

解压zlib

[root@mysqla ~]# tar zxf zlib-1.2.8.tar.gz

说明:不需要编译,只需要解压就行。

解压pcre

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

说明:不需要编译,只需要解压就行。

[root@mysqla ~]# groupaddwww
[root@mysqla ~]# useradd -g www www -s /sbin/nologin

下载nginx的源码包:http://nginx.org/download

解压源码包

[root@mysqla ~]# tar zxf nginx-1.10.2.tar.gz 
[root@mysqla ~]# cd nginx-1.10.2/
[root@mysqla 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
[root@mysqla nginx-1.10.2]# make&& make install
[root@mysqla ~]# ln -s /usr/local/nginx1.10/sbin/nginx /usr/local/sbin/
[root@mysqla ~]# nginx
[root@mysqla ~]# netstat -anpt | grep nginx
tcp   0      0 0.0.0.0:80      0.0.0.0:*      LISTEN      11598/nginx: master
[root@mysqla ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@mysqla ~]# firewall-cmd --reload 
success

启动后可以再浏览器中打开页面,会显示nginx默认页面。

26

iii.安装php

回目录

[root@mysqla ~]# tar zxf libmcrypt-2.5.7.tar.gz 
[root@mysqla ~]# cd libmcrypt-2.5.7/
[root@mysqla libmcrypt-2.5.7]# ./configure && make && make install
# ln -s /usr/local/mysql/lib/libmysqlclient.so.20.3.0 /usr/local/mysql/lib/libmysqlclient_r.so
[root@mysqla ~]# tar zxf php-5.6.27.tar.gz
[root@mysqla 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
[root@mysqla php-5.6.27]# make&& make install
[root@mysqla php-5.6.27]# cp php.ini-production /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
  • mbstring.func_overload = 0

创建php-fpm服务启动脚本

[root@mysqla php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@mysqla php-5.6.27]# chmod +x /etc/init.d/php-fpm 
[root@mysqla php-5.6.27]# chkconfig --add php-fpm
[root@mysqla php-5.6.27]# chkconfig php-fpm on

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

#cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@mysqla 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@phpserver ~]# service  php-fpm start
Starting php-fpm  done
[root@mysqla php-5.6.27]# netstat -anpt | grep php-fpm
tcp   0   0 127.0.0.1:9000    0.0.0.0:*     LISTEN      10937/php-fpm: mast

配置nginx支持php

[root@mysqla ~]# 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@mysqla conf]# 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@mysqla conf]# killall -s HUP nginx

iv.测试LNMP

回目录

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

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

访问结果:

27

至此,LNMP部署完毕。

III.监控系统Zabbix-3.0.3的安装

回目录

zabbix-server端的操作

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

创建Zabbix运行的用户:

[root@mysqla ~]#groupadd zabbix
[root@mysqla ~]#useradd -g zabbix zabbix

安装libcurl和net-snmp:

[root@mysqla ~]# yum -y install net-snmp net-snmp-develcurl-develjava-1.8.0-openjdk java-1.8.0-openjdk-develOpenIPMI-devel libssh2-devel

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

安装Fping:

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

安装Zabbix Server:

[root@mysqla ~]# tar zxf zabbix-3.2.1.tar.gz 
[root@mysqla ~]# cd zabbix-3.2.1/
[root@mysqla 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, 那么会生成getsender两条命令. 如下, 用于接收agent发生过来的信息, 同时发送给server.

[root@mysqla zabbix-3.2.1]#make && make install

添加系统软连接

[root@mysqla ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@mysqla ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

i.Zabbix Server配置与启动

回目录

1.创建Zabbix数据库和MySQL用户

回目录

mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.01 sec)

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

2.导入Zabbix初始数据

回目录

切换到zabbix的解压目录下

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

进行zabbix初始数据导入

[root@mysqla mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < schema.sql 
[root@mysqla mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql 
[root@mysqla mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql

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

回目录

root@mysqla ~]# 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
#mkdir -p /usr/local/zabbix/logs
#chown -R zabbix:zabbix /usr/local/zabbix

4.启动Zabbix Server

回目录

# /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@mysqla zabbix-3.2.1]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib
/usr/local/lib
[root@mysqla zabbix-3.2.1]# ldconfig

再次执行zabbix_server启动

# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
[root@mysqla init.d]# netstat -anpt |grep zabbix_server
tcp    0  0 0.0.0.0:10051    0.0.0.0:*      LISTEN      27199/zabbix_server

5.添加开机启动脚本

回目录

[root@mysqla ~]# cd zabbix-3.2.1/
# cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
[root@mysqla zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_server 
[root@mysqla zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@mysqla zabbix-3.2.1]# chkconfig --add zabbix_server
[root@mysqla zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@mysqla zabbix-3.2.1]# chkconfig zabbix_server on
[root@mysqla 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@mysqla zabbix-3.2.1]# systemctl daemon-reload
[root@mysqla zabbix-3.2.1]# /etc/init.d/zabbix_server stop
Stopping zabbix_server (via systemctl):                    [  OK  ]
[root@mysqla zabbix-3.2.1]# netstat -anpt | grep zabbix
[root@mysqla zabbix-3.2.1]# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                    [  OK  ]
[root@mysqla zabbix-3.2.1]# netstat -anpt | grep zabbix
tcp  0    0 0.0.0.0:10051   0.0.0.0:*  LISTEN      28106/zabbix_server

6.设置防火墙规则

回目录

[root@mysqla zabbix-3.2.1]# firewall-cmd --permanent --add-port=10051/tcp 
success
[root@mysqla zabbix-3.2.1]# firewall-cmd --reload 
success

ii.配置zabbix web页面

回目录

1.在安装目录将frontends拷贝到指定的web root

回目录

[root@mysqla ~]# cd /root/zabbix-3.2.1/
[root@mysqla zabbix-3.2.1]# cp -r frontends/php/   /usr/local/nginx1.10/html/zabbix
[root@mysqla zabbix-3.2.1]# chown  -R  www:www  /usr/local/nginx1.10/html/zabbix/

注:/usr/local/nginx/htmlNginx默认站点目录 wwwNginx运行账户 注:PHP需要至少开启扩展:

  • gd
  • bcmath
  • ctype
  • libXML
  • xmlreader
  • xmlwriter
  • session
  • sockets
  • mbstring
  • gettext
  • mysql

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

[root@mysqla ~]# /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

2.安装web

回目录

访问Web界面http://192.168.31.225/zabbix,进行相关web配置,配置完成后使用默认用户admin(密码:zabbix)登陆即可 进入ZABBIX WEB安装画面

29

进入ZABBIX检测画面

30

对数据库进行设置,这里如果数据库在本地的话端口可以使用0

31

点击Next step 一下步进行zabbix server 细节的设置 这一步可以默认

32

点击安装,安装完成后 如果没有错误就会进入完成画面 完成画面有设置文件放在服务器的位置,请记下来

33

34

点击Finish 完成

使用Admin 用默认密码 zabbix 登录

35

登录后画面如下

36

至此ZABBIX的基础安装完成

3.显示简体中文界面

回目录

在安装数据库时已经将zabbix库设置了utf-8字符 首先确定zabbix开启了中文支持功能: 登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/usr/local/nginx1.10/html/zabbix/),打开 locales.inc.php文件

[root@mysqla include]# pwd
/usr/local/nginx1.10/html/zabbix/include
[root@mysqla include]# vi locales.inc.php
function getLocales() {
return [
                'en_GB' => ['name' =>_('English (en_GB)'),     'display' => true],
                'en_US' => ['name' =>_('English (en_US)'),     'display' => true],
                'bg_BG' => ['name' =>_('Bulgarian (bg_BG)'),   'display' => false],
                'zh_CN' => ['name' =>_('Chinese (zh_CN)'),     'display' => true],
                'zh_TW' => ['name' =>_('Chinese (zh_TW)'),     'display' => false],
                'cs_CZ' => ['name' =>_('Czech (cs_CZ)'),       'display' => true],
                'nl_NL' => ['name' =>_('Dutch (nl_NL)'),       'display' => false],

登陆zabbix后,点击右上角的“用户”图标,将语言设置为“中文”:

37

按照如图选择Chinese(zh_CN),点击update

38

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

回目录

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

39

b.把它拷贝到zabbixweb端的fonts目录下例

如:/usr/local/nginx1.10/html/zabbix/fonts/,并且把TTF后缀改为ttf

[root@mysqla fonts]# pwd
/usr/local/nginx1.10/html/zabbix/fonts
[root@mysqla fonts]# ls
DejaVuSans.ttf  simkai.ttf

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

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

vi替换技巧:%s/DejaVuSans/simkai 其中:simkai为字库名字,不包含ttf后缀

# cd/usr/local/nginx1.10/html/zabbix
# vi include/defines.inc.php

vi编辑器的末行模式下输入%s/DejaVuSans/simkai 这样,修改后,zabbix监控图形中的中文字就不会出现乱码了

IV.zabbix客户端的安装

回目录

既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent,安装agent比较简单,我们也是按照安装server的流程,下载软件包,在编译的时候,我们只选择agent

192.168.31.250作为zabbix的被监控端,提供webmysql应用

i.安装Zabbix,配置Zabbix agent

回目录

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

配置开机自动启动

[root@server1 ~]# chkconfig --add zabbix_agentd
[root@server1 ~]# chkconfig zabbix_agentd  on

1.修改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! #保存退出
[root@server1 zabbix-3.2.1]# systemctl daemon-reload

2.编辑zabbix_agentd.conf

回目录

[root@server1 zabbix-3.2.1]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

内容如下

[root@server1 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.31.225
ListenPort=10050
ServerActive=192.168.31.225
Hostname=192.168.31.250
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

注: 其中ServerServerActive都指定zabbixserverIP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许192.168.31.225这个ip来我这取数据。而serverActive192.168.31.225的意思是,客户端主动提交数据给他。 Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样。

3.启动zabbix_agentd

[root@server1 ~]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl):                    [  OK  ]
[root@server1 ~]# netstat -anpt | grep zabbix_agentd
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      12926/zabbix_agentd 
[root@server1 ~]# firewall-cmd --permanent --add-port=10050/tcp
success
[root@server1 ~]# firewall-cmd --reload 
success

到此,zabbix3.2.1监控系统的基本环境安装完成。

ii.实现zabbix添加监测项

回目录

添加对Linux主机的监控

在浏览器中打开:http://192.168.31.225/zabbix 登录zabbix,先在“配置”-“主机”里添加主机监控,监控os资源:内存cpuio负载带宽等.

1.登录zabbix,先在“配置”-“主机”里单击”创建主机”

回目录

40

2.点击”主机”标签,填写相关信息

回目录

41

42

注意:下图中的“主机名称”要和zabbix_agentd.conf文件中设置的Hostname后面的名称一致!

  • 主机名称:192.168.31.250
  • 群组:Linux servers
  • agent代理程序接口ip192.168.21.128
  • 已启用:勾选
  • 其它选项默认即可

3.切换到模板

回目录

43

选择

选择:Template OS Linux

点添加

44

添加

45

至此,Zabbix监控Linux主机设置完成。

46

4.监控结果

回目录

配置过一段时间后,观察下监控图效果出来了没

47

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

iii.Zabbix_agent客户端操作

回目录

1.mysql授权

回目录

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

mysql> grant all on *.* to zabbix@'localhost' identified by "123456”;
mysql> flush privileges;

2.在zabbix_agent服务目录下创建.my.cnf连接文件zabbix安装目录是/usr/local/zabbix

回目录

[root@server1 ~]# cd /usr/local/zabbix/etc/
[root@server1 ~]# cat .my.cnf 
[client]
user=zabbix
password=123456

注意:

如果在数据库grant授权时,针对的是localhost,这个.my.cnf里面就不用加host参数了【如上配置】

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

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

host=192.168.31.250
socket= /usr/local/mysql/mysql.sock
user=zabbix
password=123456

3.配置MySQLkey文件

回目录

这个可以从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@server1 ~]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@server1 zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
# cp /root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf ./
[root@server1 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@server1 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>,<table>,<type>].
# 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

修改内容

  • HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'
  • HOME=/usr/local/zabbix/etc/ mysql -N'
  • HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c alive

4.重启zabbix_agent

回目录

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

[root@server1 ~]# pkill -9 zabbix_agent
[root@server1 ~]# netstat -anpt | grep zabbix_agent
[root@server1 ~]# /usr/local/zabbix/sbin/zabbix_agentd 
[root@server1 ~]# netstat -anpt | grep zabbix_agent
tcp   0      0 0.0.0.0:10050   0.0.0.0:*    LISTEN      15400/zabbix_agentd

接着在zabbix_server服务端进行命令行测试[下面的192.168.31.250是客户端的ip

[root@mysqla ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.31.250 -p 10050 -k "mysql.status[Uptime]"
12593
[root@mysqla ~]#

如果出现类似这一串key的数字,就说明配置ok,服务端能监控到客户端的mysql数据了! 成功啦,之后在监控界面增加主机对应的MySQL模板就ok了。

注:zabbix_get命令介绍 参数说明:

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

zabbix_get获取数据

获取负载

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

获取主机名

# zabbix_get -s 192.168.31.250 -p 10050 -k "system.hostname"

5.登录zabbix监控界面,在“配置”-“模板”里可以看到自带的mysql监控模板

回目录

48

在相应主机监控配置里添加mysql的监控模版(zabbix自带的)即可。

49

下面是mysql监控项的效果图

【1】监控mysql的带宽:在zabbix前端可以实时查看mysql发送接收的字节数。其中bytes received表示从所有客户端接收到的字节数,bytes sent表示发送给所有客户端的字节数。

50

【2】监控mysql的操作状态:在zabbix前端可以实时查看各种SQL语句每秒钟的操作次数。

51


results matching ""

    No results matching ""