今天 搞监控碰到了一个问题就是。内网机器搭建的zabbix服务器去监控云服务器agent的时候,agent 需要写服务端的IP地址。

我的思路是内网服务器映射自己公网IP地址的zabbix的端口10051 就好,但是测试的结构时报错:

当然我们要事先开启云服务器的安全组

# zabbix_get -s 119.20.21.100 -k system.hostname
zabbix_get [26066]: Check access restrictions in Zabbix agent configuration

解决措施

方法来自于某不知名哥们

https://blog.csdn.net/bacteriumx/article/details/81430867

在内网的zabbix-server 服务端 去telnet 云服务器的公网IP,再在云服务器的客户端查看10050端口被谁访问了,我们就能得到zabbix的公网IP:

 [root@node2 ~]# telnet 119.20.21.100
Trying 119.20.21.100...
Connected to 119.20.21.100.
Escape character is '^]'.
Connection closed by foreign host.

被监控云主机

[root@zklf-cloud ~]# netstat -na |grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 192.168.0.209: 1.115.10.203: TIME_WAIT
tcp 192.168.0.209: 1.115.10.203: TIME_WAIT
tcp 192.168.0.209: 1.115.10.203: TIME_WAIT
tcp 192.168.0.209: 1.115.10.203: TIME_WAIT
tcp 192.168.0.209: 1.115.10.203: TIME_WAIT

这个1.115.10.203 就是zabbix的服务端的IP地址。

修改云服务器的/etc/zabbix/zabbix.agent.conf 下的 Server 或者ServerActive地址为1.115.10.203 即可。

重启云服务我们在内网服务端做get测试发现全部可以:

[root@zklf-server02 ~]# zabbix_get -s 119.20.21.100 -k agent.ping

[root@zklf-server02 ~]# zabbix_get -s 119.20.21.100 -k system.hostname
zklf-cloud
[root@zklf-server02 ~]# zabbix_get -s 119.20.21.100 -k agent.version
4.0.

剩下的就不用再说了。这个操作让我这种小渣渣不能理解。

再了解一下 telnet 和 netstat 的详解

telnet原理:来自百度百科

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。
远程登录是指用户使用Telnet命令,使自己的计算机暂时成为远程主机的一个仿真终端的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显屏幕上。(xshell也是这个原理吧)
使用Telnet协议进行远程登录时需要满足以下条件:在本地计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。
 Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
 
Telnet交互(C/S架构交互过程)
当我们使用Telnet登录进入远程计算机系统时,事实上启动了两个程序:一个是Telnet客户程序,运行在本地主机上;另一个是Telnet服务器程序,它运行在要登录的远程计算机上。
本地主机上的Telnet客户程序主要完成以下功能:
  • 建立与远程服务器的TCP联接。
  • 从键盘上接收本地输入的字符。
  • 将输入的字符串变成标准格式并传送给远程服务器。
  • 从远程服务器接收输出的信息。
  • 将该信息显示在本地主机屏幕上。
远程主机的“服务”程序通常被昵称为“精灵”,它平时不声不响地守候在远程主机上,一接到本地主机的请求,就会立马活跃起来,并完成以下功能:
  • 通知本地主机,远程主机已经准备好了。
  • 等候本地主机输入命令。
  • 对本地主机的命令作出反应(如显示目录内容,或执行某个程序等)。
  • 把执行命令的结果送回本地计算机显示。
  • 重新等候本地主机的命令。

netstat 命令

https://www.cnblogs.com/ftl1012/p/netstat.html  这个地址写的有些东西可以参考

[root@zklf-cloud ~]# netstat -h
usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay] -r, --route display routing table                 显示路由表
-I, --interfaces=<Iface> display interface table for <Iface>        显示网卡接口表
-i, --interfaces display interface table
-g, --groups display multicast group memberships        显示多播组成员身份
-s, --statistics display networking statistics (like SNMP)     显示网络统计信息(ip,icmp,tcp,udp 等)
-M, --masquerade display masqueraded connections           显示伪装链接 -v, --verbose be verbose                       详细显示 
-W, --wide don't truncate IP addresses             不截断显示
-n, --numeric don't resolve names                  不解析地址名称 (显示IP地址信息)  
--numeric-hosts don't resolve host names               不解析主机名称 
--numeric-ports don't resolve port names            
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names                解析硬件名称         
-e, --extend display other/more information           显示其他更多的信息
-p, --programs display PID/Program name for sockets       显示套接字的PID/程序名
-o, --timers display timers                     显示计时器
-c, --continuous continuous listing                   不间断的 加数字每几秒刷新 -l, --listening display listening server sockets          显示监听服务套接字
-a, --all display all sockets (default: connected)      显示所有套接字
-F, --fib display Forwarding Information Base (default)   显示转发信息库(默认)
-C, --cache display routing cache instead of FIB        显示路由缓存而不是FIB
-Z, --context display SELinux security context for sockets   显示套接字的SELinux安全上下文 <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}        套接字
{-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet               ipv6 或者 ipv4协议 
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.)

zabbix 内网监控云服务器的更多相关文章

  1. 外网访问内网的FTP服务器

    转自 外网访问内网的FTP服务器 首先感谢作者给出的总结,原文是介绍Serv-U的,我针对FileZilla Server进行了稍微修改,仅看操作可直接跳到分割线后第3部分. 1. 背景简介最近研究如 ...

  2. 内网架设SVN服务器相关设置

    环境说明:        外网IP为静态IP,工作室内有多台电脑,公用一台路由器.想要在某台电脑上架设SVN服务器,方便团队开. 解决方案: 一.准备工作1.获取 Subversion 服务器程序到官 ...

  3. ssh 如何通过外网访问内网多台服务器

    本帖子未验证: 我看到一个论坛,坛友发的一个问题 http://bbs.51cto.com/thread-934340-1.html 解决方法,我自己开了这个帖子写在这里. 首先你需要一个软件“Sec ...

  4. 外网访问内网的FTP服务器-原理解析

    1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...

  5. 使用万网+阿里云服务器(Apache)配置二级域名

    1. 在万网域名解析中添加二级域名解析配置    在下面的主机记录(RR)的栏位添加二级域名名称后点确定按钮即可.     注:需要等一段时间才能生效,请留意万网域名解析列表的生效状态栏位. 2. 在 ...

  6. Serv-u 外网访问内网的FTP服务器

    1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...

  7. Zabbix通过SNMPv2监控DELL服务器的硬件信息

    (一)zabbix监控DELL服务器 (1)简述:监控DELL服务器硬件一般有两种途径:1.操作系统上安装OMSA,编写脚本调用omreport命令进行监控(需要在操作系统上安装比较麻烦):2.使用i ...

  8. 请问 内网的 dns服务器 为什么和 外网的dns服务器 一样??

    公司内的内网使用192.169.X.X的内网地址,但是在DNS段填写的是210.34.X.X,显然这是一个公网固定IP,我不明白的是:为什么内部网客户端使用的DNS服务器是公网上的IP呢?内网客户端能 ...

  9. linux运维、架构之路-内网NTP时间服务器

    一.环境 [root@m01 tmp]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@m01 tmp]# hostname -I ...

随机推荐

  1. luogu P5342 [TJOI2019]甲苯先生的线段树

    传送门 你个好好的省选怎么可以出CF原题啊,你们这个题害人不浅啊,这样子出题像极了cxk,说到cxk,我又想起了他是NBA形象大使,跟我是西游文化大使一样一样的,今年下半年... 别说了,jinsai ...

  2. Git 生成.gitinore忽略文件

    Git  生成.gitinore忽略文件 CD到指定目录下: touch .gitinore .gitinore忽略文件 三种方法: # 以'#'开始的行,被视为注释.(#是注释的意思) # 忽略掉所 ...

  3. MySQL数据库数据类型以及INT(M)的含义

    nt(M)我们先来拆分,int是代表整型数据那么中间的M应该是代表多少位了,后来查mysql手册也得知了我的理解是正确的,下面我来举例说明.   MySQL 数据类型中的 integer types ...

  4. MapReduce计数程序(自主复习)

    1.MyWordCount类 注意: 1.本机+测试,两个注释都放开 2.本机跑集群,要开异构平台为true 3.集群跑,把两个注释都注起来,然后在集群上面跑 package com.littlepa ...

  5. SCC统计

    Kosoraju SCC总数及记录SCC所需要的最少边情况 #include<cstdio> ; ; ][N], nxt[][N], v[][N], ed, q[N], t, vis[N] ...

  6. Mysql定时器定时删除表数据

    由于测试环境有张日志表没定时2分钟程序就狂插数据,导致不到1一个月时间,这张日志表就占用了6.7G的空间,但是日志刷新较快,有些日志就没什么作用,就写了个定时器,定期删除这张表的数据 首先先查看mys ...

  7. 循环结构——for语句、seq语句、while语句、break语句

    1.for语句: 运行结果: 2.seq命令生成整数序列: 3.while语句: 执行结果: 4.break语句: break语句是正常结束之前退出当前循环. 执行结果: 5.continue语句: ...

  8. 判断一个对象是否为空? js

    其实开发过程中常常会遇到判断对象和数组是否为空?下面介绍3种判断对象是否为空 1. 最常见的思路,for...in...遍历属性,为真则为“非空数组”:否则为“空数组” function judgeO ...

  9. CentOS源码编译安装MySQL 5.5.15

    CentOS源码编译安装MySQL 5.5.15   文章目录 [隐藏] 安装编译工具 下载源码 安装cmake和bison 编译安装MySQL 一些相关设置 安装编译工具 yum install g ...

  10. 关于react中context的使用

    context是用于组件间数据的传递,就是减少props的使用 具体使用也很简单 第一步设置默认值,第二部用provider发放,第三步使用contextType来接受最近的provider,然后直接 ...