Zabbix监控架构

目录

1. Zabbix监控架构-CS架构

2. Zabbix极速上手指南

主机规划

 2.1  部署ngx+php环境并测试

检查安装结果

 2.2 部署数据库

2.3 编译安装zabbix-server服务端及后续配置

2.4 部署前端代码代码进行访问

前端的配置文件(连接数据库与主机名等信息)

2.5 欢迎来到zabbix 

 2.6 安装客户端

查看web页面的主机数据

 2.7 zabbix显示中文乱码

3. zabbix 配置详解 

3.1 服务端配置

3.2 zabbix agent vs zabbix agent2

4. 监控任意主机流程

4.1 配置客户端

4.2 web页面添加主机

4.2.1 创建主机

4.2.2 填写主机信息 

4.2.3 耐心等待变绿

 4.3 通过模板监控nginx

修改ngx模板的宏

5. 自定义监控

5.1 自定义监控全流程

5.2 客户端

5.3 服务端

5.4 web页面: 创建监控项

创建监控项

进行监控项测试 

添加监控项完成,查看添加的监控项

​编辑

添加监控项完成,查看最新数据与图形

​编辑 5.5 web页面: 触发器

添加触发器

添加表达式

添加完成后的触发器配置 

​编辑 出现故障后的提示​编辑

可以确认故障 

​编辑

 配置图形名字与添加监控项​编辑

6. 常用键值与触发器函数

6.1 键值

6.2 触发器函数 

 6.3 触发器依赖

7. 自定义监控-参数案例

使用命令书写和测试

 web 添加监控项

​编辑 web 触发器

8. 使用模板 

8.1 创建模板

8.2 在模板中创建宏

​编辑 8.3 检查模板信息 

8.4 添加自定义监控项

进入主机中复制即可 

选择要复制的监控项,选择复制即可(可批量多选)

选择复制到模板中 

提示复制成功 

检查模板中监控项部分:多了2个监控项 (nginx和root都做完显示两个)

8.5 复制触发器与图形

主机------>触发器

 复制​编辑

 检查模板触发器

复制图形与复制触发器与监控项一致

8.6 模板关联主机

进入主机中,批量选择要添加模板的主机,批量更新

8.7 配置linux客户端键值 


1. Zabbix监控架构-CS架构

2. Zabbix极速上手指南

主机规划

角色主机名ip
Zabbix服务端zabbix_server_xzb10.0.0.62/172.16.1.62
Zabbix客户端zabbix_agent_xzb10.0.0.63/172.16.1.63

1. 系统:CentOS 7.x 不支持yum方式安装zabbix服务端4

2. 安装方式:

zabbix服务端编译安装

zabbix客户端yum安装

 2.1  部署ngx+php环境并测试

##安装nginx
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=trueyum install -y nginx
##安装php
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release.noarch -y 
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install  php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd -y

检查安装结果

##nginx配置 
cat /etc/nginx/conf.d/zabbix.conf 
server{listen 80;server_name  zabbix.oldboylinux.cn;root /app/code/zabbix;location / {index index.php;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

##php配置
sed -ri  '/^(user|group)/s#apache#nginx#g'  /etc/php-fpm.d/www.conf
##进行检查
egrep '^(user|group)'  /etc/php-fpm.d/www.conf
user = nginx
group = nginx
##创建目录创建测试文件
cat /app/code/zabbix/index.php 
<?php
phpinfo();
?>
##启动服务与测试
systemctl enable nginx php-fpm
systemctl start  nginx php-fpm
##测试web(hosts解析)
10.0.0.62 zabbix.oldboylinux.cn

 2.2 部署数据库

zabbix 6.0 不支持 mariadb 5.5(默认源中的mariadb) 安装mariadb 10.5

##配置mariadb yum 源
vim /etc/yum.repos.d/mariadb.repo 
[mariadb]
name=MariaDB
baseurl=https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
enable=1##安装
yum install  -y  mariadb-server##启动
systemctl enable mariadb
systemctl start  mariadb##数据库初始化
mysql_secure_installation 
先回车,前两个输入n,后面都是Y# 创建数据库要指定字符集
create database zabbix charset utf8 collate utf8_bin;
##创建zabbix用户
grant all on zabbix.*  to 'zabbix'@'localhost'  identified by 'zabbix';
###如果数据库与zbx,php不在一起
grant all on zabbix.*  to 'zabbix'@'172.16.1.%' identified by 'zabbix' ;##向数据库中导入数据 表,数据  注意导入的顺序!!
tar xf zabbix-6.0.31.tar.gz
cd /zabbix-6.0.31/database/mysql
mysql zabbix <schema.sql 
mysql zabbix <images.sql
mysql zabbix <data.sql##检查  mysql的-e选项可以在命令行执行sql语句,注意以;结尾.
mysql -e 'show tables from zabbix;' |wc -l 
179

2.3 编译安装zabbix-server服务端及后续配置

## 1. 安装依赖(软件包中已经包含)
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel  libcurl-devel## 2. 进行配置  
##在源代码目录并且ls 可以看见configure文件
## --sysconfdir 指定配置文件目录  --enable-server 服务端
./configure sysconfdir=/etc/zabbix/ --enable-server --with-mysql    --with-net-snmp  --with-libxml2  --with-ssh2  --with-openipmi  --with-zlib --with-libpthread --with-libevent      --with-openssl  --with-ldap  --with-libcurl  --with-libpcre## 3. 根据提示执行make install
make instll## 检查是否成功
echo $?
0

##修改zbx服务端配置文件(DB相关)
egrep -vn '^$|#' /etc/zabbix/zabbix_server.conf
12:ListenPort=10051
38:LogFile=/tmp/zabbix_server.log
87:DBHost=localhost
99:DBName=zabbix
115:DBUser=zabbix
123:DBPassword=zabbix
507:Timeout=4
593:LogSlowQueries=3000
708:StatsAllowedIP=127.0.0.1##启动zabbix服务端
useradd -s /sbin/nologin -M zabbix ##添加个虚拟用户 
zabbix_server  ##启动zbx服务端
##检查端口
ss -lntup|grep 10051 
##检查进程
ps -ef |grep zabbix 

##书写systemctl 配置文件
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix[Install]
WantBy=multi-user.target## 加载配置文件
systemctl daemon-reload## 关闭手动启动的zabbix_server 
pkill zabbix_server## 检查是否关闭成功
ps -ef |grep zabbix## 启动与检查
systemctl enable zabbix-server
systemctl start zabbix-server
systemctl status  zabbix-server

2.4 部署前端代码代码进行访问

## 部署前端
cp -r ./ui/* /app/code/zabbix/
chown -R nginx.nginx /app/code/zabbix/##web访问
10.0.0.62 zabbix.oldboylinux.cn

## 遇到错误修改php.ini
egrep -n '^(max_.*_time|post_max)'   /etc/php.ini
368:max_execution_time = 300
378:max_input_time = 600
656:post_max_size = 80M
##重启php
systemctl  restart  php-fpm
##刷新页面,下一步

 

输入用户:Admin 

密码:zabbix  

前端的配置文件(连接数据库与主机名等信息)

2.5 欢迎来到zabbix 

 2.6 安装客户端

## 先让zabbix自己监控自己吧,所以我在服务端上安装zabbix_agent2
## 配置zabbix_agent2 yum源
vim/etc/yum.repos.d/zabbix.repo 
[zabbix]
name=Zabbix 
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/RPM-GPG-KEY## 安装zabbix_agent
yum install -y zabbix-agent2##客户端的配置文件
egrep  -v '^$|#' /etc/zabbix/zabbix_agent2.conf 
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1   ##自己监控自己,如果是别的主机的话要改
ServerActive=127.0.0.1  ##自己监控自己,如果是别的主机的话要改
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf##启动
systemctl enable  zabbix-agent2.service
systemctl start zabbix-agent2.service

查看web页面的主机数据

 2.7 zabbix显示中文乱码

原因:zbx显示中文的字体有问题,导致显示中文异常。

解决:把zbx中文字体替换即可。

cd /app/code/zbx/assets/fonts/
##上传一个中文的ttf字体替换zabbix自用的字体即可
cp /code/zabbix/assets/fonts/DejaVuSans.ttf{,.bak}
cp    msyh.ttc    /app/code/zabbix/assets/fonts/DejaVuSans.ttf

3. zabbix 配置详解 

3.1 服务端配置

文件和目录说明
/etc/zabbix/zabbix_server.conf配置文件
/var/log/zabbix/zabbix_server.log当前放在/tmp/下面
/usr/lib/systemd/system/zabbix-server.service手写的systemctl管理文件 如果yum、rpm安装自带
/usr/local/share/zabbix/alertscripts/用于实现告警的脚本

##zabbix服务端配置文件详解
grep '^[a-Z]'   /etc/zabbix/zabbix_server.conf
ListenPort=10051                              ##服务端端口
LogFile=/tmp/zabbix_server.log                ##日志文件
DBHost=localhost                              ##数据库地址
DBName=zabbix                                 ##数据库名字
DBUser=zabbix                                 ##数据库用户名
DBPassword=zabbix                             ##数据密码
Timeout=4                                     ##超时时间
##zabbix客户端配置
/etc/zabbix/zabbix_agent2.conf                ##配置文件
/etc/zabbix/zabbix_agent2.d/                  ##子配置文件目录,用于自定义监控
/var/log/zabbix                               ##日志
##zabbix客户端配置文件内容
Server=172.16.1.62                            ##指定服务端地址

3.2 zabbix agent vs zabbix agent2

在任何一台服务器上面安装zabbix-agent ,zabbix-agent2

zabbix_agentzabbix_agent2
开发语言C语言Go语言和C语言
性能独立进程方式运行1个进程多线程技术运行, 减少资源消耗占用较少tcp资源,能够承受更高并发

4. 监控任意主机流程

4.1 配置客户端

##1. 安装
#参考服务端安装zabbix—agent2的方法
##2. 配置
sed -i 's#Server=127.0.0.1#Server=172.16.1.62#g' /etc/zabbix/zabbix_agent2.conf ##改为服务端地址
sed -i 's#ServerActive=127.0.0.1#ServerActive=172.16.1.62#g' /etc/zabbix/zabbix_agent2.conf ##改为服务端地址##3. 启动
systemctl enable zabbix-agent2
systemctl start  zabbix-agent2

4.2 web页面添加主机

4.2.1 创建主机

4.2.2 填写主机信息 

4.2.3 耐心等待变绿

 4.3 通过模板监控nginx

## 
cat /etc/nginx/conf.d/status.conf
server {listen 8000;location / {stub_status;}
}
curl http://localhost:8000
curl http://localhost:8000/status 

修改ngx模板的宏

{$NGINX.STUB_STATUS.HOST} localhost 
{$NGINX.STUB_STATUS.PATH} /
{$NGINX.STUB_STATUS.PORT} 8000##web页面查看

5. 自定义监控

5.1 自定义监控全流程

## 客户端
## 1.  linux: 通过命令、脚本取出对应的值
## 2.  linux:根据zbx要求按照格式,书写配置文件,创建键值  ##键值key用于获取客户端数据
## 3.  linux:重启客户端客户端测试键值是否可用             ##zabbix_agent2 -t## 服务端
## 4. linux:服务端测试键值是否可用                      ##  zabbix_get
## 5. web页面: 键值与监控项关联
## 6. web页面: 测试
## 7. web页面:触发器(报警)                             ##是否发出警告需要根据情况决定是否设置

5.2 客户端

##1. 通过命令、脚本取出对应的值
##监控80端口是否存在? 自定义监控
ss -lntup |grep -w 80 |wc -l## 创建键值与重启
##UserParameter=key,cmd
##UserParameter=固定写法,表示要自定义键值key表示键值名字,命名最好就是 单词+"." (点)
##cmd表示命令或脚本##写入自定义key(键值)
vim  /etc/zabbix/zabbix_agent2.d/web.conf
UserParameter=check.nginx,ss -lntup|grep -w 80 |wc -l##2. 重启客户端
systemctl  restart  zabbix-agent2.service
##3. 客户端本地测试键值
zabbix_agent2 -t check.nginx
check.nginx [s|1]  ##s表示类型文字 | 1表示结果 键值的结果
##提示zabbix_agent2.conf里面有
Include=/etc/zabbix/zabbix_agent2.d/*.conf

5.3 服务端

##服务端手动测试
yum install -y zabbix-get zabbix_get -s 172.16.1.63  -p 10050  -k check.nginx
## -s 客户端ip地址  -p 客户端端口号(默认是10050) -k 指定键值

5.4 web页面: 创建监控项

创建监控项

 

进行监控项测试 

添加监控项完成,查看添加的监控项

添加监控项完成,查看最新数据与图形

 5.5 web页面: 触发器

添加触发器

添加表达式

添加完成后的触发器配置 

 出现故障后的提示

可以确认故障 

##监控项键值获取的数据 等于 0 表示异常
##什么条件下出现故障  zbx 6.x的写法
last(/zabbix_agent_xzb/check.nginx)=0  #last() 函数表示最后1个结果
last(/zabbix_agent_xzb/check.nginx)=0  ##zabbix_agent_xzb主机的web.port.80的结果中的最后一个如果是0,则有故障##zbx 5.x及之前的写法
{zabbix_agent_xzb:check.nginx.last() } = 0
{主机:key.功能}  = 0

 配置图形名字与添加监控项

6. 常用键值与触发器函数

6.1 键值

常用键值说明
agent.hostname主机名 获取的是客户端配置文件中指定的主机名
system.hostname主机名 系统的主机名 类似于hostname
agent.ping服务端与客户端是否通畅 通:1 不通:非1
net.if.in[if,]网络接口上传(进入)流量统计。返回 整数 if表示网卡名字 可以忽略
net.if.out[if,]流出流量统计。返回整数
proc.num[,,,,]        

进程数    返回整数 

name     进程名字

user       用户

state      进程状态

cmdline 进程对应的命令

zabbix_get -s 172.16.1.63 -p 10050 -k proc.num[,,zomb]
zabbix_get -s 172.16.1.63 -p 10050 -k net.if.in[eth0]
zabbix_get -s 172.16.1.63 -p 10050 -k proc.num[nginx]
zabbix_get -s 172.16.1.63 -p 10050 -k net.tcp.port[,port]
zabbix_get -s 172.16.1.63 -p 10050 -k net.tcp.port[,80]
zabbix_get -s 172.16.1.63 -p 10050 -k  agent.hostname 

zabbix客户端键值传送门:

1 Zabbix agenticon-default.png?t=O83Ahttps://www.zabbix.com/documentation/6.0/zh/manual/config/items/itemtypes/zabbix_agent

6.2 触发器函数 

1. 写在触发器表达式中.用于设置报警条件.

2. 触发器函数要结合键值(监控项)

功能(函数)说明
last()最近值 (最新的值),取出最近一些值
nodata()是否有数据
diff()是否发生变化 一般配合md5check()
avg()平均值
min()最小值
max()最大值

##书写触发器案例 swap
##条件swap总大小大于0
last(/zabbix_agent_xzb/system.swap.size[,total])>0
###条件swap当前使用的大小大于0(没有直接可以使用的监控项,这里调整为当前swap空闲率小于100)
last(/zabbix_agent_xzb/system.swap.size[,pfree])<100
##表示并且-a = and    -o = or 
#完整的表达
last(/zabbix_agent_xzb/system.swap.size[,total])>0 and last(/zabbix_agent_xzb/system.swap.size[,pfree])<100

 6.3 触发器依赖

3 触发器依赖关系icon-default.png?t=O83Ahttps://www.zabbix.com/documentation/6.0/zh/manual/config/triggers/dependencies

7. 自定义监控-参数案例

使用命令书写和测试

 ##客户端
##  书写键值key
UserParameter=user.login.check[*],lastlog |grep -w "$1" |awk '{print $$3}'
##如果使用自定义键值传参,awk取列的时候要使用$$列。
##如果没有传参,awk正常使用即可
##重启客户端
systemctl restart zabbix agent2.service
zabbix_agent2 -t user.login.check[root]##服务端
zabbix_get  -s 172.16.1.63  -k  user.login.check[root]

 web 添加监控项

 web 触发器

8. 使用模板 

8.1 创建模板

8.2 在模板中创建宏

 8.3 检查模板信息 

8.4 添加自定义监控项

进入主机中复制即可 

选择要复制的监控项,选择复制即可(可批量多选)

选择复制到模板中 

提示复制成功 

检查模板中监控项部分:多了2个监控项 (nginx和root都做完显示两个)

8.5 复制触发器与图形

主机------>触发器

 复制

 检查模板触发器

复制图形与复制触发器与监控项一致

8.6 模板关联主机

进入主机中,批量选择要添加模板的主机,批量更新

 

8.7 配置linux客户端键值 

分发键值到配置文件

重启zabbix客户端

 9. 邮件报警

9.1 个人邮箱准备

9.2 配置发件人 

报警媒介

添加发件人信息

告警邮件内容 

 

##故障类型   问题
##主题  故障名称: {EVENT.NAME}
##消息
故障始于 时间: {EVENT.TIME} 日期: {EVENT.DATE}
故障名称: {EVENT.NAME}
故障主机: {HOST.NAME}
严重程度: {EVENT.SEVERITY}
额外信息: {EVENT.OPDATA}
故障ID: {EVENT.ID}
触发器地址: {TRIGGER.URL}##消息类型   ##问题恢复
##主题       ## 故障已经解决  时间: {EVENT.RECOVERY.TIME} 日期:  {EVENT.RECOVERY.DATE}
##消息
故障名称: {EVENT.NAME}
故障持续时间: {EVENT.DURATION}
故障主机: {HOST.NAME}
故障级别: {EVENT.SEVERITY}
故障ID: {EVENT.ID}
{TRIGGER.URL}

9.3 进行测试

测试发送信息(内容和主题随意) 

9.4 配置收件人 

添加收件人信息

配置收件人 

配置完成 

9.5 什么条件下给用户发送邮件?(条件/动作) 

触发器动作(启用即可)

制造故障检查仪表盘 

进阶

触发器修改

10. 换个角度看监控

10.1 Zabbix客户端概述

zabbix客户端应用场景
Zabbix-agent2适用于几乎所有情况,支持自定义监控,linux,windows, android/ios
SNMP客户端用于监控网络设备: Simple Network Management Protocal 简单网络管理协议 监控网络设备
JMXJava-gateway 监控java app(tomcat), 未来推荐自定义监控(zabbix_agents2 + jmap/jstats)
IPMI监控硬件(物理服务器,联想(IBM X86架构 ThinkServer) ,华为,浪潮,Dell,IBM,HP) 直接使用自定义监 控(ipmitool + megacli )

10.2 Zabbix-agent监控windows/mac

下载地址:Download Zabbix agentsicon-default.png?t=O83Ahttps://www.zabbix.com/cn/download_agents?version=6.0+LTS&release=6.0.31&os=Windows&os_version=Any&hardware=amd64&encryption=OpenSSL&packaging=MSI&show_legacy=0#tab:44

安装windows客户端

 检查

10.3 监控windows

创建主机

11. 监控java应用

方案1. 开启java jmxremote远程监控功能,zabbix中关联对应的模板,安装与开启java工具zabbix-java-gateway

方案2. 通过java命令,自定义监控获取想要指标,通过在java应用服务器安装zabbix agent和java命令(jmap,jstack),然后自定义监控。

 11.1 方案01 原理图

11.2 方案02 原理图(类似于自定义监控)

11.3 方案01 实战

##开启远程监控功能
vim tomcat/bin/catalina.sh
##在125行后添加
CATALINA_OPTS="$CATALINA_OPTS   \
-Dcom.sun.management.jmxremote  \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.16.1.9" ##tomcat主机内网地址##重启tomcat
systemctl restart tomcat.service##查看进程中是否有以上的饿命令
ps -ef |grep java

zabbix服务端部署java gateway 配置

##服务端部署 zabbix-java-gateway
yum install -y zabbix-java-gateway##启动
systemctl enable zabbix-java-gateway.service
systemctl start  zabbix-java-gateway.service##配置 将监听端口打开
grep -n '^[a-Z]' /etc/zabbix/zabbix_java_gateway.conf 
17:LISTEN_PORT=10052
27:PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"##重启zabbix-java-gateway
systemctl  restart zabbix-java-gateway.service##配置zabbix 服务端的配置文件
grep -n 'Java*' /etc/zabbix/zabbix_server.conf
317:JavaGateway=127.0.0.1
325:JavaGatewayPort=10052
333:StartJavaPollers=5##重启zabbix服务端
systemctl  restart zabbix-server.service##检查java poller进程
ps -ef |grep zabbix_server |grep java

 添加主机

 12. 自动化

1. 自动添加主机并关联模板

2. 自动添加主机方案:

      自动发现(服务端 主动):zabbix服务端 主动去找是否有新的主机,如果有则添加进来,关联模板。

      自动注册(客户端 主动):zabbix客户端 主动去找服务端提交自己的信息,请求向服务端注册。

12.1 自动发现

1. 客户端(zabbix-agent),配置文件.

2. web配置自动发现规则. -发现主机

3. web配置自动发现的动作-发现主机后关联模板,添加主机,加入主机组,启用

12.2 客户端(zbx agent),配置文件

ansible实现  playbook  yum  template

参考我的ansible文章: 网站集群批量管理-Ansible(playbook)-CSDN博客

 12.3 web配置自动发现规则

 

 

 检查自动发现的主机(注意仅仅发现并不会添加到zabbix主机中)

web配置动作,配置自动发现动作

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CentOS】中的Firewalld:全面介绍与实战应用(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、iptables 时代 2、firewalld 时代 3、 从 ipt…

人工智能未来前景好不好?

人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的世界。随着技术的不断进步&#xff0c;AI不仅在各行各业中扮演着越来越重要的角色&#xff0c;也为求职者和职业发展带来了广阔的机会。那么&#xff0c;人工智能未来的前景如何&#xff1f; 1 高增长行业 人…

湘潭大学软件工程专业选修 SOA 期末考试复习(二)

文章目录 回顾序言第一章课后题填空选择简答 第二章课后题填空选择编程 计划第三章课后题填空选择简答编程 第四章课后题填空选择简答编程 第五章课后题填空选择简答编程 第六章课后题说明 第七章课后题填空选择简答编程 第八章课后题填空选择简答编程 第九章课后题填空选择简答…

JVM垃圾回收详解

前言 当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时&#xff0c;我们就需要对这些“自动化”的技术实施必要的监控和调节。 堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时&#xff0c;Java 自动内存管理最核…

Hive 操作基础(进阶篇✌️)

Hive 进阶操作 分区表 创建分区表 create table score_part(字段名 字段类型,字段名 字段类型 )partitioned by (分区字段 分区类型) row format delimited fields terminated by \t; 创建单极分区表 注意: 分区的列名不能和数据列名相同.分区列会当做虚拟列出现在数据列…

【Kafka】Windows+KRaft部署指南

【Kafka】WindowsKRaft部署指南 摘要本地环境说明官网快速开始修改config/kraft/server.properties初始化数据存储目录启动 测试创建topic创建生产者创建消费者 FAQ输入行太长。命令语法不正确。问题描述解决方案 参考资料 摘要 Kafka是一种高吞吐量的分布式发布订阅消息系统&…

Docker-软件容器平台

一、容器 1、什么是容器 容器就是将软件打包成标准化单元&#xff0c;以用于开发、交付和部署 容器镜像是轻量的、可执行的独立软件包 &#xff0c;包含软件运行所需的所有内容&#xff1a;代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows…

OSS和FastDFS的区别

FastDFS&#xff1a; FastDFS 是一种开源的轻量级分布式文件系统&#xff0c;基于HTTP协议实现。具有高扩展性、高可用性和高稳定性。它解决了大容量文件存储和高效访问的问题&#xff0c;适合作为大容量文件的存储服务器。FastDFS 通过文件系统集群&#xff0c;使得用户可以将…

分离编译(介绍,解决“类模板定义和声明不在同一文件导致链接错误“的问题),类模板实例化原理,

目录 分离编译 介绍 问题代码示例 代码 说明 预处理 编译 链接 类模板实例化原理 总结 解决方法 显式实例化 模板的声明和定义放在一个头文件 分离编译 介绍 分离编译是一种编程技术 允许将程序代码分割成多个文件&#xff0c;每个文件可以独立地编译成目标文件…

云计算答案

情境一习题练习 一、选择题 1、在虚拟机VMware软件中实现联网过程&#xff0c;图中箭头所指的网络连接方式与下列哪个相关&#xff08; C &#xff09;。 A.仅主机模式 B.桥接 C.NAT D.嫁接 2、请问下图这个虚拟化架构属于什么类型&#xff08; A …

如何做好多项目进度管理

在同时管理多个项目时&#xff0c;重要的是要确保每个项目都能按时、按质完成。有效的时间管理、资源优化配置、持续的沟通和使用专业工具是关键要素。这些元素有助于维护项目的整体质量和效率&#xff0c;确保所有项目成员的责任和期望都明确无误。本文将深入探讨如何通过实践…

如何在vscode中安装git详细新手教程

一、安装git后点击vscode中的设置 今天教大家如何在VScode中编写代码后提交到git仓库&#xff0c;如果我们不想切换到git的命令行窗口&#xff0c;可以在VScode中配置git&#xff0c;然后就可以很方便快捷的把代码提交到仓库中。 二、在输入框中输入 git.path &#xff0c;再点…

使用Docker Compose构建多容器应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Docker Compose构建多容器应用 引言 Docker Compose 简介 安装 Docker Compose 创建基本配置 运行多容器应用 查看服务状态 …

Python-利用tkinter库编写一个exe伪恶意程序文件(下)

前言 接着上篇所讲的&#xff0c;我们已经完成了源代码的准备&#xff0c;并将其储存在了function_1.py文件中。接下来我们将把function_1.py文件编写为相对应的exe文件。那么好&#xff0c;废话不多说&#xff0c;我们直接开始。&#xff08;温馨提示&#xff1a;由于整蛊的需…

java list使用基本操作

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Main {public static void main(String[] args) {ArrayList list new ArrayList();list.add("张三");list.add("李四");list.add("王五");l…

【C/C++】strncpy函数的模拟实现

零.导言 之前我们学习了strncpy函数&#xff0c;不妨我们现在尝试模拟实现strncpy函数的功能。 一.实现strncpy函数的要点 strncpy函数是一种字符串函数&#xff0c;可以按字节拷贝字符类型的数组&#xff0c;因此我们自定义的模拟函数需要两个char类型的指针参数&#xff1b;…

ARM-8 定位发布版本 pstree 程序的 main 地址

逆向时如何找到main&#xff0c;如下&#xff1a; 1.readelf -h pstree ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2s complement, little endian Versi…

履带机器人(一、STM32控制部分--标准库)

一、履带机器人整体逻辑框架 通过在PC端搭建上位机,使得在PC端可以给STM32发送控制指令并且接受STM32的状态信息。 通过RS485通信,使得STM32可以和电机进行通信,STM32发送启动、停止、转速、方向等指令,并接受电机返回的状态信息。 二、STM32逻辑框架 整体逻辑: 1、先…

数据库管理-第258期 23ai:Oracle Data Redaction(20241104)

数据库管理258期 2024-11-04 数据库管理-第258期 23ai&#xff1a;Oracle Data Redaction&#xff08;20241104&#xff09;1 简介2 应用场景与有点3 多租户环境4 特性与能力4.1 全数据编校4.2 部分编校4.3 正则表达式编校4.4 随机编校4.5 空值编校4.6 无编校4.7 不同数据类型上…

Rust重写万物之——从头开始编写浏览器引擎

一款用 Rust 编写的全新“轮子”最近备受关注—— 因不满大公司垄断,Gosub 项目团队用 Rust 从头开始编写了一个新的浏览器引擎,目前 star 数已超过 3k。 Gosub 项目的诞生是因为不少用户对当前的 Web 浏览器现状感到不满。 尽管市面上有许多浏览器可供选择,但其中大多数…