zabbix

第一节:zabbix 安装

本节说明zabbix2.4在centos6.x上的安装与使用,主要参考zabbix官方安装文档:https:\/\/www.zabbix.com\/documentation\/2.4\/manual\/installation\/install_from_packages

  1. 添加yum源

    # rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
    
  2. zabbix server安装

    zabbix server需要使用关系型数据库,支持mysql,pgsql,sqlite3数据库,如果数据库不同,安装的zabbix-server也不同:

    • mysql

      # yum install zabbix-server-mysql zabbix-web-mysql
      
    • pgsql

      # yum install zabbix-server-pgsql zabbix-web-pgsql
      
    • sqlite3

      # yum install zabbix-server-sqlite3 zabbix-web-sqlite3
      
  1. zabbix agent安装

    # yum install zabbix-agent
    
  2. zabbix JavaGateway安装

    yum install -y zabbix-java-gateway.x86_64
    
  3. 数据库初始化

    可以参考官方文档:https:\/\/www.zabbix.com\/documentation\/2.4\/manual\/appendix\/install\/db_scripts

    下面是mysql数据库的初始化操作:

    shell> mysql -uroot -p<password>
    mysql> create database zabbix character set utf8 collate utf8_bin;
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
    mysql> quit;
    shell> cd /usr/share/doc/zabbix-server-mysql-2.4.0/create
    shell> mysql -uzabbix -p<password> zabbix < schema.sql
    # stop here if you are creating database for Zabbix proxy
    shell> mysql -uzabbix -p<password> zabbix < images.sql
    shell> mysql -uzabbix -p<password> zabbix < data.sql
    
  4. zabbix-server配置

    修改配置文件 \/etc\/zabbix\/zabbix_server.conf 中的以下几项,也即zabbix-server使用的数据库配置:

    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    JavaGateway=192.168.3.14
    JavaGatewayPort=10052
    StartJavaPollers=5
    
  5. zabbix-server 开机自启

    chkconfig zabbix-server on
    
  6. zabbix-server 启动

    service zabbix-server start
    
  7. zabbix-agent 开机自启

    chkconfig zabbix-agent on
    
  8. zabbix-agent 启动

    service zabbix-agent start
    
  9. zabbix-web 配置与启动

    zabbix-web是使用php语言写的管理zabbix的web服务,运行在Apache Http Server中。

    • 修改httpd 的时区,其他保持默认即可,配置文件:\/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 date.timezone Asia/Shanghai
      
    • 因为 httpd 默认使用80端口,有可能与其他的应用有冲突,修改 httpd 端口的配置文件:\/etc\/httpd\/conf\/httpd.conf

      set Listen 8555
      
    • 启动httpd

      service httpd restart
      
  1. 访问zabbix-web,访问地址为http://localhost:8555/zabbix,默认用户名和密码为Admin/zabbix

  2. zabbix agent 配置与启动

    修改配置文件\/etc\/zabbix\/zabbix_agentd.conf

    # 配置此项,则允许该zabbix-server主动来查信息,多个server IP使用,分隔
    Server=10.211.55.15
    # agent主动将自己的信息推送给zabbix-server,多个server IP使用,分隔
    ServerActive=10.211.55.15
    # 该agent机器在zabbix中的主机名称,需保证唯一,在zabbix-web中添加机器时的Hostname必须和此项值一致,可以考虑直接将此值设置成机器IP
    Hostname=node0.cana
    

第二节:zabbix 使用

zabbix的使用主要围绕zabbix-web的使用,在使用管理员账号登录后,首页主要监控大盘的展示,显示了zabbix管理监控的各个机器的运行情况;zabbix主要配置都在Configuration目录下,Administration主要是用户方面的配置。

  • 群组:Configuration -> Host groups

    将主机和模版进行分组,方便管理

  • 模版:Configuration -> Templates

    可以将监控的项目还有触发器保存在一个模版中,这样不同的主机只需要关联此模版,就可以使用此模版中的项目和触发器了。可以对每个应用程序分别建立一个模版,这个模版里包含了对这个应用的监控项目和触发器,每个应用节点机器只需要关联此模版即可。

  • 项目

    也可以称为监控项,意思是监控这台机器的什么,比如CPU使用率、内存使用情况、进程数量等等。项目中最重要的值为Key,Key的值可以想象成一个函数,比如proc.num[<name>,<user>,<state>,<cmdline>]这一项,proc.num为函数名,用来获取进程的数量,中括号中的可以理解为参数,不填则为空,<name>为进程的名字,<user>为进程的启动用户,<state>为进程的状态,<cmdline>为进程的启动命令,支持正则表达式匹配。

  • 触发器

    当某个监控项达到了某一个值,则触发此触发器,即告警。

  • 主机:Configuration -> Hosts

    被监控的机器,机器中的host name必须和该机器中zabbix-agent配置文件中的Hostname一致。在主机的配置页面可以给该主机建立监控项与触发器,但也可以关联模版。

  • 维护:Configuration -> Maintenance

    即机器的维护时间段,在一个维护中,可以配置维护持续的时间段,维护哪些机器,维护期间是否收集数据。

  • 动作:Configuration -> Actions

    即触发器被触发后的动作,简单点说就是当哪些主机出了什么问题之后做什么事,比如当服务器出现了问题之后,向指定用户组或者指定用户发送告警邮件和告警微信。

  • 用户:Administration -> Users

    zabbix用户管理,默认显示的是用户组列表,可以在右上角切换显示用户列表。Zabbix默认创建的用户有Admin和Guest两个用户,在每个用户详情中可以配置该用户使用哪些告警方式。

  • 告警媒介:Administration -> Media types

    zabbix的告警方式,可以支持邮件、短信等告警方式。也支持执行一段shell脚本来告警,脚本的默认存放路径为/usr/lib/zabbix/alertscripts/

  • 邮件告警脚本

    • 安装邮件发送程序
    yum install mailx
    
    • 修改邮箱配置文件\/etc\/mail.rc
    set [email protected]
    set smtp=smtp.exmail.qq.com
    set [email protected]
    set smtp-auth-password=<password>
    set smtp-auth=login
    
    • zabbix 发送邮件 shell脚本

    文件:\/usr\/lib\/zabbix\/alertscripts\/sendmail.sh

    #!/bin/bash
    
    to=$1
    subject=$2
    body=$3
    
    body=`echo $body|tr '\r' '\n'`
    cat << EOF | mail -s "$subject" "$to"
    $body
    EOF
    
    • 脚本权限
    chmod +x sendmail.sh
    chown zabbix.zabbix sendmail.sh
    

第三节:Mysql监控

zabbix 提供了mysql监控的模版,但是可能会遇到agent连不上mysql的情况,下面写一下凯拿线上的配置修改。

  1. 配置文件zabbix_agentd.conf中增加下面一行

    Include=/etc/zabbix/zabbix_agentd.d/
    
  2. 增加文件/etc/zabbix/.my.cnf,配置了zabbix访问数据库的用户名和密码

    [mysql]
    user=root
    password=<password>
    [mysqladmin]
    user=root
    password=<password>
    
  3. 增加文件zabbix_agentd.d/userparameter_mysql.conf,内容如下,里面的HOME指定了.my.cnf文件的目录,/opt/db/mysql/mysql/bin/mysql为自定义安装的mysql命令:

    # 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=/etc/zabbix /opt/db/mysql/mysql/bin/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[*],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 /opt/db/mysql/mysql/bin/mysql -N
    UserParameter=mysql.ping,HOME=/etc/zabbix /opt/db/mysql/mysql/bin/mysqladmin ping | grep -c alive
    UserParameter=mysql.version,/opt/db/mysql/mysql/bin/mysql -V
    
  4. 重启zabbix-agent,并在zabbix-web中给该主机添加Templates App Mysql模版

第四节:Mysql Slave 复制延迟监控

主要参考:https:\/\/github.com\/zbal\/zabbix

  1. 在文件zabbix_agentd.d\/userparameter_mysql.conf中增加如下一行

    UserParameter=mysql.slave[*],echo "show slave status \G" | HOME=/etc/zabbix /opt/db/mysql/mysql/bin/mysql | grep -E "^[ ]*$1:" | awk '{print $$2}'
    
  2. 在zabbix web 中新建监控mysql slave复制延迟时间的模版,其中item的key为mysql.slave[Seconds_Behind_Master], triggers 的触发器表达式为{Mysql Slave Template:mysql.slave[Seconds_Behind_Master].avg(#3)}>120

第五节:新应用上线后需要配置的模板

  1. 监控进程是否存在

    1. 创建template

    2. 创建item

    3. 创建trigger

  1. 通过JMX监控JVM核心指标

    1. 创建host
    2. 连接到Generic JMX Template

results matching ""

    No results matching ""