1.zabbix容器化+grafana的安装和配置

环境准备

使用官方安装脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动daemon服务(否则无法pull镜像)

systemctl daemon-reload
systemctl restart docker.service

安装zabbix服务器

分配subnet网络

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

安装mysql服务

推送mysql容器镜像

docker pull mysql:8.0
docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      --network=zabbix-net \
      -d mysql:8.0\
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password
docker pull zabbix/zabbix-java-gateway:alpine-5.0-latest
docker run --name zabbix-java-gateway -t \
      --network=zabbix-net \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-5.0-latest
docker pull zabbix/zabbix-server-mysql:alpine-5.0-latest
docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --network=zabbix-net \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-5.0-latest
docker pull zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest
docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      -e PHP_TZ="Asia/Shanghai" \
      --network=zabbix-net \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest

docker容器安装agent

docker pull zabbix/zabbix-agent:latest
docker run --name zabbix-agent-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      --network=zabbix-net \
      --restart unless-stopped \
      -d zabbix/zabbix-agent:latest

宿主机安装agent

服务器添加agent服务

添加zabbix源

rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
rpm -ihv http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

查找zabbix-agent安装包

[root@localhost ~]# yum list |grep zabbix
http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/repodata/87818fcd36f485539b03954419261114f2aabed465e8405db3830d40bea080b4-primary.sqlite.bz2: [Errno 14] curl#18 - "transfer closed with 50216 bytes remaining to read"
Trying other mirror.
zabbix-release.noarch                       3.0-1.el7                  installed
fping.x86_64                                3.10-1.el7                 zabbix-non-supported
iksemel.x86_64                              1.4-2.el7.centos           zabbix-non-supported
iksemel-devel.x86_64                        1.4-2.el7.centos           zabbix-non-supported
iksemel-utils.x86_64                        1.4-2.el7.centos           zabbix-non-supported
pcp-export-pcp2zabbix.x86_64                4.3.2-7.el7_8              updates
pcp-export-zabbix-agent.x86_64              4.3.2-7.el7_8              updates
zabbix-agent.x86_64                         3.0.31-1.el7               zabbix
zabbix-get.x86_64                           3.0.31-1.el7               zabbix
zabbix-java-gateway.x86_64                  3.0.31-1.el7               zabbix
zabbix-proxy-mysql.x86_64                   3.0.31-1.el7               zabbix
zabbix-proxy-pgsql.x86_64                   3.0.31-1.el7               zabbix
zabbix-proxy-sqlite3.x86_64                 3.0.31-1.el7               zabbix
zabbix-sender.x86_64                        3.0.31-1.el7               zabbix
zabbix-server-mysql.x86_64                  3.0.31-1.el7               zabbix
zabbix-server-pgsql.x86_64                  3.0.31-1.el7               zabbix
zabbix-web.noarch                           3.0.31-1.el7               zabbix
zabbix-web-japanese.noarch                  3.0.31-1.el7               zabbix
zabbix-web-mysql.noarch                     3.0.31-1.el7               zabbix
zabbix-web-pgsql.noarch                     3.0.31-1.el7               zabbix

安装zabbix-agent

yum -y install zabbix-agent.x86_64

修改配置文件

docker inspect [OPTIONS] NAME|ID [NAME|ID...] 查看nginx容器的IP地址

vi /etc/zabbix/zabbix_agentd.conf 修改server地址为容器的IP地址

这里有个坑就是容器访问到服务器外面的时候使用的并非容器自身地址,agent会报错添加报错的IP即可,报错如下
{:.error}

27623:20200902:075514.013 active check configuration update from [172.20.240.4:10051] started to fail (cannot connect to [[172.20.240.4]:10051]: [111] Connection refused)
27622:20200902:075846.076 failed to accept an incoming connection: connection from "172.20.240.3" rejected, allowed hosts: "172.20.240.4"

systemctl enable zabbix-agent.service 开机自启动

systemctl start zabbix-agent.service 启动服务

放通10050端口

firewall-cmd --zone=public --add-port=10050/tcp --permanent
systemctl restart firewalld.service

或者 (业务中断时间短,服务不会重启)

firewall-cmd --reload

添加center本机的对外IP地址为监控zabbix服务器

修改容器的时区

docker 06ef6e824023 update PHP_TZ="Asia/Shanghai"

中文图形小方框修正

上传宋体字体到容器内

docker cp simsun.ttf a67221334256:/usr/share/zabbix/assets/fonts/simsun.ttf ##拷贝字体
docker exec -it a67221334256 /bin/bash ##进入容器
vi /usr/share/zabbix/include/defines.inc.php ##修改配置文件
define('ZBX_GRAPH_FONT_NAME',           'simsun'); // font file name
define('ZBX_GRAPH_LEGEND_HEIGHT',       120); // when graph height is less then this value, some legend will not show up

这里有个坑是win10复制过来的宋体ttc文件上面去完全不显示文字,试了几个其他的ttf中文字体也是,建议去网上下载宋体ttf格式的文件,测试正常。
{:.error}

安装zabbix服务器(bridge方式——失败)

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      --network=bridge \
      -d mysql:8.0\
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password
docker run --name zabbix-java-gateway -t \
      --network=bridge \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-5.0-latest
docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --network=bridge \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-5.0-latest
docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      --network=bridge \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest
docker run --name zabbix-agent-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      --network=bridge \
      --restart unless-stopped \
      -d zabbix/zabbix-agent:latest

容器问题

vmware collector 无法启动

2.zabbix网络设备监控

华为交换机

交换机上面配置命令

snmp-agent
snmp-agent community read zabbix@123
snmp-agent sys-info version all
snmp-agent target-host trap address udp-domain X.X.X.X udp-port 161 params securityname zabbix@123 v2c
snmp-agent trap enable

3.zabbix虚拟化监控

zabbix添加VCenter和Esxi监控虚拟机运行状态和性能

StartVMwareCollectors - the number of pre-forked vmware collector instances.
This value depends on the number of VMware services you are going to monitor. For the most cases this should be:

servicenum < StartVMwareCollectors < (servicenum * 2)

where servicenum is the number of VMware services. E. g. if you have 1 VMware service to monitor set StartVMwareCollectors to 2, if you have 3 VMware services, set it to 5. Note that in most cases this value should not be less than 2 and should not be 2 times greater than the number of VMware services that you monitor. Also keep in mind that this value also depends on your VMware environment size and VMwareFrequency and VMwarePerfFrequency configuration parameters (see below).

VMwareCacheSize

VMwareFrequency

VMwarePerfFrequency

VMwareTimeout

具体需要配置如下4个参数

  • StartVMwareCollectors
  • VMwareCacheSize
  • VMwareFrequency
  • VMwarePerfFrequency
  • VMwareTimeout
最后修改:2021 年 12 月 06 日
如果觉得我的文章对你有用,请随意赞赏