No announcement yet.

Monitoring Industrial Automation

  • Filter
  • Time
  • Show
Clear All
new posts

    Monitoring Industrial Automation

    Has anyone else attempted to use Zabbix for monitoring outside the typical business computer network arena?
    I am an industrial controls engineer, as well as a network manager for my employer. I recently discovered a tool called OpenOPC.
    This tool, in conjunction with a Zabbix Agent installed on an OPC server pc, allows Zabbix to function as a high-level SCADA system in an industrial automation control system.
    If anyone else is interested, I will post the details of my experience with this arrangement. I am still experimenting with the configuration, but it seems to work well, and holds great promise.



    Can you explain more detailed what this can do for us?

    Will that e.g allow me to read from a PLC S7 or PCL from an another supplier values into zabbix?

    If yes, which PLC's your are using?



      Dear Ross,

      We didn't got to the scale that you have BUT we used Zabbix to monitor something else then networks.

      I'm sure that you are familiar with this post: A hardware ZABBIX Agent made with PIC18F67J60 microcontroller and this post: Hardware Zabbix Agent with GSM module

      We used this agents to monitor things like mushroom growing green house and heating systems plant.

      I'm looking forward to see the progress you make with your system.



        As I stated before, I am still in the experimental stages. However, I am successfully able to extract values from an Allen-Bradley PLC via the RSLinx OPC Server. I am sure that Siemens S7, or any PLC with an available OPC server, would work just as well. In fact, I have an S7-400 system in another part of the plant, which will be my next attempt at monitoring with Zabbix.

        I have also started using "spoken" alerts as described here :

        They arrive at my desk much quicker than email, in most cases. Very useful for monitoring the factory automation, where I want to know immediately if the production line has stopped.

        I have also considered using the hardware Zabbix agent, but have not yet gone to the trouble of attempting to obtain a unit for experimentation.
        I'll post more as my experiments continue.

        Last edited by rxm8028; 08-03-2009, 23:04. Reason: Added information


          Dear Ross,

          Yes, you could use the hardware agent to gather data that would not be available via the PLC sensors but I drought it. PLCs are very versatile and modular, maybe the sensors are more expensive but in the end you get a compact unitary system.

          Maybe you'll be interested in this too: plugin zabbix for firefox (new version 1.1) it works great. Go to the last page to get the latest version.



            Industrial Automation Monitor HOWTO

            HOWTO: Industrial Automation Monitoring with Zabbix (tm)

            This project began as a way to generate email alerts to warn managers when a particular section of the production process was experiencing difficulty. Zabbix is great at managing trigger-based alerts of various kinds, so it seemed a logical choice for the backbone of the system. However, Zabbix is designed to monitor computer networks, not machine controllers, so a means of communication between the two was necessary. Fortunately, to products were found that fit the bill nicely.
            OpenOPC ( is an Open Source project that provides a OLE for Process Control toolkit in the Python programming language. More important to this discussion, it provides a pre-compiled Win32 executable that allows the user to access a running OPC server from the command line. This executable (opc.exe) works out of the box with several commercial OPC servers. For others, a second utility is required.
            Graybox Software ( offers a free OPC “wrapper” dll for Windows, which povides a standard communication interface for otherwise proprietary OPC servers. This allows OpenOPC's command-line utility to communicate with these OPC servers correctly.
            In my experience, this combination of tools allows one to retrieve (or write as needed) data from the Industrial Control Systems via the RSLinx OPC server from Rockwell Automation, the SimaticNET OPC server from Siemens, and the ibaPDA OPC server from ibaAG.

            The environment used to develop this application is as follows:
            ZABBIX SERVER: Ubuntu 8.04 Server edition (32-bit) on SMP i686 hardware, 1 Gigabyte of RAM installed. Currently a single NIC and single SATA disk handle the load, but improvements are planned. Current performance on specified hardware:

            Parameter Value Details
            ZABBIX server is running Yes -
            Number of hosts (monitored/not monitored/templates) 218 156/47/15
            Number of items (monitored/disabled/not supported) 2580 1246 / 966 / 368
            Number of triggers (enabled/disabled)[true/unknown/false] 443 416 / 27**[23 / 45 / 348]
            Number of users (online) 7 1
            Required server performance, new values per second 21.9902

            Zabbix Server version 1.6.2 , Zabbix Agent version(s) 1.4.4 & 1.6.2

            OPC Servers: Vary by equipment manufacturer. Currently using RSLinx from Rockwell Software, SimaticNET from Siemens and ibaPdaOPC from iba AG.


            OPC SERVER: You will require some sort of OPC server in order to connect into the machine control systems. This component is typically provided by the OEM of the controls. Most HMI (Human-Machine Interface) terminals and many programming terminals will include an OPC server of some sort. Configuration of the OPC server is beyond the scope of this HOWTO. Please read the manufacturer's instructions.

            OpenOPC: In the configuration described here, only the command-line tool “opc.exe” is used. However, the OpenOPC toolkit may be installed as desired.

            Graybox OPC Wrapper: In some cases it is necessary to install the Graybox OPC Automation Wrapper DLL, “gbda_aut.dll”, on the same Windows PC that runs the OPC server. This dll allows certain non-standard OPC servers to be accessed by the opc.exe command-line tool from OpenOPC.

            Microsoft C Runtime Library: In some cases, the Windows PC that runs the OPC server may not have the “msvcr71.dll” installed. It has been found on most Windows XP machines in my location, but typically not on Windows 200x servers. If necessary you can copy it from one machine to another (into the %SystemRoot%\system32 folder), and install in by executing the command “regsvr32 msvcr71.dll”.


            In this example, we will walk through the configuration necessary to alert managers when the plant is down. In order to accomplish this, we need several things to be prepared:

            Zabbix Agent / OPC Server computer:
            1.The machine controls must produce some signal to indicate a stoppage of production. Creation of this signal is outside the scope of this HOWTO.
            2.An OPC Server must be available and configured to read the “production stoppage” signal from the machine controls and provide the data to OPC clients.
            3.The opc.exe command-line tool is copied somewhere in the PATH on the Windows PC running the OPC server. The Windows\system32 folder is suggested.
            4.If needed, the Windows libraries 'msvcr71.dll' and 'gbda_aut.dll' should be copied to the Windows\system32 folder of the OPC Server PC, and registered using the regsvr32 utility.
            5.The Zabbix Agent should be installed on the OPC server computer. Be certain that in the zabbix_agentd.conf file, the HOST entry is identical to the HOST name for the PC as configured at the Zabbix Server. Also make certain that Active Checks are enabled.
            6.Include a UserParameter in the zabbix_agentd.conf file similar to the one below. Some experimentation may be required in formatting the $1 and $2 strings, depending on the syntax needed by your particular OPC server. This example is for RSLinx, which encloses the OPC 'Group' name in brackets, followed by the 'Item' name.
            1.UserParameter=OPC[*],opc.exe -r [$1]$2 -o values

            Zabbix Server:

            1.Configure the host to be monitored. Verify that the HOST name in Zabbix (not the DNS name) is identical to the HOST entry in the zabbix_agentd.conf file.
            2.Add an item to the host. Enter the fieled data as follows:
            1.The Description field can be anything you like.
            2.The Type field should be ZABBIX Agent (active). More on this later.
            3.The Key field should match the UserParameter created in the zabbix_agentd.conf file. In our example, the Key name was OPC, and it required 2 parameters. Therefore, an example Key name would be 'OPC[cnet,N103:60]'. This calls the OPC UserParameter, and passes a 'Group' name of 'cnet', and and 'Item' name of 'N103:60'. Keep in mind that this format is valid for RSLinx, and may vary with other OPC servers. Also remember that the Group and Item must be configured in the OPC server before the values can be extracted. Configuring the OPC server is outside the scope of this HOWTO.
            4.The Type of information field should be chosen to match the data expected from the OPC server. This will typically be a Numeric(integer 64bit) or Numeric(float).
            5.The Units field can be seat as you deem appropriate.
            6.The Use multiplier field can also be set as you deem appropriate.
            7.The Update interval may be set as you deem appropriate. However, extremely short intervals may tax the Zabbix server into poor performance if Active Checks are not used. More on this later.
            8.The remaining fields may be set however you feel is appropriate for you application
            9.After the Item is configured in Zabbix, Triggers and Actions may be set ups as for any other monitored item. Please refer to the Zabbix documentation, as these items fall outside the scope of this HOWTO.

            The need for near real-time alerts for machine controls will vary from application to application. For the instance described here, Zabbix is used as a high-level alert system, aimed at upper-level management, rather than machine operators. Therefore, some consideration must be given to the items to be monitored and the frequency of checks. It is recommended that for anything less than a 30 second update interval, Active Checks be implemented. That way, the Zabbix Agent can check and store the Item value as frequently as you like, and dump the data to the Server at the configured interval (2 minutes by default). This makes for very nice graphs of analog values, but limits the response of triggers. For me, two minutes is perfectly adequate. Your mileage may vary.




                Hi Guys,

                Is anyone using Zabbix to collect data on OPC server?
                Would you help me?



                  Hi Guys,

                  Is anyone using Zabbix to collect data on OPC server?
                  Would you help me?