40-zabbix.rst.txt
11.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
zabbix监测系统
===============
安装
--------------------------------
使用docker安装/运行方式(建议使用此方式)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
离线安装包: smb://192.168.9.1/公共模块/繁星/繁星二代/自检系统/(zabbix_agent_proxy_tx1、zabbix_docker)
有docker离线包zabbix_docker,拷贝到有docker的主机上,加载镜像:
.. code-block:: shell
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个脚本。命令行:
.. code-block:: shell
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报错
.. code-block:: shell
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
.. code-block:: shell
# 填写主节点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
.. code-block:: shell
# 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添加成功
.. image:: ./images/zabbix-01.png
添加host,Configuration->Hosts->Create host
.. image:: ./images/zabbix-02.png
红框都是需要填写修改的。Groups可以自己建,给设备分组。Monitored by proxy必须选择正确的proxy代理
.. image:: ./images/zabbix-03.png
点Template配置模板,模板决定了有哪些监测项。select选择一个模板,模板后续我们会自己创建,这里先选择Template OS Linux,包含了很多linux的监测项
点小add后再点大add
.. image:: ./images/zabbix-04.png
添加成功
Dashboard可以浏览状态、报警等,Edit dashboard可以自定义。比如Problems中提示我的主机掉线了。
.. image:: ./images/zabbix-05.png
如果想有目的的查询监测项状态,可以打开Monitoring->Lastest data。可以在过滤条件选择感兴趣的主机和检测项组
可以看到最后的值,可以点Graph看数值历史折线图。
.. image:: ./images/zabbix-06.png
.. image:: ./images/zabbix-07.png
这是最基本的使用,后续添加如何自定义监测项,利用api批量添加主机、动态管理监测项等功能。
模板
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
繁星2代模板已放在sdv上 smb://192.168.9.1/公共模块/繁星/繁星二代/自检系统/zabbix_template
自定义监测项
-------------------------------------------------
zabbix的监测项有两种:
1. 上报型
zabbix item type选择 traper。需配合zabbix_sender使用
2. 查询型
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
- 填写具体信息并保存
2. 在zabbix_agentd端配置
- 确保/usr/local/etc/zabbix_agentd.conf中有配置
.. code-block:: shell
UnsafeUserParameters=1
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
- 在/usr/local/etc/zabbix_agentd.conf.d/vaserver.conf增加命令行,如果没有可新建文件
.. code-block:: shell
# 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
3. 重启zabbix_agentd。过一会在web上就能看到了。
vproc
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vproc是python编写的工具
类似linux proc系统,应用程序调用vproc脚本将监测项状态值持续更新到指定文件中。外部可读取文件值,得知应用程序的运行情况。
vproc工具有3种用法。
- 写:
.. code-block:: shell
# 此命令将创建文件 ROOT_VPROC/app/group1/group2/item,文件内容为value1
./vproc write --key=app.group1.gourp2.item --value=value1
- 读:
.. code-block:: shell
# 将ROOT_VPROC/app/group1/group2/item文件内容打印出来
./vproc read --key=app.group1.gourp2.item
- 重置:
.. code-block:: shell
# 删除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启动和退出时应调用
.. code-block:: shell
./vproc clean --path=vaserver
vaserver启动、关闭一个va时(假设是编号0)应调用
.. code-block:: shell
./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 | 同va0 | 同va0 |
| | | |
| ... | | |
| | | |
| vaserver.va[1...n].sendresultcount | | |
+------------------------------------+-------+----------------------------------------+
| vaserver.license | int | 授权状态,check license后更新 |
+------------------------------------+-------+----------------------------------------+