zoukankan      html  css  js  c++  java
  • zabbix服务深入

    第1章 Grafana自定义图形

    1.安装grafana

    [root@m01 /data/soft]# wget https://dl.grafana.com/oss/release/grafana-6.3.2-1.x86_64.rpm 
    [root@m01 /data/soft]# yum localinstall grafana-6.3.2-1.x86_64.rpm -y
    [root@m01 /data/soft]# systemctl start grafana-server.service 
    [root@m01 /data/soft]# systemctl enable grafana-server.service
    

    访问grafana:http://10.0.0.61:3000
    账号密码:admin admin

    2.安装并激活zabbix插件

    [root@m01 ~]# grafana-cli plugins list-remote|grep zabbix
    id: alexanderzobnin-zabbix-app version: 3.10.4
    [root@m01 ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
    [root@m01 ~]# systemctl restart grafana-server.service
    

    网页操作-激活zabbix插件

    网页操作-添加zabbix数据源

    网页操作-导入模版

    3.数据展示

    4.自定义图形仪表盘

    5.自定义图形饼图

    1.安装插件

    在线安装方式

    grafana-cli plugins install grafana-piechart-panel
    

    离线安装方式

    wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /tmp/grafana-piechart-panel.zip
    unzip -q /tmp/grafana-piechart-panel.zip -d /tmp
    mv /tmp/grafana-piechart-panel-* /var/lib/grafana/plugins/grafana-piechart-panel
    service grafana-server restart
    

    2.配置图形

    第2章 percona模版监控mysql

    参考强哥的博客

    https://www.qstack.com.cn/archives/213.html
    

    1.安装php环境

    percona需要php环境

    mkdir /data/soft -p
    
    [root@m01 /data/soft]# yum install php php-mysql -y
    

    2.下载软件

    img

    注意,安装完成后会有提示模版的路径位置

    [root@m01 ~]# cd /data/soft/
    [root@m01 /data/soft]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
    [root@m01 /data/soft]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 
    警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:percona-zabbix-templates-1.1.8-1 ################################# [100%]
    
    Scripts are installed to /var/lib/zabbix/percona/scripts
    Templates are installed to /var/lib/zabbix/percona/templates
    

    3.查看目录

    进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录

    [root@m01 ~]# cd /var/lib/zabbix/percona/
    [root@m01 /var/lib/zabbix/percona]# tree
    .
    ├── scripts
    │   ├── get_mysql_stats_wrapper.sh
    │   └── ss_get_mysql_stats.php
    └── templates
        ├── userparameter_percona_mysql.conf
        └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
    

    其中脚本目录里有2个脚本,用来获取数据库信息

    [root@m01 /var/lib/zabbix/percona]# cd scripts/
    [root@m01 /var/lib/zabbix/percona/scripts]# ls
    get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php
    

    4.修改get_mysql_stats_wrapper.sh

    修改get_mysql_stats_wrapper数据库登陆信息
    第19行添加mysql账号密码

    [root@m01 v]# sed -n '19p' get_mysql_stats_wrapper.sh 
        RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUSG' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '
    ' 
    

    5.修改ss_get_mysql_stats.php

    [root@m01 /var/lib/zabbix/percona/scripts]# sed -n '30,31p' ss_get_mysql_stats.php 
    $mysql_user = 'root';
    $mysql_pass = '123456';
    

    6.复制自定义监控项配置文件到zabbix目录

    [root@m01 ~]# cd /var/lib/zabbix/percona/templates/
    [root@m01 /var/lib/zabbix/percona/templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
    [root@m01 /var/lib/zabbix/percona/templates]# cd /etc/zabbix/zabbix_agentd.d/
    [root@m01 /etc/zabbix/zabbix_agentd.d]# ls
    userparameter_mysql.conf  userparameter_percona_mysql.conf
    

    7.重启agent

    [root@m01 ~]# systemctl restart zabbix-agent 
    

    8.测试key

    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k MySQL.Sort-scan  #注意ip地址本机127.0.0.1
    16
    

    9.导入模版

    官方自带的模版有点问题,需要先装在2.x版本然后导出来,这里使用网友已经修改好的模版上传

    http://pan.baidu.com/s/1pL1wDYj
    

    10.主机链接模版

    img

    xx.报错解决

    查看监控发现没有数据显示不支持类型
    查看zabbix-server发现因为tmp的文件没有权限,因为刚才手动执行了脚本,所以文件属性是root,将文件删除后由zabbix自己创建解决问题
    报错日志如下:

    2846:20190811:202708.785 item "Zabbix server:MySQL.State-init" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
    0" of type "string" is not suitable for value type "Numeric (float)"
      2843:20190811:202709.787 item "Zabbix server:MySQL.State-locked" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
    0" of type "string" is not suitable for value type "Numeric (float)"
      2844:20190811:202710.788 item "Zabbix server:MySQL.State-login" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
    0" of type "string" is not suitable for value type "Numeric (float)"
    

    第3章 自动发现和自动注册

    1.自动发现

    web页面操作

    img

    image.png

    img

    img

    img

    2.自动注册

    修改zabbix-agent配置文件

    [root@web02 ~]# cat /etc/zabbix/zabbix_agentd.conf        
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    Server=10.0.1.61
    ServerActive=10.0.1.61
    Hostname=web02
    Include=/etc/zabbix/zabbix_agentd.d/*.conf
    
    #重启
    systemctl restart zabbix-agent
    

    web页面操作

    img

    img

    img

    img

    刷新查看发现已经添加上了

    img

    第4章 主动模式和被动模式

    默认为被动模式:100个监控项要100个来回,要的时候才返回
    主动模式:100个监控项1个回合,将所需要的100个打包,然后一次发过去,发过去之后,客户端全部执行完再一次返回给服务端。

    1.克隆模版

    完全克隆原来被动模式的模版为主动模式

    img

    img

    2.修改克隆后的模版为主动模式

    img

    img

    img

    img

    3.修改监控主机关联的模版为主动模式

    img

    4.修改客户端配置文件并重启

    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.conf        
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    Server=10.0.1.61
    ServerActive=10.0.1.61
    Hostname=web01
    Include=/etc/zabbix/zabbix_agentd.d/*.conf
    [root@web01 ~]# systemctl restart zabbix-agent.service 
    

    5.查看最新数据

    发现获取数据的时间是一样的

    img

    第5章 低级自动发现

    监控端口自动发现

    1.查看系统自带分区自动发现

    系统自带的自动发现会显示红字,比如自带的磁盘分区发现规则

    img

    img

    1.查看zabbbix所有的key过滤后展示

    img

    2.解析成json后的格式

    3.过滤规则

    实质上是从mount命令获取的分区名和类型

    img

    image.png

    但是我们zabbix显示的并没有这么多

    是因为做了正则表达式过滤

    img

    而正则表达式是在管理里面配置的

    img

    4.使用zabbix_get获取key

    因为根据过滤规则,只发现了一个xfs的key,使用zabbix_get可以查看到这个key

    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k vfs.fs.size[{#FSNAME},free]
    ZBX_NOTSUPPORTED: Cannot obtain filesystem information: [2] No such file or directory
    [root@m01 ~]# zabbix_agentd -p|grep vfs.fs.size
    vfs.fs.size[/,free]                           [u|15713636352]
    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k vfs.fs.size[/,free]        
    15713693696
    

    2.查看系统自带的网卡自动发现

    1.查看网络自动发现规则

    img

    2.过滤规则

    img

    img

    2.命令行过滤

    [root@m01 ~]# zabbix_agentd -p|grep net.if.discovery
    net.if.discovery                              [s|{"data":[{"{#IFNAME}":"tun0"},{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"lo"}]}]
    

    3.查看自动添加的监控项
    我们会发现添加了四个监控项
    2个eth0
    2个eth1

    img

    img

    4.查看key的值

    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k net.if.in[eth0]
    2191453
    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k net.if.in[eth1]
    7152
    

    3.监控mysql多实例

    参考强哥博客

    [https://www.qstack.com.cn/archives/108.html](https://www.qstack.com.cn/archives/108.html)
    

    1.复制并修改数据库配置文件

    yum -y install mariadb-servier
    systemctl start mariadb
    [root@m01 ~]# cp /etc/my.cnf /etc/my3307.cnf
    [root@m01 ~]# vim /etc/my3307.cnf 
    [root@m01 ~]# cat /etc/my3307.cnf    
    [mysqld]
    datadir=/data/3307/
    socket=/data/3307/mysql.sock
    port=3307
    user=mysql
    symbolic-links=0
    [mysqld_safe]
    log-error=/data/3307/mysqld.log
    pid-file=/data/3307/mysqld.pid
    [root@m01 ~]# cp /etc/my3307.cnf /etc/my3308.cnf
    [root@m01 ~]# sed -i 's#3307#3308#g' /etc/my3308.cnf
    

    2.创建数据目录并初始化

    [root@m01 ~]# mkdir /data/{3307,3308} -p
    [root@m01 ~]# chown -R mysql:mysql /data/330*
    [root@m01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf --force
    [root@m01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf --force
    

    3.启动多实例

    [root@m01 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &
    [root@m01 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &
    

    4.检查端口

    [root@m01 ~]# netstat -lntup|grep mysql
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2042/mysqld         
    tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      84790/mysqld        
    tcp        0      0 0.0.0.0:3308            0.0.0.0:*               LISTEN      85439/mysqld 
    

    5.创建自动发现配置文件

    [root@m01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf
    UserParameter=mysql.discovery,/bin/bash /server/scripts/mysql_discovery.sh
    
    #授权
    [root@m01 ~]# chmod u+s /usr/bin/netstat 
    rm -rf userparameter_mysql.conf  #或者最备份移走
    #重启客户端
    [root@m01 ~]# systemctl restart zabbix-agent.service 
    

    6.创建自动发现多实例脚本

    [root@m01 ~]# cat /server/scripts/mysql_discovery.sh                                                
    #!/bin/bash 
    #mysql low-level discovery 
    res=$(netstat -lntp|awk -F "[ :	]+" '/mysqld/{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 '}
    '
    

    7.测试自动发现脚本

    [root@m01 ~]# bash /server/scripts/mysql_discovery.sh    
    {"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
    
    

    报错:.zabbix_get测试取key

    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.discovery
    (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":[]}
    

    这时我们发现取不出来并提示了个错误
    原因是zabbix用户不能使用netstat的-p参数
    解决方法为给netstat命令添加s权限

    [root@m01 ~]# which netstat 
    /usr/bin/netstat
    [root@m01 ~]# chmod u+s /usr/bin/netstat 
    

    然后再次测试就发现可以取到值了

    [root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.discovery
    {"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
    

    扩展一台多实例

    #.db02安装多实例
    yum install mariadb-server -y
    systemctl start mariadb 
    cat >/etc/my3310.cnf<<EOF    
    [mysqld]
    datadir=/data/3310/
    socket=/data/3310/mysql.sock
    port=3310
    user=mysql
    symbolic-links=0
    [mysqld_safe]
    log-error=/data/3310/mysqld.log
    pid-file=/data/3310/mysqld.pid
    EOF
    cp /etc/my3310.cnf /etc/my3311.cnf
    sed -i 's#3310#3311#g' /etc/my3311.cnf
    mkdir /data/{3310,3311} -p
    chown -R mysql:mysql /data/330*
    mysql_install_db --user=mysql --defaults-file=/etc/my3310.cnf --force
    mysql_install_db --user=mysql --defaults-file=/etc/my3311.cnf --force
    mysqld_safe --defaults-file=/etc/my3310.cnf &
    mysqld_safe --defaults-file=/etc/my3311.cnf &
    netstat -lntup|grep mysql
    
    #.web02复制web01的数据
    chmod u+s /usr/bin/netstat
    rm -rf userparameter_mysql.conf
    scp 10.0.0.7:/etc/zabbix/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d/
    systemctl restart zabbix-agent
    
    
    #.web02关联模板
    

    8.web页面创建自动发现规则模版

    img

    创建模版

    img

    创建自动发现规则

    img

    设置过滤规则

      img

    创建过滤 规则

    11.模仿zabbix自带的mysql监控配置修改监控项

    场景要求:

    场景1:
    有2台mysql数据库
    每一台都是多实例
    每个mysql实例都要监控指标uptime
    db01: 3306 3307 3308
    db02: 3309 3310 3311

    shell命令如何实现

    mysql -uroot -p123456 -P 3307 -e "show status  where Variable_name='uptime';"
    mysql -uroot -p123456 -P 3308 -e "show status  where Variable_name='uptime';"
    mysql -uroot -p123456 -P 3309 -e "show status  where Variable_name='uptime';"
    

    使用低级自动发现添加mysql端口

    1.创建多实例(同上)

    2.创建zabbix低级自动配置文件

    vim /etc/zabbix/zabbix_agentd.d/mysql_uptime.conf
    UserParameter=mysql.status[*],mysql -h127.0.0.1 -P$2 -N -e "show global status where Variable_name='$1';" | awk '{print $$2}'
    #授权
    [root@m01 ~]# chmod u+s /usr/bin/netstat 
    mv /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf /tmp
    
    [root@m01 ~]# systemctl restart zabbix-agent.service
    

    3.测试访问监控项 :服务端

    [root@m01 ~]# zabbix_get -s 10.0.0.9 -k mysql.status[Uptime,3309]
    

    13.web页面添加监控项原型

    img

    监控项原型

    12.web页面设置主机关联模版

    img

    主机关联模版

    13.查看是否已经自动添加成功

    img

    web首页的优化

    1安装,找到一个首页

    2.zabbix -web界面配置

    3.查询首页状态

    4.配置场景

    4.配置关联主机

    5.查看状态

    1576584633046

    6.配置触发器

    7.修改配置文件

           location / {
                return 404
                root   html;
                index  index.html index.htm;
            }
    
    

    第6章 性能优化

    1.监控数据分析

    zabbix监控主机和监控项较少的时候,不需要优化
    数据库 200台主机 * 200个监控项 = 40000监控项/30秒 = 1333次写入/每秒
    写多 读少 
    

    2.优化思路

    1.mariadb 5.5 innodb 升级到mysql5.7 tokudb
    2.去掉无用监控项,增加监控项的取值间隔,减少历史数据的保存周期
    3.被动模式改为主动模式
    4.针对zabbix-server进程数量调优
    5.针对zabbix-server缓存调优,谁的剩余内存少,就加大他的缓存
    6.固态硬盘   大内存
    7.zabbix proxy  (上千台.做代理汇总)
    

    3.升级存储引擎

    TokuDB性能比InnoDB要好

    实施步骤:

    1.找一台机器安装好mysql5.7
    2.将mariadb的数据导出,然后替换sql文件里的存储引擎为TokuDB
    3.将替换之后的数据导入到mysql5.7
    4.停掉mariadb
    5.检查测试
    

    4.优化进程数

    img

    可以人为制造进程繁忙,把自动发现调整IP范围为1-254

    这个时候观察会发现自动发现进程变得繁忙了

    修改进程数

    [root@zabbix-11 ~]# grep "^StartDiscoverers" /etc/zabbix/zabbix_server.conf 
    StartDiscoverers=10
    [root@zabbix-11 ~]# systemctl restart zabbix-server.service
    

    调整之后发现进程不这么繁忙了

    img

    5.缓存调优

    img

    调整配置文件

    [root@zabbix-11 ~]# grep "^Cache" /etc/zabbix/zabbix_server.conf 
    CacheSize=128M
    

    第7章 zabbix高可用

    思路:
    2台zabbix-server使用keepavied做高可用
    数据库做主从复制
    keepalived两端都做backup角色,设置不抢占VIP
    keepalived设置如果发生改变就将自身的从库数据库修改为主库设置
    然后另一台修复上线后,手动介入重新做主从同步,变成从库

  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/1naonao/p/12063317.html
Copyright © 2011-2022 走看看