Ad Widget

Collapse

zabbix agent protocol

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • limo
    Senior Member
    • Dec 2004
    • 192

    #1

    zabbix agent protocol

    Hi Alex,

    are you thinking about some changes in zabbix_agent protocol ?
    If so, I would have some suggestions here..

    it would be great to
    - get more values in one request
    - put some ssl inside
    - make fetching triggered (one item depends on another)
    - global user parameters distribution over many hosts from server

    Some of this is possible in this version by "small" hacks

    - is it possible to have preexec and postexec command for fetching values from host ? Before fetching first value, run preexec, after fetching last run postexec. If it is configurable, user can monitor hosts which are not accessible in normal way and opens "tunel" to them only when needed.

    - is it possible to implement exec command for item ? So instead of fetching it by normal way, run external command and get value. Like
    getitem zabbix_internal icmpping
    I know it is very slow and ineffective but can be used in some situations for debugging or encapsulating query into another protocol.

    I will explain in example
    I have some host which is accessible only across ssh. In preexec, I will run ssh, make tunnel, get items and then in postexec disconnect tunnel.

    This could be good workaround for encapsulating protocol into smaller number of packets and make it secure.

    Thanx !
  • Alexei
    Founder, CEO
    Zabbix Certified Trainer
    Zabbix Certified SpecialistZabbix Certified Professional
    • Sep 2004
    • 5654

    #2
    Originally posted by limo

    are you thinking about some changes in zabbix_agent protocol ?
    If so, I would have some suggestions here..

    it would be great to
    - get more values in one request
    Why? Without ZABBIX server support it makes no sense. Also, I do not see easy way of handling timeouts provided both server and agent support multi-value requests.
    Originally posted by limo
    - put some ssl inside
    I'll implement it at some point. Not sure about SSL, maybe something more light and simple.
    Originally posted by limo
    - make fetching triggered (one item depends on another)
    I don't understand it. Please, give me an example.
    Originally posted by limo
    - global user parameters distribution over many hosts from server
    This also will be implemented ay some point. Ideally I'd like to see ZABBIX users able to perform all configuration tasks (including configuration of UserParameters) using WEB interface only.
    Originally posted by limo
    Some of this is possible in this version by "small" hacks

    - is it possible to have preexec and postexec command for fetching values from host ? Before fetching first value, run preexec, after fetching last run postexec. If it is configurable, user can monitor hosts which are not accessible in normal way and opens "tunel" to them only when needed.

    - is it possible to implement exec command for item ? So instead of fetching it by normal way, run external command and get value. Like
    getitem zabbix_internal icmpping
    I know it is very slow and ineffective but can be used in some situations for debugging or encapsulating query into another protocol.
    Why don't you define a UserParameter which would do pre-exec, retrieve something, post-exec? This is quite exceptional situation, and I don't really interested in putting functionality which will be rarely used. It's not only about development. It's also about simplicity and maintenance cost.

    Thanks for the suggestions!
    Alexei Vladishev
    Creator of Zabbix, Product manager
    New York | Tokyo | Riga
    My Twitter

    Comment

    • limo
      Senior Member
      • Dec 2004
      • 192

      #3
      Explanation

      ad a)
      you are probably right

      ad b)
      SSL not needed. It is very complex. But fetching of some values acros internet can be security problem. Simple checks are ok, because if we are monitoring some service, we automaticaly advertise them. But some user parameters can be dangerous

      ad c)
      imagine I want to fetch number of bytes and number of packets going through some iptables rule. And I have more (maybe hundreds) items to fetch in this host. It is not effective to do iptables ... | grep rule | cut ...
      better to do it one time and then read results from file.
      One of item could be "trigger" or something like this. This will run some script which will parse all rules and returns first rule. Next items will read from files.
      Maybe it is bad solution for this situation, but it would be nice to connect zabbix_agent and zabbix_sender in time. Cron is not so accurate , it can run script in another time than zabbix will fetch something..

      I know it is possible to do by zabbix_sender and cron. But it is better for me to have control over it by web interface and if I put it into cron, it is ineffective for more hosts if I want to change interval or something.

      ad d)
      GREAT

      ad e)
      Imagine you have zabix_server on some public host and zabbix_agents and monitored hosts somewhere inside local network which is not accessible directly by zabbix_server. And security is important for me, I don't want let somebody see my monitored items. Solution is to make tunnel by ssh and do entire monitoring over this tunnel. Yes, I can do it by hand , run tunnel before zabbix_server but if I want to change tunnel type or something, it is not in db.

      Comment

      • sauron
        Senior Member
        • Jan 2005
        • 215

        #4
        Hmm... Why zabbix need additional agent ? Attach zabbix_agent as smux client on snmp daemon not right way ?

        If zabbix_agent attached on snmp daemon:

        1. Security (with SNMPv3, zabbix_suckerd support this (v1.1.4alpha)).
        2. SNMP standart protocol.
        3. SNMP protocol can be used for configuring zabbix_agent

        Comment

        • limo
          Senior Member
          • Dec 2004
          • 192

          #5
          Good idea

          Good idea to use SNMP protocol. Why do not use standards ?

          Comment

          • bitsci
            Junior Member
            • Feb 2005
            • 1

            #6
            multiple values in single user parameter

            Being a newbie, I am certain how this applies, but...

            There are existing monitoring tools that report multiple values for many hosts. Having a mechanism to integrate the data gathered by these tools into Zabbix would be a nice bonus. Let me offer a more concrete example:

            Cluster building middleware, like LSF or PBS, can report several built-in as well as several site specific "resources" to the master node. From there a single agent can gather all of the results for the entire cluster and aggregate it into Zabbix.

            Here's output from LSF (all gathered from a single command run on the head node of the cluster):
            HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem
            amd03.lsf.platf ok 0.0 0.1 0.0 1% 24.2 7 4 539M 1888M 676M
            amd02.lsf.platf ok 0.2 0.2 0.0 4% 13.1 3 0 4941M 1984M 828M

            It might be nice to report this as follows:
            {3 {HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem} {amd03.lsf.platf ok 0.0 0.1 0.0 1% 24.2 7 4 539M 1888M 676M} {amd02.lsf.platf ok 0.2 0.2 0.0 4% 13.1 3 0 4941M 1984M 828M}}

            This would be an easy integration to do if Zabbix allowed such thing (maybe it already does and I missed something).

            Comment

            • limo
              Senior Member
              • Dec 2004
              • 192

              #7
              external command for getting value

              Maybe all this things could be implemented relatively easy by using external software. I know it can be inefficient to run external software for geting all values but it is up to user.

              Maybe there could be another type of item (get_value_external) which could run external command with parameters and that program could return value on stdout. (and if there is error, it could write to stderr).

              Than somebody can write proxy for any type of agent. And it is not part of zabbix so it can be developed "out-of-box".

              maybe command like:
              zabbix_get_item server port item

              What are you thinking about Alex ?
              thank you !

              Comment

              Working...