枫狐狸
发表于 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