枫狐狸 发表于 2017-6-5 13:42:39

huningfei 发表于 2017-6-5 12:53
你好是正确的,这是我agentd.conf配置文件里的
UserParameter=java.jmx.discovery,/home/zabbix/scripts/j ...

你改下jmx_discovery.sh脚本里面下面两行的目录,我刚也遇到一个和你一样的问题,这个脚本里面的查找目录不和其它的一样,所以要改下t_datadir=`find /home/*/tomcat*/bin/ -name catalina.sh|awk -F"/bin/catalina.sh" '{print $1}'`         
tomcat_no=`find /home/*/tomcat*/bin/ -name catalina.sh|awk -F"/bin/catalina.sh" '{print $1}'|wc -l`   



chenzhiyang 发表于 2017-6-5 16:15:13

楼主,这个cp /tmp/jmx_discovery.sh /home/zabbix/bin/jmx_discovery.sh里面的/home/zabbix/bin/jmx_discovery.sh怎么来的,我用yum方法安装的zabbix里面创建的zabbix是没有家目录的,所以是没有/home/zabbix这个目录的。所以脚本执行不了。

huningfei 发表于 2017-6-5 16:18:10

本帖最后由 huningfei 于 2017-6-5 17:13 编辑

枫狐狸 发表于 2017-6-5 13:42
你改下jmx_discovery.sh脚本里面下面两行的目录,我刚也遇到一个和你一样的问题,这个脚本里面的查找目录 ...
我改了之后,又提示
find: ‘/home/*/tomcat*/bin/’: 没有那个文件或目录
find: ‘/home/*/tomcat*/bin/’: 没有那个文件或目录
{"data":[
还是不行。

我刚刚有改了下目录改成t_datadir=`find /home/*/*/bin/ -name catalina.sh|awk -F "/bin/catalina.sh" '{print $1}'`
然后再次在server端执行zabix_get只有
{"data":[

我现在又吧t_datadir=` ps -ef | grep tomcat | awk '{print $9}'| awk -F"=|conf" '{print $3}'`改成了这个,服务端再次执行正常了,但是zabbix模板一直提示Value should be a JSON object
我的json格式是没问题的吧
{"data":[
                {
                        "{#JMX_PORT}":"12345",
                        "{#JAVA_NAME}":"edu-platform-service"},
                {
                        "{#JMX_PORT}":"12346",
                        "{#JAVA_NAME}":"edu-platform-recovery"},
                {
                        "{#JMX_PORT}":"12347",
                        "{#JAVA_NAME}":"edu-platform-openApi"},
                {
                        "{#JMX_PORT}":"12348",
                        "{#JAVA_NAME}":"edu-cas-server"},
                {
                        "{#JMX_PORT}":"12349",
                        "{#JAVA_NAME}":"edu-platform-webapp"},
                {

gxxc 发表于 2017-6-6 14:15:11

{:6_441:}

gxxc 发表于 2017-6-6 14:15:21

{:6_457:}

gxxc 发表于 2017-6-6 14:15:31

{:6_438:}{:6_439:}{:6_431:}

gxxc 发表于 2017-6-6 14:15:38

{:6_458:}

gxxc 发表于 2017-6-6 14:15:45

{:6_438:}

gxxc 发表于 2017-6-6 14:15:54

{:6_428:}

枫狐狸 发表于 2017-6-6 15:16:33

chenzhiyang 发表于 2017-6-5 16:15
楼主,这个cp /tmp/jmx_discovery.sh /home/zabbix/bin/jmx_discovery.sh里面的/home/zabbix/bin/jmx_dis ...

我是编译安装的,直接安装在/home/zabbix目录的,你yum安装的好像是在/usr/local/xxx下面,你需要把/home/zabbix都换成你自己的目录

枫狐狸 发表于 2017-6-6 15:22:44

本帖最后由 枫狐狸 于 2017-6-6 15:32 编辑

huningfei 发表于 2017-6-5 16:18
我改了之后,又提示
find: ‘/home/*/tomcat*/bin/’: 没有那个文件或目录
find: ‘/home/*/tomcat*/bin/ ...
正确格式如下,注意红字部分:
{"data":[
         {"{#JMX_PORT}":"12345","{#JAVA_NAME}":"X"},
         {"{#JMX_PORT}":"12346","{#JAVA_NAME}":"XX"},
         {"{#JMX_PORT}":"12347","{#JAVA_NAME}":"XXX"},
         {"{#JMX_PORT}":"12348","{#JAVA_NAME}":"XXXX"},
         {"{#JMX_PORT}":"12349","{#JAVA_NAME}":"XXXXX"}]}



你的可能是循环判断错了,最后一行多输出一个,号










#!/bin/bash
t_datadir=`find /home/*/tomcat*/bin/ -name catalina.sh|awk -F"/bin/catalina.sh" '{print $1}'`         #检查tomcat实例路径,如果实例都是root用户启动,在| grep omcat后添加|grep root
tomcat_no=`find /home/*/tomcat*/bin/ -name catalina.sh|awk -F"/bin/catalina.sh" '{print $1}'|wc -l`   #检查tomcat实例数,如果实例都是root用户启动,在| grep omcat后添加|grep root

n_port=12345                                                      #配置监控初始端口
i=1                                                               #定议第一条t_datadir的内容
printf '{"data":[\n'

for tomcat in $t_datadir                                          #输出JSON文件
do
    t_service=`echo "$tomcat"|awk -F"/" '{print $(NF-1)}'`
    if [ "$i" != ${tomcat_no} ];then                              #判断i不是最后一个,输出连续格式 },\n
      printf "\t\t{ \n"
      printf "\t\t\t\"{#JMX_PORT}\":\"${n_port}\",\n"
      printf "\t\t\t\"{#JAVA_NAME}\":\"${t_service}\"},\n"
    else                                                          #当i是最后一个时,输出json结束格式 }]}\n
      printf "\t\t{ \n"
      printf "\t\t\t\"{#JMX_PORT}\":\"${n_port}\",\n"
      printf "\t\t\t\"{#JAVA_NAME}\":\"${t_service}\"}]}\n"
    fi
    let "n_port=n_port+1"                                       #监控端口号默认+1
    let "i=i+1"                                                   #t_datadir的输出内容自动向后移一位
done

chenzhiyang 发表于 2017-6-6 15:52:00

枫狐狸 发表于 2017-6-6 15:16
我是编译安装的,直接安装在/home/zabbix目录的,你yum安装的好像是在/usr/local/xxx下面,你需要把/home ...

楼主,那么这四句代码干嘛的?ps -ef|grep javatomcat_stop
tomcat_start
ps -ef|grep java


tomcat_stop
tomcat_start是两个方法来的吗?在上面的代码里面,没有这两个方法。执行的时候,报错。



枫狐狸 发表于 2017-6-6 15:55:58

chenzhiyang 发表于 2017-6-6 15:52
楼主,那么这四句代码干嘛的?ps -ef|grep javatomcat_stop
tomcat_start
ps -ef|grep java


配置完了之后需要重启tomcat,监控才会有数据

tomcat_start,tomcat_stop是tomcat的启停命令,这个脚本你可以你的tomcat启停命令都写到里面,手动也行
ps -ef|grep java是查看tomcat进程是否启动的。

chenzhiyang 发表于 2017-6-6 16:36:41

我把add_service_tomcat.sh和jmx_discovery.sh里面的 /home/zabbix/bin/jmx_discovery.sh都改为了/usr/lib/zabbix/alertscripts/jmx_discovery.sh
但是在图形界面添加了模块后Template for Tomcat,没有任何数据,于是用了zabbix_get -s 192.168.239.136 -p 10050-k "java.jmx.discovery"报这个错误   
sh: /home/zabbix/bin/jmx_discovery.sh: No such file or directory

chenzhiyang 发表于 2017-6-6 16:41:04

chenzhiyang 发表于 2017-6-6 16:36
我把add_service_tomcat.sh和jmx_discovery.sh里面的 /home/zabbix/bin/jmx_discovery.sh都改为了/usr/lib/ ...


我用的是centos7.3    zabbix 3.2






枫狐狸 发表于 2017-6-6 16:52:54

chenzhiyang 发表于 2017-6-6 16:41
我用的是centos7.3    zabbix 3.2
你被控机的zabbix_agentd.conf文件里面KEY定议里面也要改成/usr/lib/zabbix/alertscripts/jmx_discovery.sh

chenzhiyang 发表于 2017-6-6 17:01:15

可以输出json数据了,但是zabbixweb端那里没有任何数据。

chenzhiyang 发表于 2017-6-6 17:02:09

chenzhiyang 发表于 2017-6-6 17:10:53

在监控项里有提示Item does not allow parameters.这是什么原因,是zabbix-agent.conf没有配置好吗?

枫狐狸 发表于 2017-6-6 17:13:52

chenzhiyang 发表于 2017-6-6 17:10
在监控项里有提示Item does not allow parameters.这是什么原因,是zabbix-agent.conf没有配置好吗? ...

没配置好,检查一下conf文件,看看里面的$符号是不是还在
页: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15
查看完整版本: 监控一台主机上多个tomcat实例5.11修正一个语法问题