第十周作业

本文详细介绍了在Ubuntu系统上安装Zabbix5.0.40的步骤,包括配置数据库、服务器、agent、proxy,以及主动和被动模式的区别和实现。还涉及自定义监控、短信和微信报警的配置,以及提供了一键安装脚本和基于ZabbixAPI的自动化部署脚本。
摘要由CSDN通过智能技术生成

1. 总结各系统版本的zabbix安装。

编译zabbix  #使用ubuntu系统

apt -y install libmysqlclient-dev libsnmp-dev libevent-dev openjdk-8-jdk openjdk-8-jre libcurl3-dev

创建账号和组

groupadd zabbix

useradd -g zabbix zabbix

下载源码并解压

tar xf zabbix-5.0.40.tar.gz

cd zabbix-5.0.40/

mkdir /data/zabbix_server

编译安装:

./configure --prefix=/data/zabbix_server --enable-server --enable-agent  --enable-java --with-mysql --with-net-snmp --with-libcurl --with-libxml

make -j 2 && make install

查看一下

tree /data/zabbix_server/

配置路径:

echo 'PATH=/data/zabbix_server/bin:$PATH' > /etc/profile.d/zabbix.sh

echo 'PATH=/data/zabbix_server/sbin:$PATH' >> /etc/profile.d/zabbix.sh

bash /etc/profile.d/zabbix.sh

source /etc/profile

准备数据库:

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> create user 'zabbix'@'10.0.0.%' identified by '123456';

mysql> grant all privileges on zabbix.* to 'zabbix'@'10.0.0.%';

如果是mysql与zabbix不在同一主机输入

ALTER USER zabbix@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY '123456';

重启服务:

systemctl restart mysql.service

设置远程连接:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address            = 0.0.0.0

mysqlx-bind-address     = 0.0.0.0

同步数据库:

讲下面的三个文件数据全部同步到mysql当中

zabbix-5.0.40/database/mysql/data.sql

zabbix-5.0.40/database/mysql/images.sql

zabbix-5.0.40/database/mysql/schema.sql

这里需要注意,导入的顺序必须正确,否则无法导入成功:

mysql -uzabbix -p123456 -h10.0.0.5 zabbix < zabbix-5.0.40/database/mysql/schema.sql

mysql -uzabbix -p123456 -h10.0.0.5 zabbix < zabbix-5.0.40/database/mysql/images.sql

mysql -uzabbix -p123456 -h10.0.0.5 zabbix < zabbix-5.0.40/database/mysql/data.sql

修改zabbix server配置文件

vim /data/zabbix_server/etc/zabbix_server.conf

ListenPort=10051

LogFile=/tmp/zabbix_server.log

DBHost=10.0.0.5

DBName=zabbix

DBUser=zabbix

DBPassword=123456

DBPort=3306

启动相关业务

zabbix_server -c /data/zabbix_server/etc/zabbix_server.conf

将源码包中的所有关于php页面的文件拷贝到nginx

cp -a zabbix-5.0.40/ui/* /data/nginx/html/

chmod -R 777 /data/nginx/html/

chown -R zabbix.zabbix /data/zabbix_server/

创建zabbix service文件:

killall zabbix_server

vim /lib/systemd/system/zabbix-server.service

[Unit]

Description=Zabbix Server

After=syslog.target

After=network.target

[Service]

Environment="CONFFILE=/data/zabbix_server/etc/zabbix_server.conf"

EnvironmentFile=-/etc/sysconfig/zabbix-server

Type=forking

Restart=on-failure

PIDFile=/tmp/zabbix_server.pid

KillMode=control-group

ExecStart=/data/zabbix_server/sbin/zabbix_server -c $CONFFILE

ExecStop=/bin/kill -SIGTERM $MAINPID

RestartSec=10s

TimeoutSec=0

[Install]

WantedBy=multi-user.target

开启服务:

systemctl daemon-reload

systemctl enable --now zabbix-server.service                       

配置zabbix agent的service文件

如果zabbix agent在运行,没有就不用终止了

killall zabbix_agentd

创建文件:

vim /lib/systemd/system/zabbix-agent.service

[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=/data/zabbix_server/sbin/zabbix_agentd -c /data/zabbix_server/etc/zabbix_agentd.conf

ExecStop=/bin/kill -SIGTERM $MAINPID

RestartSec=10s

User=zabbix

Group=zabbix

[Install]

WantedBy=multi-user.target

开启服务:

systemctl daemon-reload

systemctl enable --now zabbix-agent.service


2. 总结 zabbix主动模式和被动模式简介及实现

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主动和被动模式无需配置即可支持,还可以支持多个主动和被动模式的zabbix Agent同时存在

vim /data/zabbix_agent/etc/zabbix_agentd.conf

Zabbix agent的关键配置有下面三项:

Server=<Zabbix Server>  #被动模式指向zabbix server的IP或FQDN,默认模式

ServerActive=<Zabbix Server> #主动模式指向 Zabbix server的IP或FQDN

Hostname=<当前主机IP> #当前主机的IP,此项必须和Zabbix Server中设置的主机名相同

修改:

ServerActive=10.0.0.4  #向服务器端汇报

Hostname=主机IP    #跟web主机名称必须一样

在zabbix web界面需要单独设置主机的监控项,默认模式下是被动的不需要设置,主动就得去设置

如果是新添加的监控项,需要在类型上选择“zabbix客户端(主动式)”

如果是修改被动的监控项,按照以下步骤批量修改:

最后呈现结果

特别注意:如果是主动模式,主机的名称必须是Hostname同样的地址:

3. 总结 zabbix proxy主动及被动案例

Zabbix Proxy 是一种用于收集 Zabbix Agent 数据的代理服务器,可以减轻 Zabbix Server 的负载。Zabbix Proxy 可以配置为主动模式或被动模式,具体取决于使用场景和需求。

在主动模式下,Zabbix Proxy 会主动从 Zabbix Agent 收集数据,并将数据存储在本地数据库中。然后,Zabbix Proxy 会将数据发送给 Zabbix Server。这种模式适用于监控大量主机和网络不稳定区域的情况,可以减轻 Zabbix Server 的负载,并确保数据的及时性和可靠性。

首先安装zabbix proxy,安装完成之后需要设置mysql单独给zabbix proxy创建一个账号

这次的实验mysql和zabbix proxy放在一个机器上了

mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin;

mysql> create user proxy@'10.0.0.%' identified by '123456';

mysql> grant all on zabbix_proxy_active.* to proxy@'10.0.0.%';

导入数据库:

mysql -uproxy -p123456 -h10.0.0.9 zabbix_proxy_active < zabbix-5.0.40/database/mysql/schema.sql

修改proxy配置文件

vim /data/zabbix_proxy/etc/zabbix_proxy.conf

ProxyMode=0                   #开启主动模式,1是被动模式

Server=10.0.0.4                  #指向zabbix server服务器的地址

ServerPort=10051                #开启端口

Hostname=Zabbix-proxy          #主机的名字,在web界面上也需要需要用这个名字

DBHost=10.0.0.9                 #指定msyql数据库IP地址

DBName=zabbix_proxy_active     #指定mysql数据库名称

DBUser=proxy                   #Mysql用户名

DBPassword=123456             #数据库密码

重启服务:

systemctl restart zabbix-proxy.service

重启之后会开启一个10051端口

开始到zabbix server web界面配置代理:

在zabbix Agent上修改配置,切换到一个agent服务器,修改配置文件

vim /data/zabbix_agent/etc/zabbix_agentd.conf

ServerActive=10.0.0.9     #服务器的指向指向zabbix-proxy

Server=10.0.0.9                #被动模式也修改成zabbix-proxy

systemctl restart zabbix-agent.service

监控项里的设置必须是主动模式,否则即使连接上了也不会生效

接下里将主机的监控修改成代理的监控,也就是agent的机器让zabbix-proxy监控

4. 总结自定义监控,监控win, nginx, 并基于短信/微信报警。

先去配置agent客户端配置文件:#以下操作实现的是如何自定义监控,基于短信微信报警因为个别原因无法完成

vim /data/zabbix_agent/etc/zabbix_agentd.conf

找到

# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

修改成:

Include=/data/zabbix_agent/etc/zabbix_agentd.conf.d/*.conf

在zabbix_agentd.conf.d/的目录下配置自定义的配置文件

cd /data/zabbix_agent/etc/zabbix_agentd.conf.d/到这个目录下开始创建文件

创建文件开始配置:

vim user_login.conf

输入:

UserParameter=user.logn.count,who|wc -l

保存并客户端测试:

zabbix_agentd -t user.logn.count

user.logn.count                               [t|2]

t 文本,与s相同,最大长度不受限制

s 文本,最大长度不受限制

d 带小数的数字

u 无符号整数

m 不支持状态,表示该监控项的设置有错误或权限问题服务端测试

服务器端开始检测:

zabbix_get -s 10.0.0.6 -k user.logn.count

先去创建一个模板取好“名字”然后应用

之后点击模板,然后再开始创建监控项

找到模板点击应用

创建完成之后开始监控项

回到模板主页面点击创建好的监控项,开始创建自定义的监控项:

开始创建模板监控项:

如果是把监控项添加到了主机上的话需要:

点击下面的测试就会先去测试当前的监控是否有效,如果正常将会显示结果

点击添加就会正常使用

UserParameter=tcp.state[*], netstat -nat | grep -c $1

也就是$1识别[*]中的内容,如果是其中一个选项grep -c 就会输出$1的位置选项

但是再web界面的键值上是需要加参数的


5. 完成1键安装zabbix agent脚本,可以用于ubuntu系统。

#!/bin/bash
#判断当前用户是否为root用户
if [ `whoami` = "root"  ];then
	echo "当前用户为root用户,将进行以下程序"
	
else
	echo "当前不是root用户,请更换为root用户"
	exit
fi

#定义agent配置文件变量
VERSION=5.0.40
SERVER=10.0.0.5
HOST_NAME=10.0.0.6
PORT=10050

#安装编译所需依赖包
install_apt(){
	apt update
	apt -y install libmysqlclient-dev libsnmp-dev libevent-dev openjdk-8-jdk openjdk-8-jre libcurl3-dev

}

#创建zabbix用户以及用户组
zabbix_user(){
	groupadd zabbix
	useradd -g zabbix -s /sbin/nologin zabbix
}

#下载源码包并解压
wget_agent(){
#	wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-$VERSION.tar.gz
	tar xf zabbix-$VERSION.tar.gz
	cd zabbix-$VERSION/
	mkdir -pv /data/zabbix_agent
}

#编译安装
make_agent(){
	./configure --prefix=/data/zabbix_agent --enable-agent
	make -j 2 && make install

}

#配置路径以及设置配置文件
zabbix_config(){

	echo 'PATH=/data/zabbix_agent/sbin:$PATH' > /etc/profile.d/zabbix.sh
	export GLOBAL_VARIABLE=/data/zabbix_agent/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
	bash /etc/profile.d/zabbix.sh
	. /etc/profile.d/zabbix.sh
	
	sed -i -e "/^Server=127.0.0.1/c Server=$Server" -e "/^Hostname=Zabbix server/c Hostname=$HOST_NAME" -e "/^# ListenPort=10050/c ListenPort=$PORT" /data/zabbix_agent/etc/zabbix_agentd.conf

	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=/data/zabbix_agent/sbin/zabbix_agentd -c /data/zabbix_agent/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

zabbix_agentd -V

}

install_apt
zabbix_user
wget_agent
make_agent
zabbix_config


6. 完成1键脚本,可以基于zabbix api添加zabbix agent到zabbix web。

#!/bin/bash  
  
# 定义Zabbix API相关参数  
ZABBIX_URL="http://10.0.0.5/zabbix/api_jsonrpc.php"  
USERNAME="zabbix"  
PASSWORD="123456"  
AGENT_NAME="zabbix"  
AGENT_IP="10.0.0.5"  
AGENT_PORT="10051"  
  
# 生成随机的agent id和主机名称  
AGENT_ID=$(echo "random_agent_id" | sha256sum | cut -d' ' -f1)  
HOST_NAME=$(echo "Random Host Name ${AGENT_ID}")  
  
# 定义Zabbix API请求数据  
DATA='{  
  "jsonrpc": "2.0",  
  "method": "host.add",  
  "params": {  
    "hostid": null,  
    "name": "'${HOST_NAME}'",  
    "ip": "'${AGENT_IP}'",  
    "port": '${AGENT_PORT}',  
    "status": 0,  
    "agent": "Zabbix Agent",  
    "interfaces": [  
      {  
        "type": 1,  
        "main": 1,  
        "ip": "'${AGENT_IP}'",  
        "port": '${AGENT_PORT}',  
        "useip": 1,  
        "dns": "",  
        "ip_dns": "127.0.0.1"  
      }  
    ],  
    "description": "Zabbix Agent ${AGENT_NAME}",  
    "inventory_mode": 0,  
    "custom_inventory_script": "",  
    "host_metadata": {  
      "os": "Linux",  
      "os_full": "Ubuntu",  
      "os_short": "UBUNTU",  
      "app_os": "",  
      "app_os_full": "",  
      "app_os_short": ""  
    }  
  },  
  "auth": "'${USERNAME}:'${PASSWORD}",  
  "id": 1  
}'  
  


  

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值