• Zabbix监控,Mysql,Nginx,PHP-FTPM


    一 Zabbix监控Mysql

        监控Mysql,Zabbix提供了一个监控模板,所有可以直接使用.或者使用Percona提供的监控模板.

    1. 使用自带监控模板

    1.1.1 编写监控模板

    #!/bin/bash
    
    # 主机地址IP
    MYSQL_HOST='127.0.0.1'
    
    # 端口
    MYSQL_PORT='3306'
    
    # 数据连接
    MYSQL_CONN="/usr/bin/mysqladmin -h${MYSQL_HOST} -P${MYSQL_PORT}"
    
    # 检查参数是否正确
    if [ $# -ne "1" ];then
        echo "arg Error!"
    fi
    
    # 获取数据
    case $1 in 
        Uptime) 
            result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` 
            echo $result 
            ;; 
        Com_update) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` 
            echo $result 
            ;; 
        Slow_queries) 
            result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` 
            echo $result 
            ;; 
        Com_select) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` 
            echo $result 
                    ;; 
        Com_rollback) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` 
                    echo $result 
                    ;; 
        Questions) 
            result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` 
                    echo $result 
                    ;; 
        Com_insert) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` 
                    echo $result 
                    ;; 
        Com_delete) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` 
                    echo $result 
                    ;; 
        Com_commit) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` 
                    echo $result 
                    ;; 
        Bytes_sent) 
            result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` 
                    echo $result 
                    ;; 
        Bytes_received) 
            result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` 
                    echo $result 
                    ;; 
        Com_begin) 
            result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` 
                    echo $result 
                    ;; 
    
            *) 
            echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|C
    om_begin)" 
            ;; 
    esac        
    

    1.1.2 异常处理

      如果mysql5.7以上版本执行脚本出现Waring信息,解决如下:

    [mnysqladmin]
    user=root
    password=xxxxx
    

    1.1.3 添加权限以及定义监控项

    # 添加权限属主信息
    chmod 755 check_mysql.sh
    chown zabbix.zabbix check_mysql.sh
    chmod +x check_mysql.sh
    
    # /etc/zabbix/zabbix_agentd.d 下创建 UserParameter_mysql.conf文件,内容如下:
    UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/check_mysql.sh $1
    UserParameter=mysql.ping,HOME=/etc /usr/local/mysql/bin/mysqladmin ping  2>/dev/null| grep -c alive
    UserParameter=mysql.version,/usr/local/mysql/bin/mysql -V
    

    1.1.4 Mysql监控主机添加模板

       

    二 监控Nginx

    2.1.1 开启Nginx状态页

    location /nginx-status {
      stub_status on;
      access_log  off;
      allow 127.0.0.1;
      deny all;      
    }
    
    # 这段location是打开nginx的状态监控页面,
    “stub_status”为“on”表示开启状态监控模块,
    “access_log  off”表示关闭这个页面的访问日志,
    接下来的“allow”表示这个状态监控页面允许哪些客户端访问,一般允许本机(127.0.0.1)除了允许访问的客户端外,其它都通过“deny all”禁止访问即可。
    

    2.1.2 检查 & 参数说明

    # curl http://127.0.0.1/nginx-status
    Active connections: 3 
    server accepts handled requests
     1649812 1649812 2770589 
    Reading: 0 Writing: 1 Waiting: 2 
    
    # 参数说明
    Active connections: 对后端发起的活动连接数;
    accepts:nginx总共处理了多少个连接;
    handled:nginx成功创建了几次握手;
    requests:nginx总共处理了多少请求。
    Reading:nginx读取客户端的header数;
    Writing: nginx 返回给客户端的header数;
    Waiting: nginx 请求处理完成,正在等待下一请求指令的连接.
    

    2.1.3 编写Nginx监控脚本

    # cat nginx_status.sh 
    #!/bin/bash
    # Set Variables
    HOST=127.0.0.1
    PORT="80"
    
    if [ $# -eq "0" ];then 
        echo "Usage:$0(active|reading|writing|waiting|accepts|handled|requests|ping)" 
    fi 
    
    # Functions to return nginx stats
    function active {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
      }
    function reading {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
      }
    function writing {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
      }
    function waiting {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
      }
    function accepts {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $1}'
      }
    function handled {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $2}'
      }
    function requests {
      /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $3}'
      }
    function ping {
        /sbin/pidof nginx | wc -l 
    }
    # Run the requested function
    $1
    

      添加执行权限,以及编写UserParameter

    chmod 755 nginx_status.sh 
    chmod +x nginx_status.sh 
    chown zabbix. nginx_status.sh 
    
    # 在/etc/zabbix/zabbix_agentd.d 创建UserParameter_nginx.conf 内容如下:
    UserParameter=nginx.status[*],/etc/zabbix/shell/nginx_status.sh  $1
    

    2.1.4 创建模板以及链接主机

    <?xml version="1.0" encoding="UTF-8"?>
    <zabbix_export>
        <version>3.0</version>
        <date>2018-06-26T11:14:10Z</date>
        <groups>
            <group>
                <name>Templates</name>
            </group>
        </groups>
        <templates>
            <template>
                <template>Template App NGINX</template>
                <name>Template App NGINX</name>
                <description>nginx监控模板</description>
                <groups>
                    <group>
                        <name>Templates</name>
                    </group>
                </groups>
                <applications>
                    <application>
                        <name>nginx</name>
                    </application>
                </applications>
                <items>
                    <item>
                        <name>nginx status server accepts</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[accepts]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>1</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>accepts</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status connections active</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[active]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>0</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>active</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status server handled</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[handled]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>1</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>handled</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status PING</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[ping]</key>
                        <delay>60</delay>
                        <history>30</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>0</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>is live</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap>
                            <name>Service state</name>
                        </valuemap>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status connections reading</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[reading]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>0</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>reading</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status server requests</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[requests]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>1</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>requests</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status connections waiting</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[waiting]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>0</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>waiting</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                    <item>
                        <name>nginx status connections writing</name>
                        <type>0</type>
                        <snmp_community/>
                        <multiplier>0</multiplier>
                        <snmp_oid/>
                        <key>nginx.status[writing]</key>
                        <delay>60</delay>
                        <history>90</history>
                        <trends>365</trends>
                        <status>0</status>
                        <value_type>3</value_type>
                        <allowed_hosts/>
                        <units/>
                        <delta>0</delta>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <formula>1</formula>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <data_type>0</data_type>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <description>writing</description>
                        <inventory_link>0</inventory_link>
                        <applications>
                            <application>
                                <name>nginx</name>
                            </application>
                        </applications>
                        <valuemap/>
                        <logtimefmt/>
                    </item>
                </items>
                <discovery_rules/>
                <macros/>
                <templates/>
                <screens/>
            </template>
        </templates>
        <triggers>
            <trigger>
                <expression>{Template App NGINX:nginx.status[ping].last()}=0</expression>
                <name>nginx was down!</name>
                <url/>
                <status>0</status>
                <priority>4</priority>
                <description>NGINX进程数:0,请注意</description>
                <type>0</type>
                <dependencies/>
            </trigger>
        </triggers>
        <graphs>
            <graph>
                <name>nginx status connections</name>
                <width>900</width>
                <height>200</height>
                <yaxismin>0.0000</yaxismin>
                <yaxismax>100.0000</yaxismax>
                <show_work_period>1</show_work_period>
                <show_triggers>1</show_triggers>
                <type>0</type>
                <show_legend>1</show_legend>
                <show_3d>0</show_3d>
                <percent_left>0.0000</percent_left>
                <percent_right>0.0000</percent_right>
                <ymin_type_1>0</ymin_type_1>
                <ymax_type_1>0</ymax_type_1>
                <ymin_item_1>0</ymin_item_1>
                <ymax_item_1>0</ymax_item_1>
                <graph_items>
                    <graph_item>
                        <sortorder>0</sortorder>
                        <drawtype>0</drawtype>
                        <color>00C800</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[active]</key>
                        </item>
                    </graph_item>
                    <graph_item>
                        <sortorder>1</sortorder>
                        <drawtype>0</drawtype>
                        <color>C80000</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[reading]</key>
                        </item>
                    </graph_item>
                    <graph_item>
                        <sortorder>2</sortorder>
                        <drawtype>0</drawtype>
                        <color>0000C8</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[waiting]</key>
                        </item>
                    </graph_item>
                    <graph_item>
                        <sortorder>3</sortorder>
                        <drawtype>0</drawtype>
                        <color>C800C8</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[writing]</key>
                        </item>
                    </graph_item>
                </graph_items>
            </graph>
            <graph>
                <name>nginx status server</name>
                <width>900</width>
                <height>200</height>
                <yaxismin>0.0000</yaxismin>
                <yaxismax>100.0000</yaxismax>
                <show_work_period>1</show_work_period>
                <show_triggers>1</show_triggers>
                <type>0</type>
                <show_legend>1</show_legend>
                <show_3d>0</show_3d>
                <percent_left>0.0000</percent_left>
                <percent_right>0.0000</percent_right>
                <ymin_type_1>0</ymin_type_1>
                <ymax_type_1>0</ymax_type_1>
                <ymin_item_1>0</ymin_item_1>
                <ymax_item_1>0</ymax_item_1>
                <graph_items>
                    <graph_item>
                        <sortorder>0</sortorder>
                        <drawtype>0</drawtype>
                        <color>00C800</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[accepts]</key>
                        </item>
                    </graph_item>
                    <graph_item>
                        <sortorder>1</sortorder>
                        <drawtype>0</drawtype>
                        <color>C80000</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[handled]</key>
                        </item>
                    </graph_item>
                    <graph_item>
                        <sortorder>2</sortorder>
                        <drawtype>0</drawtype>
                        <color>0000C8</color>
                        <yaxisside>0</yaxisside>
                        <calc_fnc>2</calc_fnc>
                        <type>0</type>
                        <item>
                            <host>Template App NGINX</host>
                            <key>nginx.status[requests]</key>
                        </item>
                    </graph_item>
                </graph_items>
            </graph>
        </graphs>
        <value_maps>
            <value_map>
                <name>Service state</name>
                <mappings>
                    <mapping>
                        <value>0</value>
                        <newvalue>Down</newvalue>
                    </mapping>
                    <mapping>
                        <value>1</value>
                        <newvalue>Up</newvalue>
                    </mapping>
                </mappings>
            </value_map>
        </value_maps>
    </zabbix_export>
    

  • 相关阅读:
    Activiti 开发案例之动态指派任务
    SpringBoot开发案例之打造十万博文Web篇
    「玩转Python」打造十万博文爬虫篇
    SpringBoot开发案例Nacos配置管理中心
    「玩转Python」突破封锁继续爬取百万妹子图
    SpringBoot开发案例之分布式集群共享Session
    「玩转树莓派」树莓派 3B+ 配置无线WiFi
    「玩转树莓派」搭建智能家居远程监控系统
    「玩转树莓派」搭建属于自己的云盘服务
    「玩转树莓派」为女朋友打造一款智能语音闹钟
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/10418019.html
Copyright © 2020-2023  润新知