Zabbix安装部署

Zabbix架构

zabbix-server:核心服务器、接收监控数据、转发数据

zabbix-agent:部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server

zabbix-UI:zabbix美化的图形操作平台,基于PHP开发了这个web平台页面

zabbix-proxy:分布式监控系统

Zabbix部署全流程

1.部署yum仓库

https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/

#安装zabbix.repo仓库文件

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

#修改zabbix仓库软件源为清华源:

sed -i 's#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo

sudo sed -i.bak 's/http:\/\/.*.ubuntu.com/http:\/\/mirrors.aliyun.com/g' /etc/apt/solrces.list   #ubuntu修改软件源为阿里云命令

#安装zabbix-server服务端以及数据库

#zabbix-server-mysql  以mysql作为存储开发的zabbix.server服务端程序

#zabbix-web-mysql  php核心程序,zabbix-UI页面,也是以mysql为存储

#zabbix-agent  采集客户端的核心程序

#mariadb-server  安装mysql服务端程序

yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server

#启动mysql,且创建用户,待会儿用于和zabbix链接,以及创建zabbix库,存储数据。

#启动mariadb数据库,设置开机启动

systemctl start mariadb && systemctl enable mariadb

#设置mariadb数据库,创建zabbix库,存储监控数据,且创建账号

mysqladmin password lushao

mysql -uroot -plushao -e 'create datebase zabbix character set utf8 collate utf8_bin;'

#创建用户账号,zabbix密码是123456,给予权限是,zabbix这个用户对于zabbix这个库下的所有表都是最大权限

mysql -uroot -plushao -e "grant all privlleges on zabbix.* to zabbix@localhost identified by 'lushao';"

#查看库是否建好了

mysql -uroot -pushao -e "show databases;"

#导入zabbix服务端的数据库内容

#用zcat直接读取gz压缩包的数据,且管道符交给mysql命令往zabbix库中导入数据

zcat /usr/share/doc/zabbix-server-mysql-4.0.42/create.sql.gz | mysql -uroot -plushao zabbix

#技巧,查找命令来自于哪个软件包,便于你去安装

PS:yum provides zcat

yum install gzip -y

#修改zabbix-server服务端配置文件,指明子的ip,便于agent去链接

#找出这个文件中以大写和小写开头的行,也就是找出有内容的行,去掉#开头的注释(grep "^[a-Z]" /etc/zabbix/zabbix_server.conf)

#配置文件不能写中文

grep "^[a-Z]" /etc/zabbix/zabbix_server.conf       #改成cat > /etc/zabbix/zabbix_server.conf <<'EOF'(覆盖zabbix_server.conf配置文件内容

LogFile=/var/log/zabbix/zabibix_server.log

LogFileSize=0

PidFile=/var/run/zabbix/zabibix_server.pid

SocketDir=/var/run/zabbix

DBHost=localhost         #指明mysql的地址  zabbix-server mysql

DBName=zabbix           #数据库名字

DBUser=zabbix             #数据库的链接用户

DBPassword=lushao     #数据库的密码

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

Timeout=4

AlertScriptsPath=/usr/lib/zabbix/alertscripts     #存放自定义监控项脚本的目录

ExternalScripts=/usr/lib/zabbix/externalscripts

LogSlowQueries=3000

EOF

#服务端配置文件写好了,启动zabbix服务端,且开机自启

systemctl start zabbix-server && systemctl enable zabbix-server

#检查zabbix-server的端口是否运行  10051

netstat -tunlp|grep zabbix

至此,zabbix-server服务端以及zabbix-UI就安装好了,但是zabbix图形化平台还不能访问,还得基于LNMP、LAMP,区别在于web前端到底是nginx去代理,还是apache去代理,zabbix不同版本不一样,zabbix4.0只支持apache版本

apache配置

#修改时区,改为中国,因为你得让apache支持中文

vim /etc/httpd/conf.d/zabbix.conf

#将时区修改为:php_value date.timezone Asia/shanghai

#启动80端口

systemctl start httpd

安装zabbix-web-mysql时,该程序封装了php程序和httpd程序

访问zabbix-UI前端web平台

zabbix-server服务器IP/zabbix      #比如192.168.1.12/zabbix

#zabbix默认前端账号密码

账号:Admin

密码:zabbix

#修改zabbix-server时区,ntpdate

sudo cp /usr/share/zoneinfo/Asia/shanghai /etc/localtimedate -R

#修改zabbix-UI字符乱码,下载字体,修改zabbix的字体支持

yum install wqy-microhei-fonts -y

#拷贝字体给zabbix用,覆盖zabbix-UI图形字体

cp /usr/share/fonts/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf

如何选择监控系统

Zabbix与Prometheus的对比

zabbix:物理机、硬件设备的监控用的比较多;

Prometheus:docker容器,Kubernetes监控企业用的比较多;

PS有的监控不全面,也可以搭配zabbix和prometheus一起使用。

zabbix:LTS版本和标准版本

LTS更稳定,1.5年发布一次,更适用大型企业环境;

标准版能更早体验新功能,6个月发布一次。

windows不能安装zabbix-server,不支持作为服务器,但是可以安装zabbix-agent。

快速安装多台Centos系统

通过VMware克隆虚拟机

#修改虚拟机IP地址

sudo vim /etc/netplan/00-installer-config.yaml

#检查IP地址

ip add

#安装中文字体

sudo yum -y install language-pack-zh-hans

#查找文件

sudo find / name "zabbix.conf".php

 安装zabbix(集群)及高可用测试

修改计算机

#分别在4台服务器上执行

sudo hostnamectl set-hostname db01           #数据库服务器

sudo hostnamectl set-hostname  zabbix01

sudo hostnamectl set-hostname  zabbix02

sudo hostnamectl set-hostname  zabbix03

 Docker安装zabbix

添加docker软件源,安装docker

#更新一下仓库

sudo yum update

#安装组件

sudo yum install -y yum-transport-https ca-certificates curl software-properties-common

#添加key

curl -fsSL https://download.docker.com/linux/centos/gpg | sudo yum-key add -

#添加阿里云的docker源

sudo add-yum-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/centos $(lsb_release -cs) stable"

#安装

sudo apt -y install docker-ce docker-ce-cli containerd.io

#查看版本

sudo docker version

#配置163镜像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors":["http://hub.mirror.c.163.com"]

}

EOF

#把用户添加到docker组

sudo usermod -aG docker lushao

#应用配置并重启docker

sudo systemctl daemon-reload

sudo systemctl restart docker && sudo systemctl enable docker

 docker运行单个zabbix-server

#创建专用于zabbix组件容器的网络

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

#安装MySQL数据库

sudo mkdir /date/ -p

sudo docker run --name mysql8-server -t \

         -e MYSQL_DATABASE="zabbix" \                #创建zabbix数据库

         -e MYSQL_USER="zabbix" \                         #创建zabbix数据库用户名

         -e MYSQL_PASSWORD="123456" \             #使用这个密码

         -e MYSQL_ROOT_PASSWORD="123456" \   #设置root的密码为123456

         --network=zabbix-net \

         -v /etc/localtime:/etc/localtime:ro \             #把本地的时区以只读形式挂载到docker里面

         -v /data/zabbix/mysql8/data:/var/lib/mysql \      #把mysql文件持久化到本地的文件夹下

         -d mysql:8.0 \

         --character-set-server=utf8mb4 --collation-server=utf8mb4_bin \    #使用utf8mb4的字符集来启动

         --default-authentication-plugin=mysql_native_password     #以这个为默认的认证插件

 启动zabbix server实例,并将其关联到已创建的MySQL server:

注意:数据库zabbix的用户密码为123456,root用户密码为123456,请根据实际修改

sudo docker run --name zabbix-server -t \

         -e DB_SERVER_HOST="mysql8-server" \                #配置数据库的地址

         -e MYSQL_DATABASE="zabbix" \                #使用数据的名字

         -e MYSQL_USER="zabbix" \                         #创建zabbix数据库用户名

         -e MYSQL_PASSWORD="123456" \             #使用这个密码

         -e MYSQL_ROOT_PASSWORD="123456" \   #设置root的密码为123456

         -v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \   #把docker容器的目录持久化到本地的目录

         --network=zabbix-net \

         -v /etc/localtime:/etc/localtime:ro \             #把本地的时区以只读形式挂载到docker里面

         -p 10051:10051 \      

         --restart unless-stopped \

         --d zabbix/zabbix-server-mysql:latest       

#zabbix server实例将10051/TCP 端口暴露给主机

启动zabbix Web界面,并将其关联到已创建的MySQL server和zabbix  server

sudo docker run --name zabbix-web -t \

         -e ZBX_SERVER_HOST="zabbix-server" \                #Zabbix服务器主机名

         -e DB_SERVER_HOST="mysql8-server" \                #数据库的主机名

         -e PHP_TZ="Asia/Shanghai" \                        #使用默认的时区是上海

         -e MYSQL_DATABASE="zabbix" \                #使用数据库的名称是zabbix

         -e MYSQL_USER="zabbix" \                         #创建zabbix数据库用户名

         -e MYSQL_PASSWORD="123456" \             #使用这个密码

         -e MYSQL_ROOT_PASSWORD="123456" \   #设置root的密码为123456

         --network=zabbix-net \

         -v /etc/localtime:/etc/localtime:ro \             #把本地的时区以只读形式挂载到docker里面

         -p 80:8080 \      

         --restart unless-stopped \

         --d zabbix/zabbix-server-mysql:latest       

#zabbix server实例将10051/TCP 端口暴露给主机

 启动zabbix agent界面,并将其关联到已创建的zabbix server

sudo docker run --name zabbix-agent2 -t \

         -e ZBX_SERVER_HOST="zabbix-server" \                #Zabbix服务器主机名

         -e ZBX_SERVER_PORT="10051" \                #数据库的主机名

         --network=zabbix-net \

         -v /etc/localtime:/etc/localtime:ro \            #把本地的时区以只读形式挂载到docker里面 

         --restart unless-stopped \

         --d zabbix/zabbix-server-mysql:latest       

 #检查

sudo docker logs -f mysql8-server

sudo docker logs -f zabbix-server

sudo docker ps

#没有问题后,浏览器访问zabbix地址,docker运行的zabbix不需要在web端初始化,直接访问即可

#修改zabbix-UI字符乱码,下载字体,修改zabbix的字体支持

yum install wqy-microhei-fonts -y

#拷贝字体给zabbix用,覆盖zabbix-UI图形字体

sudo docker cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc zabbix-web:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf

#修改zabbix-server时区,ntpdate

sudo cp /usr/share/zoneinfo/Asia/shanghai /etc/localtime

Docker-compose安装zabbix集群,实现高可用

#创建用于存放zabbix数据库的目录

sudo mkdir /date/zabbix -p

cd /data/zabbix/

#新建docker-compose.yaml文件

sudo vim docker-comepose.yaml

#输入:set paste 然后按i键,进入插入模式,填入以下内容

version:3.1
services:
zabbix-mysql8:                   #mysql容器参数说明
image: mysql:8.0
container_name: zabbix-mysql8
# docker安全验证
security_opt:
- seccomp:unconfined
restart: a]ways
command:[mysqld,--character-set-server=utf8mb4--collation-server=utf8mb4_bin,--default-authentication-plugin=mysql_native_password]
restart: always
networks :
- zabbix_net
ports:
- 3306:3306
environment:                                
- MYSQL_ROOT_PASSWORD=123456         #root密码
volumes:

- /etc/localtime:/etc/localtime:ro

#- ./mysql8/conf:/etc/mysql/conf.d

- ./mysql8/data:/var/lib/mysql

zabbix-server01:                             #zabbix-server01容器参数说明
image: zabbix/zabbix-server-mysql: latest
container_name: zabbix-server0l
restart: always
networks :
- zabbix_net
depends_on:
- zabbix-mysql8
ports:
- 10051:10051
environment:                                   
- ZBX_LISTENPORT=10051                   #zabbix-server监听端口
- ZBX_NODEADDRESSPORT=10051             #当前zabbixHA端口
- DB_SERVER_HOST=zabbix-mysql8             #mysql主机名
- MYSQL_DATABASE=zabbix
- MYSOL_USER=zabbix
- MYSQL_PASSWORD=123456
- MYSQL ROOT_PASSWORD=123456
- ZBX_AUTOHANOOENAME=fqdn                       #当前zabbixHA节点名

- ZBX_AUTONODEADDRESS=fqdn                     #当前zabbixHA地址
- ZBX_STARTREPORTWRITERS=2                     #zabbix-server进程数

- ZBX_TIMEOUT=30                                              #超时时间

- ZBX_UNREACHABLEPERIOO=120                   #不可达的总时长

volumes:
- /etc/localtime:/etc/localtime:ro
- ./zabbix-server01/alertscripts:/usr/lib/zabbix/alertscripts

zabbix-server02:                             #zabbix-server02容器参数说明
image: zabbix/zabbix-server-mysql: latest
container_name: zabbix-server02
restart: always
networks :
- zabbix_net
depends_on:
- zabbix-mysql8
ports:
- 20051:20051
environment:                                   
- ZBX_LISTENPORT=20051                   #zabbix-server监听端口
- ZBX_NODEADDRESSPORT=20051             #当前zabbixHA端口
- DB_SERVER_HOST=zabbix-mysql8             #mysql主机名
- MYSQL_DATABASE=zabbix
- MYSOL_USER=zabbix
- MYSQL_PASSWORD=123456
- MYSQL ROOT_PASSWORD=123456
- ZBX_AUTOHANOOENAME=fqdn                       #当前zabbixHA节点名

- ZBX_AUTONODEADDRESS=fqdn                     #当前zabbixHA地址
- ZBX_STARTREPORTWRITERS=2                     #zabbix-server进程数

- ZBX_TIMEOUT=30                                              #超时时间

- ZBX_UNREACHABLEPERIOO=120                   #不可达的总时长

volumes:
- /etc/localtime:/etc/localtime:ro
- ./zabbix-server02/alertscripts:/usr/lib/zabbix/alertscripts

zabbix-server03:                             #zabbix-server03容器参数说明
image: zabbix/zabbix-server-mysql: latest
container_name: zabbix-server03
restart: always
networks :
- zabbix_net
depends_on:
- zabbix-mysql8
ports:
- 30051:30051
environment:                                   
- ZBX_LISTENPORT=30051                   #zabbix-server监听端口
- ZBX_NODEADDRESSPORT=30051             #当前zabbixHA端口
- DB_SERVER_HOST=zabbix-mysql8             #mysql主机名
- MYSQL_DATABASE=zabbix
- MYSOL_USER=zabbix
- MYSQL_PASSWORD=123456
- MYSQL ROOT_PASSWORD=123456
- ZBX_AUTOHANOOENAME=fqdn                       #当前zabbixHA节点名

- ZBX_AUTONODEADDRESS=fqdn                     #当前zabbixHA地址
- ZBX_STARTREPORTWRITERS=2                     #zabbix-server进程数

- ZBX_TIMEOUT=30                                              #超时时间

- ZBX_UNREACHABLEPERIOO=120                   #不可达的总时长

volumes:
- /etc/localtime:/etc/localtime:ro
- ./zabbix-server03/alertscripts:/usr/lib/zabbix/alertscripts

zabbix-agent2:                                #zabbix-agent容器参数说明
image: zabbix/zabbix-agent2:latest
container_name: zabbix-agent2
restart:always
networks:
- zabbix_net
environment:
- ZBX_HOSTNAME=zabbix server                         #zabbixagent主机名,默认zabbix server
- ZBX_SERVER_HOST=zabbix-server01              #第一个zabbix server
- ZBX_SERVER_PORT=10051                               #第一个zabbix server的端口
- ZBX_ACTIVESERVERS=zabbix-server02:20051,zabbix-server03:30051           #主动模式下zabbix server,会自动添加zabbix-server01,所以不需要单独配置01
- ZBX_PASSIVESERVERS=zabbix-server02,zabbix-server03                              #被动模式下zabbix server,会自动添加zabbix-server01,所以不需要单独配置01

volumes:
- /etc/localtime:/etc/localtime:ro
zabbix-web:                                    #zabbix-web容器参数说明
image: zabbix/zabbix-web-nginx-mysql:latest
container_name: zabbix-web
restart: always
networks:
- zabbix_net
depends_on:
- zabbix-mysql8
ports:
- 80:8080
environment:
- DB_SERVER_HOST=zabbix-mysql8             #mysql主机
- MYSQL_USER=zabbix                                   #mysql用户名
- MYSQL_PASSWORD=123456                       #mysql密码
- ZBX_TIMEOUT=30                                          #超时时间
- ZBX_UNREACHABLEPERIOD=120                #不可达时间
- PHP_TZ=Asia/Shanghai                                  #时区
volumes:
- /etc/localtime:/etc/localtime:ro

networks:
    zabbix_net:
        driver: bridge

#然后按ESC键,输入:wq保存退出

docker-compose后台运行zabbix

sudo docker-compose up -d

#检查日志

sudo docker logs -f 容器name或容器id

sudo docker ps

sudo docker logs -f zabbix-server

#修改zabbix-UI字符乱码,下载字体,修改zabbix的字体支持

yum install wqy-microhei-fonts -y

#拷贝字体给zabbix用,覆盖zabbix-UI图形字体

sudo docker cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc zabbix-web:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf

#修改zabbix-server时区,ntpdate

sudo cp /usr/share/zoneinfo/Asia/shanghai /etc/localtime

测试:将zabbix-server03主服务器停止后,系统自动将zabbix-server02设置为主服务器,表示高可用自动切换没有问题,可以通过仪表板查看到相关信息。

#停止zabbix主服务器

docker stop zabbix-server03

你可能感兴趣的:(zabbix,运维)