首页 » Linux » zabbix 3.0安装版

zabbix 3.0安装版

 
文章目录

zabbix3.0安装实践

系统环境:
  1. centos7.2
安装环境:
  1. php5.4以上,直接yum装是5.3多,所以需在添加安装源。
  2. 添加php源的网站:https://webtatic.com/packages/php56/
  3. 添加php源:
    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    4、安装php,httpd等:
    yum install php56w php56w-bcmath php56w-cli php56w-common php56w-fpm php56w-gd php56w-mysqlnd php56w-pdo php56w-mbstring php56w-mcrypt php56w-devel php56w-xml httpd gcc gcc-c++ glibc net-snmp net-snmp-devel libssh2-devel OpenIPMI-devel curl-devel -y

安装zabbix-server with mysql
  1. 参考官方文档:https://www.zabbix.com/documentation/3.0/manual/installation/installfrompackages/server_installationwithmysql
  2. 添回zabbix官方源:rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
  3. 安装zabbix-server:yum install zabbix-server-mysql zabbix-web-mysql -y
  4. 按照官方创建数据库和导入数据表,数据库可以是本地也可以是另个单独一服务器:
    shell> mysql -uroot -p
    mysql> create database zabbix character set utf8 collate utf8_bin;
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
    mysql> quit;

    导入数据表:

    zcat /usr/share/doc/zabbix-server-mysql-3.0.*/create.sql.gz | mysql -uzabbix -p zabbix
  5. 修改zabbix-server的配置文件的数据库部分
    # vi /etc/zabbix/zabbix_server.conf
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
  6. 修改httpd中zabbix中的配置中的时区改为你所以的时区Asia/Shanghai,位置是:/etc/httpd/conf.d/zabbix.conf
  7. 如果开启了selinux,需要做以下操作:setsebool -P httpd_can_connect_zabbix on
  8. 启动zabbix-server和httpd就可以在网页上完成安装,默认用户名和密码分别是Admin和zabbix。systemctl start zabbix-server;systemctl start httpd
  9. 在网页上访问并安装:http://192.168.7.221/zabbix/setup.php,安装完成之后,会产生一个/etc/zabbix/web/zabbix.conf.php,内容如下:
    [root@7-node2 web]# cat zabbix.conf.php 
    <?php
    // Zabbix GUI configuration file.
    global $DB;
    $DB['TYPE']     = 'MYSQL';
    $DB['SERVER']   = '192.168.7.222';
    $DB['PORT']     = '0';
    $DB['DATABASE'] = 'zabbix';
    $DB['USER']     = 'zabbix';
    $DB['PASSWORD'] = 'zabbix';
    // Schema name. Used for IBM DB2 and PostgreSQL.
    $DB['SCHEMA'] = '';
    $ZBXSERVER      = 'localhost';
    $ZBXSERVERPORT = '10051';
    $ZBXSERVERNAME = 'zabbix-clc-server';
    $IMAGEFORMATDEFAULT = IMAGEFORMAT_PNG;
    [root@7-node2 web]#

    其中zabbixservername就会显示在网页的右上角。

  10. 安装完成之后,就可以在网页上访问了http://ip/zabbix,用户名:Admin,密码:zabbix
zabbix-agent安装
  1. 首先安装zabbix官方源:rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
  2. 安装zabbix-agnet:yum install zabbix-agent
  3. 启动及开机启动:systemctl start zabbix-agent;systemctl enable zabbix-agent
网页端配置注意事项
  1. zabbix用户的权限不是授给单个用户的,是授给单个用户组,所以权限更改也是在用户组里更改。
  2. zabbix查看监控项是否起作用,首先要在configure–hosts下面查看对应主机下面的items下面有各个item的status,
    . 如果status是enabled说明可以用,
    . 如果是not supported说明对应的监控端没有起来或者没有对应的监控项,需要自己增加。
    . 如果不想监控,直接点击状态下的enabled,让它变成disabled就可以了,当然选择删除也是可以的。

zabbix利用自带的msyql模板监控mysql

增加监控账号

监控账号只需要添加usage权限就可以了,usage本身就是无权限的。 grant usage on *.* to zabbix@'localhost' identified by 'zabbix'; 上面的localhost主要看以下面的配置文件是配置什么。

增加连接mysql的文件

mysql的监控模板是在/etc/zabbix下面(注:yum安装的是在这,源码安装的可能还需要从源码里复制出来),新建立一个文件:touch /etc/zabbix/.my.cnf,内容如下:

[root@7-node1 zabbix]# cat .my.cnf 
[mysql]
host=localhost
user=zabbix
password=zabbix
socket=/application/mysql-5.7.16/tmp/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
socket=/application/mysql-5.7.16/tmp/mysql.sock

上面授权的localhost要上与面配置文件的host后面的值对应起来。 监控docker里的配置文件: 启动docker:docker run -p 3306:3306 --name zabbix_msyql -v /home/docker-dir/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=clc123 -d mysql:5.6.34监控docker的配置文件如下:

[root@7-node3 zabbix]# cat .my.cnf 
[mysql]
#host=localhost
host=192.168.7.222
user=zabbix1
password=zabbix1
#socket=/var/lib/mysql/mysql.sock
[mysqladmin]
#host=localhost
host=192.168.7.222
user=zabbix1
password=zabbix1
#socket=/var/lib/mysql/mysql.sock
[root@7-node3 zabbix]#

修改监控模板

vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 把里面的HOME后面的路径更改成/etc/zabbix就可以了,因为配置文件放在这。内容如下:

# 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=/etc/zabbix 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=/etc/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive
#UserParameter=mysql.version,mysql -V
UserParameter=mysql.version,HOME=/etc/zabbix mysql  -N -e "select @@version" 2>/dev/null|sed -n '1p'

发现zabbix自带的mysql监控中的命令有点问题,需要修改以下两部分才是正确的。

  1. mysql.ping这个有问题,当服务端mysql停了的时候,由于登录去获取值,它会返回错误,得到的结果不只是0,所以需要更改,把错误的重定向到空才能得到正常结果,不然mysql down了都不知道,所以在生产中需在测试。
     UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping 2>/dev/null| grep -c alive
  2. 还有一个是版本的问题,原来的版本只能得到客户端的版本,当客户端版本与服务端版本不一样的时候会不准确,所以需要更改。更改之后如下,直接获取服务器的版本号:
    UserParameter=mysql.version,HOME=/etc/zabbix mysql  -N -e "select @@version" 2>/dev/null|sed -n '1p'

重启zabbix-agent

systemctl restart zabbix-agent

web界面上添加

configure—hosts—选中主机进去—templates—add—select—Template App MySQL—Add–update就可以了。

数据的得来

如mysql的带宽,zabbix获得的是字节数,但在zabbix上看到的是图形是速度,这是怎么得来的呢,这个速度的计算主要是在item里设置的,item下面有下store value这下面有三个值:As is,Delta(speed per second),Delta(simple change);
1. As is:什么都不做,是什么值就显示什么
2. Delta(speed per second):计算公司是:(value-prevalue)/(sec-presec)得来的,也就是速率,就是这次的值减去上次获取到的值除以时间差,
3. Delta(simple change):结果就是这次的值减去上次的值。

监控服务

监控服务是否运行,可以用zabbix自带的模板:net.tcp.service[service,,],还有一些net.tcp的监控方法可以参考官文文档:https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_agent?s[]=net&s[]=tcp&s[]=service&s[]=ssh 所以你监控ssh的时候,当端口不是22的时候,需要增加端口,可以用定义宏变量,也可以直接写端口,如下:
net.tcp.service[ssh,,2222],为什么是两个逗号呢,因为中间是ip,可以不用填,最后一个是端口。如果定义了宏变量:可以这样写:
net.tpc.service[ssh,,${SSH_PORT}]

宏变量说明

宏变量会使配置变得简单,当需要变的时候,我们只需要变更变量的值。宏变量可以用到以下地方:
1. item 名称
2. item key 参数
3. trigger名称和描述
4. trigger表达式
5. 其他地方

宏变量名:大写字母,数字,下划线组成
zabbix宏变量优先级:
主机宏 高于 主机模板定义的宏 高于 全局宏(Administration → General → Macros)

增加mysql主从复制监控

监控主从同步是否可以用,主要是查看从库sql和io线程是否是yes的状态,当然如果更精准一点还可以监控,SecondsBehindMaster: 0是否是0及SlaveIOState: Waiting for master to send event这个,可以多写几个key,command,然后在触发器里添加这些(and or),生产中可以考虑这样做

  1. 首先可以在从库的zabbix客户端增加key,command,可以直接在/etc/zabbix/zabbixagentd.d/userparametermysql.conf里面增加,如下:UserParameter=mysql_slave.status,mysql -uroot -pclc123 -e "show slave status\G"|grep -Ei "Slave_IO_Running:|slave_SQL_Running:"|awk '{print $2}'|grep -ci yes
  2. 上面我是直接用命令的,也可以仿照上面那上文件上面的,用HOME变量指定.my.cnf文件,这个文件里写用户名和密码及socket等信息,
  3. 登录mysql授权查看状态的账号,上面我用root,生产中不能用,我测试的时候授权好像没有用,命令:grant replication client on *.* to rep1@'localhost' identified by '123456';
  4. 本地测试如果返回2,说明正常,然后重启zabbix-agent。
  5. 在zabbix-server上测试如下,正常在去web界面上添加:
    [root@7-node2 log]# zabbixget  -s 192.168.7.220 -k mysqlslave.status
    2
  6. 在web界面上添加,找到slave那台主机,然后添加configuration—hosts—slave-hosts-items–create items,然后添加就可以了。aplication那可以选择mysql,show value我们可以点后面的 show value mappings来增加2对应的中文显示,1和0显示什么,这样定义之后,我们在web上看到的不是数据2,是这样的:slave is ok (2)
  7. 添加trigger,configuration—hosts—slave-hosts—trigger–create trigger,最近获取到的值小于2就报警及对应的级别,如:{7-node1:mysql_slave.status.last()}<2。
  8. 测试如果一切正常就ok,然后可以添加邮件报警。

 

原文链接:zabbix 3.0安装版,转载请注明来源!

1