Zabbix6.0全套落地方案-基于RHEL9系列源码编译安装-Linux+Nginx+Mysql+Redis生产级模板及Agent2客户端一键部署

news2024/11/17 16:32:13

实践说明:基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等),但适用场景不限于此,客户端一键部署安装包基于RHEL8和RHEL9。
文档形成时期:2023年
因系统或软件版本不同,构建部署可能略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。
限于篇幅,Zabbix配置基于Agent2一键安装包和模版,其它配置细节未做阐述,将来再单独整理一系列文档,但基于本文纯实践方案,已经有比较全面的配置,能应对大部分场景,或基于此容易做进一步的配置部署。
因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。

文章目录

    • 服务端基础硬件资源环境
    • 服务端基础环境
    • 服务端基于AlmaLinux9部署PHP7.4.33
    • 从源码安装Zabbix服务端
      • 创建系统用户等准备
      • 创建数据库
      • 配置源代码和安装
      • 服务端配置
      • 创建systemctl启动管理
      • 错误处理
      • 模版
    • 从源码安装zabbix客户端agent
      • 关于agent2
      • 安装环境
      • 安装依赖
        • go环境安装
        • 安装agent2
        • 创建systemctl启动管理
    • 服务端Web界面安装
      • 语言和乱码问题
        • 字体

服务端基础硬件资源环境

普通场景下推荐配置:2核8G,支持1000个监控指标。

服务端基础环境

RHEL9系列(本文档方案基于AlmaLinux9)
MySQL 8.0.X 之一 需要 InnoDB 引擎。 可参考该文档部署:https://blog.csdn.net/ynz1220/article/details/135535296
PHP 7.2.5 或更高版本,不支持 PHP 8.0
所需模块参见官文:https://www.zabbix.com/documentation/6.0/zh/manual/installation/requirements

服务端基于AlmaLinux9部署PHP7.4.33

采用"Docker的方式部署PHP7.4.33,编译或DNF方式安装Nginx+MySQL",遇到了Zabbix图表乱码问题,虽然让Docker环境支持了中文,但Zabbix图表乱码问题仍未能解决。
最终弃用Docker的方式部署PHP7.4.33,采用DNF方式安装PHP7.4.33

dnf module list php -y #可以看到,默认源有php8.1,但目前zabbix7才支持php8.1,而zabbix7还是开发版本,不宜用于生产环境。

#dnf update -y # 可选

#删除旧版本
#dnf remove php php-fpm -y; dnf remove php* -y #可选

#安装Epel和Remi仓库
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

#再次查看
dnf module list php -y
有php7.4至8.3了

#安装PHP 7.4
dnf module install php:remi-7.4 -y

#安装扩展模块
dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache

php -v
php -m # 可以看到,zabbix6所需要的openssl等所有模块均已安装好。

#配置PHP-FPM
vi /etc/php-fpm.d/www.conf
;至少有下列配置
listen.backlog = 2048
listen.owner = www
listen.group = www
listen.mode = 0660
listen.acl_users =
listen.acl_groups =
; 特别注意两个acl配置要为空,不然listen.owner和listen.group配置无效,创建的unixsock文件就不会是指定的普通用户,让前端nginx无法访问,报502。

systemctl restart php-fpm

nginx相关配置:

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

从源码安装Zabbix服务端

创建系统用户等准备

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix

如果Zabbix server和agent运行在同一台机器上,建议使用与agent不同的用户来运行。否则,如果两者使用相同的用户,agent可以访问server的配置文件,Zabbix里任何Admin级别的用户可以轻易地获取诸如数据可密码等信息。

下载最新稳定版Zabbix程序包
https://www.zabbix.com/download_sources#60LTS
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.22.tar.gz

创建数据库

对Zabbixserver和proxy守护进程,还有Zabbix前端,必须要有一个数据库。但运行Zabbixagent不需要。

此处SQL脚本用于创建数据库模式和插入数据集。Zabbix proxy数据库只需要数据库模式,而Zabbix server数据库在数据库模式之上还需要数据集。

Zabbix 唯一支持的编码是 UTF-8 。使用此编码没有已知的任何安全漏洞。应注意如果使用其他的编码,则存在已知的安全问题。

MySQL
支持字符集 utf8(又名 utf8mb3)和 utf8mb4(分别使用 utf8_bin 和 utf8mb4_bin 排序规则)
建议使用 utf8mb4 进行新安装。
对于 Zabbix 6.0.11 及更新版本,需要在导入模式期间创建确定性触发器。 在 MySQL 和 MariaDB 上,如果启用了二进制日志记录并且没有超级用户权限同时未在MySQL配置文件中配置 log_bin_trust_function_creators = 1 ,则需要设置 GLOBAL log_bin_trust_function_creators = 1。

mysql> create database zabbixdb character set utf8mb4 collate utf8mb4_bin;
CREATE USER "zabbixuser"@"%" IDENTIFIED WITH mysql_native_password BY "pass";
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `zabbixdb`.* TO `zabbixuser`@`%`;
SET GLOBAL log_bin_trust_function_creators = 1;
quit;

tar zxf zabbix-6.0.22.tar.gz
cd zabbix-6.0.22

将数据导入数据库。 对于 Zabbix 代理数据库,只应导入 schema.sql(不导入 images.sql 或 data.sql)。
mysql -uzabbixuser -p zabbixdb < database/mysql/schema.sql
mysql -uzabbixuser -p zabbixdb < database/mysql/images.sql
mysql -uzabbixuser -p zabbixdb < database/mysql/data.sql

成功导入schema后,可以禁用 log_bin_trust_function_creators:
mysql -uroot -p"password"
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;

配置源代码和安装

安装依赖
dnf -y install libxml2 libxml2-devel net-snmp-devel OpenIPMI OpenIPMI-devel libevent-devel pcre-devel

#下载和安装go

#https://go.dev/dl/
wget https://go.dev/dl/go1.21.2.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.2.linux-amd64.tar.gz
#(You may need to run the command as root or through sudo).
#Add /usr/local/go/bin to the PATH environment variable.
sed -i '/export PATH/i\PATH=/usr/local/go/bin:"$PATH"' ~/.bashrc
source  ~/.bashrc
go version

当为Zabbix server或proxy配置源码时,必须指定要使用的数据库类型。同一时间,只用一种数据库类型可以与server或proxy编译。

要查看所有支持的配置选项,在提取的Zabbix源代码目录运行:
./configure --help

要为Zabbix server和agent配置源代码,你可以执行类似如下命令:
./configure --prefix=/opt/zabbix --enable-server --enable-agent2 --with-mysql=/opt/mysql8/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi

说明:

  • 构建服务器时不建议使用 --enable-static 选项。为了静态构建服务器,你必须每个需要的外部库的静态版本。
  • 将可选路径添加到 MySQL 配置文件 --with-mysql=/<path_to_the_file>/mysql_config, 以便在需要使用不在默认位置的 MySQL 客户端库时选择所需的 MySQL 客户端。当在同一系统上安装了多个版本的 MySQL 或 MariaDB 与 MySQL 一起安装时,这个配置很有用。

make && make install

服务端配置

/opt/zabbix/etc/zabbix_server.conf
如果你是小型安装(最多十台受监控的主机),其他参数的默认值将适合你。 如果你想最大化 Zabbix server(或proxy)的性能,你应该修改默认参数。

查看默认配置:
./sbin/zabbix_server --help|grep alertscripts
AlertScriptsPath “/opt/zabbix/share/zabbix/alertscripts”

创建systemctl启动管理

cat <<\EOF>/usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/opt/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/opt/zabbix
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/opt/zabbix/sbin/zabbix_server -c /opt/zabbix/etc/zabbix_server.conf
ExecStop=/usr/bin/kill $MAINPID
Restart=always
RestartSec=5
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target
EOF
systemctl enable zabbix_server
systemctl start zabbix_server

错误处理

日志提示:[Z3001] connection to database ‘zabbixdb’ failed: [1045] Access denied for user ‘zabbixuser’@‘localhost’ (using password: YES)
处理:由socket改用host连接后解决。原因未知(可能是socket没有放在/tmp下,zabbix读不到?),后来发现是listen.acl_users和listen.acl_groups须为空,否则php-fpm创建的unixsock文件就不会是指定的普通用户。

模版

下载地址:https://download.csdn.net/download/ynz1220/88734297 (资源如果不能打开是可能正在审核中,可过一会儿或次日访问)
导入即可使用,包含80+监控项,60+自动发现监控项,已配置常见图表和触发器,大量采用中文简体,方便非运维识别告警信息。

redis部分监控项示例:
redis监控项redis部分监控图表:
redis监控图表
MySQL部分监控图表
MySQL部分监控图表

从源码安装zabbix客户端agent

Agent 和 agent 2 对比:https://www.zabbix.com/documentation/6.0/zh/manual/appendix/agent_comparison
总结,前者用C,后者主要是GO
前者支持广,后者仅Linux, Windows,本文档采用agent2

关于agent2

UNIX: Zabbix agent支持的所有指标。
此外,agent 2 为以下对象提供 Zabbix-native 监控解决方案:Docker, Memcached, MySQL, PostgreSQL, Redis, systemd,和其他监控目标 - 请参阅agent 2 特定监控项的完整列表。
Windows: Zabbix agent代理支持的所有指标,以及HTTPS、LDAP 的net.tcp.service* 检查。
此外,agent 2 为 PostgreSQL、Redis 提供了 Zabbix-native 监控解决方案。
支持被动和主动检查。
更多:
https://www.zabbix.com/documentation/6.0/zh/manual/concepts/agent2

安装环境

本文档基于RHEL8、RHEL9系列,但不限于此。

安装依赖

dnf install pcre-devel

go环境安装

如果是在服务端,前面已经安装。

wget https://go.dev/dl/go1.21.2.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.2.linux-amd64.tar.gz
#(You may need to run the command as root or through sudo).
#Add /usr/local/go/bin to the PATH environment variable.
sed -i '/export PATH/i\PATH=/usr/local/go/bin:"$PATH"' ~/.bashrc
source  ~/.bashrc
go version

#创建用户

groupadd --system zabbix_agent2
useradd --system -g zabbix_agent2 -d /usr/lib/zabbix_agent2 -s /sbin/nologin -c "zabbix_agent2 Monitoring System" zabbix_agent2
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix_agent2
chown zabbix_agent2:zabbix_agent2 /usr/lib/zabbix_agent2
安装agent2

wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.22.tar.gz
tar zxf zabbix-6.0.22.tar.gz
cd zabbix-6.0.22
./configure --prefix=/opt/zabbix --enable-agent2
构建Zabbix agent 2需要一个用当前支持的Go版本配置的Go环境。前面已经安装

make && make install

chown zabbix_agent2:zabbix_agent2 -R /opt/zabbix
chmod u=rwx,g=rwx,o= -R /opt/zabbix

创建systemctl启动管理
cat <<\EOF>/usr/lib/systemd/system/zabbix_agent2.service
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/opt/zabbix/etc/zabbix_agent2.conf"
EnvironmentFile=-/opt/zabbix
Type=forking
PIDFile=/tmp/zabbix_agent2.pid
ExecStart=/opt/zabbix/sbin/zabbix_agent2 -c /opt/zabbix/etc/zabbix_agent2.conf
ExecStop=/usr/bin/kill $MAINPID
Restart=always
RestartSec=5
User=zabbix_agent2
Group=zabbix_agent2

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable zabbix_agent2
systemctl start zabbix_agent2

因为zabbix_agent2会部署于成百上千台服务器,基于Linux的RHEL8和RHEL9系列分别做成两个一键安装包,通过Ansible可大批量快速部署,体现运维的自动化。

基中基于RHEL8的脚本如下:

#!/bin/bash
###################################
# function   Install zabbix_agent2
#
# Change History:
# date        author          note
# 2023        N  create

###################################

############# ENV #################
# 脚本名称,临时文件或邮件中可能用到,避免同类脚本的变量的冲突,下面直接取脚本名
export project_name=`echo ${0##*/} | cut -d'.' -f 1`

# 工作目录,可能会产生临时文件
#export work_dir=/root/sh

# 临时文件目录
#export tmp_dir=${work_dir}/tmp

# 日志目录
#export log_dir=${work_dir}/log

# 数据目录
#export var_dir=${work_dir}/var

# mysql程序路径
#export mysql_base_dir="/opt/mysql8"
#export mysql_bin_path="${mysql_base_dir}/bin"

# db实例连接配置
#export mysql_client_conf_online_list="/root/.mysql/conn.conf"

############# 配置结束 ##################

# 时间和环境变量,一般无需修改
export datetime=$(date +%Y%m%d-%H%M%S)
export LANG=C
#export LC_ALL=C
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export parameter1=$1
export parameter2=$2
export parameter3=$3
export HOME=/root

############# PROC #################
# 记录开始时间
start_time=$(date +%s)
echo ""
echo "######"
echo "`date +"%Y-%m-%d %H:%M:%S"` 运行开始"

### 函数 ###
# 帮助信息
function help_msg() {
echo -e "\033[41m请查看帮助信息:\033[0m

HELP:
parameter eg: do

exec eg: 
bash $0 do

\033[41m请查看帮助信息:\033[0m"
}


#test -d $work_dir || mkdir -p $work_dir
#test -d $tmp_dir || mkdir -p $tmp_dir
#test -d $log_dir || mkdir -p $log_dir
#test -d $var_dir || mkdir -p $var_dir
#cd $work_dir


if [ "$parameter1" == "" ] || [ "$parameter1" == "help" ]; then
    help_msg
    echo "`date +"%Y-%m-%d %H:%M:%S"` error, exit."
    exit
elif [ "$parameter1" == "do" ]; then
    true
fi


# 判断系统和zabbix_agent2环境
sys_release=`cat /etc/redhat-release | awk '{ print $3; }' | awk -F. '{ print $1; }'`
if [ "$sys_release" != "8" ];then
    echo "该系统版本不是Almalinux8或者rhel8,请检查下,本次安装中止。"
    exit 1
fi




if [ -d /usr/local/go ];then
    echo "该系统可能已经自定义安装过go,请检查下,本次不再安装go环境,请确保go环境正常。"
else
    tar -C /usr/local -xzf go1.21.2.linux-amd64.tar.gz
    echo "安装了go环境,请确保go环境正常。"
fi

i=`grep -c "PATH" ~/.bashrc`
j=`grep -c "/usr/local/go/bin" ~/.bashrc`
if [ "$i" == "0" ];then
    echo 'export PATH=/usr/local/go/bin:"$PATH"' >> ~/.bashrc
elif [ "$j" == "0" ];then
    sed -i '/export PATH/i\PATH=/usr/local/go/bin:"$PATH"' ~/.bashrc
fi        
source  ~/.bashrc
go version
echo -e "\033[42;37m若确定go环境正常,5秒后脚本继续运行,否则请按'Ctrl+C'中断安装\033[0m"
sleep 5




if [ -d /opt/zabbix ];then
    echo "该系统可能已经自定义安装过zabbix,请检查下,本次安装中止。"
    exit 1
fi


# 检查当前目录
if [ ! -f $PWD/install.sh ];then
    echo "请切换到install.sh同级目录下之后再执行安装,本次安装中止。"
    exit 1
fi



echo "开始安装"
groupadd --system zabbix_agent2
useradd --system -g zabbix_agent2 -d /usr/lib/zabbix_agent2 -s /sbin/nologin -c "zabbix_agent2 Monitoring System" zabbix_agent2
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix_agent2
chown zabbix_agent2:zabbix_agent2 /usr/lib/zabbix_agent2

cp -ap zabbix /opt/

chown zabbix_agent2:zabbix_agent2 -R /opt/zabbix
chmod u=rwx,g=rwx,o= -R /opt/zabbix

cat <<\EOF>/usr/lib/systemd/system/zabbix_agent2.service
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/opt/zabbix/etc/zabbix_agent2.conf"
EnvironmentFile=-/opt/zabbix
Type=forking
PIDFile=/tmp/zabbix_agent2.pid
ExecStart=/opt/zabbix/sbin/zabbix_agent2 -c /opt/zabbix/etc/zabbix_agent2.conf
ExecStop=/usr/bin/kill $MAINPID
Restart=always
RestartSec=5
User=zabbix_agent2
Group=zabbix_agent2

[Install]
WantedBy=multi-user.target
EOF


systemctl daemon-reload
systemctl enable zabbix_agent2


if [ -d /usr/local/go ] || [ -d /opt/zabbix ];then
    echo "已成功安装,启动服务:systemctl start zabbix_agent2"
fi



echo ""
stop_time=$(date +%s)
echo "`date +"%Y-%m-%d %H:%M:%S"` 运行结束"
echo "本次脚本运行了$((${stop_time}-${start_time}))秒。"

一键安装包说明:

  • 下载地址:https://download.csdn.net/download/ynz1220/88734297 (资源如果不能打开是可能正在审核中,可过一会儿或次日访问) 根据系统版本选择相对应的"zabbix_agent2-6.0.22-ce-install.tar.gz"包即可。
  • 包含Nginx+Mysql+Redis的监控脚本;
  • 客户端主配置/opt/zabbix/etc/zabbix_agent2.conf修改必要的配置如主机名和服务端地址后才能使用;
  • Mysql监控脚本需要修改/opt/zabbix/etc/mysql.conf后才能使用;
  • Nginx不必修改,但NginxStatus状态服务须和监控脚本中配置的地址和端口一致,默认是127.0.0.1:89,如下;
    server {
        listen       127.0.0.1:89;
        location = /NginxStatus {
            stub_status on;
            access_log off;
        }
    }
  • Redis监控脚本配合模板使用,极为完善,且支持自动发现多实例,自动获取pass,即使是官方提供的监控脚本也远不及于此;
  • Tcpport监控脚本结合数据库表监控应用层大批量端口,创建模板使用,是业务运维监控的重要环节。

服务端Web界面安装

Zabbix 前端是由PHP语言编写,所以其网页服务的运行需要支持PHP语言的网站服务器。
php环境前面已经部署
nginx环境可参考:https://blog.csdn.net/ynz1220/article/details/135485305

语言和乱码问题

其他前端语言
https://www.zabbix.com/documentation/6.0/zh/manual/appendix/install/locales
为了在Zabbix Web界面中使用英语以外的任何其他语言,其区域设置应安装在Web服务器上。此外,翻译工作还需要 PHP gettext 扩展。

访问前端
http://<server_ip_or_name>
按提示安装完成后,配置位于:conf/zabbix.conf.php

Zabbix 前端已准备就绪! 默认用户名是Admin,密码zabbix。

登陆后提示:
Locale for language “en_US” is not found on the web server.
查看:locale -a
解决:
dnf install glibc-langpack-en glibc-langpack-zh
修改
vi /etc/locale.conf
LANG=en_US.UTF-8 # 如需显示中文,安装glibc-langpack-zh包即可,不必设置LANG变量为中文
然后在web界面设置中可选择中文

重启zabbix所有服务

如果php跑在基于debian系的docker中,那么需要修改docker的:
apt-get update
apt-get install locales
dpkg-reconfigure locales
取消/etc/locale.gen中关于en_US.UTF-8的注释
运行:
locale-gen

2023年基于docker的php7.4.33部署,装了locales,并设置语言环境为en_US.UTF-8,仍然无法解决zabbix语言问题,改用直接在系统上安装,

字体

web界面乱码,但图形有中文乱码,

解决zabbix图中出现中文乱码问题:
从windows下控制面板->字体->选择一种中文字库例如“宋体”
把它拷贝到zabbix的web端的fonts目录下例如:/opt/web/zabbix/assets/fonts,并且把TTF后缀改为ttf

上传后名称会变成小写,可改为大写,总之要和下面的配置一致:
修改zabbix的web端include/defines.inc.php
//define(‘ZBX_FONT_NAME’, ‘DejaVuSans’); // DejaVuSans是默认是开源字体
define(‘ZBX_FONT_NAME’, ‘simhei’);

//define(‘ZBX_GRAPH_FONT_NAME’, ‘DejaVuSans’); // font file name
define(‘ZBX_GRAPH_FONT_NAME’, ‘simhei’); // font file name

实践采用了simhei。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XYplorer:双栏多标签文件资源管理器的高效选择

在文件管理的世界中&#xff0c;效率和便捷性是用户追求的关键。XYplorer作为一款专为Windows设计的文件资源管理器&#xff0c;以其独特的双栏多标签浏览、强大的文件搜索功能、以及高度可定制的界面&#xff0c;为用户提供了一种全新的文件管理体验。 XYplorer&#xff1a;速…

Android 12.0 系统开启和关闭黑白模式主题功能

1.概述 在12.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决

1、版本介绍&#xff1a; doris版本&#xff1a; 1.2.8Spark Connector for Apache Doris 版本&#xff1a; spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOTspark版本&#xff1a;spark-3.3.1 2、Spark Doris Connector Spark Doris Connector - Apache Doris 目…

第11章 2 文件和io操作

很奇怪&#xff0c;只有先写了列表&#xff0c;在遍历file 才有打印 若文件原来就有内容&#xff0c;w open 完之后&#xff0c;文件内容就被清空了 open操作若不指定打开模式&#xff0c;默认打开模式是r 文本打开时&#xff0c;是按照字符串

旅游数据可视化大屏:一屏掌控,畅游数据之海

随着旅游业的蓬勃发展&#xff0c;如何有效地管理和分析旅游数据成为行业关注的焦点。旅游数据可视化大屏作为一种新兴的技术手段&#xff0c;为旅游业带来了前所未有的机遇和挑战。 旅游数据可视化大屏集成了丰富的数据资源&#xff0c;通过直观的图表、图像和交互界面&#x…

本地部署 gemini-openai-proxy,使用 Google Gemini 实现 Openai API

本地部署 gemini-openai-proxy&#xff0c;使用Google Gemini 实现 Openai API 0. 背景1. 申请 Google Gemini API key2. (Optional)Google Gemini 模型说明3. gemini-openai-proxy Github 地址4. 本地部署 gemini-openai-proxy5. 测试 0. 背景 使用 Google Gemini 实现 Opena…

zookeeper下载安装部署

zookeeper是一个为分布式应用提供一致性服务的软件&#xff0c;它是开源的Hadoop项目的一个子项目&#xff0c;并根据google发表的一篇论文来实现的。zookeeper为分布式系统提供了高效且易于使用的协同服务&#xff0c;它可以为分布式应用提供相当多的服务&#xff0c;诸如统一…

详细分析Java中的@Transactional注解

目录 前言1. 基本知识2. 常用属性3. Demo4. 总结 前言 Transactional 是 Spring 框架中用于管理事务的注解。 该注解来源于Spring&#xff0c;对于Spring的基础知识可看我之前的文章&#xff1a; Spring框架从入门到学精&#xff08;全&#xff09; 该注解也可用在xxl-job框架…

基于Hadoop的网上购物行为大数据分析及预测系统【flask+echarts+机器学习】前后端交互

有需要本项目或者部署的系统可以私信博主&#xff0c;提供远程部署和讲解 本研究基于淘宝用户行为的开源数据展开大数据分析研究&#xff0c;通过Hadoop大数据分析平台对阿里天池公开的开源数据集进行多维度的用户行为分析&#xff0c;为电商销售提供可行性决策。 首先我们将大…

完全卸载grafana

先停掉grafana sudo systemctl stop grafana-server 查看要卸载的包的名字 yum list installed yum remove grafana-enterprise.x86_64 成功 删除grafana的数据目录 sudo rm -rf /etc/grafana/sudo rm -rf /usr/share/grafana/sudo rm -rf /var/lib/grafana/

Webhook端口中的自定义签名身份认证

概述 如果需要通过 Webhook 端口从交易伙伴处接收数据&#xff0c;但该交易伙伴可能对于安全性有着较高的要求&#xff0c;而不仅仅是用于验证入站 Webhook 要求的基本身份验证用户名/密码&#xff0c;或者用户可能只想在入站 Webhook 消息上增加额外的安全层。 使用 Webhook…

canvas设置渐变色文字(线性、径向)

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

【机器学习300问】4、机器学习到底在学习什么?

首先我们先了解一个前置问题&#xff0c;再回答机器学习到底在学习什么。 一、求机器学习问题有哪几步&#xff1f; 求解机器学习问题的步骤可以分为“学习”和“推理”两个阶段。首先&#xff0c;在学习阶段进行模型的学习&#xff0c;然后&#xff0c;在推理阶段用学到的模型…

OpenHarmony——基于HDF驱动框架构建的Display驱动模型

概述 功能简介 LCD&#xff08;Liquid Crystal Display&#xff09;驱动编程&#xff0c;通过对显示器上电、初始化显示器驱动IC&#xff08;Integrated Circuit&#xff09;内部寄存器等操作&#xff0c;使其可以正常工作。 基于HDF&#xff08;Hardware Driver Foundation…

使用nginx+HTML2canvas将任意html网页转为png图片自定义张数

文章目录 概述网页的转换html2canvas的使用导入导入HTML2canvas库函数定义 nginx部署编写控制截图网页代码iframe 网页控制代码 测试说明 概述 本文简述如何使用nginxhtml2canvas将任意网页html转为png图片 网页的转换 如果是本地网页&#xff0c;直接进行nginx反向代理就行…

数据库SELECT语句

文章目录 一、检索数据二、排序检索三、过滤数据四、数据过滤4.1 组合WHERE子句1. AND操作符2. OR操作符3. 计算次序 4.2 IN操作符4.3 NOT操作符 五、用通配符过滤LIKE操作符1. 百分号&#xff08;%&#xff09;通配符2. 下划线&#xff08;_&#xff09;通配符 使用通配符的技…

若依在表格中如何将字典的键值转为中文

文章目录 一、需求&#xff1a;二、问题解决步骤1、给需要转换的列绑定formatter属性2、获取字典项3、编写formatter属性绑定的方法 一、需求&#xff1a; 后端有时候返回的是字典的键值&#xff0c;在前端展示时需要转成中文值 后端返回的是dictValue&#xff0c;现在要转换…

20240112-【UNITY 学习】实现第一人称移动教程

1、创建一个空物体&#xff0c;挂载Rigidbody组件&#xff0c;并设置相应参数 2、在上述空物体下创建一个胶囊体&#xff0c;两个空物体&#xff0c;一个用来控制朝向&#xff0c;另一个用来控制摄像机 3、给摄像机创建一个父物体&#xff0c;并挂载脚本MoveCamera_01.cs using…

【剪枝】【广度优先】【深度优先】488祖玛游戏

作者推荐 【动态规划】458:可怜的小猪 涉及知识点 剪枝 广度优先 深度优先 488祖玛游戏 在这个祖玛游戏变体中&#xff0c;桌面上有 一排 彩球&#xff0c;每个球的颜色可能是&#xff1a;红色 ‘R’、黄色 ‘Y’、蓝色 ‘B’、绿色 ‘G’ 或白色 ‘W’ 。你的手中也有一些…

flutter使用getx进行数据状态管理,实现页面响应式

无论是什么样的应用&#xff0c;都还是需要最基础的数据来支撑的&#xff0c;而且不同的页面之间可能需要共享数据状态&#xff0c;这就显得数据状态管理非常有必要了。因为我这里使用了get依赖库&#xff0c;所以就可以直接在项目中使用getx来管理状态&#xff0c;不想再使用别…