zabbix监测系统
安装
使用docker安装/运行方式(建议使用此方式)
离线安装包: smb://192.168.9.1/公共模块/繁星/繁星二代/自检系统/(zabbix_agent_proxy_tx1、zabbix_docker)
有docker离线包zabbix_docker,拷贝到有docker的主机上,加载镜像:
docker load < postgres9.6.docker.images
# 屏幕会返回镜像的id,假设是:id-1
# 给镜像命名
docker tag id-1 postgres:9.6
# 下面两个镜像不需要命名,如果load后运行docker images 发现名字和版本都是none,则手动命名
docker load < zabbix-server-pgsql.docker.images
# docker tag id-2 zabbix/zabbix-server-pgsql:ubuntu-3.4.13
docker load < zabbix-web-nginx-pgsql.docker.images
# docker tag id-3 zabbix/zabbix-web-nginx-pgsql:ubuntu-3.4.13
# 加载完毕,docker images应该能显示
root@user-ubuntu:~/zabbix_docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zabbix/zabbix-web-nginx-pgsql ubuntu-3.4.13 bf422197fafe 4 weeks ago 254 MB
zabbix/zabbix-server-pgsql ubuntu-3.4.13 af4434f6332b 4 weeks ago 224 MB
postgres 9.6 4023a747a01a 20 months ago 265 MB
本地安装/运行方式(坑多)
**此方法不同的机器上可能遇到不同的问题,下面的说明只能作为参考。 **
我用网上说的apt-get方式装,无法成功。web界面使用不正常,所以采用源码方式装。zabbix-3.4.13.tar.gz
环境依赖安装按照以下步骤: https://blog.csdn.net/yannanxiu/article/details/54924198
zabbix-proxy zabbix-server zabbix-front-php 用源码安装,参考: https://www.zabbix.com/documentation/3.4/zh/manual/installation/install
数据库安装,建立zabbix用户,建立zabbix数据库,运行zabbix-3.4.13/database/postgresql/中的3个脚本。命令行:
su postgres
createdb zabbix
createuser -SDRP zabbix
su root
cat ./zabbix-3.4.13/zabbix-3.4.13/database/postgresql/{schema,images,data}.sql.gz | psql -h 127.0.0.1 zabbix postgres
或者带界面的postgres客户端做也行。自行选择
zabbix-fornt(web界面)
# 从源码拷贝到apache2 sudo cp -r zabbix-3.4.13/frontends/php/ /var/www/html/zabbix
- zabbix_sender报错
root@tegra-ubuntu:/home/ubuntu# zabbix_sender -s "192.168.5.198" -z "192.168.5.133" -k "keytrtest" -o "1133"
info from server: "processed: 0; failed: 1; total: 1; seconds spent: 0.000026"
这里failed: 1说明失败了。
注意看item的type必须是Zabbix trapper
server主动获取,在zabbix_agent.conf增加的item的type是Zabbix trapper
配置
zabbix_agent配置
需要在系统配置开机启动
zabbix_agentd安装包是在tx1上编译的。zabbix_agent_proxy_tx1的install.sh会将配置文件拷贝到 /usr/local/etc/zabbix_agent.conf
# 填写主节点ip
Server=192.168.5.177
ServerActive=192.168.5.177
# 主节点运行的是proxy,在默认情况下这样填写
Hostname=Zabbix proxy
AllowRoot=1
修改完重启进程
zabbix_proxy配置
需要在系统配置开机启动
zabbix_proxy安装包是在tx1上编译的。zabbix_agent_proxy_tx1的install.sh会将配置文件拷贝到 /usr/local/etc/zabbix_proxy.conf
# zabbix_server主机ip
Server=192.168.9.133
# 需和zabbix_agent配置的Hostname对应
Hostname=Zabbix proxy
# zabbix_proxy数据库目录,如果是使用install.sh脚本安装的,会放在/root/UserApp下。
DBName=/root/UserApp/zabbix_proxy.db
# 多长间隔从zabbix_server拉取配置(秒)
ConfigFrequency=120
AllowRoot=1
zabbix_server配置
需要在系统配置开机启动
zabbix_server在docker运行,在每次启动容器的时候会将必要参数传入,zabbix_docker/dockerrun_zabbix.sh已写好,运行即可
使用
访问路径: http://ip:9210
第一次运行会有一些额外步骤,按照提示下一步即可
quick start
添加proxy,注意Proxy name必须和 zabbix_proxy配置中的Hostname相同。其他配置默认即可。点add添加成功
添加host,Configuration->Hosts->Create host
红框都是需要填写修改的。Groups可以自己建,给设备分组。Monitored by proxy必须选择正确的proxy代理
点Template配置模板,模板决定了有哪些监测项。select选择一个模板,模板后续我们会自己创建,这里先选择Template OS Linux,包含了很多linux的监测项 点小add后再点大add
添加成功
Dashboard可以浏览状态、报警等,Edit dashboard可以自定义。比如Problems中提示我的主机掉线了。
如果想有目的的查询监测项状态,可以打开Monitoring->Lastest data。可以在过滤条件选择感兴趣的主机和检测项组 可以看到最后的值,可以点Graph看数值历史折线图。
这是最基本的使用,后续添加如何自定义监测项,利用api批量添加主机、动态管理监测项等功能。
模板
繁星2代模板已放在sdv上 smb://192.168.9.1/公共模块/繁星/繁星二代/自检系统/zabbix_template
自定义监测项
zabbix的监测项有两种:
- 上报型
zabbix item type选择 traper。需配合zabbix_sender使用
- 查询型
zabbix item type选择 agent
如果没有特殊需求,均采用查询型,走vproc流程。
应用程序使用vproc将状态写到文件,zabbix_agentd用vproc查询各状态的值,采用这种方式的原因:
- zabbix的交互压力可控,查询频率在web上配一下就好了。
- 应用程序写状态的操作与zabbix解耦。即使没有zabbix,我们在调试程序时也可以使用vproc,可以用命令行查询检测项的值。有助于调试
vproc后面章节有详细介绍
繁星增加自定义监测项典型流程
细节可以自行百度“zabbix增加自定义item”
界面上操作可参考:https://blog.csdn.net/u012062455/article/details/53257059
zabbix_agentd端操作可参考:https://www.cnblogs.com/mingerlcm/p/7754076.html
以繁星2代为例。假设我们要在slave模板中增加vaserver的“进程号”、“是否授权”两个监测项。
- 在zabbix web端增加检测项
监测项是添加到模板中的,添加后所有使用该模板的主机均生效,修改starnet_tx1_slave_tp模板
- 点击Configuration->Template 。
- 点击starnet_tx1_slave_tp行的items。
- 点右上角的Create item
- 填写具体信息并保存
- 在zabbix_agentd端配置
- 确保/usr/local/etc/zabbix_agentd.conf中有配置
UnsafeUserParameters=1
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
- 在/usr/local/etc/zabbix_agentd.conf.d/vaserver.conf增加命令行,如果没有可新建文件
# UserParameter=后面是key值,必须跟web上配置的相同。逗号后面的是查询这个值所执行的指令。
# 进程号很简单,shell命令就能搞定
UserParameter=vaserver.pid,pgrep VAServer
# license状态是需要应用程序开发者写入到vproc系统中(/root/UserApp/vproc/vaserver/license文件内容)的。在这里用vproc工具进行查询。如果没查到,返回0
UserParameter=vaserver.license,vproc read --key=vaserver.license --value=0
- 重启zabbix_agentd。过一会在web上就能看到了。
vproc
vproc是python编写的工具
类似linux proc系统,应用程序调用vproc脚本将监测项状态值持续更新到指定文件中。外部可读取文件值,得知应用程序的运行情况。
vproc工具有3种用法。
- 写:
# 此命令将创建文件 ROOT_VPROC/app/group1/group2/item,文件内容为value1
./vproc write --key=app.group1.gourp2.item --value=value1
- 读:
# 将ROOT_VPROC/app/group1/group2/item文件内容打印出来
./vproc read --key=app.group1.gourp2.item
- 重置:
# 删除ROOT_VPROC/app/group1/目录。相当于重置状态值
./vproc clean --path=app.group1
所有key值均采用 app.[group1.gourp2...groupn].item方式组织。末端item为文件,记录监测项的值,前面是多级目录。比如key值vaserver.va0.cameraname,记录状态值的文件为VPORC_ROOT/vaserver/va0/cameraname。
单个监测项更新状态频率不宜过快。建议间隔时间1分钟以上
注意: 建议在程序(以及能代表一组的流程)启动时、关闭时重置状态,避免旧的状态值干扰。拿vaserver举例:
有vaserver.event_count(发出了多少事件) ; vaserver.va0.taskname(分析通道0的任务名称); vaserver.va1.taskname
vaserver启动和退出时应调用
./vproc clean --path=vaserver
vaserver启动、关闭一个va时(假设是编号0)应调用
./vproc clean --path=vaserver.va0
自定义监测项列表
VAServer
key | 类型 | 说明 |
---|---|---|
vaserver.va0.taskname | Text | 任务名称 |
vaserver.va0.taskid | Text | 任务id |
vaserver.va0.cameraname | Text | 相机名称 |
vaserver.va0.cameraid | Text | 相机id |
vaserver.va0.playok | int | 是否点播成功,实际接收到流后再更新状态 |
vaserver.va0.sendresultcount | int | 对外发送了多少条结果,1分钟更新一次 |
vaserver.va[1...n].bigtaskname ... vaserver.va[1...n].sendresultcount |
同va0 | 同va0 |
vaserver.license | int | 授权状态,check license后更新 |