设为首页 收藏本站
查看: 945|回复: 0

[经验分享] gdb 调试zabbix_server解决zabbix_sender不成功的问题

[复制链接]

尚未签到

发表于 2019-1-19 09:20:30 | 显示全部楼层 |阅读模式
  先说下环境及使用版本:
  Red hat Enterprise Linux 64位系统,zabbix 1.8.5
  zabbix server端,agent,web等都搞定了,就剩下一个zabbix_sender,死活搞不定。让人郁闷的是,zabbix server debug的log中,什么都没有写,一切似乎都很正常!于是,一怒之下,用gdb调试zabbix_server来看看究竟是怎么回事。
  使用zabbix_sender发送时,信息如下:
  [root@localhost tmp]# zabbix_sender -k "online_users" -o "456" -T -vv  -c /etc/zabbix/zabbix_agentd.conf  -s iPilot-80 -z 10.10.136.83
  zabbix_sender [20644]: DEBUG: answer [{
  "response":"success",
  "info":"Processed 0 Failed 1 Total 1 Seconds spent 0.308953"}]
  Info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.308953"
  sent: 1; skipped: 0; total: 1
  把zabbix_server的config文件中的debuglevel改成debug,然后在日志中搜索online_users,可以看到有类似下面的日志:
  78276-  6460:20111212:220318.043 Trapper got [{
  78277-  “request”:”sender data”,
  78278-  “data”:[
  78279-          {
  78280-                  “host”:”iPilot-80″,
  78281:                  “key”:”onlines”,
  78282-                  “value”:”456″}]}] len 104
  78283-  6460:20111212:220318.043 In recv_agenthistory()
  78284-  6460:20111212:220318.043 In process_hist_data()
  78285-  6460:20111212:220318.043 In process_mass_data()
  78286-  6460:20111212:220318.043 In DCinit_nextchecks()
  78287-  6460:20111212:220318.043 In DCflush_nextchecks()
  78288-  6460:20111212:220318.043 End of process_mass_data()
  78289-  6460:20111212:220318.043 In zbx_send_response()
  78290-  6460:20111212:220318.043 zbx_send_response() ‘{
  78291-  “response”:”success”,
  78292-  “info”:”Processed 0 Failed 1 Total 1 Seconds spent -0.000000″}’
  78293-  6460:20111212:220318.043 End of zbx_send_response():SUCCEED
  78294-  6460:20111212:220318.043 End of recv_agenthistory()
  这里,我们可以清晰的看到函数执行时的调用顺序。
  ok,gdb出场了。
  首先,编译zabbix_server时,在Makefile中,把
  zabbix_server_CFLAGS = -DZABBIX_DAEMON
  改成
  # zabbix_server_CFLAGS =
  重新编译,启动编译后的zabbix_server;
  然后,使用gdb attach到zabbix_server上;
  当你使用ps aux时,你会发现有很多个(通常有20多个)zabbix_server进程在运行,怎么办?
  ok,修改zabbix server的配置文件,把Start开始的进程数配置都改成最小,其中,StartTrappers一定要改成1,我的配置文件修改后,如下:
  [root@redhat5 tmp]# cat /etc/zabbix/zabbix_server.conf | grep Start | grep -v ^#
  StartPollers=0
  StartIPMIPollers=0
  StartPollersUnreachable=0
  StartTrappers=1
  StartPingers=0
  StartDiscoverers=0
  StartHTTPPollers=0
  StartDBSyncers=1
  StartProxyPollers=0
  靠
  重启重新编译后的zabbix_server,用gdb ./zabbix_server来调试(假设当前目录的zabbix_server的编译目录)。
  ps aux | grep zabbix_server时,一般会有10个左右的zabbix_server进程,这时,一般第3个进程是trapper的进程,如何判断是不是trapper的进程?
  当你attch zabbix_server进程pid后,使用bt命令,显示出函数堆栈,trapper的如下:
  (gdb) bt
  #0  0xb7f2a410 in __kernel_vsyscall ()
  #1  0x005b88c1 in select () from /lib/libc.so.6
  #2  0x08093e2b in zbx_tcp_accept (s=0xbfd8b90c) at comms.c:971
  #3  0x08064eeb in main_trapper_loop (p=1 '\001', s=0xbfd8b90c) at trapper.c:437
  #4  0x08055d02 in MAIN_ZABBIX_ENTRY () at server.c:645
  #5  0x0808803b in daemon_start (allow_root=0) at daemon.c:252
  #6  0x080551a6 in main (argc=16, argv=0x0) at server.c:437
  (gdb)
  让
  根据上面zabbix server的日志,设置zabbix server的breakpoint:
  b process_hist_data
  b process_mass_data
  当一步一步跟踪下去之后,发现问题出在这个函数身上:
  zbx_tcp_check_security
  这个函数用来检查zabbix_sender端是否被允许发送数据。
  终于搞清楚了,zabbix-sender的文档仅仅说了zabbix_sender的用法,其中,在web界面上,配置zabbix_sender的item时,需要注意:
  1、类型一定要是zabbix_trap类型;
  2、allowed ip要填写zabbix_sender的ip地址,如果有多个,使用,分割;
  3、zabbix_sender命令中的-s参数hostname要和server的web界面上一致;
  注意了这几点,基本上就没问题了。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665035-1-1.html 上篇帖子: Zabbix2.4 升级到3.0 下篇帖子: Centos下搭建Zabbix监控系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表