zoukankan      html  css  js  c++  java
  • zabbix 内网监控云服务器

    今天 搞监控碰到了一个问题就是。内网机器搭建的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:

    1 [root@node2 ~]# telnet 119.20.21.100 10050
    2 Trying 119.20.21.100...
    3 Connected to 119.20.21.100.
    4 Escape character is '^]'.
    5 Connection closed by foreign host.

    被监控云主机

    [root@zklf-cloud ~]# netstat -na |grep 10050
    tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN     
    tcp        0      0 192.168.0.209:10050     1.115.10.203:55899     TIME_WAIT  
    tcp        0      0 192.168.0.209:10050     1.115.10.203:55931     TIME_WAIT  
    tcp        0      0 192.168.0.209:10050     1.115.10.203:55923     TIME_WAIT  
    tcp        0      0 192.168.0.209:10050     1.115.10.203:55737     TIME_WAIT  
    tcp        0      0 192.168.0.209:10050     1.115.10.203:55725     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
    1
    [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.9

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

    再了解一下 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.25) 
        netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
        x25 (CCITT X.25) 
  • 相关阅读:
    Springmvc
    Mybatis关联关系
    Mybatis整合ehcache 和 redis
    Mybatis与spring集成
    MyBatis动态sql和分页
    MyBatis入门
    Vue模板语法(二)
    Vue模板语法(一)
    Spring---SSH整合(二)
    Spring---SSH整合
  • 原文地址:https://www.cnblogs.com/jiuyachun/p/11089604.html
Copyright © 2011-2022 走看看