- 总结zabbix安装过程(选择课程演示版本)。
1. 下载仓库
# 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
2. 安装Zabbix server,Web前端,agent
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
3. 创建初始数据库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 -uroot -p
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
4. 为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf
DBPassword=password
5. 为Zabbix前端配置PHP
编辑配置文件 /etc/zabbix/nginx.conf uncomment and set 'listen' and 'server_name' directives.
listen 8080;
server_name example.com;
6. 启动Zabbix server和agent进程
重启Zabbix server和agent进程,并为它们设置开机自启:
# systemctl restart zabbix-server nginx
# systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
- 总结 zabbix主动模式和被动模式简介及实现
主动模式:在确认监控项后agent端按时间主动的打包数据发送到zabbix #提高了传输效率
被动模式:假如存在多个监控项,需要多次tcp连接才能获取
主动模式:
在 Zabbix Agent 配置主动模式
vim /etc/zabbix/zabbix_agentd.con
Server=192.168.1.139 #被动模式指向 Zabbix Server的IP或FQDN,默认模式,在主动
模式此项可选的,建议配置,否则ZBX显示红色
ServerActive=192.168.1.139 #主动模式指向 Zabbix Server的IP或FQDN
Hostname=192.168.1.139-rocky #当前主机的IP,此项必须Zabbix Server中设置的主机名称相同,默认使用本机的主机名
HostnameItem=system.hostname #也可以使用此system.hostname监控项自动生成主机名称,默认就是使用本机的主机名使用主动模式需要将主机监控项也更改为主动模式的监控项
3. 总结 zabbix proxy主动及被动案例
zabbix作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控
数据,然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替zabbix server
收集监控数据,然后把数据汇报给zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix
server的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。
例子:
Ubuntu 安装 Zabbix Proxy 6.0
[root@ubuntu2204 ~]#wget
https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbixrelease_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
创建数据库和授权,导入数据结构
[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 ~] #zcat /usr/share/doc/zabbix-proxy
mysql/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
修改porx配置
[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的用户密码
在zabbi创建代理并在要监控的主机下使用代理
简图
4. 总结自定义监控,监控linux, nginx, 并基于短信/email报警。
定义模板 #比监控项灵活
- 创建模板,模板必须属于某个主机组
- 在模板中创建监控项、图形、触发器
- 将模板关联到需要的对应主机
- 可以通过将修改模板更改多个监控项
- 导出和导入模板
监控项配置:
自定义监控项
cat /etc/zababix/zabbix_agentd.d/test.conf #建议自建文件
UserParameter=linux_use,df | awk '$7 == "/" {print $5}' | sed 's/%//'
#=linux_use,df:自定义的键名
#df | awk '$7 == "/" {print $5}' | sed 's/%//':这段命令用于获取根目录 / 的磁盘使用率
添加主机
添加监控项
部署监控nginx
apt update && apt -y install nginx | yum install -y nginx
vim /etc/nginx/sites-enabled/default #ubntu
vim /etc/nginx/nginx.conf #redhat# 添加下面三行, Zabbix 默认监控 /basic_status, 此处为 /status ,需要和 zabbix 的模板定义的路径要保持一致 location /status {stub_status;}
添加自带的nginx监控模板
邮箱报警
在邮箱上开启SMTP功能,利用此邮箱实现发送报警邮件
创建报警媒介类型实现发信人功能:管理-->报警媒介类型-->创建报警媒介类型
报警类型,添加消息模板用于发送信息
定义收件人
定义发送事件
#发送给组或人员
#选择触发项(模板或触发器等)
5. 完成部署zabbix agent脚本,可适配rocky和ubuntu系统。
#!/bin/bash# 定义 Zabbix server 的 IP 地址或主机名
ZABBIX_SERVER="192.168.1.139"
ZABBIX_AGENT_CONF="/etc/zabbix/zabbix_agentd.conf"if [ -f /etc/os-release ]; then. /etc/os-releaseOS=$IDVERSION=$VERSION_ID
elseecho "无法检测操作系统类型。"exit 1
fi# 根据操作系统类型安装 Zabbix Agent
if [ "$OS" == "ubuntu" ]; thenecho "检测到 Ubuntu 系统,开始安装 Zabbix Agent..."# 更新软件包列表apt-get update# 安装 Zabbix Agentwget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.debdpkg -i zabbix-release_6.0-4+ubuntu22.04_all.debapt-get updateapt-get install -y zabbix-agentelif [ "$OS" == "rocky" ]; thenecho "检测到 Rocky Linux 系统,开始安装 Zabbix Agent..."# 安装 Zabbix Agentrpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-5.el8.noarch.rpmdnf clean alldnf install -y zabbix-agentelseecho "不支持的操作系统:$OS"exit 1
fi# 配置 Zabbix Agentsed -i "s/^Server=.*/Server=$ZABBIX_SERVER/" $ZABBIX_AGENT_CONF
sed -i "s/^\s*ServerActive=.*/ServerActive=${ZABBIX_SERVER}/" $ZABBIX_AGENT_CONF
sed -i "s/^Hostname=.*/Hostname=$(hostname)/" $ZABBIX_AGENT_CONF
6. 完成命令行脚本,可以基于zabbix api添加zabbix agent到zabbix web。
ZABBIX_SERVER=test.org
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
HOST=192.168.1.133curl -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