文章目录
-
- 1.zabbix的安装步骤
- 2.zabbix的主动模式和被动模式简介及实现
- [3.zabbix proxy主动及被动](#3.zabbix proxy主动及被动)
- 4.自定义监控,监控linux和连接状态,创建email进行基础报警
- [5.部署zabbix agent脚本,适配rocky和ubuntu系统](#5.部署zabbix agent脚本,适配rocky和ubuntu系统)
- [6.使用脚本,基于zabbix api添加zabbix agent到zabbix web](#6.使用脚本,基于zabbix api添加zabbix agent到zabbix web)
- 7.使用granfana构建监控图形。
1.zabbix的安装步骤
使用centos8安装zabbix6.0过程
- 安装epel源
bash
[root@zabbix ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
- 安装zabbix的repo源
bash
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-5.el8.noarch.rpm
[root@zabbix ~]# yum clean all
[root@zabbix ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
- 安装数据库并启动
bash
[root@zabbix ~]# yum install mysql-server.x86_64 -y
[root@zabbix ~]# systemctl enable --now mysqld
- 创建用户
bash
[root@zabbix ~]# mysql
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
- 导入数据
bash
[root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p123456 zabbix
[root@zabbix ~]# mysql
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
- 修改配置文件
bash
[root@zabbix ~]# sed -i "s/# DBPassword=/DBPassword=123456/" /etc/zabbix/zabbix_server.conf
- 安装中文语言包
bash
[root@zabbix ~]# yum install langpacks-zh_CN.noarch -y
- 在配置文件中将该两行取消注释
bash
[root@zabbix ~]# vim /etc/nginx/conf.d/zabbix.conf
# listen 8080;
# server_name example.com;
- 设为开机自启
bash
[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent nginx php-fpm
- 访问ip:8080
系统 | 名称 | ip |
---|---|---|
centos8 | zabbix-server | 10.76.0.246 |
centos8 | zabbix-proxy | 10.76.0.182 |
centos8 | zabbix-client1 | 10.76.0.184 |
centos8 | zabbix-client2 | 10.76.0.180 |
2.zabbix的主动模式和被动模式简介及实现
Zabbix默认是被动模式,被动模式需要 Zabbix Server找 Zabbix Agent要数据。
主动模式是Zabbix Server给 Zabbix Agent发送一个监控项的任务清单,Zabbix Agent根据任务清单,采集好监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式只需要发送一次数据,大大提高了传输效率。
主动模式步骤:Server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并进行响应,Server处理接收到的数据,关闭TCP连接
被动模式步骤:zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数据值给server或者proxy。被动模式是指 zabbix agent 被动的接受zabbix server(或者Zabbix Proxy)周期性发送过来的数据收集指令此为默认的工作方式。在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050端口发起tcp连接,然后发送获取监控项数据的指令。
被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix的默认工作模式,但是被动模式的最大问题就是会加大zabbix server的 负载,在数百甚至数千台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载过高还会导致不能及时获取到最新数据被动模式因为性能的原因,一台 Zabbix Server 一般只能监控500台以下的主机,更多的主机建议使用主动模式。默认是被动模式,在被监控的主机上安装zabbix-agent并启动上添加主机并进行关联就可以。
被动模式只需要配置该行
bash
[root@client ~]#vim /etc/zabbix/zabbix_agentd.conf
Server=10.76.0.246 #被动模式指向Zabbix Server的IP或FQDN
主动模式实现修改一下配置
bash
[root@client ~]#vim/etc/zabbix/zabbix_agentd.conf
Server=10.76.0.246 #被动模式指向Zabbix Server的IP或FQDN
ServerActive=10.76.0.246 #主动模式指向Zabbix Server的IP或FQDN
Hostname=10.76.0.184 #当前主机的IP
3.zabbix proxy主动及被动
主动模式 ,Zabbix Proxy 会主动向 Zabbix Server 发送监控数据。这意味着代理程序定期检查预先定义的监控项,并将结果直接发送到服务器。
**特点:**数据推送:代理程序主动将数据发送给服务器。减少服务器负载:由于代理主动发送数据,减少了服务器端的查询负担。网络问题敏感:如果网络有问题或者代理无法连接到服务器,可能会导致数据丢失。适用于大量数据:适合于需要频繁发送大量数据的情况。
被动模式 :被动模式则是 Zabbix Server 定期向 Proxy 请求数据。在这种模式下,Proxy 不会主动发送数据;相反,它等待服务器的请求并响应这些请求。
**特点:**数据拉取:服务器向 Proxy 请求数据。保证数据完整性:即使在网络不稳定的情况下也能保证数据被收集。增加服务器负载:服务器需要定期向每个 Proxy 发起请求。适用于关键数据:适合于需要确保数据完整性和可靠性的场景。
bash
zabbix-proxy安装
[root@zabbix-proxy ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-5.el8.noarch.rpm
[root@zabbix-proxy ~]# yum clean all
[root@zabbix-proxy ~]# dnf install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy
数据库
[root@zabbix-proxy ~]# mysql
mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码。
[root@zabbix-proxy ~]# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p123456 zabbix_proxy
[root@zabbix-proxy ~]# mysql
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
主动模式实现
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
#主动模式为0,被动模式为1,默认为0即主动模式
Server=10.76.0.246 #指向Zabbix Server
Hostname=zabbix-proxy #该名称要与Web管理页的agent代理程序名称相同
DBHost=localhost #MySQL服务器地址
DBName=zabbix_proxy #MySQL数据库名
DBUser=zabbix #连接MySQL的用户
DBPassword=123456 #连接MySQL的用户密码
被动模式
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=1 #0为主动,1为被动,此为默认
server=10.76.0.246 #zabbix server服务器的地址
Hostname=zabbix-proxy #agent代理程序名称相同
DBHost=localhost #数据库服务器地址
DBName=zabbix_proxy #数据库库名称
DBUser=zabbix #连接数据库的用户名称
DBPassword=123456 #数据库用户密码
4.自定义监控,监控linux和连接状态,创建email进行基础报警
bash
[root@zabbix-server ~]# cat /etc/zabbix/zabbix_agentd.d/test.conf
UserParameter=root_filesystem_use,df|awk -F' +|%' '$7 == "/" {print $5 }'
UserParameter=tcp_status_estab,ss -ant|grep -c ESTAB
#客户端测试
[root@client1 ~]# zabbix_agent -t root_filesystem_use
[root@client1 ~]# zabbix_agent -t tcp_status_estab
#重启服务后服务器端才能获取数据
[root@client1 ~]# systemctl restart zabbix-agent.service
#服务器端测试
[root@zabbix-server ~]#yum -y install zabbix-get
[root@client1 ~]# systemctl restart zabbix-agent.service
[root@zabbix-server ~]#zabbix_get -s 10.76.0.184 -p 10050 -k "root_filesystem_use"
[root@zabbix-server ~]#zabbix_get -s 10.76.0.184 -p 10050 -k "tcp_state_estab"
- qq开启SMTP功能,并获取授权码
- 创建告警媒介
5.部署zabbix agent脚本,适配rocky和ubuntu系统
bash
#!/bin/bash
url="https://repo.zabbix.com/zabbix/6.0"
SERVER="10.76.0.246"
HOST=`hostname -I`
. /etc/os-release
if [ $ID = "rocky" $ID = "centos" ];then
rpm -Uvh $url/rhel/$VERSION_ID/x86_64/zabbix-release-6.0-5.el8.noarch.rpm
yum clean all && yum install zabbix-agent -y
sed -i "s/Server=127.0.0.1/Server=$SERVER/" /etc/zabbix/zabbix_agentd.conf
sed -i "s/# Hostname=Zabbix Server/Hostname=$HOST/" /etc/zabbix/zabbix_agentd.conf
elif [ $ID = ubuntu ]; then
wget $url/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu20.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu20.04_all.deb
apt update && apt install zabbix-agent -y
sed -i "s/Server=127.0.0.1/Server=$SERVER/" /etc/zabbix/zabbix_agentd.conf
sed -i "s/# Hostname=/Hostname=$HOST/" /etc/zabbix/zabbix_agentd.conf
else
echo "你的系统不是redhat和ubuntu系列的,请检查您的系统版本!"
exit 1
fi
systemctl start zabbix-agent && systemctl enabled zabbix-agent
6.使用脚本,基于zabbix api添加zabbix agent到zabbix web
bash
#!/bin/bash
zabbix_server="10.76.0.246"
HOST="10.76.0.184"
#获取TOKEN值并赋予变量
TOKEN=$(curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin",
"password": "zabbix"
},
"id": 1
}' "http://${zabbix_server}/api_jsonrpc.php" | jq -r .result)
curl -s -X POST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'$HOST'",
"name": "'linux-$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}/api_jsonrpc.php | python3 -m json.tool
7.使用granfana构建监控图形。
使用grafana构建监控网络设备的图形