监控zabbix的安装与使用

文章目录

1.zabbix的安装步骤

使用centos8安装zabbix6.0过程

  1. 安装epel源
bash 复制代码
[root@zabbix ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
  1. 安装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
  1. 安装数据库并启动
bash 复制代码
[root@zabbix ~]# yum install mysql-server.x86_64 -y
[root@zabbix ~]# systemctl enable --now mysqld
  1. 创建用户
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;
  1. 导入数据
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;
  1. 修改配置文件
bash 复制代码
[root@zabbix ~]# sed -i "s/# DBPassword=/DBPassword=123456/" /etc/zabbix/zabbix_server.conf
  1. 安装中文语言包
bash 复制代码
[root@zabbix ~]# yum install langpacks-zh_CN.noarch -y 
  1. 在配置文件中将该两行取消注释
bash 复制代码
[root@zabbix ~]# vim /etc/nginx/conf.d/zabbix.conf
# listen 8080;
# server_name example.com;
  1. 设为开机自启
bash 复制代码
[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent nginx php-fpm
  1. 访问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"
  1. qq开启SMTP功能,并获取授权码
  2. 创建告警媒介

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构建监控网络设备的图形

相关推荐
Beekeeper&&P...12 小时前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
大虾别跑1 天前
docker安装zabbix +grafana
docker·zabbix·grafana
独行soc3 天前
#渗透测试#SRC漏洞挖掘#网络运维# 黑客脚本编写04之脚本与用户交互
运维·安全·面试·bash·交互
꧁薄暮꧂5 天前
Linux解决 -bash: nc: command not found&-bash: nc: 未找到命令
linux·运维·bash
曹天骄5 天前
mac怎么看当前终端是zsh还是bash
开发语言·macos·bash
No8g攻城狮5 天前
【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法
linux·运维·bash
da pai ge6 天前
zabbix搭建钉钉告警流程
钉钉·zabbix
茶颜悦色vv6 天前
shell脚本(2)
linux·web安全·网络安全·bash
?crying7 天前
深入理解 source 和 sh、bash 的区别
linux·开发语言·bash
爱编程的小金毛球球9 天前
-bash: /home/xxx/anaconda3/bin/conda: No such file or directory
linux·conda·bash