一. 项目背景

监控异地局域网主机(主机内有物联5G卡 可以单方面向特定的云服务器传输信息)这里采用 zabbix 5xx系列 agent2 -6.2 版本 主动模式,即客户端向服务端注册。
 

二. 部署服务端

2.1 安装docker

#01 安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start #02 设置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://9akof579.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
 
  1. 安装docker-compose
  #01 下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose #02 给docker-compose目录授权 s
udo chmod +x /usr/local/bin/docker-compose #03 查看一下version 显示有版本号那就说明安装成功了
docker-compose version
  1. 部署服务


#01 创建数据目录
mkdir -p /opt/zabbix
cd /opt/zabbix/ #02 docker-compose 文件
[root@centos7 zabbix]# cat docker-compose.yml
version: '3' services:
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
restart: always
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=123qwe
- ZBX_SERVER_HOST=zabbix-server-mysql
ports:
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime
- /opt/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
networks:
- zbx_net
depends_on:
- zabbix-server-mysql
- zabbix-mysql
zabbix-mysql:
image: mysql:8.0.23
restart: always
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=123qwe
command:
- mysqld
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_bin
volumes:
- /etc/localtime:/etc/localtime
- /opt/zabbix/db:/var/lib/mysql
networks:
- zbx_net
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-5.2-latest
restart: always
volumes:
- /etc/localtime:/etc/localtime
networks:
- zbx_net
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-5.2-latest
restart: always
volumes:
- zabbix-server-vol:/etc/zabbix
- /opt/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /etc/localtime:/etc/localtime
ports:
- 10051:10051
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=123qwe
- ZBX_JAVAGATEWAY=zabbix-java-gateway
- ZBX_JAVAGATEWAY_ENABLE=true
- ZBX_JAVAGATEWAYPORT=10052
depends_on:
- zabbix-mysql
networks:
- zbx_net
zabbix-agent:
image: zabbix/zabbix-agent:centos-5.2-latest
restart: always
ports:
- 10050:10050
environment:
- ZBX_HOSTNAME=Zabbix server
- ZBX_SERVER_HOST=zabbix-server-mysql
- ZBX_SERVER_PORT=10051
networks:
- zbx_net networks:
zbx_net:
driver: bridge volumes:
zabbix-server-vol: #03 创建目录
mkdir alertscripts db fonts #04 安装中文语言包
cd fonts
wget https://dl.cactifans.com/zabbix_docker/msty.ttf
mv msty.ttf DejaVuSans.ttf #05 启动服务
docker-compose up -d

3.启动检查

  1. 浏览器访问 主机IP+8080端口 默认账户密码:Admin zabbix
  2. 系统语言汉化(图一)
  3. 我们要修改一下配置,将ip更换为容器名称,不然会检测不到(图二,删除IP 换成 dns名称加端口)

 
 

4.自动发现

 

三. 客户端配置

3.1 安装agent2

## 监控客户端服务器
1) 安装服务 并修改配置文件
yum install -y zabbix-agent2
# 由于网络原因 这里选择wget安装
wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.13-1.el7.x86_64.rpm
yum localinstall -y zabbix-agent2-5.0.13-1.el7.x86_64.rpm 2) 修改systemctl管理的单元文件
# 修改agent2配置文件,修改如下,填写zabbix-server主机ip和主机名
[root@centos7 zabbix]# egrep -v '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.5.249 # 服务端ip
ServerActive=192.168.5.249 # 服务端ip
Hostname=
HostnameItem=system.hostname # 客户端主机名
HostMetadataItem=system.uname # 客户端系统信息
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.soc 3)重启服务
[root@db01 ~]$ systemctl restart zabbix-agent2.service 4)服务端去验证
zabbix_get -s 10.0.0.7 -p 10050 -k 'agent.ping'

3.2 页面验证

 
 
监控 nginx 11种状态
 
#  tcp的11种状态每种状态的数量 

1) 需要的命令
root@web01 ~]# netstat -tna
[root@web01 ~]# netstat -tna | awk '{print $NF}' | sort | uniq -c | sort -rn | awk 'BEGIN{print "TCP状态 \t","连接数量"} {print $2"\t",$1} ' |column -t
TCP状态 连接数量
LISTEN 11
TIME_WAIT 10
SYN_SENT 1
State 1
ESTABLISHED 1
established) 1
 

四. MQQT 协议收集消息


##注意
MQQT服务器为中转服务器,即客户端和服务端都订阅该服务器
1)zabbix服务端
2)zabbix客户端
3)mqqt服务器 #01 安装MQTT服务器(mosquitto)
1) 安装编译环境
yum install gcc-c++ cmake openssl-devel -y 2)下载mosquitto
wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz 3)解压 编译 安装
echo "解压"
tar -zxvf mosquitto-1.6.8.tar.gz
echo "进入mosquitto-1.6.8"cd mosquitto-1.6.8
echo "编译"
make
echo "安装"
sudo make install 4)修改链接路径,重新加载动态链接库
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig 5)创建配置文件 和用户 用户组
cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto -s /sbin/nologin 6) 启动、查看、关闭程序
echo "运行程序"
mosquitto -c /etc/mosquitto/mosquitto.conf -d
echo "ps查看"
ps -aux | grep mosquitto
echo "关闭程序"kill -9 $(pidof mosquitto) 7)本地简单测试
# 打开一个订阅者
mosquitto_sub -t topic # 打开一个发布者
mosquitto_pub -t topic -m "发布内容" https://zhuanlan.zhihu.com/p/164930347
  • Python 实现订阅和发布

##订阅
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc):
print("Connected with result code: " + str(rc)) def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload)) client = mqtt.Client()
#设置用户名和密码
# client.username_pw_set("mosquitto", "mosquitto")
client.on_connect = on_connect
client.on_message = on_message
#client.on_disconnect = on_disconnect
#连接 IP port keepalive
client.connect('101.200.170.7', 1833, 600)
#订阅的 topic
client.subscribe('test', qos=0)
client.loop_forever() ###发布
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc):
print("Connected with result code: " + str(rc)) def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload)) client = mqtt.Client()
#设置用户名和密码
#client.username_pw_set("mosquitto", "mosquitto")
client.on_connect = on_connect
client.on_message = on_message
#连接 IP port keepalive
client.connect('101.200.170.7', 1833, 600)
#发布 topic 内容
client.publish('test', payload='111ing', qos=0)
 
  • 添加监控项

#01 监控项参数 mqtt.get["tcp://192.168.5.249:1833","test"] mqqt服务器地址和端口:"tcp://192.168.5.249:1833"
topic 名称:test (自定义 需要先创建订阅) 例如:mosquitto_sub -t topic

 
  • 图示

 
 
 
 
 

Zabbix MQQT协议监控 loT设备的更多相关文章

  1. zabbix snmp 协议监控 dell iRDAC

    转摘:http://blog.csdn.net/wanglei_storage/article/details/52789921 http://blog.csdn.net/wanglei_storag ...

  2. 技巧:结合Zabbix与SNMP监控嵌入式设备

    在如何利用Zabbix监控网络设备三篇文章的前两篇中,我们介绍了如何通过Zabbix代理监控网络设备.但有些设备无法安装Zabbix代理,需要采用其他方法监控.需要考虑无法安装软件的嵌入式设备或应用程 ...

  3. 在ZABBIX平台上通过SNMP协议监控网络设备

    在ZABBIX平台上通过SNMP协议监控网络设备 方法一:自动发现监控项 ZABBIX自带模板Template SNMP Interfaces中有"自动发现规则"这一选项,在主机选 ...

  4. zabbix基于SNMP 协议监控路由器

    zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能訪问到 3. 用snmpwalk測试 4. 加入zabbix主机,SNMP interfac ...

  5. 转:ZABBIX监控H3C设备的CPU和内存使用率

      由于最近监控的H3C路由器经常出现死机现象,SNMP获取不到数据,后面检查发现是CPU使用率过高,直接导致无法处理SNMP请求,所以需求来了,怎样通过SNMP监控H3C路由器的CPU和内存使用率? ...

  6. 自学Zabbix11.1 Zabbix 配置SNMP监控

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.1 Zabbix 配置SNMP监控 1. 概述 zabbix采集数据方式: ...

  7. zabbix 配置SNMP监控

    什么是SNMP? 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组 ...

  8. 【Zabbix】分布式监控系统Zabbix【一】

    一.Zabbix功能及特性简介 Zabbix可以获取cpu,内存,网卡,磁盘,日志等信息 1.Zabbix数据收集方式: a.Agent客户端(Agent客户端支持多平台部署) b.如果是无法安装客户 ...

  9. Zabbix企业级开源监控解决方案

    Zabbix企业级开源监控解决方案 目录 Zabbix企业级开源监控解决方案 一.Zabbix 1. 监控系统的必要性 2. 监控软件的作用 3. Zabbix的定义 4. Zabbix的监控原理 5 ...

  10. zabbix之1监控概念

    1.通过通用的snmp监控,无需代理端 2.通过snmp代理 snmp代理的工作原理:在被监控端设置代理,代理不断的获取本地数据,而管理端定期通过代理获取监控数据. snmp目前有v1,v2,v3三种 ...

随机推荐

  1. jetbrains 系列 terminal history 设置

    之前的版本中 jetbrains 的 terminal 使用的是 ~/.zsh_history, 改版后使用的不是一个 history, 就会出现在 iterm2 中使用的 command, 在 py ...

  2. React的组件通信与状态管理

    目录 1. 组件通讯-概念 1.组件的特点 2.知道组件通讯意义 总结: 2. 组件通讯-props 基本使用 1.传递数据和接收数据的过程 2.函数组件使用 props 3.类组件使用 props ...

  3. P9247 [集训队互测 2018] 完美的队列题解

    题目链接:[集训队互测 2018] 完美的队列 神仙数据结构题,看了很多题解才搞懂.在做此题之前,最好对分块很熟悉,对各类标记非常熟练.考虑题意说的种类是相对于全局的.我们可以考虑局部影响对全局影响. ...

  4. spring声明式事务(@Transactional)开发常犯的几个错误及解决办法

    spring声明式事务(@Transactional)开发常犯的几个错误及解决办法 目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其 ...

  5. 如何使用MBP制作Win启动盘

    最近有一个需求,想给家人的一台笔记本安装一套win 10的操作系统,但是我手头上现在没有对应的启动U盘. 由于工作原因,很多年没用win了,工作电脑也都是MBP,根本没有之前使用win时熟悉的Ultr ...

  6. BoolToStr、TBooleanHelper、Boolean 转 字符串

    方法1:直接使用 BoolToStr procedure TForm3.btn1Click(Sender: TObject); var a, b: Boolean; begin a := True; ...

  7. Java连接MySQL8.0样例代码

    代码功能: 针对MySQL8.0,可以动态传入数据库连接信息(IP.端口.数据库.用户.密码).以及需要执行查询SQL. 注意:由于代码中打印表中的数据,所以最后在Main方法传入的参数是需要是查询的 ...

  8. 解决邮件客户端QQ Mail及Thunderbird无法登入Outlook的问题

    最近无论是安卓手机的邮件客户端, 或者是 Ubuntu 下的 Thunderbird 都无法登入 Outlook 账号, 原因是需要开启双因素验证. 这个在 Outlook 界面上是不能直接设置的, ...

  9. fold命令

    fold命令 fold命令用于限制文件列宽,其会从指定的文件里读取内容,将超过限定列宽的列加入增列字符后,输出到标准输出设备.若不指定任何文件名称,或是所给予的文件名为-,则fold命令会从标准输入设 ...

  10. 微信小程序获取本日、本周、本月、本年时间段

    原文链接 https://cslaoxu.vip/110.html 说明 最近需要用到统计不同时间段内的记录数,所以找了一下现成的工具类.下面就演示一下如何引用到实际项目中. 详细用法请参考:http ...