zabbix监控jvm原理和低级监控项
官方地址:
mkdir /app/ tar xf jdk-8u221-linux-x64.tar.gz -C /app/ ln -s /app/jdk1.8.0_221/ /app/jdk
2. 全局环境变量
export JAVA_HOME=/app/jdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jarq . /etc/profile
3. 测试版本
[root@ntp /app]# java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
tar xf apache-tomcat-8.5.50.tar.gz -C /app ln -s /app/apache-tomcat-8.5.50/ /app/tomcat echo "export TOMCAT_HOME=/app/tomcat" >> /etc/profile . /etc/profile
2. 检查tomcat变量是否添加完成,执行命令
/app/tomcat/bin/version.sh --查看版本 /app/tomcat/bin/startup.sh --启动tomcat #查看8080端口是否开启 [root@ntp /app]# netstat -lntup | grep java tcp6 0 0 :::8009 :::* LISTEN 25859/java tcp6 0 0 :::8080 :::* LISTEN 25859/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 25859/java
cd /app/tomcat/webapps rm -rf * #将zrlog.tar 复制到webapps/目录下改名为ROOT.TAR wget http://dl.zrlog.com/release/zrlog-2.1.7-768d7a6-release.war cp zrlog-2.1.7-768d7a6-release.war /app/tomcat/webapps/ROOT.war
yum install mariadb mariadb-server -y systemctl start mariadb systemctl enable mariadb
2. 创建数据库
mysql create database zrlog character set utf8 collate utf8_general_ci; grant all on zrlog.* to 'zrlog'@'localhost' identified by '123456';
配置登录信息
最后结果
zabbix监控jvm
客户端添加参数
- tomcat 开启jmxremote
#开启tomcat的远程监控 vim /app/apache-tomcat-8.0.27/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=10.0.0.8 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
注:之间有空格,否则12345
端口不会出现
$ ./shutdown.sh $ ./start.sh
window监控java
监控文件默认安装位置:C:\Program Files\Java\jdk1.8.0_31\bin\jconsole.exe
zabbix监控java
原理图:
- 在zabbix-server上安装java-gateway
yum install zabbix-java-gateway -y systemctl start zabbix-java-gateway systemctl enable zabbix-java-gateway
修改zabbix-server的配置文件(java-gatewayd的地址)
289 JavaGateway=10.0.0.71 --连接地址 297 JavaGatewayPort=10052 ---端口 305 StartJavaPollers=5 ---开启进程
web界面链接模板
链接模板
自定义jmx监控项
"Catalina:type=Manager,host=localhost,context=/" maxActive
新建应用集:session
取值结果
zabbix低级自动发现
低级自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。
为什么要用低级自动发现
低级自动发现特别适合用于监控那些有规律,又有差异的监控对象。例如A主机有3个挂载分区,B主机有4个挂载分区,c主机有5个挂载分区,每个分区挂载目录还不一样,现在要求,监控每一个分区的 磁盘总容量,剩余容量,使用容量,block剩余百分比,inode使用百分比,这时候使用普通的zabbix模板根本无法监控
监控磁盘
注:添加一块磁盘并进行格式化
$ mkfs.xfs /dev/sdb $ mount /dev/sdb /mnt/ $ df -h /dev/sdb 20G 33M 20G 1% /mnt
图片点击:配置--> 主机 --> 监控项 --> 非模板监控项 查看
注:这里带有感叹号的是已经添加上的磁盘监控项,卸载显示的
取出值新磁盘的百分比值
df -h | grep -w "/" | awk '{print $5}' | tr -d '%'
编辑监控项的配置文件
注:使用变量$1
传参,后期加硬盘也可以显示
$ vim /etc/zabbix/zabbix_agent.d/disk.conf UserParameter=disk_pused[*],df -h|grep -w '$1'|awk '{print $$5}' | tr -d '%' $ systemctl restart zabbix-agent
zabbix-serve验证
$ zabbix_get -s 172.16.1.8 -k disk_pused[/] 6
显示报错:zabbix测值显示zabbix_get [39169]: Check access restrictions in Zabbix agent configuration
检查Zabbix代理配置中的访问限制
报错处理:zabbix-agent 配置文件的139 ServerActive=127.0.0.1
添加监控项原型
克隆监控项原型
添加的内容,一个更改三处
结果
低级自动发现的过滤器
监控容器
监控每个容器的内存使用率,每个容器的cpu使用率
安装docker
链接:https://pan.baidu.com/s/1BP3Z1xs5rM6sRnZPh2FfHg 提取码:djoq
1. 上传镜像
yum install docker -y systemctl start docker systemctl enable docker #上传镜像 docker load -i docker_nginx.tar.gz b67d19e65ef6: Loading layer [==================================================>] 72.5 MB/72.5 MB 6eaad811af02: Loading layer [==================================================>] 57.54 MB/57.54 MB a89b8f05da3a: Loading layer [==================================================>] 3.584 kB/3.584
2. 启动镜像
#启动三个容器,用于监控 docker run -d nginx:latest docker run -d nginx:latest docker run -d nginx:latest #查看容器启动情况 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ad314ed01c9 nginx:latest "nginx -g 'daemon ..." 11 seconds ago Up 10 seconds 80/tcp priceless_cray c650853b0f57 nginx:latest "nginx -g 'daemon ..." 12 seconds ago Up 11 seconds 80/tcp relaxed_lamport 949401c2cfac nginx:latest "nginx -g 'daemon ..." 14 seconds ago Up 13 seconds 80/tcp infallible_kare #查看使用情况 docker stats --no-stream CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 1ad314ed01c9 0.00% 1.391 MiB / 972.6 MiB 0.14% 1.55 kB / 656 B 0 B / 0 B 2 c650853b0f57 0.00% 1.391 MiB / 972.6 MiB 0.14% 1.81 kB / 656 B 0 B / 0 B 2 949401c2cfac 0.00% 1.383 MiB / 972.6 MiB 0.14% 2.24 kB / 656 B 684 kB / 0 B
显示出容器监控项
在主机监控项Network interfaces
查找
注:将更新时间改为30s
条件过滤器
注:将容器监控网络监控项过滤出来
添加的监控项
结果
自定义低级自动发现规则
创建自动发现脚本
mkdir /server/scripts -p vim discovery_container_port.sh #!/bin/bash port=($(/usr/bin/docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}')) printf '{\n' printf '\t"data":[\n' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then printf '\t {\n' printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]] printf '\t {\n' printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n" fi done printf '\t ]\n' printf '}\n'
配置文件添加监控项
1. visudo
visudo 101 zabbix ALL=(ALL) NOPASSWD:ALL
2. 脚本文件加上sudo
vim /etc/zabbix/zabbix_agnet.d/disk.conf UserParameter=disk_pused[*],df -h|grep -w '$1'|awk '{print $$5}' | tr -d '%' UserParameter=discovery_container_port,sudo /bin/bash /server/scripts/discovery_container_port.sh
3. zabbix服务端测试
$ zabbix_get -s 172.16.1.8 -k discovery_container_port { "data":[ { "{#CONTAINERNAME}":"priceless_cray"}, --容器传入的参数 { "{#CONTAINERNAME}":"relaxed_lamport"}, { "{#CONTAINERNAME}":"infallible_kare"} ] }
创建低级自动发现规则
创建发现规则
配置--> 主机--> 自动发现--> 创建发现规则
利用监控项取值容器使用率
修改脚本discovery_container_port.sh
#!/bin/bash port=($(/usr/bin/docker ps -a|grep -v "CONTAINER ID"|awk '{print $1}'))
服务端取值
$ zabbix_get -s 172.16.1.8 -k discovery_container_port { "data":[ { "{#CONTAINERNAME}":"1ad314ed01c9"}, { "{#CONTAINERNAME}":"c650853b0f57"}, { "{#CONTAINERNAME}":"949401c2cfac"} ] }
取值,容器内存使用率
$ docker stats --no-stream | grep -w cfda8eb58988 | awk {'print $8'} | tr -d '%' 0.14
配置文件加入自定义监控项
vim /etc/zabbix/zabbix_agent.d/disk.conf UserParameter=container_mem_pused[*],sudo docker stats --no-stream | grep -w $1 | awk {'print $$8'} | tr -d '%' --取值容器内存使用率 systemctl restart zabbix-agent
服务端添加新的自动发现规则
容器列表显示
容器内存结果显示