40-zabbix.rst 11.7 KB

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添加成功

./images/zabbix-01.png

添加host,Configuration->Hosts->Create host

./images/zabbix-02.png

红框都是需要填写修改的。Groups可以自己建,给设备分组。Monitored by proxy必须选择正确的proxy代理

./images/zabbix-03.png

点Template配置模板,模板决定了有哪些监测项。select选择一个模板,模板后续我们会自己创建,这里先选择Template OS Linux,包含了很多linux的监测项 点小add后再点大add

./images/zabbix-04.png

添加成功

Dashboard可以浏览状态、报警等,Edit dashboard可以自定义。比如Problems中提示我的主机掉线了。

./images/zabbix-05.png

如果想有目的的查询监测项状态,可以打开Monitoring->Lastest data。可以在过滤条件选择感兴趣的主机和检测项组 可以看到最后的值,可以点Graph看数值历史折线图。

./images/zabbix-06.png ./images/zabbix-07.png

这是最基本的使用,后续添加如何自定义监测项,利用api批量添加主机、动态管理监测项等功能。

模板

繁星2代模板已放在sdv上 smb://192.168.9.1/公共模块/繁星/繁星二代/自检系统/zabbix_template

自定义监测项

zabbix的监测项有两种:

  1. 上报型

zabbix item type选择 traper。需配合zabbix_sender使用

  1. 查询型

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的“进程号”、“是否授权”两个监测项。

  1. 在zabbix web端增加检测项

监测项是添加到模板中的,添加后所有使用该模板的主机均生效,修改starnet_tx1_slave_tp模板

  • 点击Configuration->Template 。
  • 点击starnet_tx1_slave_tp行的items。
  • 点右上角的Create item
  • 填写具体信息并保存
  1. 在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
  1. 重启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后更新