1. 总结各系统版本的zabbix安装。
Zabbix Server 提供了三种安装方法
- 二进制包安装: 官方提供了二进制包安装的方法,可以支持CentOS和Debian/Ubuntu的安装
注意:Ubuntu22.04 不支持 Zabbix Server 5.0,只支持 Zabbix Server 6.0以上版本- 源码编译安装: 部署繁琐,生产环境定制安装可以使用
- 基于容器安装: 测试环境使用,参考链接如下
https://www.zabbix.com/documentation/6.0/zh/manual/installation/containers
https://www.zabbix.com/documentation/5.0/zh/manual/installation/containers
https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers安装 Zabbix Server 包:访问链接: https://www.zabbix.com/download 找到仓库的源
#CentOS8安装Zabbix5.0
https://www.zabbix.com/download?
zabbix=5.0&os_distribution=centos&os_version=8&db=mysql&ws=apache#Ubuntu18.04安装Zabbix5.0
https://www.zabbix.com/download?
zabbix=5.0&os_distribution=ubuntu&os_version=18.04_bionic&db=mysql&ws=apache
#CentOS8安装Zabbix4.0
https://www.zabbix.com/download?
zabbix=4.0&os_distribution=centos&os_version=8&db=mysql&ws=apache
#Ubuntu18.04安装Zabbix4.0
https://www.zabbix.com/download?
zabbix=4.0&os_distribution=ubuntu&os_version=18.04_bionic&db=mysql&ws=apache
在ubuntu18.04 安装 Zabbix Server 5.0
#官网下载
[root@zabbix-server ~]#wget
https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-
release_5.0-1+bionic_all.deb
#镜像下载
[root@zabbix-server ~]#wget
https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu/pool/main/z/zabbix-
release/zabbix-release_5.0-1+bionic_all.deb
[root@zabbix-server ~]#dpkg -L zabbix-release
/.
/etc
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/zabbix.list
/etc/apt/trusted.gpg.d
/etc/apt/trusted.gpg.d/zabbix-official-repo.gpg
/usr
/usr/share
/usr/share/doc
/usr/share/doc/zabbix-release
/usr/share/doc/zabbix-release/README.Debian
/usr/share/doc/zabbix-release/changelog.Debian
/usr/share/doc/zabbix-release/copyright
[root@zabbix-server ~]#cat /etc/apt/sources.list.d/zabbix.list
deb http://repo.zabbix.com/zabbix/5.0/ubuntu bionic main
deb-src http://repo.zabbix.com/zabbix/5.0/ubuntu bionic main
#镜像加速
[root@zabbix-server ~]#sed -i.bak
's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#'
/etc/apt/sources.list.d/zabbix.list
[root@zabbix-server ~]#cat /etc/apt/sources.list.d/zabbix.list
deb https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu bionic main
deb-src https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu bionic main
[root@zabbix-server ~]#apt update
#安装包
[root@zabbix-server ~]#apt -y install zabbix-server-mysql zabbix-frontend-php
zabbix-apache-conf zabbix-agent zabbix-get
#安装MySQL
[root@zabbix-server ~]#apt install mysql-server -y
#如果MySQL和ZabbixServer在同一台主机,此项可不改
[root@zabbix-server ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
[root@zabbix-server ~]#systemctl restart mysql.service
#准备数据库和用户
[root@zabbix-server ~]#mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
#初绐化数据库的表
[root@zabbix-server ~]#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |
mysql -uzabbix -p123456 zabbix
#修改Zabbix Server 连接MySQL
[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf
DBPassword=123456
#修改PHP配置
[root@zabbix-server ~]#vim /etc/zabbix/apache.conf
php_value date.timezone Asia/Shanghai
[root@zabbix-server ~]#systemctl restart zabbix-server zabbix-agent apache2
[root@zabbix-server ~]#systemctl is-active zabbix-server zabbix-agent apache2
active
active
active
[root@zabbix-server ~]#systemctl enable zabbix-server zabbix-agent apache2
#安装中文包
[root@zabbix-server ~]#apt -y install language-pack-zh-hans
#浏览器访问
http://server_ip_or_name/zabbix
2. 总结 zabbix主动模式和被动模式简介及实现
Zabbix 监控流程中 Agent 收集数据分为主动和被动两种模式
主动模式和被动模式都是相对 zabbix agent 而言的
Zabbix默认是被动模式,如果有100个监控项,被动模式需要 Zabbix Server找 Zabbix Agent要100次
主动模式是Zabbix Server给 Zabbix Agent发送一个包括100个监控项的任务清单,Zabbix Agent根据任 务清单,采集好100个监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式 只需要发送一次数据,大大提高了传输效率。
被动模式: Server 向 Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100个 监控项,则需要100次交互
主动模式: Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给 server/proxy,如有100个监控项,只需要1次交互即可
注意: 两种模式可以在Zabbix Server上同时存在,可以将一部分监控项设为主动,其它设为被动模式Zabbix 的主动和被动模式工作原理:
被动模式监测通信过程如下:
Server打开一个TCP连接
Server发送请求
agent.ping Agent接收到请求并且响应
Server处理接收到的数据
关闭TCP连接
被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很多端口,就会出现server端性能瓶颈问题。
主动模式监测通信过程如下:
zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数据值给server或者proxy。
zabbix多久获取一次active items?
它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重 试。
3. 总结 zabbix proxy主动及被动案例
Zabbix Proxy 也分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样
Zabbix Proxy的模式是从Zabbix Proxy 角度来说的
Zabbix Proxy在主动模式下要主动地向zabbix server周期性的申请获取zabbix agent的监控项信息,此模式可以大幅降低Zabbix Server的压力,生产推荐使用
Zabbix Proxy在被动模式下要被动地等待zabbix server的连接,并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据。
注意: Zabbix Proxy 的主动模式和被动模式和Agent的主动被动模式没有关系
4. 总结自定义监控,监控linux, nginx, 并基于短信/微信报警。
监控流程:
1 明确监控的内容
2 内置的模板中是否有内容的实现
3 如果没有,只能自定义
4 编写采集数据的命令程序实现
5 修改agent 配置,添加自定义监控项
6 创建模板
7 在模板创建监控项
8 主机上关联模板
自定义监控项配置监控项键值的格式
客户端可以自定义监控项,在Zabbix Agent 配置文件添加内容,格式如下:
#cat /etc/zabbix/zabbix_agentd.conf
#cat /etc/zabbix/zabbix_agent2.conf
UserParameter=<key>,<shell command> Include=/etc/zabbix/zabbix_agentd.d/*.conf
#或者创建独立的自定义文件
#cat /etc/zabbix/zabbix_agentd.d/*.conf
#cat /etc/zabbix/zabbix_agent2.d/*.conf
UserParameter=<key>,<shell command>
测试监控项:在Zabbix Agent 上执行测试#不需要重启服务:zabbix_agentd -t "在客户端定义的key名[arg1,arg2,...]"zabbix_agent2 -t "在客户端定义的key名[arg1,arg2,...]"在Zabbix Server上可以使用zabbix_get工具获取自定义监控项#需要重启服务:systemctl restart zabbix-agent2.servicezabbix_get -s 客户端IP -p 10050 -k "在客户端定义的key名[arg1,arg2,...]"监控 Nginx 服务查看nginx状态页的宏定义路径:可以修改宏定义
#安装nginx[root@ubuntu200406 ~]#apt install nginx -y#然后配置nginx状态页[root@ubuntu200406 ~]#vim /etc/nginx/sites-enabled/defaultlocation /basic_status { #basic_status是宏定义路径,Zabbix系统默认监控路径stub_status;}#语法检查没有问题[root@ubuntu200406 ~]#nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful#重新加载nginx即可[root@ubuntu200406 ~]#nginx -s reload此时,浏览器访问192.168.31.181/basic_status即可,如下图:
给 192.168.31.181 再添加一个Nginx by Zabbix agent 模版:![]()
![]()
5. 完成1键安装zabbix agent脚本,可以用于ubuntu系统。
#CentOS和Ubuntu 通用
[root@ubuntu1804 ~]#cat install_zabbix_agent_src.sh
#!/bin/bash
ZABBIX_VER=5.0.13
FILE=zabbix-${ZABBIX_VER}.tar.gz
INSTALL_DIR=/apps/zabbix_agent
SERVER=10.0.0.100
HOST=`hostname -I`
. /etc/os-release
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
check(){
wget https://cdn.zabbix.com/zabbix/sources/stable/${ZABBIX_VER%.*}/zabbix-$ZABBIX_VER
.tar.gz
[ -e ${FILE} ] || { color "$FILE 文件不存在,请检查" 1 ; exit 1; }
}
prepare (){
if [ $ID = "centos" $ID = "rocky" ];then
yum -y install gcc make pcre-devel || { color "zabbix agent 相关包安装失
败,请检查" 1 ;exit; }
else
apt -y install gcc make || { color "zabbix agent 相关包安装失败,请检查" 1
;exit; }
fi
id zabbix &> /dev/null || useradd -r zabbix
}
install() {
tar xf $FILE
cd zabbix-$ZABBIX_VER
./configure --prefix=${INSTALL_DIR} --enable-agent
make && make install
}
config () {
sed -i.bak -e "s/Server=127.0.0.1/Server=$SERVER/" -e "s/Hostname=Zabbix
server/Hostname=$HOST/" ${INSTALL_DIR}/etc/zabbix_agentd.conf
echo 'PATH=${INSTALL_DIR}/bin/:${INSTALL_DIR}/sbin/:$PATH' >
/etc/profile.d/zabbix_agent.sh
}
service (){
cat > /lib/systemd/system/zabbix-agent.service <<EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=${INSTALL_DIR}/sbin/zabbix_agentd -c
${INSTALL_DIR}/etc/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now zabbix-agent.service
systemctl is-active zabbix-agent.service && color "Zabbix Agent 安装完成并启动"
0
}
check
prepare
install
config
service
6. 完成1键脚本,可以基于zabbix api添加zabbix agent到zabbix web。
API添加主机前,需要预先知道要添加的主机IP、此主机预先安装并配置好zabbix agent、预先知道要关联
的模板ID/组ID等信息,然后同API提交请求添加
#添加一台主机
[root@zabbix-server ~]#vim ./zabbix-api-addhost.sh
#!/bin/bash
ZABBIX_SERVER=10.0.0.100
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
HOST=10.0.0.106
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'web-api-$HOST'", #创建主机名称
"name": "'web-api-$HOST'", #可见的名称
"interfaces": [
{
"type": 1, #类型为1表示agent,2是SNMP,3是IPMI,4是JMX
"main": 1, #主要接口
"useip": 1, #0是使用DNS,1是使用IP地址
"ip": "'$HOST'", #添加的zabbix agent的IP地址
"dns": "",
"port": "10050" #agent使用的端口
}
],
"groups": [
{
"groupid": "2" #添加到的组的ID
}
],
"templates": [
{
"templateid": "10001" #关联的模板的ID
}
]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php | python3 -m json.tool
[root@zabbix-server ~]#./zabbix-api-addhost.sh
{
"jsonrpc": "2.0",
"result": {
"hostids": [
"10273"
]
},
"id": 1
}
[root@zabbix-server ~]#./zabbix-api-gethostlist.sh
{
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084",
"host": "Zabbix server"
},
{
"hostid": "10270",
"host": "10.0.0.105"
},
{
"hostid": "10273",
"host": "10.0.0.106"
}
],
"id": 1
}