欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何使用Zabbix监控LNMP环境?完整模板分享

最编程 2024-08-09 19:48:30
...

监控nginx


首先开启nginx的status状态


需要用到ngx_http_stub_status_module模块,提供对基本状态信息的访问默认情况下不构建此模块,应使用—with-http_stub_status_module 配置参数启用它 。


修改nginx配置文件,在server下添加


vim /etc/nginx/conf.d/zabbix.conf


location /status{ 
        stub_status;
    }


重载nginx配置


systemctl  reload nginx


配置完成后访问127.0.0.1/status可以查看nginx运行状态


网络异常,图片无法展示
|



参数解释:  


Active connections:当前活动客户端连接数,包括Waiting连接数。

accepts:已接受的客户端连接总数。

handled:已处理连接的总数。

requests:客户端请求的总数。

Reading:nginx正在读取请求标头的当前连接数。

Writing:nginx将响应写回客户端的当前连接数。

Waiting:当前等待请求的空闲客户端连接数。


编写脚本监控nginx


#/bin/bashping() {
    /sbin/pidof nginx | wc -l}nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk '/Active/ {print $NF}'}reading(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk '/Reading/ {print $2}'}writing(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk '/Writing/ {print $4}'
       }waiting(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk '/Waiting/ {print $6}'
       }accepts(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk 'NR==3 {print $1}'
       }handled(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk 'NR==3 {print $2}'
       }requests(){
    /usr/bin/curl -s "http://127.0.0.1/status/" |awk 'NR==3 {print $3}'
       }$1


给脚本授予执行权限


chmod +x /usr/lib/zabbix/alertscripts/monitor_nginx.sh


修改zabbix-agent配置文件


vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=nginx.[*],/usr/lib/zabbix/alertscripts/monitor_nginx.sh $1
重启zabbix-agent


systemctl restart zabbix-agent


使用zabbix-get测试一下


zabbix_get -s 192.168.179.132 -k nginx.[ping]


创建nginx监控模板


网络异常,图片无法展示
|


配置模板


网络异常,图片无法展示
|

网络异常,图片无法展示
|



创建一个nginx的应用集


网络异常,图片无法展示
|


添加监控项


将nginx的status的内容添加监控项,这里以nginx.ping为例


网络异常,图片无法展示
|



创建触发器


640.jpg


640.jpg


创建图形


640.jpg


将模板链接到监控的主机


640.png


可以看到nginx的状态信息已经出现在了nginx上


640.png


监控mysql


mysql的状态信息可以通过以下命令获取


mysqladmin -uroot -proot extended-status
mysqladmin -uroot -proot status


但是使用明文密码会有如下警告信息,zabbix也会取到这个报错,导致监控项错误,解决方法可以将用户名密码写入到mysql配置文件的mysqladmin中,然后在运行命令时指定配置文件就可以了,命令如下:


mysqladmin --defaults-extra-file=/etc/my.cnf status


但是修改完配置文件需要重启mysql,这在生产环境中显然不太现实,这里我有两种方法,两种方法都是在系统上配置脚本的不同,web页面配置相同,个人推荐使用第一种方法,简单方便


1.直接将错误信息重定向为空

2.将取到的值输出到特定文件里


640.jpg


系统配置


第一种方法:


编写监控脚本


vim /usr/lib/zabbix/alertscripts/monitor_mysql.sh


#/bin/bashMYSQL_USER='root'# 密码MYSQL_PWD='root'# 主机地址/IPMYSQL_HOST='192.168.179.132'# 端口MYSQL_PORT='3306'# 数据连接MYSQL_CONN="/usr/local/mysql/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"if [ $# -ne "1" ];then 
    echo "arg error!" 
    exit 1fi case $1 in 
    Uptime) 
        result=`${MYSQL_CONN} status 2>/dev/null|cut -f2 -d":"|cut -f1 -d"T"` 
        echo $result
        ;; 
    Com_update) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Com_update"|cut -d"|" -f3`       
    echo $result
        ;; 
    Slow_queries) 
        result=`${MYSQL_CONN} status 2>/dev/null|cut -f5 -d":"|cut -f1 -d"O"` 
        echo $result 
        ;; 
    Com_select) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Com_select"|cut -d"|" -f3`       
    echo $result
        ;; 
    Com_rollback) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Com_rollback"|cut -d"|" -f3` 
        echo $result 
        ;; 
    Questions) 
        result=`${MYSQL_CONN} status 2>/dev/null|cut -f4 -d":"|cut -f1 -d"S"` 
        echo $result 
        ;; 
    Com_insert) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Com_insert"|cut -d"|" -f3`        echo $result 
        ;; 
    Com_delete) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Com_delete"|cut -d"|" -f3`        echo $result 
        ;; 
    Com_commit) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Com_commit"|cut -d"|" -f3`        echo $result 
        ;; 
    Bytes_sent) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Bytes_sent" |cut -d"|" -f3` 
        echo $result 
        ;; 
    Bytes_received) 
        result=`${MYSQL_CONN} extended-status 2>/dev/null|grep -w "Bytes_received" |cut -d"|" -f3` 
        echo $result 
        ;; 
    Com_begin) 
        result=`${MYSQL_CONN} extended-status 2>/dev/mull|grep -w "Com_begin"|cut -d"|" -f3`  
        echo $result 
        ;; 
    Open_tables)
        result=`${MYSQL_CONN} extended-status 2>/dev/mull|grep -w "Open_tables"|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|Com_begin|Open_tables)" 
        ;;esac


给脚本授予可执行权限


chmod +x /usr/lib/zabbix/alertscripts/monitor_mysql.sh


修改zabbix-agent配置文件


vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf


UserParameter=mysql.status[*],/usr/lib/zabbix/alertscripts/monitor_mysql.sh $1
UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin -uroot -proot ping 2>/dev/null |grep -c alive
UserParameter=mysql.slave,mysql -uroot -proot -e 'show slave status\G' 2>/dev/null|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes

推荐阅读