Zabbix监控实例

1 监控MySQL

1.1 监控脚本

cat /scripts/check_mysql.sh
脚本内容为:

#!/bin/bash

MySQL_USER="root"
MySQL_PWD="123123"
MySQL_HOST="127.0.0.1"
MySQL_PORT="3306"

MySQL_CONN="/usr/local/mysql/bin/mysqladmin -u${MySQL_USER} -h${MySQL_HOST} -P${MySQL_PORT} -p${MySQL_PWD}"

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_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
        ;;
esac

1.2 客户端键值配置

修改键值文件

#配置脚本权限
cd /scripts/
chmod +x check_mysql.sh
chown zabbix.zabbix check_mysql.sh

#修改键值
cd /etc/zabbix/zabbix_agent.d/
#删除旧的mysql键值模板,创建新键值
rm -rf userparameter_mysql.conf
vim mysql_status.conf
#内容为
UserParameter=mysql.status[*],/scripts/check_mysql.sh $1
UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin -uroot -p123123 ping | grep -c alive
UserParameter=mysql.version,/usr/local/bin/mysql -V

#重启zabbix-agent服务
/etc/init.d/zabbix-agent restart

测试键值
在服务端,测试
zabbix_get -s agent-IP -p agent-port -k "mysql.status[*]"

1.3 在zabbix的web前台引入模板

引入模板,链接到指定主机即可实现监控

2 监控Apache

2.1 构建Apache初始环境

#避免冲突,删除系统已有的httpd服务
rpm -qa httpd

#编译Apache,启动脚本
tat xf httpd-2.2.17.tar.gz -C /usr/src/
cd /usr/src/httpd-2.2.17/
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi && make && make install
echo $?

cd /usr/local/httpd/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
chmod +x /etc/init.d/httpd

#修改主页,域名
cd htdocs/
echo "`hostname -I` I am apache" > index.html
cd /usr/local/httpd/conf

#修改配置文件
vim httpd.conf
#将97行改为
SeverName www.http.com:80

#在配置文件最后加入代码端,开启apache状态页
ExtendedStatus On
<location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 192.168.200.191
Allow from 127.0.0.1
</location>

#本地映射,启动apache
echo "127.0.0.1 www.http.com" >> /etc/hosts
/etc/init.d/httpd start

2.2 创建键值

键值监控脚本
可从网上下载,也可以使用已有文件(已有)
wget https://github.com/lorf/zapache/archive/master.zip
下载后,解压,然后从里面获取监控脚本

#创建脚本存放目录
mkdir /etc/zabbix/scripts/zapache

cd zapache-master/
cp zapache /etc/zabbix/scripts/zapache
chmod 755 /etc/zabbix/scripts/zapache
chown zabbix /etc/zabbix/scripts/zapache

cp userparameter_zapache.conf.sample /etc/zabbix/zabbix_agentd.d/userparameter_zapache.conf

#修改最后一行为,域名刚刚自定义的
UserParameter=zapache[*],/etc/zabbix/scripts/zapache www.http.com \$1

#重启zabbix-agent客户端
/etc/init.d/zabbix-agent restart

测试键值
在客户端
可以查看能使用的键值有哪些
/etc/zabbix/scripts/zapache
在服务端
zabbix_get -s agent-ip -p 10050 -k "zapache[***]"

2.3 web端添加模板

客户端zapache-master目录下有两个模板,有active的是agent主动模式
zapache-template-active.xml
zapache-template.xml
可以将这两个模板拷贝到windows,导入web端

3 监控Nginx

3.1 开启nginx状态页

nginx配置文件中加入status模块,IP是nginx服务器本机IP

location = /nginx-status {
	stub_status on;
	access_log off;
	allow 127.0.0.1;
	allow 192.168.200.182;
	deny all;
    }

3.2 客户端配置键值

监控脚本为
cat /scripts/nginx_status.sh

#!/bin/bash

HOST="127.0.0.1"
PORT="80"

#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 waiting(){
    /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Waiting" | awk '{print $6}'
    }
function writing(){
    /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Writing" | awk '{print $4}'
    }
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

给脚本可执行权限

chmod +x /scripts/nginx_status.sh
chown zabbix /scripts/nginx_status.sh

自定义键值

vim /etc/zabbix/zabbix_agentd.d/nginx.conf
#内容为
UserParameter=nginx.active,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep "Active" | awk '{print $NF}'

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

#启动agent客户端
/etc/init.d/zabbix-agent start

3.3 测试键值

服务端
zabbix_get -s agent-ip -p 10050 -k "nginx.status[***]"

3.4 在web端导入nginx监控模板

4 监控Tomcat

zabbix监控tomcat,需要zabbix_server开启java poller,zabbix_java开启javaGateway,端口10052,Tomcat JMX开启12345端口,提供性能数据

流程为
java poller<–>javaGateway:10052<–>Tomcat:12345

4.1 配置客户端

配置Tomcat JMX
在tomcat服务器上,编辑catalina.sh,加入如下配置
若做过tomcat优化,需要注意两者的不同,不要重复

#在249行加入

CATALINA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.200.109 -Dcom.sun.management.jmxremote.port=12345"

其中-Djava.rmi.server.hostname=192.168.200.109,是tomcat服务器IP
然后重启tomcat,检查12345端口是否成功开启

4.2 服务端配置

在zabbix服务端,配置java环境
要使得zabbix能够监控tomcat,编译的时候需要加入java支持,支持JMX监控,有需要的话,需要重新编译,而编译之前,需要保证java环境配置OK

4.2.1 安装JDK

tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_60/ /usr/local/jdk

sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
java -version

4.2.2 重新编译zabbix服务端

#关闭zabbix服务端
/etc/init.d/zabbix_server stop

#加入参数--enable-java重新编译
cd /usr/src/zabbix-3.2.4/
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --enable-java --with-libxml2
make && make install

cd /usr/local/zabbix/sbin/
#编译此处成功会多一个目录zabbix_java,此目录下有
settings.sh     #java gateway配置脚本
shutdown.sh     #停止java gateway服务
startup.sh      #启动java gateway服务

#启动java gateway 服务
/usr/local/zabbix/sbin/zabbix_java/startup.sh
netstat -antup | grep 10052

4.2.3 修改zabbix server 配置

默认的情况下,zabbix server未启用javaPollers,需要修改zabbix_server.conf的如下配置

cd /usr/local/zabbix/etc/
vim zabbix_server.conf
#修改215,223,231行的内容
JavaGateway=127.0.0.1   #JavaGateway的地址
JavaGatewayPort=10052   #监听端口
StartJavaPollers=5      #poller进程数

#重新启动zabbix_server服务
/etc/init.d/zabbix_server start

4.3 web端添加Tomcat主机,导入模板

和之前不同,java程序监控方式是JMX,故主机的监控,需要增加一个JMX接口
主机名为tomcat服务器IP,监控IP为tomcat服务器主机,端口为12345

zabbix自带tomcat模板,但存在兼容性问题,可以自己下载,或者用已有模板

5 监控PHP-FPM

5.1 开启PHP-FPM状态功能

cd /usr/local/php/etc/
vim php-fpm.conf +360
#将360行取消注释,如下
pm.status_path = /status

#重启php-fpm
netstat -antup | grep php-fpm
kill pid
/usr/local/php/sbin/php-fpm

5.2 nginx配置php-fpm状态页面

vim /usr/local/nginx/
vim nginx.conf
#加入location配置
location = /status {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}

#重启nginx
nginx -s reload

5.3 浏览器访问PHP状态页进行测试

在浏览器中输入IP/status访问状态页
php-fpm的状态页有很多中表达方式,可以带其他参数,比如json,xml,html
例:curl IP/status?xml

5.4 客户端键值配置

此处我们使用xml表达方式

cd /etc/zabbix/zabbix_agentd.d/
vim userparameter_php-fpm.conf
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<$1>" | awk -F "[>|<]" '{print $$3}'
##这里需要注意在脚本里如果写成$3的话,脚本会认识是一个变量,因此我们需要用$$3
    
#重启agent客户端
/etc/init.d/zabbix-agent restart

5.5 服务端测试键值

zabbix_get -s agent-ip -p 10050 -k “php-fpm.status[*]”

5.6 web导入模板连接到主机即可使用

6 web监控

Zabbix的Web监测功能,没有任何依赖,不需要agent端,全部依赖于Server的主动监测

添加web监控
web监控是根据主机来配置,以server端来举例
在配置–主机–server端–web监测–新增

  1. 场景:
    自定义名称,应用集,客户端自动选择(选择zabbix就ok)
  2. 步骤:
    添加–自定义名称,URL为需要检测的网站,以http://IP:80/URI的格式,要求的状态码可以写200,然后添加–更新
  3. 可以从web监控(监控中–web监控)查看刚刚添加的web监控信息,当回复码是200,提示正常,否,则报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值