Ansible离线部署 之 Zabbix

Ansible介绍

Ansible 是一个自动化平台,用于 IT 自动化,如配置管理、应用部署、任务自动化等。Ansible 使用 SSH 来连接到远程机器,并执行预定义的任务。Ansible 的主要特点是其简单性、易用性和强大的功能集。

以下是 Ansible 的一些关键特性和优点:

  1. 无需代理:Ansible 不需要在远程机器上安装任何代理或守护进程。它使用 SSH 来连接和执行任务。
  2. 易于阅读和编写:Ansible 的配置文件(通常称为 Playbooks)使用 YAML 格式,这使得它们既易于人类阅读又易于编写。
  3. 幂等性:Ansible 的任务设计为幂等的,这意味着多次运行同一个任务将产生相同的结果。
  4. 模块丰富:Ansible 有大量的内置模块,可用于各种任务,如文件操作、包管理、系统服务等。此外,用户还可以编写自定义模块。
  5. 可扩展性:Ansible 可以与多种工具和平台集成,如 Docker、Kubernetes、AWS 等。
  6. 社区支持:Ansible 有一个活跃的社区,提供了大量的文档、示例和插件。

Ansible 的主要组件包括:

  • Inventory:定义了要管理的主机和组。
  • Modules:用于执行特定任务的代码片段。
  • Playbooks:定义了如何应用模块到一组主机上的任务列表。
  • Ad-hoc Commands:一次性执行的简单命令。

使用 Ansible,您可以自动化常见的 IT 任务,如部署应用程序、配置服务器、管理网络设备等,从而提高效率并减少错误。

Zabbix介绍

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。它由Zabbix server与可选组件Zabbix agent两部分构成。Zabbix server可以通过SNMP、Zabbix agent、ping、端口监视等方法提供对远程服务器/网络状态的监视和数据收集等功能。它能在多种操作系统平台上运行,如Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X等。

Zabbix的主要功能包括:

  1. 实时监控:能够监控网络设备、服务器和应用程序的性能指标,提供实时监控和警报功能,帮助管理员及时发现并解决问题。
  2. 数据收集和分析:可以收集、存储和分析大量的监控数据,提供图表和报告,帮助管理员了解系统的运行状况并进行性能分析。

此外,Zabbix还具有以下特点:

  1. 自动发现服务器和网络设备。
  2. 分布式的监控体系和集中式的web管理。
  3. 支持主动监控和被动监控模式。
  4. 高效的agent支持多种操作系统和环境。
  5. 无agent监控等多种监控方法。
  6. 安全的用户认证模式和灵活的用户权限设置。
  7. 基于web的管理方法。
  8. 支持自由的自定义事件和邮件发送。
  9. 高水平的业务视图监控资源。
  10. 支持日志审计。

总的来说,Zabbix的主要功能是提供全面的网络监控和管理解决方案,帮助管理员及时发现和解决问题,提高系统的稳定性和可靠性。如需更多关于Zabbix的信息,建议访问Zabbix官方网站或相关技术社区。

文件清单

[root@localhost deploy-zabbix5.0]# tree
.
├── ansible
│   ├── ansible-2.9.27-1.el7.noarch.rpm
│   ├── libyaml-0.1.4-11.el7_0.x86_64.rpm
│   ├── python2-cryptography-1.7.2-2.el7.x86_64.rpm
│   ├── python2-httplib2-0.18.1-3.el7.noarch.rpm
│   ├── python2-jmespath-0.9.4-2.el7.noarch.rpm
│   ├── python2-pyasn1-0.1.9-7.el7.noarch.rpm
│   ├── python-babel-0.9.6-8.el7.noarch.rpm
│   ├── python-backports-1.0-8.el7.x86_64.rpm
│   ├── python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm
│   ├── python-cffi-1.6.0-5.el7.x86_64.rpm
│   ├── python-enum34-1.0.4-1.el7.noarch.rpm
│   ├── python-idna-2.4-1.el7.noarch.rpm
│   ├── python-ipaddress-1.0.16-2.el7.noarch.rpm
│   ├── python-jinja2-2.7.2-4.el7.noarch.rpm
│   ├── python-markupsafe-0.11-10.el7.x86_64.rpm
│   ├── python-paramiko-2.1.1-9.el7.noarch.rpm
│   ├── python-ply-3.4-11.el7.noarch.rpm
│   ├── python-pycparser-2.14-1.el7.noarch.rpm
│   ├── python-setuptools-0.9.8-7.el7.noarch.rpm
│   ├── python-six-1.9.0-2.el7.noarch.rpm
│   ├── PyYAML-3.10-11.el7.x86_64.rpm
│   └── sshpass-1.06-2.el7.x86_64.rpm
├── conf
│   ├── ansible.cfg
│   ├── hosts
│   ├── install_zabbix_agent.yml
│   ├── remove_zabbix-agent.yml
│   ├── simkai.ttf
│   ├── update_agent_yml_ip.sh
│   ├── zabbix-agent-5.0.33-1.el7.x86_64.rpm
│   ├── zabbix_agentd.conf
│   ├── zabbix_agentd.conf.j2
│   ├── zabbix_server.conf
│   └── zabbix.sql
├── deploy.sh
├── down
│   └── zabbix-agent-5.0.33-windows-amd64-openssl.msi
├── http
│   ├── apr-1.4.8-7.el7.x86_64.rpm
│   ├── apr-util-1.5.2-6.el7.x86_64.rpm
│   ├── httpd-2.4.6-98.el7.centos.7.x86_64.rpm
│   ├── httpd-tools-2.4.6-98.el7.centos.7.x86_64.rpm
│   └── mailcap-2.1.41-2.el7.noarch.rpm
├── mariadb
│   ├── boost-program-options-1.53.0-28.el7.x86_64.rpm
│   ├── galera-4-26.4.14-1.el7.centos.x86_64.rpm
│   ├── libpmem-1.5.1-2.1.el7.x86_64.rpm
│   ├── lsof-4.87-6.el7.x86_64.rpm
│   ├── MariaDB-client-10.11.2-1.el7.centos.x86_64.rpm
│   ├── MariaDB-common-10.11.2-1.el7.centos.x86_64.rpm
│   ├── MariaDB-compat-10.11.2-1.el7.centos.x86_64.rpm
│   ├── MariaDB-server-10.11.2-1.el7.centos.x86_64.rpm
│   ├── pcre2-10.23-2.el7.x86_64.rpm
│   ├── perl-5.16.3-299.el7_9.x86_64.rpm
│   ├── perl-Carp-1.26-244.el7.noarch.rpm
│   ├── perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm
│   ├── perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm
│   ├── perl-constant-1.27-2.el7.noarch.rpm
│   ├── perl-Data-Dumper-2.145-3.el7.x86_64.rpm
│   ├── perl-DBI-1.627-4.el7.x86_64.rpm
│   ├── perl-Encode-2.51-7.el7.x86_64.rpm
│   ├── perl-Exporter-5.68-3.el7.noarch.rpm
│   ├── perl-File-Path-2.09-2.el7.noarch.rpm
│   ├── perl-File-Temp-0.23.01-3.el7.noarch.rpm
│   ├── perl-Filter-1.49-3.el7.x86_64.rpm
│   ├── perl-Getopt-Long-2.40-3.el7.noarch.rpm
│   ├── perl-HTTP-Tiny-0.033-3.el7.noarch.rpm
│   ├── perl-IO-Compress-2.061-2.el7.noarch.rpm
│   ├── perl-libs-5.16.3-299.el7_9.x86_64.rpm
│   ├── perl-macros-5.16.3-299.el7_9.x86_64.rpm
│   ├── perl-Net-Daemon-0.48-5.el7.noarch.rpm
│   ├── perl-parent-0.225-244.el7.noarch.rpm
│   ├── perl-PathTools-3.40-5.el7.x86_64.rpm
│   ├── perl-PlRPC-0.2020-14.el7.noarch.rpm
│   ├── perl-Pod-Escapes-1.04-299.el7_9.noarch.rpm
│   ├── perl-podlators-2.5.1-3.el7.noarch.rpm
│   ├── perl-Pod-Perldoc-3.20-4.el7.noarch.rpm
│   ├── perl-Pod-Simple-3.28-4.el7.noarch.rpm
│   ├── perl-Pod-Usage-1.63-3.el7.noarch.rpm
│   ├── perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
│   ├── perl-Socket-2.010-5.el7.x86_64.rpm
│   ├── perl-Storable-2.45-3.el7.x86_64.rpm
│   ├── perl-Text-ParseWords-3.29-4.el7.noarch.rpm
│   ├── perl-threads-1.87-4.el7.x86_64.rpm
│   ├── perl-threads-shared-1.43-6.el7.x86_64.rpm
│   ├── perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
│   ├── perl-Time-Local-1.2300-2.el7.noarch.rpm
│   ├── pv-1.4.6-1.el7.x86_64.rpm
│   ├── rsync-3.1.2-12.el7_9.x86_64.rpm
│   └── socat-1.7.3.2-2.el7.x86_64.rpm
├── tools
│   ├── curl-7.29.0-59.el7_9.1.x86_64.rpm
│   ├── gpm-libs-1.20.7-6.el7.x86_64.rpm
│   ├── libcurl-7.29.0-59.el7_9.1.x86_64.rpm
│   ├── lrzsz-0.12.20-36.el7.x86_64.rpm
│   ├── perl-5.16.3-299.el7_9.x86_64.rpm
│   ├── perl-Carp-1.26-244.el7.noarch.rpm
│   ├── perl-constant-1.27-2.el7.noarch.rpm
│   ├── perl-Encode-2.51-7.el7.x86_64.rpm
│   ├── perl-Exporter-5.68-3.el7.noarch.rpm
│   ├── perl-File-Path-2.09-2.el7.noarch.rpm
│   ├── perl-File-Temp-0.23.01-3.el7.noarch.rpm
│   ├── perl-Filter-1.49-3.el7.x86_64.rpm
│   ├── perl-Getopt-Long-2.40-3.el7.noarch.rpm
│   ├── perl-HTTP-Tiny-0.033-3.el7.noarch.rpm
│   ├── perl-libs-5.16.3-299.el7_9.x86_64.rpm
│   ├── perl-macros-5.16.3-299.el7_9.x86_64.rpm
│   ├── perl-parent-0.225-244.el7.noarch.rpm
│   ├── perl-PathTools-3.40-5.el7.x86_64.rpm
│   ├── perl-Pod-Escapes-1.04-299.el7_9.noarch.rpm
│   ├── perl-podlators-2.5.1-3.el7.noarch.rpm
│   ├── perl-Pod-Perldoc-3.20-4.el7.noarch.rpm
│   ├── perl-Pod-Simple-3.28-4.el7.noarch.rpm
│   ├── perl-Pod-Usage-1.63-3.el7.noarch.rpm
│   ├── perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
│   ├── perl-Socket-2.010-5.el7.x86_64.rpm
│   ├── perl-Storable-2.45-3.el7.x86_64.rpm
│   ├── perl-Text-ParseWords-3.29-4.el7.noarch.rpm
│   ├── perl-threads-1.87-4.el7.x86_64.rpm
│   ├── perl-threads-shared-1.43-6.el7.x86_64.rpm
│   ├── perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
│   ├── perl-Time-Local-1.2300-2.el7.noarch.rpm
│   ├── tree-1.6.0-10.el7.x86_64.rpm
│   ├── vim-common-7.4.629-8.el7_9.x86_64.rpm
│   ├── vim-enhanced-7.4.629-8.el7_9.x86_64.rpm
│   ├── vim-filesystem-7.4.629-8.el7_9.x86_64.rpm
│   └── wget-1.14-18.el7_6.1.x86_64.rpm
└── zabbix
    ├── apr-1.4.8-7.el7.x86_64.rpm
    ├── apr-util-1.5.2-6.el7.x86_64.rpm
    ├── audit-libs-python-2.8.5-4.el7.x86_64.rpm
    ├── checkpolicy-2.5-8.el7.x86_64.rpm
    ├── dejavu-fonts-common-2.33-6.el7.noarch.rpm
    ├── dejavu-sans-fonts-2.33-6.el7.noarch.rpm
    ├── fontpackages-filesystem-1.44-8.el7.noarch.rpm
    ├── fping-3.16-1.el7.x86_64.rpm
    ├── httpd-2.4.6-98.el7.centos.7.x86_64.rpm
    ├── httpd-tools-2.4.6-98.el7.centos.7.x86_64.rpm
    ├── libcgroup-0.41-21.el7.x86_64.rpm
    ├── libevent-2.0.21-4.el7.x86_64.rpm
    ├── libjpeg-turbo-1.2.90-8.el7.x86_64.rpm
    ├── libsemanage-python-2.5-14.el7.x86_64.rpm
    ├── libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
    ├── libwebp-0.3.0-10.el7_9.x86_64.rpm
    ├── libX11-1.6.7-4.el7_9.x86_64.rpm
    ├── libX11-common-1.6.7-4.el7_9.noarch.rpm
    ├── libXau-1.0.8-2.1.el7.x86_64.rpm
    ├── libxcb-1.13-1.el7.x86_64.rpm
    ├── libXpm-3.5.12-2.el7_9.x86_64.rpm
    ├── libxslt-1.1.28-6.el7.x86_64.rpm
    ├── mailcap-2.1.41-2.el7.noarch.rpm
    ├── net-snmp-libs-5.7.2-49.el7_9.2.x86_64.rpm
    ├── OpenIPMI-2.0.27-1.el7.x86_64.rpm
    ├── OpenIPMI-libs-2.0.27-1.el7.x86_64.rpm
    ├── OpenIPMI-modalias-2.0.27-1.el7.x86_64.rpm
    ├── policycoreutils-python-2.5-34.el7.x86_64.rpm
    ├── python-IPy-0.75-6.el7.noarch.rpm
    ├── rh-php72-1-2.el7.x86_64.rpm
    ├── rh-php72-php-bcmath-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-cli-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-common-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-fpm-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-gd-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-json-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-ldap-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-mbstring-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-mysqlnd-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-pdo-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-pear-1.10.5-1.el7.noarch.rpm
    ├── rh-php72-php-process-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-xml-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-php-zip-7.2.24-1.el7.x86_64.rpm
    ├── rh-php72-runtime-1-2.el7.x86_64.rpm
    ├── scl-utils-20130529-19.el7.x86_64.rpm
    ├── setools-libs-3.3.8-4.el7.x86_64.rpm
    ├── unixODBC-2.3.1-14.el7.x86_64.rpm
    ├── zabbix-agent-5.0.33-1.el7.x86_64.rpm
    ├── zabbix-apache-conf-scl-5.0.33-1.el7.noarch.rpm
    ├── zabbix-get-5.0.33-1.el7.x86_64.rpm
    ├── zabbix-server-mysql-5.0.33-1.el7.x86_64.rpm
    ├── zabbix-web-5.0.33-1.el7.noarch.rpm
    ├── zabbix-web-deps-scl-5.0.33-1.el7.noarch.rpm
    └── zabbix-web-mysql-scl-5.0.33-1.el7.noarch.rpm


7 directories, 177 files

deploy.sh

#!/bin/bash
#********************************************************************
#Author:               Linux技术宅
#Date:                 2023-04-23
#FileName:Delopy zabbix5.0 for offline script
#URL:                  www.linuxjsz.top
#Copyright (C):        2023 All rights reserved
#********************************************************************


DIR=`pwd`
##color
#black="\033[30m"
#white="\033[37m"
red="\033[31m"
green="\033[32m"
yellow="\033[33m"
blue="\033[34m"
purple="\033[35m"
cyan="\033[36m"
normal="\033[0m"


# 关闭防火墙并禁用开机启动
systemctl disable firewalld --now &> /dev/null
systemctl status firewalld | grep dead &> /dev/null
if [ $? -eq 0 ];then echo -e "${blue}----------------防火墙 关闭完成.---------------${normal}"
else echo -e "${red}----------------防火墙 关闭失败.---------------${normal}"
fi
# 关闭seLinux
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
setenforce 0 &> /dev/null
echo -e "${purple}---------------SeLinux 关闭完成.---------------${normal}"


install_ansible() {
cd $DIR/ansible
rpm -ivh *.rpm --force --nodeps &> /dev/null


cp -r $DIR/conf /etc/ansible/
mv /etc/ansible/hosts /etc/ansible/conf/hosts.bak
mv /etc/ansible/ansible.cfg /etc/ansible/conf/ansible.cfg.bak
cp /etc/ansible/conf/hosts /etc/ansible/
cp /etc/ansible/conf/ansible.cfg /etc/ansible/
cp /etc/ansible/conf/*.yml /etc/ansible/


ansible --version &> /dev/null
if [ $? -eq 0 ];then echo -e "${cyan}---------------Ansible 安装完成.---------------${normal}"
else echo -e "${red}---------------Ansible 安装失败.---------------${normal}"
fi
}
install_ansible


install_http() {
cd $DIR/http
rpm -ivh *.rpm --force --nodeps &> /dev/null


cp -r $DIR/down /var/www/html/


systemctl enable httpd --now &> /dev/null


systemctl status httpd | grep running &> /dev/null
if [ $? -eq 0 ];then echo -e "${blue}----------------httpd 启动成功.----------------${normal}"
else echo -e "${red}----------------httpd 启动失败.----------------${normal}"
fi
}
install_http


install_tools() {
cd $DIR/tools
rpm -ivh *.rpm --force --nodeps &> /dev/null


echo -e "${green}-------------other tools 安装完成.-------------${normal}"
}
install_tools


install_mariadb() {
cd $DIR/mariadb
rpm -ivh *.rpm --force --nodeps &> /dev/null


# mariadb启动并配置开机启动
systemctl enable mariadb --now &> /dev/null


systemctl status mariadb | grep running &> /dev/null
if [ $? -eq 0 ];then echo -e "${purple}---------------Mariadb 启动成功.---------------${normal}"
else echo -e "${red}---------------Mariadb 启动失败.---------------${normal}"
fi


# 更新mariadb‘s root passwd
mysql -uroot -popenstack -e "alter user 'root'@'localhost' IDENTIFIED BY 'openstack';"
# 授权root访问权限:任何IP外部访问
mysql -uroot -popenstack -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'openstack' WITH GRANT OPTION;"
# 创建zabbix数据库用户
mysql -uroot -popenstack -e "create user zabbix@localhost identified by 'zabbix';"
# 创建zabbix数据库
mysql -uroot -popenstack -e "create database zabbix character set utf8 collate utf8_bin;"
# 更新zabbix数据库访问权限
mysql -uroot -popenstack -e "grant all privileges on zabbix.* to zabbix@localhost;"
# 配置全局log_bin_trust_function_creators
mysql -uroot -popenstack -e "set global log_bin_trust_function_creators = 0;"
# 导入初始化数据到zabbix数据库
#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
mysql -uzabbix -pzabbix zabbix < /etc/ansible/conf/zabbix.sql
}
install_mariadb


install_zabbix() {
cd $DIR/zabbix
rpm -ivh *.rpm --force --nodeps &> /dev/null


# mariadb启动并配置开机启动
systemctl enable zabbix-server zabbix-agent rh-php72-php-fpm --now &> /dev/null


systemctl status rh-php72-php-fpm | grep running &> /dev/null
if [ $? -eq 0 ];then echo -e "${green}-----------rh-php72-php-fpm 启动成功.----------${normal}"
else echo -e "${red}-----------rh-php72-php-fpm 启动失败.----------${normal}"
fi
systemctl status zabbix-agent | grep running &> /dev/null
if [ $? -eq 0 ];then echo -e "${cyan}------------zabbix-agent 启动成功.-------------${normal}"
else echo -e "${red}------------zabbix-agent 启动失败.-------------${normal}"
fi
systemctl status zabbix-server | grep running &> /dev/null
if [ $? -eq 0 ];then echo -e "${yellow}------------zabbix-server 启动成功.------------${normal}"
else echo -e "${red}------------zabbix-server 启动失败.------------${normal}"
fi


# 配置zabbix页面时区
echo "php_value[date.timezone] = Asia/Shanghai" >> /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf


# 备份原来zabbix相关配置文件
mv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak
mv /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
mkdir /etc/zabbix/alertscripts && mkdir /etc/zabbix/externalscripts
mv /etc/ansible/conf/zabbix*.conf /etc/zabbix/


# 配置页面字体乱码
mv /etc/alternatives/zabbix-web-font /etc/alternatives/zabbix-web-font.bak
mv /etc/ansible/conf/simkai.ttf /usr/share/fonts/dejavu/
ln -s /usr/share/fonts/dejavu/simkai.ttf /etc/alternatives/zabbix-web-font
}
install_zabbix


restart_service() {
# 重启服务:zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
}
restart_service

conf/update_agent_yml_ip.sh

#!/bin/bash
#********************************************************************
#Author:               Linux技术宅
#Date:                 2023-04-23
#FileName:update_yml_ip.sh
#URL:                  www.linuxjsz.top
#Copyright (C):        2023 All rights reserved
#********************************************************************


#color
red="\033[31m"
green="\033[32m"
yellow="\033[33m"
normal="\033[0m"


repo_ip=$1


#if [ ! -n "$repo_ip" ]; then
#echo "请输入Yum源的ip地址"
#exit
#fi
if [ -z "$2" ];then IP=`ifconfig|grep -Po '(?<=inet )[\d.]+'|head -1`
else IP=$2
fi


if [ -z "$1" ];then Repo_IP=`echo $IP |awk -F'.' '{print $1"."$2"."$3".254"}'`
else Repo_IP=$1
fi


echo -e "${red}Repo's IP${normal}: $Repo_IP"


Raw_repo_ip=`grep echo /etc/ansible/install_zabbix_agent.yml|awk '{print $8}'|sed 's/\"//'`
echo -e "${yellow}Raw Repo's IP${normal}: $Raw_repo_ip"


sed -ri "s/$Raw_repo_ip www/$Repo_IP www/g" /etc/ansible/install_zabbix_agent.yml


Updated_repo_ip=`grep echo /etc/ansible/install_zabbix_agent.yml|awk '{print $8}'|sed 's/\"//'`
echo -e "${green}Updated Repo's IP${normal}: $Updated_repo_ip"


echo -e ""
echo -e "${red}Current IP${normal}: $IP"


Raw_zabbix_server_ip=`grep zabbix_server_ip /etc/ansible/install_zabbix_agent.yml | awk '{print $2}'`
echo -e "${yellow}Raw Zabbix Server IP${normal}: $Raw_zabbix_server_ip"


sed -ri "s/: $Raw_zabbix_server_ip/: $IP/g" /etc/ansible/install_zabbix_agent.yml


Updated_zabbix_server_ip=`grep zabbix_server_ip /etc/ansible/install_zabbix_agent.yml | awk '{print $2}'`
echo -e "${green}Updated Zabbix Server IP${normal}: $Updated_zabbix_server_ip"

conf/install_zabbix_agent.yml

---
- name: install zabbix-agent conf
  hosts: all
  vars:
    zabbix_server_ip: 10.14.115.254
    zabbix_agent_ip: "{{ ansible_default_ipv4.address }}"
  gather_facts: true
  ignore_errors: yes
  tasks:
    - name: copy zabbix-agent rpm
      copy: src=/etc/ansible/conf/zabbix-agent-5.0.33-1.el7.x86_64.rpm dest=/usr/local/src/ owner=root group=root mode=0644
    - name: rpm -ivh zabbix-agent
      shell: rpm -ivh /usr/local/src/zabbix-agent-5.0.33-1.el7.x86_64.rpm
    - name: yum install zabbix-agent
      yum: name=zabbix-agent state=present
    - name: Copy zabbix-agent configuration file
      template: src=/etc/ansible/conf/zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf
    - name: copy port_discovery.sh
      copy: src=/etc/zabbix/alertscripts/port_discovery.sh dest=/etc/zabbix/zabbix_agentd.d/ owner=root group=root mode=0755
    - name: +x port_discovery.sh
      shell: chmod +x /etc/zabbix/zabbix_agentd.d/port_discovery.sh
    - name: Start zabbix-agent
      service: name=zabbix-agent state=started enabled=true
    - name: add repo's dns to hosts
      shell: sed -i '/centos-repo/'d /etc/hosts && echo "10.14.115.249 www.centos-repo.cecgw.cn" >> /etc/hosts
    - name: sync Yum repo
      shell: curl http://www.centos-repo.cecgw.cn/scripts/mkrepo.sh|bash

conf/remove_zabbix-agent.yml

---
- name: install zabbix-agent conf
  hosts: all
  tasks:
    - name: stop zabbix-agent
      shell: systemctl disable zabbix-agent --now
    - name: remove zabbix-agent
      shell: rpm -e zabbix-agent
    - name: del zabbix-agent rpm
      shell: rm -f /usr/local/src/zabbix-agent-5.0.33-1.el7.x86_64.rpm
    - name:  del zabbix-agent configuration file
      shell: rm -rf /etc/zabbix
    - name: sync Yum repo
      shell: curl http://www.centos-repo.cecgw.cn/scripts/remkrepo.sh|bash

conf/zabbix_agentd.conf.j2

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server={{ zabbix_server_ip }}
ServerActive={{ zabbix_server_ip }}
Hostname={{ zabbix_agent_ip }}
Timeout=30
UnsafeUserParameters=1
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UserParameter=check_port,/etc/zabbix/zabbix_agentd.d/port_discovery.sh

conf/zabbix_agentd.conf

LogFile=/var/log/zabbix/zabbix_agent.log
PidFile=/var/run/zabbix/zabbix_agentd.pid
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=127.0.0.1
Timeout=30
UnsafeUserParameters=1
HostMetadataItem=system.uname
UserParameter=check_port,/etc/zabbix/alertscripts/port_discovery.sh

conf/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBSocket=/var/lib/mysql/mysql.sock
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
StartPollers=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
MaxHousekeeperDelete=5000
CacheSize=256M
StartDBSyncers=40
HistoryCacheSize=128M
TrendCacheSize=128M
Timeout=30
AlertScriptsPath=/etc/zabbix/alertscripts
ExternalScripts=/etc/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=1000

/etc/zabbix/alertscripts/port_discovery.sh

#!/bin/bash
#因为netstat -p需要管理员权限,脚本是zabbix用户调用的,所以去掉了,但是效果是一样的
portarray=(`netstat -tnl|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq|grep -v 22|grep -v 111|grep -v 25|grep -v 601*|grep -v 100*|grep -v 59*`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
        printf '\n\t\t{'
        printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf "\n\t]\n"
printf "}\n"

check_port模板

在包根目录。

update_agent.yml

---
- name: update agent conf
  hosts: all
  tasks:
    - name: copy port_discovery.sh
      copy: src=/etc/zabbix/alertscripts/port_discover.sh dest=/etc/zabbix/zabbix_agentd.d/ owner=root group=root mode=0755
    - name: echo config
      shell: echo "UserParameter=check_port,/etc/zabbix/zabbix_agentd.d/port_discover.sh" >> /etc/zabbix/zabbix_agentd.conf
    - name: Restart zabbix-agent
      shell: systemctl restart zabbix-agent

Linux-agent安装

  • 更新yum repo IP,zabbix-server IP
cd /etc/ansible
./conf/update_agent_yml_ip.sh $1 $2
# $1 内网yum环境IP,不填写,默认为同网段.254
# $2 zabbix-server IP,  不填写,默认为当前IP
  • 修改/etc/ansible/hosts文件,填写IP
vim /etc/ansible/hosts
  • 执行安装
ansible-playbook /etc/ansible/install_zabbix_agent.yml

Windows-agent安装,启用自动注册

  • 下载安装包
# 浏览器打开如下地址
# 修改为zabbix-server IP
http://zabbix-server/down/zabbix-agent-5.0.33-windows-amd64-openssl.msi
  • 执行安装程序

  • 安装完成后,修改zabbix_agentd.conf文件,默认安装路径:C:\Program Files\Zabbix Agent
# 修改或添加如下参数,默认未启用
# HostMetadataItem=
HostMetadataItem=system.uname
  • 打开任务管理器→服务→重启zabbix-agent服务即可

文件清单压缩包

请查看原文,微信公众号回复”zabbix5.0“获取。

来自: Ansible离线部署 之 Zabbixicon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=Mzk0NTQ3OTk3MQ==&mid=2247487434&idx=1&sn=3128800a0219c5ebc5a3f89d2c8ccf50&chksm=c3158786f4620e90afe440bb32fe68541191cebbabc2d2ef196f7300e84cde1e1b57383c521a&token=113329682&lang=zh_CN#rd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/697718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql学习(八)——多表查询

文章目录 五、多表查询5.1 多表关系5.2 多表查询概述5.3 内连接5.4 外连接5.5 自连接5.6 联合查询5.7子查询5.8 总结 五、多表查询 5.1 多表关系 概述&#xff1a;项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;…

接口请求的六种常见方式详解(get、post、head等)

一&#xff0e;接口请求的六种常见方式&#xff1a; 1、Get 向特定资源发出请求&#xff08;请求指定页面信息&#xff0c;并返回实体主体&#xff09; 2、Post 向指定资源提交数据进行处理请求&#xff08;提交表单、上传文件&#xff09;&#xff0c;又可能导致新的资源的建…

基于大模型的360度全景图像生成技术:L-MAGIC

在数字技术的浪潮中,我们迎来了一项革命性的创新——L-MAGIC,一个能够基于一张普通照片和简单文字描述,快速生成360度全方位全景画面的系统。L-MAGIC不仅提供了沉浸式的视觉体验,还融合了多种素材和技术手段,让全景图像的生成变得更加丰富和真实。 技术亮点 1. 多角度视…

SpringMVC01-初始SpringMVC

SpringMVC 回顾MVC 什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式&#xff0c;MVC是一种架构模…

[FreeRTOS 基础知识] 保存现场与恢复现场

文章目录 什么是现场&#xff1f;保存现场的数据存放在哪里&#xff1f;保护现场的场景 什么是现场&#xff1f; 在[FreeRTOS 基础知识] 栈 与 汇编语言文章中解析了fun_c汇编函数&#xff0c;假设在执行fun_c函数的过程中产生高优先级的中断。如下图所示。 此时刚从RAM的SP栈…

[大模型]GLM4-9B-chat Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架&#xff0c;对 LLaMA3-8B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法&#xff0c;深入了解其原理可参见博客&#xff1a;知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#xff0c…

【docker】 pull access denied for alpine-java, repository does not exist

问题&#xff1a; com.spotify.docker.client.exceptions.DockerException: pull access denied for alpine-java, repository does not exist or may require docker login: denied: requested access to the resource is denied org.apache.maven.plugin.MojoExecutionExce…

[Algorithm][动态规划][完全背包问题][零钱兑换][零钱兑换Ⅱ][完全平方数]详细讲解

目录 1.零钱兑换1.题目链接2.算法原理详解3.代码实现 2.零钱兑换 II1.题目链接2.算法原理详解3.代码实现 3.完全平方数1.题目链接2.算法原理详解3.代码实现 1.零钱兑换 1.题目链接 零钱兑换 2.算法原理详解 思路&#xff1a; 确定状态表示 -> dp[i][j]的含义 dp[i][j]&am…

Gitlab安装配置

gitlab git是一个分布式的代码版本管理软件。用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 1.版本控制 是指对软件开发过程中各种程序代码&#xff0c;配置文件及说明文档等文件变更的管…

如何用R语言ggplot2画高水平期刊散点图

文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1&#xff09;导包2&#xff09;创建图形对象3&#xff09;主题设置4&#xff09;轴设置5&#xff09;图例设置6&#xff09;散点颜色7&#xff09;保存图片 前言 一、数据集 数据下载链接见文章顶部 处理前的数据…

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中&#xff0c;选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合&#xff0c;帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义&#xff1a;分辨率…

上心师傅的思路分享(三)--Nacos渗透

目录 1. 前言 2. Nacos 2.1 Nacos介绍 2.2 鹰图语法 2.3 fofa语法 2.3 漏洞列表 未授权API接口漏洞 3 环境搭建 3.1 方式一: 3.2 方式二: 3.3 访问方式 4. 工具监测 5. 漏洞复现 5.1 弱口令 5.2 未授权接口 5.3.1 用户信息 API 5.3.2 集群信息 API 5.3.3 配置…

Functional ALV系列 (10) - 将填充FieldCatalog封装成函数

在前面的博文中&#xff0c;已经讲了封装的思路和实现&#xff0c;主要是利用 cl_salv_data_descr>read_structdescr () 方法来实现。在这里&#xff0c;贴出代码方便大家参考。 编写获取内表组件的通用方法 form frm_get_fields using pt_data type any tablechanging…

微信小程序双层/多层 wx:for 循环嵌套,关于内外层的 index 和 item ;data-index 传递两个参数

微信小程序用 wx:for 循环可以快速将后端 js 的数组快速显示到前端&#xff1b; 那假如数组中嵌套数组&#xff1b;就存在内外层两层及以上的多层嵌套循环了。 那么如果两层的嵌套式循环 index 究竟是属于哪一层呢&#xff1f;item 又属于哪一个呢&#xff1f; <view><…

java之面向对象2笔记

1 接口(interface) 1.1 概述 接口&#xff08;Interface&#xff09;在计算机科学中&#xff0c;特别是在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;是一个重要的概念。它定义了一组方法的规范&#xff0c;但没有实现这些方法的具体代码。接口的主要目的是确保类…

介绍Linux

目录 1.什么是操作系统 2.现实生活中的操作系统 3.操作系统的发展史 4.操作系统的发展 Linux的不同版本以及应用领域 1.Linux内核及发行版介绍 <1>Linux内核版本 <2>Linux发行版本 2.应用领域 个⼈桌⾯领域的应⽤ 服务器领域 嵌⼊式领域 3.文件和目录 …

Pulsar 社区周报 | No.2024-06-07 | Apache Pulsar 新分支 3.3 版本发布

“ 各位热爱 Pulsar 的小伙伴们&#xff0c;Pulsar 社区周报更新啦&#xff01;这里将记录 Pulsar 社区每周的重要更新&#xff0c;每周发布。 ” 本期主题&#xff1a;Apache Pulsar 新分支 3.3 版本发布 Apache Pulsar 新分支 3.3 版本发布&#xff1a;Apache Pulsar 3.3.0[1…

2024屈原故里端午文化节开幕

6月7日&#xff0c;“中国端午诗意宜昌”2024屈原故里端午文化节在宜昌市秭归县屈原广场盛大开幕。相关嘉宾、屈氏后裔、华商侨商及外资企业代表、主流媒体代表和当地民众聚首屈原祠前&#xff0c;缅怀诗祖屈原&#xff0c;共襄端午盛典。 本届屈原故里端午文化节由湖北省人民政…

【SQLAlChemy】filter过滤条件如何使用?

filter 过滤条件 生成 mock 数据 # 创建 session 对象 session sessionmaker(bindengine)()# 本地生成mock数据 for i in range(6):# 生成随机名字, 长度为4到7个字符name .join(random.choice(string.ascii_letters) for _ in range(random.randint(4, 7)))# 生成随机年龄…

Lua搭建网站后台教程

本文讲解如何使用二进制发布包和FastWeb网站管理工具搭建站点 FastWeb网站管理工具 使用该工具可快速在Windows平台部署。支持官方或三方模块的自动安装、日志调试、版本更新等。 1、下载最新版本压缩包 2、解压到任意目录(建议英文) 3、运行 ①点击 [设置]->[安装] 部…