应用级监控
tomcat是用jmx接口来监控的
memcached如何来监控
这个需要看tomcat笔记4.0 session共享里面 安装了memcached
两台安装了memcached的机器
将脚本 传到 memcached服务器上去
cd /etc/zabbix/zabbix_agentd.d
memcached_monitor.sh
chmod +x memcached_monitor.sh
以上操作 两台都需要做
#!/bin/bash
memcached_status(){
##定义一个函数(切片,下面需要调用)
M_PORT=$1
M_COMMAND=$2
echo -e "stats\nquit" | ncat 127.0.0.1 "${M_PORT}" | grep "STAT ${M_COMMAND}" | awk '{print $3}'
}
main(){
##定义一个函数(切片,下面需要调用)
case $1 in
memcached_status)
##调用上面定义的函数
memcached_status $2 $3;
;;
esac
}
main $1 $2 $3
##调用函数的方法 直接写函数的名称
#!/bin/bash
memcached_status(){
M_PORT=$1
M_COMMAND=$2
echo -e "stats\nquit" | ncat 127.0.0.1 "${M_PORT}" | grep "STAT ${M_COMMAND}" | awk '{print $3}'
}
main(){
case $1 in
memcached_status)
memcached_status $2 $3;
;;
esac
}
main $1 $2 $3
memcached比较特殊 获取他的信息 可以用
telnet 192.168.1.207 11211
为通后 输入stats 可以 获取详细信息
需要下载nmap 两台agent 都需要下载
apt -y install nmap
他会安装一个工具 ncat 这个工具会连接 通过ip加端口号 可以连接 给他传值
echo "stats" | ncat 127.0.0.1 11211
这条命令是 将参数 给ncat
echo "stats" | ncat 127.0.0.1 11211 | grep curr_connections
过滤出我们想要的内容
echo "stats" | ncat 127.0.0.1 11211 | grep curr_connections | awk '{print$NF}'
最终是为了获取这个值
最终就是为了监控 这些数据
第一出图 如果超出了我们的阈值 让他报警
比如我只能让他连接数 只能为100 如果超过100就报警
vim /etc/zabbix/zabbix_agentd.conf
修改配置文件 添加key值的目录
脚本目录
UserParameter=memcache_status[*],/etc/zabbix/zabbix_agentd.d/memcached_monitor.sh "$1" "$2" "$3"
把这条添加进去
systemctl restart zabbix-agent.service
重启agent
然后切换server 去执行一下试试
zabbix_get -s 192.168.1.207 -k memcache_status["memcached_status","11211","limit_maxbytes"]
memcached_status 是配置文件定义的key值
11211
这时候我们新建一个模板
名字就叫memcache
群组 弄到Templates里面
然后点添加
找到刚才创建的模板
然后点监控项
memcache连接数
memcache_status["memcached_status","11211","curr_connections"]
memcached
添加就行了
触发器的概念:就是定义一个阈值 超过这个阈值就报警
模板 监控器 触发器概念
比如当前有个主机 zabbix-agent
agent上有监控项
尽量我们是 先创建模板 然后在模板里添加监控项
模板里面有: 应用集 监控项 触发器 图形
比如我们把这个值写大于1报警
大于2就报警
然后等待报警
然后将模板添加到被监控主机上去
echo -e "stats\n quit" | ncat 127.0.0.1 11211 | grep "curr_connections" | awk '{print$NF}'
切换到被监控的主机
查看数多少
如果没有大于2 那就多连几个机器
用其他主机
telnet 被监控主机ip 11211
等到大于2看看web端报警了没
添加图形
然后我们再添加一个监控项
我们去看下 都可以添加那些
echo -e "stats\n quit" | ncat 127.0.0.1 11211
查看一下
获取这个值
bytes_written
这个是memcached写的大小
memcache写入大小
memcache_status["memcached_status","11211","bytes_written"]
memcached
添加
触发器就不加了 和上个一样 添加就行
我们点图
点进去刚才的图形
可以给里面再加个图
他会区分颜色不一样
加条线
redis监控项目!!! 注意如果只有一个redis模板 会不显示绿灯 但是照样可以用
需要一个装有redis的机器
还要安装上agent
切换到 这台agent-redis-1机器
传个脚本上来
redis_monitor.sh
传到这个目录
cd /etc/zabbix/zabbix_agentd.d
chmod +x redis_monitor.sh
加权限
这个脚本
就是
/apps/redis/bin/redis-cli info
获取redis 的一些信息
used_memory:854304
比如我们获取这条信息
这是占用的字节
sh redis_monitor.sh redis_status 6379 used_memory:
这就是我们获取的这个值
把脚本目录加到agent配置文件里面
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=redis_status[*],/etc/zabbix/zabbix_agentd.d/redis_monitor.sh "$1" "$2" "$3"
添加这条内容
systemctl restart zabbix-agent.service
重启agent
然后切换server 端测试
zabbix_get -s 192.168.1.206 -k redis_status["redis_status","6379","used_memory:"]
如果出现这种情况 是因为 我们测试的时候 再agent端用root用户执行的
这个脚本输出一个文件 他的属主属组都是root zabbix 权限低 我们需要去吧这个文件删掉 文件位置 看脚本内容
zabbix_get -s 192.168.1.206 -k redis_status["redis_status","6379","used_memory:"]
然后再去server 端测试
然后我们去web界面创建模板
创建监控项
redis-内存使用
redis_status["redis_status","6379","used_memory:"]
创建触发器
因为我虚拟机是1G内存的 以下是半G 内存的字节
超过0.5G 就报警
expr 1024 \* 1024 \* 1024 / 2
536870912
创建图形
然后将模板 关联到主机里面就可以了
再去监控nginx
需要一台安装nginx +zabbix-agent的主机
打开nginx配置文件
vim /apps/nginx/conf/nginx.conf
添加状态页
location /nginx-status {
stub_status;
}
/apps/nginx/sbin/nginx -s reload
重载一下
浏览器访问
http://192.168.1.203/nginx-status
就能看到状态页了
传个脚本
cd /etc/zabbix/zabbix_agentd.d/
nginx_status.sh
chmod +x nginx_status.sh
加权限
将这些ip改为本机nginx 的ip
:%s/原数据/替换的数据
curl http://192.168.1.203/nginx-status
命令行试试
这个脚本就是 过滤这六个数字 具体内容 自己看吧
然后去配置文件中添加脚本目录
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh "$1" "$2" "$3"
重启agent
systemctl restart zabbix-agent.service
去server机器上测试 脚本是否能用
zabbix_get -s 192.168.1.203 -k nginx_status["nginx_status","80","active"]
去web界面创建模板
创建触发器 因为没那么多机器 就设置 大于2报警
创建图
然后点击主机 给他添加模板