zabbix监控(11)自定义模板 利用模板可以快速添加监控项

举报
菜鸟级攻城狮 发表于 2021/06/21 09:07:42 2021/06/21
4.1k+ 0 0
【摘要】 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。

zabbix监控(11)

11.自定义模板 利用模板可以快速添加监控项

a.创建模板     b.监控nginx模板    c.监控 php-fpm 模板    d.监控redis模板

11:自定义模板 利用模板可以快速添加监控项: 模板可以分享

Zabbix中,模板就是主机

a.创建模板

1. 7层架构

Pass

2.自定义模板

3.更新应用集

4.   添加触发器

5.添加图形

6.模板的导出/导入以及共享入口

1.导出

2.导入

3.共享模板入口

6.   主机链接模板

1.复制命令

# scp -rp tcp.conf root@192.168.1.91:`pwd

2.重启agnet并刷新页面

3.设置恢复时间

4.重启server端服务

 

b.监控 nginx 模板

1.开启监控页面

nginx在添加

location /nginx-status {

                stub_status ;

        }

 

2.重启nginx并访问http://ip/nginx-status/

3.编写状态脚本

mkdir /etc/zabbix/scripts

vim /etc/zabbix/scripts/nginx_status.sh

内容如下:

#!/bin/bash

BKUP_DATE=`/bin/date +%Y%m%d`

#LOG="/data/log/zabbix/webstatus.log"

HOST=127.0.0.1

PORT=80

 

ARGS=1

if [ $# -ne "$ARGS" ];then

    echo "Please input one arguement:"

fi

 

case $1 in

exist)

        result=`/sbin/pidof nginx | wc -l`

            echo $result

            ;;

    active)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Active' | awk '{print $NF}'`

            echo $result

            ;;

        reading)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Reading' | awk '{print $2}'`

        echo $result

            ;;

    writing)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Writing' | awk '{print $4}'`

        echo $result

            ;;

    waiting)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'`

        echo $result

            ;;

    accepts)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $1}'`

        echo $result

            ;;

    handled)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $2}'`

        echo $result

            ;;

    requests)

        result=`/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $3}' `

        echo $result

            ;;

        *)

        echo "Usage:$0(active|reading|writing|waiting|accepts|handled|requests)"

        ;;

esac

 

4.测试脚本

/etc/zabbix/scripts/nginx_status.sh

 

5.添加键值

UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1

 

6.重启zabbixagent

 

7.手动取值测试

zabbix_get -s 172.16.180.11 -k nginx.status[active]

 

8.创建模板

 

9.触发器值填写exist

 

10.链接模板

 

c.监控 php-fpm 模板

 

1.开启监控页面

 

编写php-fpm配置文件

vim /etc/php-fpm.d/www.conf

pm.status_path = /php_status

 

编写nginx配置文件(通过nginx访问)

vim nginx.conf

 

location ~ /php_status {

      root /usr/local/nginx/html/;

         fastcgi_pass 127.0.0.1:9000;

         fastcgi_index index.php;

         fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

         include fastcgi_params;

  

2.导入配置文件

 

Fpm.conf

UserParameter=php-fpm[*], /bin/bash /etc/zabbix/scripts/php-fpm.sh $1

 

Php-fpm.Sh

 

#!/bin/bash

pool(){

     curl -s http://127.0.0.1:8080/php_status|awk '/pool/ {print $NF}'

}      

process_manager() {      

    curl -s http://127.0.0.1:8080/php_status|awk '/process manager/ {print $NF}'

}

 

start_since(){

    curl -s http://127.0.0.1:8080/php_status|awk '/^start since:/ {print $NF}'

}

accepted_conn(){

    curl -s http://127.0.0.1:8080/php_status|awk '/^accepted conn:/ {print $NF}'

}

listen_queue(){   

    curl -s http://127.0.0.1:8080/php_status|awk '/^listen queue:/ {print $NF}'

}

max_listen_queue(){

    curl -s http://127.0.0.1:8080/php_status|awk '/^max listen queue:/ {print $NF}'

}

listen_queue_len(){

    curl -s http://127.0.0.1:8080/php_status|awk '/^listen queue len:/ {print $NF}'

}

idle_processes(){

   curl -s http://127.0.0.1:8080/php_status|awk '/^idle processes:/ {print $NF}'

}

active_processes(){

    curl -s http://127.0.0.1:8080/php_status|awk '/^active processes:/ {print $NF}'

}

total_processes(){

   curl -s http://127.0.0.1:8080/php_status|awk '/^total processes:/ {print $NF}'

}

max_active_processes(){

   curl -s http://127.0.0.1:8080/php_status|awk '/^max active processes:/ {print $NF}'

}

max_children_reached(){

    curl -s http://127.0.0.1:8080/php_status|awk '/^max children reached:/ {print $NF}'

}

case "$1" in

pool)

pool

;;

process_manager)

process_manager

;;

start_since)

start_since

;;

accepted_conn)

accepted_conn

;;

listen_queue)

listen_queue

;;

max_listen_queue)

max_listen_queue

;;

listen_queue_len)

listen_queue_len

;;

idle_processes)

idle_processes

;;

active_processes)

active_processes

;;

total_processes)

total_processes

;;

max_active_processes)

max_active_processes

;;

max_children_reached)

max_children_reached

;;

*)

echo "Usage: $0 {pool|process_manager|start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"

esac

 

 

3.测试取值

zabbix_get -s 127.0.0.1 -k php-fpm[total_processes]

 

4.导入模板

5.模板变量

用宏传入

 

6.更新间隔

更新间隔不能太快,容易造成高负载

 

d.监控 redis 模板

1.配置文件和脚本

配置文件

 

#监控redis状态,我们可以根据这个参数对应的监控项创建redis状态触发器。

#redis monitor

UserParameter=redis.status,/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a aosatech ping |grep -c PONG

UserParameter=redis_info[*],/etc/zabbix/scripts/redis_zbx.sh $1 $2

 

脚本

注意:REDISPATH="/usr/bin/redis-cli"根据redis-cli命令的位置进行调整!

which redis-cli

#!/bin/bash

REDISPATH="/usr/local/bin/redis-cli"

HOST="127.0.0.1"

PORT="6379"

PASSWORD="aosatech"

REDIS_INFO="$REDISPATH -h $HOST -p $PORT -a $PASSWORD info"

if [[ $# == 1 ]];then

case $1 in

    cluster)

            result=$($REDIS_INFO|/bin/grep cluster|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    uptime_in_seconds)

            result=$($REDIS_INFO|/bin/grep uptime_in_seconds|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    connected_clients)

            result=$($REDIS_INFO|/bin/grep connected_clients|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    client_longest_output_list)

            result=$($REDIS_INFO|/bin/grep client_longest_output_list|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    client_biggest_input_buf)

            result=$($REDIS_INFO|/bin/grep client_biggest_input_buf|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    blocked_clients)

            result=$($REDIS_INFO|/bin/grep blocked_clients|awk -F":" '{print $NF}')

            echo "$result"

    ;;

   

    #内存

    used_memory)

            result=$($REDIS_INFO|/bin/grep used_memory|awk -F":" '{print $NF}'|awk 'NR==1')

            echo "$result"

    ;;

    used_memory_human)

            result=$($REDIS_INFO|/bin/grep used_memory_human|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    used_memory_rss)

            result=$($REDIS_INFO|/bin/grep used_memory_rss|awk -F":" '{print $NF}' | awk 'NR==1')

            echo "$result"

    ;;

    used_memory_rss_human)

            result=$($REDIS_INFO|/bin/grep used_memory_rss_human |awk -F":" '{print $NF}')

            echo "$result"

    ;;

 

    used_memory_peak)

            result=$($REDIS_INFO|/bin/grep used_memory_peak|awk -F":" '{print $NF}'|awk 'NR==1')

            echo "$result"

    ;;

    used_memory_peak_human)

            result=$($REDIS_INFO|/bin/grep used_memory_peak_human|awk -F":" '{print $NF}')

            echo "$result"

    ;;

    used_memory_lua)

            result=$($REDIS_INFO|/bin/grep used_memory_lua|awk -F":" '{print $NF}'|awk 'NR==1')

            echo "$result"

    ;;    

    used_memory_lua_human)

            result=$($REDIS_INFO|/bin/grep used_memory_luai_human|awk -F":" '{print $NF}')

            echo "$result"

    ;;

 

    mem_fragmentation_ratio)

            result=$($REDIS_INFO|/bin/grep mem_fragmentation_ratio|awk -F":" '{print $NF}')

            echo "$result"

    ;;  

    #rdb

    rdb_changes_since_last_save)

            result=$($REDIS_INFO|/bin/grep rdb_changes_since_last_save|awk -F":" '{print $NF}')

            echo "$result"

    ;;  

    rdb_bgsave_in_progress)

            result=$($REDIS_INFO|/bin/grep rdb_bgsave_in_progress|awk -F":" '{print $NF}')

            echo "$result"

    ;;  

    rdb_last_save_time)

            result=$($REDIS_INFO|/bin/grep rdb_last_save_time|awk -F":" '{print $NF}')

            echo "$result"

    ;;  

    rdb_last_bgsave_status)

            result=$($REDIS_INFO|/bin/grep -w "rdb_last_bgsave_status" | awk -F':' '{print $2}' | /bin/grep -c ok)

            echo "$result"

    ;;  

    rdb_current_bgsave_time_sec)

            result=$($REDIS_INFO|/bin/grep -w "rdb_current_bgsave_time_sec" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    #rdbinfo

    aof_enabled)

            result=$($REDIS_INFO|/bin/grep -w "aof_enabled" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_rewrite_scheduled)

            result=$($REDIS_INFO|/bin/grep -w "aof_rewrite_scheduled" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_last_rewrite_time_sec)

            result=$($REDIS_INFO|/bin/grep -w "aof_last_rewrite_time_sec" | awk -F':' '{print $2}')

            echo "$result"

                ;;

    aof_current_rewrite_time_sec)

            result=$($REDIS_INFO|/bin/grep -w "aof_current_rewrite_time_sec" | awk -F':' '{print $2}')

            echo "$result"

                ;;

    aof_last_bgrewrite_status)

            result=$($REDIS_INFO|/bin/grep -w "aof_last_bgrewrite_status" | awk -F':' '{print $2}' | /bin/grep -c ok)

            echo "$result"

    ;;

    #aofinfo

    aof_current_size)

            result=$($REDIS_INFO|/bin/grep -w "aof_current_size" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_base_size)

            result=$($REDIS_INFO|/bin/grep -w "aof_base_size" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_pending_rewrite)

            result=$($REDIS_INFO|/bin/grep -w "aof_pending_rewrite" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_buffer_length)

            result=$($REDIS_INFO|/bin/grep -w "aof_buffer_length" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_rewrite_buffer_length)

            result=$($REDIS_INFO|/bin/grep -w "aof_rewrite_buffer_length" | awk -F':' '{print $2}')

            echo "$result"

    ;;  

    aof_pending_bio_fsync)

            result=$($REDIS_INFO|/bin/grep -w "aof_pending_bio_fsync" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    aof_delayed_fsync)

            result=$($REDIS_INFO|/bin/grep -w "aof_delayed_fsync" | awk -F':' '{print $2}')

            echo "$result"

    ;;                    

    #stats

    total_connections_received)

            result=$($REDIS_INFO|/bin/grep -w "total_connections_received" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    total_commands_processed)

            result=$($REDIS_INFO|/bin/grep -w "total_commands_processed" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    instantaneous_ops_per_sec)

            result=$($REDIS_INFO|/bin/grep -w "instantaneous_ops_per_sec" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    rejected_connections)

            result=$($REDIS_INFO|/bin/grep -w "rejected_connections" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    expired_keys)

            result=$($REDIS_INFO|/bin/grep -w "expired_keys" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    evicted_keys)

            result=$($REDIS_INFO|/bin/grep -w "evicted_keys" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    keyspace_hits)

            result=$($REDIS_INFO|/bin/grep -w "keyspace_hits" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    keyspace_misses)

            result=$($REDIS_INFO|/bin/grep -w "keyspace_misses" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    pubsub_channels)

            result=$($REDIS_INFO|/bin/grep -w "pubsub_channels" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    pubsub_channels)

            result=$($REDIS_INFO|/bin/grep -w "pubsub_channels" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    pubsub_patterns)

            result=$($REDIS_INFO|/bin/grep -w "pubsub_patterns" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    latest_fork_usec)

            result=$($REDIS_INFO|/bin/grep -w "latest_fork_usec" | awk -F':' '{print $2}')

            echo "$result"

    ;;          

    connected_slaves)

            result=$($REDIS_INFO|/bin/grep -w "connected_slaves" | awk -F':' '{print $2}')

            echo "$result"

    ;;

    master_link_status)

            result=$($REDIS_INFO|/bin/grep -w "master_link_status"|awk -F':' '{print $2}'|/bin/grep -c up)

            echo "$result"

    ;;

    master_last_io_seconds_ago)

            result=$($REDIS_INFO|/bin/grep -w "master_last_io_seconds_ago"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    master_sync_in_progress)

            result=$($REDIS_INFO|/bin/grep -w "master_sync_in_progress"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    slave_priority)

            result=$($REDIS_INFO|/bin/grep -w "slave_priority"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    #cpu

    used_cpu_sys)

            result=$($REDIS_INFO|/bin/grep -w "used_cpu_sys"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    used_cpu_user)

            result=$($REDIS_INFO|/bin/grep -w "used_cpu_user"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    used_cpu_sys_children)

            result=$($REDIS_INFO|/bin/grep -w "used_cpu_sys_children"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    used_cpu_user_children)

            result=$($REDIS_INFO|/bin/grep -w "used_cpu_user_children"|awk -F':' '{print $2}')

            echo "$result"

    ;;

    *)

          echo "argu error"

    ;;

esac

#db0:key

   elif [[ $# == 2 ]];then

        case $2 in

            keys)

                    result=$($REDIS_INFO| /bin/grep -w "db0"| /bin/grep -w "$1" | /bin/grep -w "keys" | awk -F'=|,' '{print $2}')

                    echo "$result"

            ;;

            expires)

                    result=$($REDIS_INFO| /bin/grep -w "db0"| /bin/grep -w "$1" | /bin/grep -w "expires" | awk -F'=|,' '{print $4}')

                    echo "$result"

            ;;

            avg_ttl)

                    result=$($REDIS_INFO|/bin/grep -w "db0"| /bin/grep -w "$1" | /bin/grep -w "avg_ttl" | awk -F'=|,' '{print $6}')

                    echo "$result"

            ;;

            *)

                 echo "argu error" ;;

        esac

fi

 

2.手动取值

zabbix_get -s 192.168.1.91 -k redis_info[blocked_clients]

 

3.建立/导入模板

Pass

 

4.加速

Redis可以用来加速网页访问,但是需要下在php-redis进行连接配置

Pass

 

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。