文章目录
1、总结zabbix安装过程(选择课程演示版本)。
#上官网选择对应系统版本
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=ubuntu&os_version=22.04&components=proxy&db=mysql&ws=
添加仓库路径包安装
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
#安装包
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent zabbix-get
创建初始数据库
root@ubuntu2:~# apt install mysql-server -y
mysql -uroot -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
关闭变量
mysql> set global log_bin_trust_function_creators = 0;
mysql> exit;
配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=123456
配置php
vim /etc/zabbix/nginx.conf
listen 8080;
server_name zabbix.huang.com;
启动Zabbix server和agent进程
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
2、总结 zabbix主动模式和被动模式简介及实现
Zabbix 有两种工作模式: 主动和被动模式
无论是模式还是被动模式,都是站在zabbix agent 角度来说的工作模式
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 Agent 配置主动模式
vim /etc/zabbix/zabbix_agentd.conf
Server = 192.168.10.105 # 被动模式指向 Zabbix Server 的 IP 或 FQDN
ServerActive = 192.168.10.105 # 主动模式指向 Zabbix Server 的 IP 或 FQDN
Hostname = 192.168.10.106 # 当前主机的IP,此项必须和Zabbix Server中设置的主机名称相
同
Timeout = 30 # 建议修改
#重启服务
systemctl restart zabbix-agent.service
3、总结 zabbix proxy主动及被动案例
注意: Zabbix Proxy的大版本必须要和zabbix server版本相同,否则很可能会导致出现 zabbix server与
zabbix proxy不兼容问题
Ubuntu 安装 Zabbix Proxy 6.0
[root@ubuntu2204 ~] #wget
https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix
release_6.0-4%2Bubuntu22.04_all.deb
[root@ubuntu2204 ~] #dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
[root@ubuntu2204 ~] #sed -i.bak
's/repo.zabbix.com/mirrors.tuna.tsinghua.edu.cn\/zabbix/'
/etc/apt/sources.list.d/zabbix.list
[root@ubuntu2204 ~] #apt update
[root@ubuntu2204 ~] #apt -y install zabbix-proxy-mysql zabbix-sql-scripts
准备数据库
为Zabbix Proxy 创建一个单独的数据库
注意:Zabbix server和Zabbix proxy不能使用相同的数据库。 如果它们安装在同一主机上,则proxy数
据库必须具有不同的名称
[root@zabbix-proxy-active ~]#apt -y install mysql-server
[root@zabbix-proxy-active ~]#mysql
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.17 |
+-----------+
1 row in set (0.00 sec)
mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin;
mysql> create user proxy@'localhost' identified by '123456';
mysql> grant all on zabbix_proxy_active.* to proxy@'localhost' ;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
[root@zabbix-proxy-active ~]#yum -y install mysql
[root@zabbix-proxy-active ~]#apt -y install mysql
#包安装的路径
[root@zabbix-proxy-active ~]#zcat /usr/share/doc/zabbix-proxymysql/schema.sql.gz | mysql -uproxy -p123456 -h10.0.0.101 zabbix_proxy_active
[root@ubuntu2204 ~]#mysql
mysql> set global log_bin_trust_function_creators = 0;
mysql> exit
修改proxy配置文件
[root@zabbix-proxy-active ~] #grep '^[^#]' /etc/zabbix/zabbix_proxy.conf
ProxyMode = 0 # 主动模式为 0 ,被动模式为 1, 默认为 0 即主动模式
Server = 10 .0.0.100 # 指向 Zabbix Server
Hostname = zabbix-proxy-active # 此名称必须和后面 Web 管理页的 agent 代理程序名称相同
DBHost = localhost #MySQL 服务器地址
DBName = zabbix_proxy_active #MySQL 数据库名
DBUser = proxy # 连接 MySQL 的用户
DBPassword = 123456 # 连接 MySQL 的用户密码
LogFile = /var/log/zabbix/zabbix_proxy.log
LogFileSize = 0
DebugLevel = 4 # 指定日志级别,默认为 3 ,值越大日志越详细
EnableRemoteCommands = 1 # 开启远程命令,允许 server 到 proxy 上执行命令,在故障自愈时使用
PidFile = /var/run/zabbix/zabbix_proxy.pid
SocketDir = /var/run/zabbix
ProxyLocalBuffer = 360 # 当 proxy 将数据发送给 server 后将数据仍在本地保存多少时间 ,
默认不保留
ProxyOfflineBuffer = 720 # 当 proxy 和 server 无法连接时将数据在本地保存多长时间 , 默认
1 小时
HeartbeatFrequency = 60 #server 端用来检测 proxy 可用性的心跳信息的时间间隔 , 被动模式无效
ConfigFrequency = 60 # 每间隔多少时间到 server 获取监控项,在 agent 更新端监控
项,只在主动模式有效 , 默认 3600s
DataSenderFrequency = 60 # 数据发送的间隔时间,只在主动模式有效 , 默认 1s, 建议加长
JavaGateway = 10 .0.0.101 # 指向 JAVA gateway 主机
StartJavaPollers = 10 # 指定开启的进程数 , 默认为 0 ,即不开启
SNMPTrapperFile = /var/log/snmptrap/snmptrap.log
CacheSize = 8M # 当主机数量很多时,会将获取的监控项存放在缓存中,生产中
设置 2G
StartDBSyncers = 4 # 启动多少个线程和数据库连接
HistoryCacheSize = 16M # 保存 agent 发送过来的监控数据的内存空间大小,生产中设置2G
HistoryIndexCacheSize = 4M # 历史数据的索引
Timeout = 30 # 获取数据的最长等待时间
ExternalScripts = /usr/lib/zabbix/externalscripts
LogSlowQueries = 3000 # 慢查询时长
# 默认 zabbix-proxy.service 不自动启动,设置服务开机自启
[root@zabbix-proxy-active ~] #systemctl enable --now zabbix-proxy.service
4、总结自定义监控,监控linux, nginx, 并基于短信/email报警。
从163中开启服务,保存授权码,163的账号密码为授权码,按照图下面的设置完成后返回进行测试
5、完成部署zabbix agent脚本,可适配rocky和ubuntu系统。
[root@ubuntu1804 ~]#cat install_zabbix_agent_src.sh
#!/bin/bash
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-08-27
#FileName: install_zabbix_agent_src.sh
#URL: http://www.wangxiaochun.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
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、完成命令行脚本,可以基于zabbix api添加zabbix agent到zabbix web。
ZABBIX_SERVER=zabbix.wang.org
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
HOST=192.168.10.105
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,
"main": 1,
"useip": 1,
"ip": "'$HOST'",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php | python3 -m json.tool
7、基于课程演示,构建一个漂亮的granfana大盘。
#安装
apt-get install -y adduser libfontconfig1 musl
root@ubuntu: ~$ wget https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana-enterprise/grafana-enterprise_9.5.9_amd64.deb
dpkg -i grafana-enterprise_9.5.9_amd64.deb
#启动
root@ubuntu: ~$ systemctl enable --now grafana-server.service
安装zabbix插件(Zabbix plugin for Grafana | Grafana Labs)
grafana-cli plugins install alexanderzobnin-zabbix-app
启用
添加地址和密码
保存测试
添加模板