Zabbix监控之低级自动发现以及MySQL多实例

  • 概述
  • Zabbix的网络发现是指zabbix server通过配置好的规则,自动添加host,group,template

    Zabbix的主动注册刚好和网络发现是相反的,功能基本一致。zabbix agent主动联系zabbix server,server自动添加host,group,template

    以上两种方式都是发现host,添加host,而low-level discovery(低级自动发现)更加底层,用于发现item,trigger,graph等等。

    2.MySQL多实例的低级自动发现

    (1)配置3307、3308的实例
    [[email protected] ~]# mkdir /data/{3307,3308} -p
    [[email protected] ~]# chown -R mysql.mysql /data
    [[email protected] ~]# cp /etc/my.cnf /etc/my3307.cnf
    [[email protected] ~]# vim /etc/my3307.cnf 
    [mysqld]
    datadir=/data/3307
    socket=/data/3307/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    port=3307
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    [mysqld_safe]
    log-error=/data/3307/mariadb.log
    pid-file=/data/3307/mariadb.pid
    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d
    [[email protected] ~]# cp /etc/my3307.cnf /etc/my3308.cnf
    [[email protected] ~]# vim /etc/my3308.cnf 
    [mysqld]
    datadir=/data/3308
    socket=/data/3308/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    port=3308
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    
    [mysqld_safe]
    log-error=/data/3308/mariadb.log
    pid-file=/data/3308/mariadb.pid
    
    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d
    
    (2)初始化数据库
    [[email protected] ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf 
    Installing MariaDB/MySQL system tables in '/data/3307' ...
    171218 12:01:02 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 4804 ...
    OK
    Filling help tables...
    171218 12:01:02 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 4813 ...
    OK
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
    To do so, start the server, then issue the following commands:
    
    '/usr/bin/mysqladmin' -u root password 'new-password'
    '/usr/bin/mysqladmin' -u root -h linux-node2 password 'new-password'
    
    Alternatively you can run:
    '/usr/bin/mysql_secure_installation'
    
    which will also give you the option of removing the test
    databases and anonymous user created by default.  This is
    strongly recommended for production servers.
    
    See the MariaDB Knowledgebase at http://mariadb.com/kb or the
    MySQL manual for more instructions.
    
    You can start the MariaDB daemon with:
    cd '/usr' ; /usr/bin/mysqld_safe --datadir='/data/3307'
    
    You can test the MariaDB daemon with mysql-test-run.pl
    cd '/usr/mysql-test' ; perl mysql-test-run.pl
    
    Please report any problems at http://mariadb.org/jira
    
    The latest information about MariaDB is available at http://mariadb.org/.
    You can find additional information about the MySQL part at:
    http://dev.mysql.com
    Consider joining MariaDB's strong and vibrant community:
    https://mariadb.org/get-involved/
    [[email protected] ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &
    [1] 4825
    [[email protected] ~]# 171218 12:01:53 mysqld_safe Logging to '/data/3307/mariadb.log'.
    171218 12:01:53 mysqld_safe Starting mysqld daemon with databases from /data/3307
    
    [[email protected] ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf 
    Installing MariaDB/MySQL system tables in '/data/3308' ...
    171218 12:03:48 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 5041 ...
    OK
    Filling help tables...
    171218 12:03:48 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 5049 ...
    OK
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
    To do so, start the server, then issue the following commands:
    
    '/usr/bin/mysqladmin' -u root password 'new-password'
    '/usr/bin/mysqladmin' -u root -h linux-node2 password 'new-password'
    
    Alternatively you can run:
    '/usr/bin/mysql_secure_installation'
    
    which will also give you the option of removing the test
    databases and anonymous user created by default.  This is
    strongly recommended for production servers.
    
    See the MariaDB Knowledgebase at http://mariadb.com/kb or the
    MySQL manual for more instructions.
    
    You can start the MariaDB daemon with:
    cd '/usr' ; /usr/bin/mysqld_safe --datadir='/data/3308'
    
    You can test the MariaDB daemon with mysql-test-run.pl
    cd '/usr/mysql-test' ; perl mysql-test-run.pl
    
    Please report any problems at http://mariadb.org/jira
    
    The latest information about MariaDB is available at http://mariadb.org/.
    You can find additional information about the MySQL part at:
    http://dev.mysql.com
    Consider joining MariaDB's strong and vibrant community:
    https://mariadb.org/get-involved/
    
    [[email protected] ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &
    [2] 5061
    [[email protected] ~]# 171218 12:03:56 mysqld_safe Logging to '/data/3308/mariadb.log'.
    171218 12:03:56 mysqld_safe Starting mysqld daemon with databases from /data/3308
    
    [[email protected] ~]# netstat -tulnp 
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      4972/mysqld         
    tcp        0      0 0.0.0.0:3308            0.0.0.0:*               LISTEN      5207/mysqld         
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8237/nginx: master  
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      866/sshd            
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2235/master         
    tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      3263/zabbix_agentd  
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4645/mysqld         
    tcp6       0      0 :::22                   :::*                    LISTEN      866/sshd            
    tcp6       0      0 ::1:25                  :::*                    LISTEN      2235/master         
    tcp6       0      0 :::10050                :::*                    LISTEN      3263/zabbix_agentd
    [[email protected] ~]# netstat -tulnp |grep mysql|awk -F "[ :]+" '{print $5}'
    3307
    3308
    3306
    (3)编写获取端口号的shell脚本
    [[email protected] scripts]# vim discovery_mysql.sh 
    #!/bin/bash
    #mysql low-lever discovery
    res=`netstat -lntp|grep mysql |awk -F "[ :]+" '{print $5}'`
    port=($res)
    printf '{'
    printf '"data":['
    for key in ${!port[@]}
    do
            if [[ "${#port[@]}" -gt 1 && "${key}"  -ne "$((${#port[@]}-1))" ]];then
                    printf '{'
                    printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"
            else [[ "${key}" -eq "((${#port[@]}-1))" ]]
                    printf '{'
                    printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"
            fi
    done
    printf ']'
    printf '}'
    [[email protected] scripts]# sh discovery_mysql.sh |python -m json.tool    #采用json格式显示
    {
        "data": [
            {
                "{#MYSQLPORT}": "3307"
            },
            {
                "{#MYSQLPORT}": "3308"
            },
            {
                "{#MYSQLPORT}": "3306"
            }
        ]
    }
    
    [[email protected] zabbix_agentd.d]# vim discovery_mysql.conf    #编辑自定义key
    UserParameter=discovery_mysql,/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/discovery_mysql.sh
    [[email protected] ~]# zabbix_get -s linux-node2 -k discovery_mysql    #测试server端获取数据
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    {"data":[]}
    #这里报错是因为netstat -tulnp的参数-p在执行时需要root的权限,这里使用suid的方式进行授权
    
    [[email protected] ~]# chmod u+s `which netstat`
    [[email protected] ~]# ll `which netstat`
    -rwsr-xr-x. 1 root root 155000 8月   3 17:17 /usr/bin/netstat
    [[email protected] ~]# zabbix_get -s linux-node2 -k discovery_mysql
    {"data":[{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"},{"{#MYSQLPORT}":"3306"}]}
    
    (4)编辑自定义key,获取每个端口的状态数据
    [[email protected] zabbix_agentd.d]# cat userparameter_mysql.conf
    UserParameter=mysql.status[*],echo "show global status where Variable_name='$2';" | HOME=/var/lib/zabbix mysql -uroot -p123456 -h 127.0.0.1 -P $1 -N | awk '{print $$2}'
    
    修改不同端口的mysql密码:
    [[email protected] zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3306
    [[email protected] zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3307
    [[email protected] zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3308
    测试是否正常
    [[email protected] zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3306 -e "use mysql;show GLOBAL VARIABLES like 'port';"
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | port          | 3306  |
    +---------------+-------+
    [[email protected] zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3307 -e "use mysql;show GLOBAL VARIABLES like 'port';"
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | port          | 3307  |
    +---------------+-------+
    [[email protected] zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3308 -e "use mysql;show GLOBAL VARIABLES like 'port';"
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | port          | 3308  |
    +---------------+-------+
    zabbix_get测试是否能正常获取数据:
    [[email protected] ~]# zabbix_get -s linux-node2 -k mysql.status[3306,Bytes_sent]
    1808

    3.创建发现规则

    这里直接在linux-node2上进行创建

    "Configuration"-->"Host"-->"linux-node2"-->"Discovery"-->"Create discovery rule"-->"Add"

    创建 Item prototypes,其实就是一个创建一个 item

    Item prototypes (0)>>create Item prototypes,按照官方模板来配置。这里配5个展示

    再查看Host中的item项,会多出以下监控项:

    查看监控最新数据图表,即可看到3306、3307、3308的数据库状态信息:

    时间: 2024-10-15 23:49:54

    Zabbix监控之低级自动发现以及MySQL多实例的相关文章

    zabbix低级自动发现之mysql多实例

    1.低级自动发现概述 zabbix的低级自动发现(LLD)适用于监控多实例,监控变化的数据(分区.网卡). 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项.此外,可以配置Zabbix根据定期执行发现后的得到实际结果,来移除不需要的监控项. 在zabbix中,支持六种类型的发现项目: 系统文件的发现 网络接口的发现 CPU和CPU内核的发现 SNMP

    zabbix监控之进程自动发现

    1,获取要监控的进程到/tmp/process_list.txt文件 cat process_list.sh #!/bin/bashcat /dev/null >/tmp/process_list.txt if [ `ps aux|grep "/data/apache_projects/tomcat7-express-18034"|grep -v grep |wc -l` -gt 0 ];then echo "/data/apache_projects/tomcat7-

    zabbix监控之redis自动发现并监控

    部分资料来源于网上,这里一并谢过. 系统版本centos5.10 python版本2.4.3 1.python支持 yum -y install python-simplejson 2.discovery脚本 [[email protected] etc]# cat  redis_port.py #!/usr/bin/env python import os #import json import simplejson as json  #特别要注意的地方 t=os.popen(""&

    Zabbix分布式监控之Discovery自动发现配置

    当我们能够熟练构建Zabbix监控平台之后,我们会发现,对zabbix的认识只是刚开始,今天带大家来学习Zabbix比较牛的功能,自动发现功能.什么是自动发现呢,简单来说就是,可以自动批量去发现局域网若干服务器,并自动添加监控,省去人工手动的添加,节省大量的人力成本! 随着监控主机不断增多,有时候需要添加一批机器,需要将公司的所有服务器添加到zabbix中,学过nagios.cacti的同学都知道,如果要批量必须使用脚本,或者手动传统办法去单个添加设备.分组.项目.图像,如果设备多,会晕倒哦.

    Zabbix监控(八):自动监控windows端口

    说明:Zabbix本身自带两个自动发现模板,分别是磁盘发现Mounted filesystem discovery和网卡发现Network interface discovery:本人参考这两个模板制做了自动端口发现模板和自动服务发现模板. 1.关于自定义KEY (1)参考官方文档: https://www.zabbix.com/documentation/2.4/manual/config/items/userparameters (2)Key自定义的语法格式 UserParameter=<k

    Zabbix监控(九):自动监控windows服务

    一.监控服务状态的Key: service_state[service] State of service. 0 - running, 1 - paused, 2 - start pending, 3 - pause pending, 4 - continue pending, 5 - stop pending, 6 - stopped, 7 - unknown, 255 - no such service 返回0表示运行,返回6表示关闭,返回7表示未知,返回255表示没有. 二.手动监控客户端

    zabbix之Low-level discovery(自动发现)

    功能: 自动发现挂载点并自动监控 自动发现网卡并自动监控 创建自动发现挂载点并监控 功能 假如要在monitor_linux模板中创建自动发现挂载点的功能 配置-->模板-->选择模板-->自动发现 创建自动发现  创建基于该自动发现规则的监控项 创建图形 创建自动发现网卡并监控 功能 创建监控项  创建图形 原文地址:https://www.cnblogs.com/zhaijunming5/p/9044661.html

    ZABBIX监控一台机器上的多tomcat实例落地经验步骤

    以前做过通过jmx监控单个tomcat实例,但是有的时候公司一台服务器上有10个tomcat容器那怎么办呢,来吧往下看吧 1,注意操作文件路径: zabbix安装路径: /data/zabbix/etc/zabbix_agentd.conf.d/jmx_discovery.sh /etc/zabbix/zabbix_agentd.conf 配置文件中 UnsafeUserParameters=1 必须打开,否则模板的自动发现功能报错. 该模板的监控和触发属性在自动发现中配置,所以导入模板后,下属

    heartbeat+drbd监控脚本(自动发现问题,并邮件通知)

           生成环境有一些服务器是heartbeat+drbd做的高可用,但是有时候由于各种原因会产生问题(比如脑裂),而且没有及时发现.所以做了脚本是对heartbeat.drbd服务状态进行监控.对drbd分区挂载目录进行监控,现分享如下.        脚本的执行原理可能并不好(先判断当前服务器是哪个主机名,然后将另外一台的IP.端口.密码赋值给变量,然后将本机和远程的heartbeat.drbd和挂载目录状态输出到不同的文件,最后进行相应的逻辑与或或运算,如果有问题邮件通知),希望高人