一般选择使用docker部署,简单不易出错,

安装zabbix服务端


在文件夹下创建docker-compose.yaml,然后docker compose up -d(环境变量的数据库密码要一致)

services:
  # 数据库,用mariadb或者mysql都行
  mariadb-server:
    image: mariadb:10.11
    container_name: mariadb-server
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      - --innodb_rollback_on_timeout=OFF
      - --innodb_lock_wait_timeout=30
    volumes:
      - ./db_data:/var/lib/mysql
    environment:
      - MARIADB_USER=zabbix
      - MARIADB_PASSWORD=insertpassword  #改数据库密码
      - MARIADB_ROOT_PASSWORD=insertpassword  #改数据库密码
      - MARIADB_DATABASE=zabbix
    restart: always

  # zabbix server
  zabbix-server:
    image: zabbix/zabbix-server-mysql:alpine-7.0-latest
    container_name: zabbix-server
    ports:
      - "10051:10051"
    links:
      - mariadb-server
    environment:
      - DB_SERVER_HOST=mariadb-server
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=insertpassword  #改数据库密码
      - MYSQL_ROOT_PASSWORD=insertpassword  #改数据库密码
    depends_on:
      - mariadb-server
    restart: always

  # zabbix web
  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest
    container_name: zabbix-web-nginx
    ports:
      - "8080:8080"  #web访问端口
    links:
      - mariadb-server
      - zabbix-server
    environment:
      - ZBX_SERVER_HOST=zabbix-server
      - DB_SERVER_HOST=mariadb-server
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=insertpassword  #改数据库密码
      - MYSQL_ROOT_PASSWORD=insertpassword  #改数据库密码
      - PHP_TZ=Asia/Shanghai
    depends_on:
      - mariadb-server
      - zabbix-server
    restart: always

部署后正常跑起来等几分钟后才能访问,因为zabbix第一次跑会往数据库里建很多表。

默认超级管理员账号密码是Admin和zabbix,防火墙记得要开10051和8080端口

想要中文语言在用户->用户->点进当前用户名里面改

客户端安装zabbix-agent2(debian)

在一台主机上安装zabbix-agent2并配置,就能在zabbix-server实时监控这台主机的状态

debian系的linux可以用apt install zabbix-agent2 直接安装

systemctl status zabbix-agent2 可以直接可看到zabbix-agent2的配置文件在/etc/zabbix/zabbix_agent2.conf

打开配置文件,找到Hostname=,后面的值填这台agent2的主机名(可以随便取一个,注意区分大小写,等会要在zabbix-proxy添加)

然后再找到Server=ServerActive= ,这两分别是被动模式主动模式的服务端ip组设置,填zabbix服务端的ip地址,也可以填域名。

主动模式:只允许服务端ip组(Server=)内的ip主动连接到zabbix-agent2拿监控数据(zabbix-agent2的防火墙需要开放10050端口)

被动模式:zabbix-agent2主动连接到服务端ip组(ServerActive=)并上报监控数据给所有服务端ip

填好之后保存,重启zabbix-agent2

systemctl restart zabbix-agent2

服务端添加agent

监测->主机->创建主机

主机名称填刚才在zabbix_agent2.conf配置文件里面设的主机名Hostname=

模板这里点进去,模板群组选择Templates,再选择Linux by Zabbix agent(也可以选Linux by Zabbix agent active,实际上是被动模式和主动模式的区别,如果选了就要添加一个agent接口,填zabbix-agent2客户端的ip。也可以在右边填域名,不过记得点一下右边的“连接到”下面的“DNS”。)

主机群组可以选Linux servers

安装zabbix-proxy代理端(可选)

一般情况下,zabbix-agent2能通过ip连接到zabbix-server,同时zabbix-server也能通过ip连接到zabbix-agent2,就不需要搭建zabbix proxy。

但如果zabbix-agent2在防火墙或者nat网络环境下,zabbix-server无法通过ip连接到zabbix-agent2,就需要在zabbix-agent2的内网搭建一个zabbix-proxy服务器,代理zabbix-server和zabbix-agent2之间的连接。(不需要开放zabbix proxy任何端口到外网,只需要保证能连接到zabbix-server即可)

创建docker-compose.yaml,然后docker compose up -d(记得改Proxy名称和zabbix-server ip,保证宿主机系统防火墙开放10051端口)

services:
  zabbix-proxy:
    image: zabbix/zabbix-proxy-sqlite3:alpine-7.0-latest
    container_name: zabbix-proxy
    restart: always
    environment:
      - ZBX_HOSTNAME=zabbix-proxy     #设置Proxy名称
      - ZBX_SERVER_HOST=192.168.1.1   #zabbix-server的ip或域名
      - ZBX_PROXYMODE=0               #0代表主动模式 (active)
      - ZBX_DBNAME=/var/lib/zabbix/home_cloud.sqlite
      - ZBX_CONFIGCACHESIZE=32M
      - ZBX_STARTPOLLERS=5
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./zbx_proxy_db:/var/lib/zabbix
    ports:
      - "10051:10051"                 #端口映射

然后在zabbix服务端上添加zabbix-proxy

管理->Proxy->创建Proxy

Proxy名称填刚才在yaml文件里面设置的container_name

Proxy模式选主动式

然后点添加就可以

添加后,记得在zabbix-server中为agent设置zabbix-proxy代理

同时,需要改zabbix-agent2的配置zabbix_agent2.conf,把Server=ServerActive= 改成zabbix-proxy的ip,再重启zabbix-agent2才生效。

添加自定义监控

添加自定义监控项

模板自带的监控项足够齐全,能满足大部分需求,但还是有一部分可能需要自己实现。

这里就以收集agent与某个ip的icmp网络延迟为例(原版Zabbix Agent2没有内置Key用来主动ping其他IP),需要主动给agent手动添加一个监控项。

在zabbix-agent2的zabbix_agent2.conf配置文件的顶部添加这一行(同时需要安装fping)

UserParameter=A.icmp.cf,fping -c 1 -q 1.0.0.1 2>&1 | awk -F'/' 'END{ print (NR==0 || $8=="") ? -10 : $8 }'

保存然后重启zabbix-agent2

在zabbix-server的webui中进入到

数据采集->主机->点击对应主机右边的监控项->创建监控项

名称可以随便填一个
类型可以选Zabbix客户端或者Zabbix客户端(主动式),这两个的区别也就是上面说的被动模式和主动模式,被动模式需要添加一个主机接口

单位写ms,

更新间隔就是采集间隔,可以填5s

可以按需设置一下历史记录,然后点添加(如果类型选了Zabbix客户端,会有个测试选项,可以测试是否正常采集数据)

添加仪表盘和图形

此时,已经采集到数据了,但还要把数据在仪表盘中展示出来

在仪表盘处新建

然后拖动新建一个大一点的控件,就会弹出来一个组件配置窗口

类型选择图形

然后添加的数据集里面主机选择对应agent,还有刚刚添加的监控项

点添加,再点右上角保存设置就能在新仪表盘看到刚刚添加的图形。