Zabbix監視プラットフォームのドッキングmodbus tcpデバイス

バックグラウンド:

1.会社の計算機室には専用の温度監視装置がなく、従来はサーバーのCPUやマザーボードの温度をsnmp機能で取得し、計算機室のおおよその温度(温度計との差)を把握していました。値とサーバー値) が偏差値に従って計算されたため、高負荷タスクを実行すると、周囲温度の計算が非常に不正確になります

2.温度警報製品の完全なセットがインターネット上にありますが、それらは次の点で会社の要件を満たしていません。

2-1: 既存の製品のほとんどは電子メールまたは携帯電話の音声/SMS、WeChat によって警報されており、当社は統合警報のために内部プラットフォームに接続する必要があります。

2-2: インターネット上の機器の価格は 200 ~ 400 元がほとんどで、クラウド機能をサポートする機器はプラットフォーム料金を更新する必要があります (購入と払い戻しの承認が毎年必要で、内部プロセスが非常に面倒)

実装プロセス:

1.まずハードウェア機器を購入する必要があります。下図に示すように、ゲートウェイ + 温度センサーの費用は約 200 ~ 220 元です。

左側の写真は、485 または Modbus RTU プロトコルから Modbus TCP プロトコルへの変換を実現する Modbus TCP ゲートウェイです

右側の写真は、modbus rtuプロトコルをサポートし、485 経由でゲートウェイに接続し、その後 tcp プロトコルに変換する温湿度プローブです。

2.システムとソフトウェア:

· Linux システムに Zabbix-Server バージョン 5.2 以降をインストールします (modbus プロトコルは 5.2 からサポートされます)

· zabbix-agent2 (現時点では zabbix-agent2 バージョンのみが modbus をサポートしており、zabbix-agent のサポートは後で追加される可能性があります)

3.ここでロジックを整理します。そうしないと、構成中にエラーや質問が発生する可能性があります。

Zabbix-Server は ping、snmp、service.perf、port.perf などの監視対象ホストを直接監視できますが、Modbus データの取得は zabbix-agent2 を通じて実現されます。つまり、agent2 は制御された Modbus データを取得します。ホストに送信し、結果を Zabbix サーバーに送り返します。Modbus デバイス自体またはそのデバイスが配置されているネットワークにファイアウォール ポリシーがある場合、agent2 ホストへのアクセスを許可する必要があります (Zabbix のサーバーとエージェントは同じ Linux システムにインストールできます)。

4. Zabbix-Serverのデプロイ 公式サイトに非常に詳しいチュートリアルがあるのでここでは説明しませんが、公式サイトのコマンドでインストールされたデータベースは不完全なので、mariadbを手動でインストールする必要があります、という一文です。

公式サイトリンク:公式サイトインストールチュートリアル

5. zabbix-agent2 をインストールしますここで説明します: modbus は zabbix-agent2 のサポートを必要とし、デフォルトで v1 バージョンをインストールするには yum install zabbix-agent コマンドを使用し、Zabbix-Server には v1 バージョンのエージェント

·まず古いバージョンのエージェントを非アクティブ化またはアンインストールします (存在する場合)。centos7 を例として、systemctl stop zabbix-agent; yum autoremove zabbix-agent を実行して、非アクティブ化後にアンインストールします。

· zabbix-agent2 は部分的に go 言語で書かれているため、go 環境に依存しますが、ここではワンクリック インストール スクリプトを通じてデプロイします (Centos インストールに基づいており、debian の場合は事前に sudo をインストールする必要があります)。

 参考リンク:go環境のワンクリックインストール 

git clone https://gitee.com/xuthus5/golang-install-shell.git (エラーが報告された場合は、git をインストールする必要があります)
cd golang-install-shell
chmod +x install.sh
./install.sh

次のインストール インターフェイスが表示されたら、0 を選択して golang 環境をインストールし、デフォルトのパラメーターに従ってインストールします

----------------------------------
0) 安装golang环境
1) 安装gopm跨墙
2) 安装web框架
3) 安装包
4) 退出
----------------------------------
输入操作编号:0
----------------------------------
选择安装版本:
1) 1.11
2) 1.10.4
3) 1.9.7
4) 1.8.7
----------------------------------
输入安装版本编号(默认1):

~~~~~~~~~~~~~~~~~~~~~~省略很多软件安装的信息~~~~~~~~~~~~~~~~~~~~~~~

输入程序安装目录GOROOT(默认 /usr/local):
输入GOPATH目录(默认 /root/go):

 インストールが完了したら、4 を選択して終了します

go version go1.11 linux/amd64
环境变量配置成功!请执行 source /root/.bashrc 确保配置生效
----------------------------------
0) 安装golang环境
1) 安装gopm跨墙
2) 安装web框架
3) 安装包
4) 退出
----------------------------------
输入操作编号:4

· zabbix-agent2 をインストールします。

# 公式 Web サイトのソース
rpm を追加 -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm

# yum キャッシュをクリア
yum clean all 

# Agent2 をインストールします。インストール後にプログラムが自動的に実行され、ブート自己起動機能が自動的に設定されます。
yum install zabbix-agent2

インストールが成功したら、構成ファイルを編集します


# /etc/zabbix/zabbix_agent2.conf で構成ファイルを編集します

# 実際の環境に合わせて以下の項目を修正
Hostname=
Server=
ServerActive=

# 設定が完了したら、
agent2 を再起動します。 systemctl restart zabbix-agent2

Zabbix-Serverサーバーにzabbix-agent2がインストールされたホストを追加し、Modbus監視項目を追加します

Modbus監視アイテムの詳細紹介と公式サイトへのアクセスリンクはこちら:公式サイト紹介

パラメータ 説明 デフォルト
終点 エンドポイントのプロトコルとアドレス。次のように定義されます。 protocol://connection_string

可能なプロトコル値:  rtu、  ascii  (エージェント 2 のみ)、  tcp

接続文字列形式: tcp

の場合  - シリアル回線の 場合: rtu、  ascii  -  'speed' - 1200、9600 など'params' - データ ビット (5、6、7 または 8)、パリティ (なし/偶数/奇数を表す n、e または o)、ストップ ビット (1 または 2)address:port
port_name:speed:params


プロトコル: なし

rtu/ascii プロトコル:
ポート名: なし
速度: 115200
パラメータ: 8n1

tcp プロトコル:
アドレス: なし
ポート: 502
tcp://192.168.6.1:511
tcp://192.168.6.2
tcp://[::1]:511
tcp://::1
tcp://localhost:511
tcp://localhost
rtu:// COM1:9600:8n
ascii://COM2:1200:7o2
rtu://ttyS0:9600
ascii://ttyS1
スレーブID 対象となるデバイスの Modbus アドレス (1 ~ 247)。MODBUS メッセージング実装ガイド (23 ページ)を参照。

TCP デバイス (GW ではない) はフィールドを無視します。
シリアル: 1

TCP: 255 (0xFF)
2
関数 空またはサポートされている関数の値:

1 - コイルの読み取り、
2 - ディスクリート入力の読み取り、
3 - 保持レジスタの読み取り、
4 - 入力レジスタの読み取り
3
住所 最初のレジストリ、コイル、または入力のアドレス。

「関数」が空の場合、「アドレス」は次の範囲内にある必要があります。
コイル - 00001 ~ 09999
ディスクリート入力 - 10001 ~ 19999
入力レジスタ - 30001 ~ 39999
保持レジスタ - 40001 ~ 49999

「関数」が空でない場合、「 「アドレス」フィールドは 0 ~ 65535 であり、変更せずに使用されます (PDU)
空の関数: 00001

空でない関数: 0
9999
カウント デバイスから読み取られるシーケンスされた「タイプ」の数。ここで:

コイルまたはディスクリート入力の場合、「タイプ」 = 1 ビット、
その他の場合: (count*type)/2 = 読み取り用のレジスタの実数
。「offset」が0 ではない場合、値は「実数」に追加されます。
「実数」の許容範囲は 1:65535 です。
1 2
タイプ データ型:

読み取りコイルおよび読み取りディスクリート入力の場合 - 読み取り保持レジスタおよび読み取り入力レジスタのビット: int8  - 8 ビットuint8  - 8 ビット (符号なし) int16  - 16 ビットuint16  - 16 ビット (符号なし) int32 - 32 ビット uint32 -  32 ビット (符号なし) float  - 32 ビットuint64  - 64 ビット (符号なし) double  - 64 ビット










ビット
単位16
uint64
エンディアンネス Endianness type:
be - Big Endian
le - Little Endian
mbe - Mid-Big Endian
mle - Mid-Little Endian

Limitations:
for 1 bit - be
for 8 bits - be,le
for 16 bits - be,le
be le
offset Number of registers, starting from 'address', the result of which will be discarded.

The size of each register is 16bit (needed to support equipment that does not support random read access).
0 4

· 这是根据实际环境修改后的参照表:

说明 监控项
官方给出的监控项 modbus.get[endpoint,<slaveid>,<function>,<address>,<count>,<type>,<endianness>,<offset>]
对上述的解释 modbus.get[通讯协议及地址,设备地址,功能码,寄存器地址,读取个数,数据类型,字节序,抵消] 备注:最后的字节序、抵消没弄明白是啥意思
根据实际环境修改

modbus.get[tcp://192.168.1.202:502,1,3,512,1,int16,,]

TCP ポート 502 を使用して192.168.1.202 ゲートウェイにアクセスします

1はデバイスアドレスが1であることを示します

3 は保持レジスタを読み取る機能コードを表します。

512は 10 進数のレジスタアドレスで、16 進数の 02 00 を意味します。

1 は読み取り数です

· int16 はゲートウェイによって返されるデータ型を示します

·最後の <byte order> と <offset> は何をするのかわからないので、空白のままにしておきます。

注: 上記のパラメータには 10 進数を使用する必要があります

私が使用した温度センサーは実際の値の 10 倍を示すため、zabbix プロセスで 10 で割る必要があります (つまり、 0.1 を掛けます)。

監視項目を設定した後、新しい監視項目を使用するまでエージェントが1分程度待つ必要がありますが、お急ぎの場合は手動でsystemctl restart zabbix-agent2を実行し、agent2を強制的に再起動して新しい監視項目を取得してください。すぐに:

得られた温度値は次のとおりです。

デバッグ プロセス中に、Modbus ゲートウェイが応答しない場合、zabbix がゲートウェイ エラーを報告する場合など、デバッグ ツールをダウンロードし、マシンをゲートウェイ サーバーとして使用し、zabbix-agent2 がマシンにアクセスできるようにして、どこでエラーが発生したかを分析できます。受信した情報

ツールのダウンロード アドレス:デバッグ アシスタント

おすすめ

転載: blog.csdn.net/baishikele006/article/details/123145869