Zabbix监控(一)

监控:
传感器:

    数据采集  --> 数据存储  --> 数据展示
    报警:采集到的数据超出阈值
        时间序列数据

    开源监控工具:

    SNMP:Simple Network Managent Protocol
    SNMP的工作模式:
        NMS向agent采集数据
            agent向NMS报告数据
            NMS请求agent修改配置

    SNMP的组件:
        MIB: management information base 管理信息库
            SMI:MIB表示符号
            SNMP协议:

    SNMP协议的版本:
        v1, v2, v3
        v2c:NMS --> agent 
            v3:认真、加密、解密

    Linux: net-snmp 程序包

    NMS可发起操作:
        Get, GetNext, Set, Trap

            agent:Response

            UDP
                NMS:161
                    agent:162

            OID: 对象标识符

    agent:代理

分布式监控
著名的开源监控工具:zabbix, znnos, opennms, cacti, nagios(icinga), ganglia

监控功能的实现:
agent
ssh
SNMP
IPMI

只会平台管理接口(Intelligent Platform Management Interface)原本是一种Intel架构的企业系统的周边设备所采用的一种工业标准,IPMI亦是一个开放的免费标准。使用者无需支付额外的费用饥渴使用此标准。

zabbix:有专用agent的监控工具
监控主机:
Linux、Windows、FreeBSD
网络设备:
SNMP,SSH(并非所有)

可监控对象:
设备/软件
设备:服务器、路由器、交换机、IO系统
软件:OS、网络、应用程序
偶发性小故障:
主机down机、服务不可用、主机不可达
严重故障:
主机性能指标:
趣事:时间序列数据

数据存储:
cacti:rrd(round robin database)
zabbix:mysql,pgsql

zabbix架构中的组件:
zabbix-server:C语言
OS:zabiix-agent:C语言
zabbix-web:GUI,用于实现zabbix设定和展示
zabbix-proxy:分布式监控环境中的专用组件

    zabbix-database:MySQL,PGSQL(postgreSQL)、Oracle、DB2、SQLite

zabbix产生的数据主要由四部分组成:
配置数据
历史数据:50bytes
历史趋势数据:128bytes
事件数据:130bytes

自动化监控:
Zabbix监控(一)

What to monitor?
Devices/Software
Server,Router,Switchs,I/O systems etc.
Operating System,Networks,Applications,etc.
Incidents
DB down,Replication stopped,Server not reachable,etc.
Critical Events
Disk more than n% full or less than m Gbyte free,
Replication more than n seconds logging,Data node down,
100% CPU utilization,etc
Alert,immediate intervention,fire fighting
Trends(includes timel)
Graphs
How long does it take until
my disk is full?
my Index Memory is filled up?
When does it happen?
Peak? Backup?
How often does it happen? Does it happen periodically?
Once a day? Always at Sunday night?
How does it correlate to other informations?
I/O problems during our backup window?
Reading the patterns!
this can help us to find the root cause of problems
Basic solutions:
top, vmstat, iostat, mytop, innotop, SHOW GLOBAL
STATUS, SHOW INNODB STATUS
CLI, no graphs, no log term information,but good for adhoc analysisl
Graphical solutions
Nagios(Opsview, Icinga), Cacti, Zabbix,
Typically NOT specialised in DB monitoring

How Zabbix is progressing?
Zabbix监控(一)

Why use monitoring solution?
Zabbix监控(一)

What are the functionalities of MS?
Ddata gathering
Gathered using various methods, including SNMP, native agents, IPMI and others
Alerting
Gathered data can be compared data can be compared to thresholds and alerts sent out using different channels like e-mail or SMS
Data storage
Once we have gathered the data it doesn't make sense to throw it away, so we will often want to store it for later analysis
Visualisation
Humans are better at distinguishing visualised data, especially when there is huge amounts of data

What is Zabbix?
The Enterprise-class Monitoring Solution
Zabbix监控(一)

Why choose Zabbix?
Zabbix is an enterprise level monitoring software
Scales up-to 100 000 of monitored devices
Distributed monitoring
Supports virtually all platforms and methods of monitoring
True Open Source, no proprietary add-ons, and no "professional" or "enterprise" versions
Estimated number of users is more than 40 000, but could be several times greater

Which platforms does Zabbix support?
Zabbix监控(一)

Various Monitoring Functions
Zabbix监控(一)

What can be monitored on the Web?
Respanse time
Download speed
Response code
Availability of certain content
Complex web scenarios with login and logout capability
Support for HTTP and HTTPs

How you get notified?
Zabbix监控(一)

Zabbix Proxy
Zabbix监控(一)

Zabbix architecture
Zabbix监控(一)

Zabbix architecture
Zabbix监控(一)

Zabbix常用的术语
主机(host):要监控的网络设备,可由IP或DNS名称指定;
主机组(host group):主机饿逻辑容器,可以包含主机和模板,但一个组内的主机和模板不能相互链接;主机组通常在给用户或用户组指派监控权限时使用;
监控项(item):一个特定监控指标的相关的数据,这些数据来自于被监控对象;对于item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由"key"进行标识;
触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阀值;接收到的数据量大于阀值时,触发器状态将从"OK"转变为"Problem",当数据量再次回归到合理范围时,其状态将从"Problem"转换回"OK";
事件(event):即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等;
动作(action):指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作);
报警升级(escalation):发送警报或制定远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
媒介(media):发送通知的手段或通道,如Email、Jabber或SMS等;
通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机;
应用(application):一组item的集合;
web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
前端(frontend):Zabbix的web接口;

Zabbix的逻辑架构
Zabbix监控(一)

Zabbix Server Processes
Zabbix监控(一)

Requirements
Hardware Examples
Zabbix监控(一)

Software - DBMS
Zabbix监控(一)

Software - Frontend
Zabbix监控(一)

Software - Server
Zabbix监控(一)

Install Zabbix
Create zabbix user
Untar source tarball
Create zabbix database and populate it
A MySQL(PostgreSQL,...) installation is needed...
./config ; make ; make install
Some packages may be missing...
Does not take too long (< 10 min)
Create configuration file for zabbix server
(misc/conf/zabbix_server.conf)
Start the zabbix server

Install the Zabbix web interface
Apache/PHP is required
Copy PHP file to $DocumentRoot/zabbix
http://localhost/zabbix
Change php.ini
Default settings are by far not enough!
data.timezone = Asia/Shanghai
Restart webserver
Finish configuration
Login with admin/zabbix

实验环境:
主机名称:node1.smoke.com master
操作系统:CentOS 6.5
内核版本:2.6.32-504.el6.x86_64
网卡1:vmnet0 172.16.100.7
网卡2:vmnet8 dhcp
主机名称:node2.smoke.com
操作系统:CentOS 6.5
内核版本:2.6.32-504.el6.x86_64
网卡1:vmnet0 172.16.100.8
网卡2:vmnet8 dhcp
主机名称:node3.smoke.com
操作系统:Windows xp
网卡1:172.16.100.9

系统配置:
node1:zabbix-server

[root@node1 ~]# hostname
node1.smoke.com
[root@node1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:99:d9:9e brd ff:ff:ff:ff:ff:ff
    inet 172.16.100.7/24 brd 172.16.100.255 scope global eth0
    inet6 fe80::20c:29ff:fe99:d99e/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:99:d9:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.243.145/24 brd 192.168.243.255 scope global eth1
    inet6 fe80::20c:29ff:fe99:d9a8/64 scope link
       valid_lft forever preferred_lft forever
[root@node1 ~]# ip route show
172.16.100.0/24 dev eth0  proto kernel  scope link  src 172.16.100.7
192.168.243.0/24 dev eth1  proto kernel  scope link  src 192.168.243.145
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
default via 192.168.243.2 dev eth1
[root@node1 ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov &> /dev/null
[root@node1 ~]# vim /etc/hosts
172.16.100.7   node1.smoke.com node1
172.16.100.8   node2.smoke.com node2
172.16.100.9   node3.smoke.com node3

node2:linux-agent

[root@node2 ~]# hostname
node2.smoke.com
[root@node2 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d6:6a:92 brd ff:ff:ff:ff:ff:ff
    inet 172.16.100.8/24 brd 172.16.100.255 scope global eth0
    inet6 fe80::20c:29ff:fed6:6a92/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d6:6a:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.243.146/24 brd 192.168.243.255 scope global eth1
    inet6 fe80::20c:29ff:fed6:6a9c/64 scope link
       valid_lft forever preferred_lft forever
[root@node2 ~]# ip route show
172.16.100.0/24 dev eth0  proto kernel  scope link  src 172.16.100.8
192.168.243.0/24 dev eth1  proto kernel  scope link  src 192.168.243.146
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
default via 192.168.243.2 dev eth1
[root@node2 ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov &> /dev/nulll
[root@node2 ~]# vim /etc/hosts
172.16.100.7   node1.smoke.com node1
172.16.100.8   node2.smoke.com node2
172.16.100.9   node3.smoke.com node3

node3:windows-agent

安装mariadb:
node1:zabbix-server

[root@node1 ~]# tar xf cmake-2.8.8.tar.gz
[root@node1 ~]# cd cmake-2.8.8
[root@node1 cmake-2.8.8]# ./bootstrap
[root@node1 cmake-2.8.8]# make && make install
[root@node1 cmake-2.8.8]# cd
[root@node1 ~]# groupadd -g 306 -r mysql
[root@node1 ~]# useradd -u 306 -g mysql -r -s /sbin/nologin mysql
[root@node1 ~]# mkdir /mydata/data -pv
[root@node1 ~]# yum -y install readline-devel zlib-devel openssl-devel
[root@node1 ~]# tar xf mariadb-10.0.10.tar.gz
[root@node1 ~]# cd mariadb-10.0.10
[root@node1 mariadb-10.0.10]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_DATADIR=/mydata/data \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DWITH_SSL=system \
> -DWITH_ZLIB=system \
> -DWITH_LIBWRAP=0 \
> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci
[root@node1 mariadb-10.0.10]# make && make install
[root@node1 mariadb-10.0.10]# cd /usr/local/mysql/
[root@node1 mysql]# chgrp mysql ./*
[root@node1 mysql]# chown mysql:mysql /mydata/data
[root@node1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
[root@node1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node1 mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@node1 mysql]# chkconfig --add mysqld
[root@node1 mysql]# mv /etc/my.cnf /etc/my.cnf.bak
[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@node1 mysql]# vim /etc/my.cnf
log-bin=/mydata/binlogs/master-bin
innodb_file_per_table = ON
[root@node1 mysql]# mkdir -pv /mydata/binlogs/
[root@node1 mysql]# chown -R mysql.mysql /mydata/binlogs/
[root@node1 mysql]# service mysqld start
[root@node1 mysql]# vim /etc/profile.d/mysqld.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@node1 mysql]# . /etc/profile.d/mysqld.sh
[root@node1 mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.10-MariaDB-log Source distribution

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql
Database changed
MariaDB [mysql]> SELECT user,host,password FROM user;
+------+-----------------+----------+
| user | host            | password |
+------+-----------------+----------+
| root | localhost       |          |
| root | node1.smoke.com |          |
| root | 127.0.0.1       |          |
| root | ::1             |          |
|      | localhost       |          |
|      | node1.smoke.com |          |
+------+-----------------+----------+
6 rows in set (0.00 sec)

MariaDB [mysql]> DROP USER ""@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> DROP USER ""@'node1.smoke.com';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> \q
Bye

安装zabbix:
node1:zabbix-server

[root@node1 mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.0.10-MariaDB-log Source distribution

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> GRANT ALL on zabbix.* TO 'zbxuser'@'172.16.%.%' IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL on zabbix.* TO 'zbxuser'@'node1.smoke.com' IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> \q
Bye
[root@node1 mysql]# cd /root/zabbix-2.4/
[root@node1 zabbix-2.4]# ls
zabbix-2.4.0-1.el6.x86_64.rpm               zabbix-proxy-pgsql-2.4.0-1.el6.x86_64.rpm    zabbix-server-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-agent-2.4.0-1.el6.x86_64.rpm         zabbix-proxy-sqlite3-2.4.0-1.el6.x86_64.rpm  zabbix-web-2.4.0-1.el6.noarch.rpm
zabbix-get-2.4.0-1.el6.x86_64.rpm           zabbix-sender-2.4.0-1.el6.x86_64.rpm         zabbix-web-japanese-2.4.0-1.el6.noarch.rpm
zabbix-java-gateway-2.4.0-1.el6.x86_64.rpm  zabbix-server-2.4.0-1.el6.x86_64.rpm         zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
zabbix-proxy-2.4.0-1.el6.x86_64.rpm         zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm   zabbix-web-pgsql-2.4.0-1.el6.noarch.rpm
[root@node1 zabbix-2.4]# yum -y install zabbix-server-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm zabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-2.4.0-1.el6.x86_64.rpm zabbix-web-2.4.0-1.el6.noarch.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm

安装报错:

Error: Package: zabbix-server-mysql-2.4.0-1.el6.x86_64 (/zabbix-server-mysql-2.4.0-1.el6.x86_64)
           Requires: libiksemel.so.3()(64bit)
Error: Package: zabbix-server-2.4.0-1.el6.x86_64 (/zabbix-server-2.4.0-1.el6.x86_64)
           Requires: iksemel
Error: Package: zabbix-server-2.4.0-1.el6.x86_64 (/zabbix-server-2.4.0-1.el6.x86_64)
           Requires: fping
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

[root@node1 ~]# ls *.rpm
fping-2.4b2-10.el6.x86_64.rpm  iksemel-1.4-2.el6.x86_64.rpm  iksemel-devel-1.4-2.el6.x86_64.rpm  libiksemel3-1.4-2_2.el6.x86_64.rpm
[root@node1 ~]# yum localinstall  iksemel-1.4-2.el6.x86_64.rpm iksemel-devel-1.4-2.el6.x86_64.rpm fping-2.4b2-10.el6.x86_64.rpm libiksemel3-1.4-2_2.el6.x86_64.rpm

配置zabbix:
node1:zabbix-server

[root@node1 ~]# service httpd start
[root@node1 ~]# cd /usr/share/doc/zabbix-server-mysql-2.4.0/create/
[root@node1 create]# ls
data.sql  images.sql  schema.sql
[root@node1 create]# mysql zabbix < schema.sql    #导入数据库要有顺序,先schema、images、data;
[root@node1 create]# mysql zabbix < images.sql
[root@node1 create]# mysql zabbix < data.sql
[root@node1 ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=172.16.100.7
DBUser=zbxuser
DBPassword=zbxpass
DBSocket=/tmp/mysql.sock
[root@node1 ~]# service zabbix-server start
[root@node1 ~]# ss -tnl
State       Recv-Q Send-Q                            Local Address:Port                              Peer Address:Port
LISTEN      0      128                                          :::22                                          :::*
LISTEN      0      128                                           *:22                                           *:*
LISTEN      0      128                                          :::10051                                       :::*
LISTEN      0      128                                           *:10051                                        *:*
LISTEN      0      128                                           *:3306                                         *:*
LISTEN      0      128                                          :::80                                          :::*
[root@node1 ~]# vim /etc/php.ini
date.timezone = Asia/Chongqing
[root@node1 ~]# service httpd restart

配置zabbix-web:
通过windows的浏览器输入172.16.100.7/zabbix;
Zabbix监控(一)

点击next,所有检查通过,点击next,配置数据库连接,数据库主机172.16.100.7、数据库用户zbxuser、密码zbxpass,点击next;
Zabbix监控(一)

配置zabbix主机地址172.16.100.7,name为node1.smoke.com,点击next,到finish,自动跳转到zabbix登录界面;
Zabbix监控(一)

默认账号admin,密码zabbix;
Zabbix监控(一)

zabbix-server监控自己:
node1:zabbix-server

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1,172.16.100.7
ServerActive=127.0.0.1,172.16.100.7
Hostname=node1.smoke.com
[root@node1 ~]# service zabbix-agent start
[root@node1 ~]# ss -tnl
State       Recv-Q Send-Q                            Local Address:Port                              Peer Address:Port
LISTEN      0      128                                          :::22                                          :::*
LISTEN      0      128                                           *:22                                           *:*
LISTEN      0      128                                          :::10050                                       :::*
LISTEN      0      128                                           *:10050                                        *:*
LISTEN      0      128                                          :::10051                                       :::*
LISTEN      0      128                                           *:10051                                        *:*
LISTEN      0      128                                           *:3306                                         *:*
LISTEN      0      128                                          :::80                                          :::*

在zabbix-web上面启用对node1.smoke.com的监控,点击Configuration--Hosts,默认zabbix-server已经把自己监控了,点击Disable启用本机监控;
Zabbix监控(一)

zabbix-server监控linux-agent:
node2:linux-agent

[root@node2 ~]# cd zabbix-2.4/
[root@node2 zabbix-2.4]# yum install zabbix-2.4.0-1.el6.x86_64.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm
[root@node2 zabbix-2.4]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.100.7
ServerActive=172.16.100.7
Hostname=node2.smoke.com
[root@node2 zabbix-2.4]# service zabbix-agent start

在zabbix-web上面添加linux-agent主机监控,点击Configuration--Hosts--Create-host,填写完成,点击Add;
Host:主机
Host name:主机名,172.16.100.8;
Visible name:node2.smoke.com
New group:创建组
Agent interfaces:IP address 172.16.100.8,Connect to 选择IP,Port 默认10050
SNMP interfaces:通过snmp监控
JMX interfaces:监控java;
IPMI interfaces:监控服务器硬件;
Monitored by proxy:是否使用代理,no proxy
Templates:模板;
IPMI:监控硬件
Macros:宏,变量;
Host inventory:资产清单
Zabbix监控(一)

点击Monitoring--Graphs(图形),Group选择all,Host选择all,Graph选择Zabbix data qathering process busy %;
Zabbix监控(一)

点击Monitoring--Screens,可以自定义多张图片显示在一张页面;
Zabbix监控(一)

转载于:https://blog.51cto.com/smoke520/2403455

<think>我们被要求使用Zabbix监控网站是否正常运行。根据引用内容,我们可以参考以下步骤:1.在ZabbixServer上安装zabbix_get工具(引用[2]中提到了安装zabbix-get)2.在ZabbixWeb界面创建监控项和触发器3.使用Web场景监控网站(引用[5]提到了检查zabbix前端的登录,这属于Web监控)具体步骤:、安装zabbix_get(可选,用于测试)根据引用[2]:```wgethttp://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-get-3.2.1-1.el7.x86_64.rpmrpm-ivhzabbix-get-3.2.1-1.el7.x86_64.rpm```二、监控网站运行状态通常有两种方式:1.使用HTTPAgent监控项:监控单个URL的响应状态码、响应时间等。2.使用Web场景(WebScenario):模拟用户访问多个步骤(如登录、跳转等)。这里我们重点介绍Web场景,因为引用[5]提到了登录场景。三、创建Web场景步骤(以监控个需要登录的网站为例):1.在ZabbixWeb界面中,进入“配置”->“主机”,选择要监控的主机(或创建个主机,类型为“Zabbix客户端”,但网站监控通常不需要在被监控主机上安装agent,因为是从ZabbixServer发起的)。2.在主机配置页面,切换到“Web场景”标签页,创建Web场景。3.配置Web场景的基本信息:名称、应用集(可以新建个,如“Web监控”)、更新间隔等。4.添加步骤:-第步:访问登录页面(GET请求)-第二步:提交登录表单(POST请求,需要提交用户名和密码,并获取会话ID,如引用[5]中提到的正则表达式提取会话ID)-第三步:访问需要监控的页面(GET请求,使用第二步获取的会话ID)5.为每个步骤设置检查点(例如,检查返回文本中是否包含特定字符串,或者检查HTTP状态码是否为200)。四、创建触发器:在Web场景中,可以设置触发器,例如:当某个步骤失败(状态码非200或检查点未找到)时触发告警。五、测试:可以使用zabbix_get命令测试监控项(但Web场景通常通过ZabbixServer主动执行,所以不需要在agent上测试)。如果使用HTTPAgent监控项,可以测试:```zabbix_get-s127.0.0.1-kweb.item[<参数>]```注意:如果被监控的网站是外部的,那么需要确保ZabbixServer能够访问该网站。六、另种简单方法:使用HTTPAgent监控项(不需要登录的网站)1.在主机上创建监控项:-键值:`web.page.get[<URL>,<端口>]`-或者更详细的:`web.page.perf[<URL>,<端口>]`可以获取性能数据(响应时间等)2.然后可以设置触发器,例如:当响应时间超过阈值,或者状态码不为200时告警。具体选择哪种方式取决于网站是否需要交互(如登录)。根据引用[5]的提示,对于需要登录的网站,我们可以使用Web场景并利用正则表达式提取会话ID。下面我们给出个Web场景配置的示例步骤(以登录ZabbixWeb为例,但同样适用于其他网站):步骤1:访问登录页面名称:LoginPageURL:http://your-zabbix-web-url/index.php方法:GET步骤2:提交登录表单名称:DoLoginURL:http://your-zabbix-web-url/index.php方法:POST参数:name=Admin&password=zabbix&autologin=1&enter=Signin提取会话ID:使用正则表达式,如引用[5]提到的:`regex:name="sid"value="([0-9a-z]{16})"`,并将结果存储到变量{login_sid}中。步骤3:访问首页(已登录状态)名称:HomePageURL:http://your-zabbix-web-url/index.php?sid={login_sid}方法:GET检查:验证字符串(例如,检查是否包含“Dashboard”)然后,我们可以为这个Web场景创建触发器,例如:当任何个步骤失败时触发告警。注意:实际配置时,请将URL替换为要监控的网站地址,并调整登录参数和检查点。相关问题:1.如何监控不需要登录的网站?2.如何配置ZabbixWeb场景中的步骤超时时间?3.Zabbix监控网站时如何设置告警通知?</think>### 使用 Zabbix 监控网站运行状态的完整指南 #### 监控原理 Zabbix 通过 **Web 场景(Web Scenario)** 功能监控网站运行状态,模拟用户访问行为,检测响应时间、状态码、内容匹配等关键指标。核心组件包括: - **Zabbix Server**:执行监控任务并分析数据[^4] - **Web 监控模块**:主动发起 HTTP/HTTPS 请求 - **触发器(Trigger)**:根据异常数据触发告警 #### 二、配置步骤 1. **创建 Web 场景** - 在 Zabbix Web 控制台:*配置 → 主机 → 选择目标主机 → Web 场景 → 创建* - 关键参数设置: ```plaintext 名称: 网站健康检查 URL: https://your-website.com 更新间隔: 1m 超时: 15s 重试次数: 2 ``` 2. **配置监控步骤**(以登录场景为例) | 步骤 | 类型 | URL 参数 | 验证方式 | |------|--------|---------------------------|--------------------------| | 1 | GET | /login | 状态码=200 | | 2 | POST | /auth (带用户名密码) | 正则提取会话ID[^5] | | 3 | GET | /dashboard?sid={会话ID} | 内容包含"控制台" | > 引用[^5]说明:使用正则表达式 `regex:name="sid" value="([0-9a-z]{16})"` 提取动态会话ID 3. **设置触发器** ```plaintext 名称: 网站不可访问 表达式: max(Web.test.fail[网站健康检查],5m)>0 严重性: 严重 ``` 4. **配置告警通知** - *管理 → 报警媒介类型* 配置邮件/Slack等通知渠道 - 在 *动作(Actions)* 中关联触发器与通知方式 #### 三、验证监控有效性 1. **手动测试**(需安装 zabbix_get): ```bash zabbix_get -s 127.0.0.1 -k "web.test.get[网站健康检查,首页]" ``` 返回结果示例:`200 OK 0.874s`(状态码+响应时间) 2. **监控指标说明**: - `web.test.in[场景,步骤,resp]`:响应时间 - `web.test.rspcode[场景,步骤]`:HTTP 状态码 - `web.test.fail[场景]`:失败步骤计数 #### 四、最佳实践建议 1. **多地域监控**:在不同代理节点部署监控点 ```mermaid graph LR A[网站] --> B[Zabbix Proxy-北京] A --> C[Zabbix Proxy-上海] B & C --> D[Zabbix Server] ``` 2. **敏感数据保护**: - 使用 **{$SECRET} 宏** 存储密码 - 启用 HTTPS 加密传输 3. **性能优化**: - 设置合理的检查频率(静态页 2-5分钟,关键交易 1分钟) - 启用缓存减少重复认证 > 注意:对于需登录的网站,确保在 Web 场景中正确处理会话保持机制[^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值