四、zabbix聚合图形、监控方案、JMX接口、自动被动注册
如果nginx活着,端口存在会返回1;如果nginx死了,端口不存在返回0;命令如下:#agent服务器:#自定义key值:如果nginx端口存在返回1,nginx端口不存在返回0#不用netstat,用ss,是因为netstat -p(显示进程)需要 root 权限,ss 是 netstat 的替代工具,不需要 -p 参数也能检查端口:舍弃:netstat -tunlp | grep ":80
一、聚合图形
点击名称-编辑聚合图形,支持对图形进行增删改
可以添加任意服务器的任何已存在的图形
二、监控nginx
常用的监控方案有:端口监控、进程监控、网络返回状态监控、日志监控等等,这里记录下监控nginx端口是否存活。
自定义监控nginx端口
如果nginx活着,端口存在会返回1;如果nginx死了,端口不存在返回0;命令如下:
ss -tuln | grep ":80 " &>/dev/null && echo 1 || echo 0
#agent服务器:
#自定义key值:如果nginx端口存在返回1,nginx端口不存在返回0
[root@k8s-node2 zabbix_agentd.d]# cat /etc/zabbix/zabbix_agentd.d/zidingyi.conf
UserParameter=yonghushu,who|wc -l
UserParameter=nginxduankou,ss -tuln | grep ":80 " &>/dev/null && echo 1 || echo 0
#不用netstat,用ss,是因为netstat -p(显示进程)需要 root 权限,ss 是 netstat 的替代工具,不需要 -p 参数也能检查端口:
舍弃:netstat -tunlp | grep ":80 " &>/dev/null && echo 1 || echo 0
#重启agent服务器
systemctl restart zabbix-agent.service
然后server(监控服务器)服务器的zabbix_get获取试试
#server服务器
[root@k8s-master ~]# zabbix_get -s 192.168.157.150 -k "nginxduankou"
0
然后写到自定义的配置模板中,添加个触发器,nginx挂了就报警。
注意:图里的键值应该为:nginxduankou
然后把nginx停了,就报警了,同时也发布邮箱提醒。
固定模板监控nginx端口
使用固定模板监控,同时这个模板里有触发器,nginx挂了,也会邮箱提醒
三、 JMX接口监控tomcat
主要用于监控Java应用,特别适合以下情况:
Java中间件:Tomcat、TongWeb、WebLogic等
JVM运行时:内存、线程、GC等指标
应用级MBean:应用自定义暴露的管理接口
jmx接口的组建关系图:
下面我来配置监控tomcat(和监控TongWeb、WebLogic是类似的)
1、Tomcat服务器端配置
# 在Tomcat的bin目录下创建或编辑setenv.sh:
#!/bin/bash
# 正确的单行写法(去掉换行)
#注意下面的ip是tomcat服务器的ip
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.
157.150"
#重启tomcat
./shutdown.sh
./startup.sh
2、Zabbix Server端配置
#安装Zabbix Java Gateway
yum install zabbix-java-gateway
#配置Zabbix Java Gateway
vi /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052 #JMX 端口可以是 1024-65535都可以,这个是在“Zabbix主机配置-Web界面-主机-JMX接口”用的
PID_FILE="/run/zabbix/zabbix_java.pid" #该文件会自动创建,不用手动创建
START_POLLERS=5 #并发能力5个
TIMEOUT=30
#启动Java Gateway服务
systemctl enable zabbix-java-gateway
systemctl start zabbix-java-gateway
#配置Zabbix Server使用Java Gateway
vi /etc/zabbix/zabbix_server.conf
JavaGateway=<Java Gateway服务器IP>
JavaGatewayPort=10052
StartJavaPollers=5
#重启Zabbix Server
systemctl restart zabbix-server
这个节点遇到的坑:
/etc/zabbix/zabbix_java_gateway.conf里面的配置文件我一开始用的PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
但是启动时报错了,日志提示让我用/run/zabbix/zabbix_java. pid,改为这个就可以了。
3、配置zabbix的web页面
添加JMX接口
添加模板
4、添加完成后,检查模板是否生效。
启动tomcat,这里会显示绿色和红色(这个自带的模板没有告警和触发器)
JMX、gareway、zabbixserver关系图:
JMX接口方式实现的大体逻辑:
1、新增jmx的setenv.sh脚本,启动tomcat时,setenv.sh 中的参数会被Tomcat的JVM读取,开启JMX远程管理接口
2、然后server服务器安装gateway, zabbix_server配置文件又关联了gateway, 同时web页面配置了gateway。
3、所以server取tomcat值时,只需要让gateway作为中间人,gateway就会去取值,同时把查询到的tomcat的值取到,给server服务器
四、自动发现与自动注册
自动发现:
server服务器主动去找agent服务器,这种方式会使server服务器压力会变大。
#首先要确保agent服务器安装了agent
#然后server使用该命令,可以ping通,1是通,0是不通
[root@k8s-master ~]# zabbix_get -s 192.168.157.150 -k "agent.ping"
1
通了之后,使用server的web进行自动发现设置
设置动作
遇到的坑:
我自动发现的规则范围写为:192.168.157.100-200就一直检测不出来,把检测规则改为对应的ip:192.168.157.150就可以了。
自动注册:
agent主动找server,减少server压力,但agent配置写错了就找不到
#再agent机器上,配置agent的配置文件如下
[root@k8s-node2 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.157.148 #写server的ip
ServerActive=192.168.157.148 #写server的ip
Hostname=k8s-node2 #写agent的名字
HostnameItem=system.hostname#这个要打开
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#重启zabbixagent
systemctl restart zabbix-agent.service
server那边首先验证通信
#server端
[root@k8s-master web]# zabbix_get -s 192.168.157.150 -k "agent.ping"
1
再web端创建动作
主机名一定要是agent的主机名称
操作添加主机、主机群组、模板
更多推荐
所有评论(0)