WEB集群1-5天

news2025/1/31 6:11:16

文章目录

  • 第一天、
    • 1、初始化配置
      • 1. 编写的初始化的脚本 init_env.sh
      • 2. 远程拷贝初始化脚本到mysql服务器里
      • 3.在mysql这台服务器上执行脚本
    • 2、总结
  • 第二天
    • 1、yum
      • yum介绍
      • yum操作
      • 将冯老师提供的网站的源码包上传到web服务器
    • 2、部署网站
      • 1、解压文件
      • 2、epel源:可以提供很多centos官方没有的软件包的下载
      • 3、配置go语言的国内下载资源的站点
      • 4、运行go语言的网站
      • 5、访问我们的网站,网站监听的端口号是8080
      • 6、登录不成功,因为数据库MySQL服务器没有搭建,连接不成功
    • 3、安装MySQL服务器,部署MySQL软件
    • 4、数据库的初始化
      • 1、建立初始的库
      • 2、导入表和以前的数据
      • 3、建立授权的用户,允许web网站可以连接到数据库里获取数据
      • 4、将mysql客户端命令scp到web服务器上,这样web服务器就可以使用mysql这个客户端进行远程登录测试
      • 5、在web服务器上登录MySQL服务器
    • 5、配置数据库信息
      • 1、修改网站的server.go的数据库连接地址
      • 2、再次运行web程序
      • 4、访问web网站
    • 6、自动化运维工具ansible
      • 1、介绍
      • 2、安装ansible软件
        • 1、初始化脚本
        • 2、执行初始化脚本
        • 3、服务器重启后登录
        • 4、安装ansible软件,需要先安装epel源
        • 5、添加主机清单,新增控制的服务器
      • 2、和被控的web和MySQL之间建立免密通道
      • 3、使用ansible安装软件、执行命令,体验批量管理的效果
  • 第三天、Prometheus监控所有的服务器
    • 1、搭建免密通道
      • 1、生成公钥和私钥对
      • 2、上传公钥到db服务器
      • 3、验证免密通道是否建立成功
      • 4、在ansible的hosts文件里修改
      • 5、测试
    • 2、Prometheus介绍
    • 3、进制源码安装Prometheus
      • 1、使用ansible下发node_exporter-1.4.0-rc.0.linux-amd64.tar.gz 到web和db服务器上
      • 2、改主机名
      • 3、上传下载的源码包到linux服务器,去QQ群里下载,或者找冯老师要
      • 4、解压源码包
      • 5、修改解压后的压缩包名字prometheus
      • 6、临时和永久修改PATH变量,添加prometheus的路径
      • 7、把prometheus做成一个服务来进行管理,非常方便日后维护和使用
      • 8、重新加载systemd相关的服务,识别Prometheus服务的配置文件
      • 9、启动Prometheus服务
      • 10、设置开机启动
      • 11、访问Prometheus 的web server
    • 4、安装exporter
      • 1、exporter介绍
      • 2、将node-exporter传递到所有的服务器上的/root目录下
      • 3、编写在其他机器上安装node_exporter的脚本,vim install_node_exporter.sh
      • 4、使用ansible的copy模块推送脚本到db服务器
      • 5、演示shell模块的使用
      • 6、在ansible服务器上执行安装node_exporter的脚本
      • 7、在其他的服务器上查看是否安装node_exporter成功
      • 8、刚刚防火墙服务器lb2没有开机,单独给它安装node_exporter
      • 9、在防火墙服务器上查看是否安装node_exporter成功
    • 三、添加被监控的服务器
      • 1、在prometheus服务器上添加抓取数据的配置,添加node节点服务器,将抓取的数据存储到时序数据库里
      • 2、重启Prometheus服务
      • 3、访问
    • 四、安装grafana出图展示
      • 1、安装,需要提前上传安装包grafana-enterprise-9.1.2-1.x86_64.rpm
      • 2、启动grafana,设置开机启动
      • 3、查看grafana是否启动
      • 4、登录,在浏览器里登录
    • 五、Grafana出图的配置
      • 1、先配置prometheus的数据源
      • 2、导入grafana的模板
    • 六、总结
  • 第四天 mysqld_exporter
    • 一、YAML
    • 二、 Prometheus的问题:
    • 三、安装mysql的mysqld_exporter
      • 1、mysqld_exporter介绍
      • 2、在db服务器上下好mysql-5.7,执行脚本onekey_install_mysql_binary_v3.sh。测试登录数据库
      • 3、 创建用于获取mysqld进程信息的数据库的用户exporter
      • 4、 部署mysqld_exporter
      • 5、mysqld_exporter做成服务
      • 6、重启并设置开机启动
      • 7、 在Prometheus.yml中添加mysqld_exporter的配置
      • 8、登录网站查看效果
      • 9、Grafana里添加支持mysqld_exporter模板
      • 10、问题:
      • 11、解决方法
      • 12、难点
  • 第五天 ansible-nginx
    • 一、cron模块使用
      • 1、编写一个备份脚本
      • 2、查看效果
      • 3、你使用过的ansible模块有哪些?
    • 二、playbook
      • 1、playbook介绍
      • 2、在web和db服务器上执行
    • 三、playbook练习
      • 1、要求
      • 2、在web服务器上验证
      • 3、另外一个playbook,验证使用shell命令去修改配置文件
      • 4、验证
      • 5、总结:
    • 四、nginx
      • 1、nginx介绍
      • 2、yum安装nginx
      • 3、 启动nginx
      • 4、查看进程和端口
      • 5、访问网站
      • 6、 yum 安装的nginx,配置文件所在的目录/etc/nginx/
      • 7、 /usr/share/nginx/html 是nginx存放网站的目录
    • 五、 编译安装nginx
      • 1、 新安装一台web服务器,web-2,在ansible里添加进入主机清单
      • 2、使用ansible去安装node_exporter
      • 3、将web-1服务器上的安装脚本和源码包文件,scp到ansible机器上
        • 在Prometheus server上添加 web2机器信息
        • 重启Prometheus 服务

第一天、

今天上午操作:
准备2台linux服务器
使用vmware模拟2台机器 配置2c/4G/100G磁盘---》全新安装centos7.9的Linux系统
Web:网站服务器
MySQL:数据库服务器
root用户的密码设置为123456

1、初始化配置

nmcli  n  查看网络接口的情况
nmcli  n  off 关闭所有的网络连接
nmcli  n  on开启所有的网络连接
ifup  ens33  激活ens33网卡  interface  接口  up 起来/激活  ens33是网卡的名字

1. 编写的初始化的脚本 init_env.sh

set -e
#!/bin/bash


#第1步:下载阿里云的centos-7.reop文件
cd  /etc/yum.repos.d

curl  -O http://mirrors.aliyun.com/repo/Centos-7.repo
#新建存放centos官方提供的repo文件,因为官方不提供服务了
mkdir  backup
mv  CentOS-*  backup

#第2步:修改主机名
hostnamectl  set-hostname  $1



#第3步:配置静态ip地址
cat  >/etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=$2
PREFIX=24
GATEWAY=$3
DNS1=114.114.114.114
DNS2=222.246.129.80
EOF

#启动网络服务
service  network  restart

#第4步: 关闭selinux和firewalld防火墙服务
systemctl stop  firewalld
systemctl disable firewalld

#修改/etc/selinux/config文件里的enforcing为disabled
sed  -i  '/SELINUX=/  s/enforcing/disabled/'  /etc/selinux/config 
#重启服务器
reboot

2. 远程拷贝初始化脚本到mysql服务器里

MySQL服务器的ip 192.168.205.133
[root@web-1 ~]# scp  init_env.sh 192.168.205.133:/root

3.在mysql这台服务器上执行脚本

[root@localhost ~]# bash init_env.sh mysql  192.168.205.133  192.168.205.2 

2、总结

总结今天的内容:
1.安装了centos7.9的系统
2.使用阿里云的repo文件(仓库文件)
3.修改主机名
4.修改为静态ip地址--》好处是ip地址不变
5.修改selinux的状态和禁用firewalld防火墙服务
6.将整个初始化环境脚本化 

4.	部署web服务(go语言编写的)
5.	部署MySQL服务

第二天

1、yum

yum介绍

yum 是一段英文的缩写    redhat yellowdog package updater  manager  红帽公司开发的一个专门用于软件包管理工具 ---》python
Yellowdog Updater Modified

yum操作

yum  install  tree  安装
yum  remove  tree  卸载
yum  update  tree  升级
yum  provides  nslookup 查询nslookup命令是通过哪个软件安装过来的
yum  list 查询哪些软件安装了,哪些没有安装
yum  info  tree查看软件的信息
问渠那得清如许,为有源头活水来
源--》仓库,存放软件的地方
仓库 repository

centos-7.repo  仓库文件,用来定位需要使用的源
 定位你的仓库路径的文件 ---》藏宝图

将冯老师提供的网站的源码包上传到web服务器

2、部署网站

1、解压文件

[root@web-1 web]# unzip  go+html+mysql+redis.zip 
以上网站是刘珍老师使用go语言开发的一个网站
server.go 是web的核心应用程序
Readme.md 使用手册
安装go语言环境
[root@web-1 web]# yum  install  golang  -y
docker,k8s,Prometheus,ETCD都是使用go语言开发的

2、epel源:可以提供很多centos官方没有的软件包的下载

yum install   epel-release -y

3、配置go语言的国内下载资源的站点

[root@web-1 web]# go env -w  GOPROXY=https://goproxy.cn,direct
[root@web-1 web]# go mod init web
将需要依赖的库下载到本地
[root@web-1 web]# go  mod  tidy 

4、运行go语言的网站

[root@web-1 web]# pwd
/web
[root@web-1 web]# ls
go+html+mysql+redis.zip  go.mod  go.sum  info.sql  Readme.md  server.go  static  templates
[root@web-1 web]# go run  server.go 

5、访问我们的网站,网站监听的端口号是8080

在这里插入图片描述

6、登录不成功,因为数据库MySQL服务器没有搭建,连接不成功

在这里插入图片描述

3、安装MySQL服务器,部署MySQL软件

[root@mysql ~]# ls
anaconda-ks.cfg  init_env.sh  mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz  onekey_install_mysql_binary_v3.sh
[root@mysql ~]# 
[root@mysql ~]# bash onekey_install_mysql_binary_v3.sh 
su  重新登录加载新的PATH--》有mysql命令路径
[root@mysql ~]# mysql -uroot -p'Sanchuang123#'
-uroot 指定用户  user
-p 指定密码  password

4、数据库的初始化

1、建立初始的库

create database users;

2、导入表和以前的数据

info.sql 是原来从数据库里导出的数据文件
192.168.205.133 是数据库服务器
[root@web-1 web]# ls
go+html+mysql+redis.zip  go.mod  go.sum  info.sql  Readme.md  server.go  static  templates
[root@web-1 web]# scp  info.sql   192.168.205.133:/root
导入数据到MySQL服务器里
[root@mysql ~]# mysql -uroot -p'Sanchuang123#'  users < info.sql 

3、建立授权的用户,允许web网站可以连接到数据库里获取数据

root@mysql 15:08  mysql>create user  'scweb'@'192.168.205.132'  identified by  'Scweb123';

授予'scweb'@'192.168.205.132'这个用户可以对users库里的所有的表进行全部权限的操作,包括增删改查等
root@mysql 15:11  mysql>grant all on users.*  to 'scweb'@'192.168.205.132';

4、将mysql客户端命令scp到web服务器上,这样web服务器就可以使用mysql这个客户端进行远程登录测试

[root@mysql ~]# cd /usr/local/mysql/bin
[root@mysql bin]# scp  mysql  192.168.205.132:/usr/bin
查看MySQL服务器开放的端口号
[root@mysql bin]# yum install net-tools -y

5、在web服务器上登录MySQL服务器

192.168.205.133  是数据库服务器的ip
-h  指定数据库服务器的ip地址  host
[root@web-1 web]# mysql  -h 192.168.205.133  -uscweb  -p'Scweb123'
[root@web-1 web]# yum  repolist

5、配置数据库信息

1、修改网站的server.go的数据库连接地址

[root@web-1 web]# cd /web
[root@web-1 web]# ls
go+html+mysql+redis.zip  go.mod  go.sum  info.sql  Readme.md  server.go  static  templates
[root@web-1 web]# vim server.go 


//mysql连接和 Redis 连接
var db *sql.DB
var rdb *redis.Client
const (
        DB_USER     = "scweb"
        DB_PASSWORD = "Scweb123"
        DB_NAME     = "users"
        DB_HOST         = "tcp(192.168.205.133:3306)/"
        REDIS_HOST      = "192.168.205.133:6379"
)

2、再次运行web程序

[root@web-1 web]# go run  server.go

4、访问web网站

在这里插入图片描述

[root@mysql yum.repos.d]# mysql -uroot -p'Sanchuang123#'

6、自动化运维工具ansible

1、介绍

1.	批量操作、批量管理服务器
ansible是使用python开发的一个自动化运维工具,用来对服务器进行批量管理和操作。

ansible的核心组件:
1.	主机清单 Host Inventory: 里面写好了可以控制的服务器的ip地址--》控制的机器清单
2.	模块 modules: ansible可以使用的工具箱
3.	插件: 也是ansible可以使用的工具
4.	playbook 剧本: ansbile需要在主机上执行的事情。

ansible 是导演
主机清单:演员名单
模块和插件: 道具
playbook: 剧本

在这里插入图片描述
在这里插入图片描述

2、安装ansible软件

1、初始化脚本
scp init_env.sh 192.168.205.134:/root
2、执行初始化脚本
[root@localhost ~]# bash init_env.sh ansible  192.168.205.134  192.168.205.2
3、服务器重启后登录
4、安装ansible软件,需要先安装epel源
[root@ansible .ssh]# yum  install  epel-release  -y
[root@ansible .ssh]# yum  install  ansible  -y
5、添加主机清单,新增控制的服务器
[root@ansible ~]# cd /etc/ansible/
[root@ansible ansible]# ls
ansible.cfg  hosts  roles
[root@ansible ansible]# yum install  vim  -y

[root@ansible ansible]# vim hosts 

[web]
192.168.205.132  ansible_ssh_user='root' ansible_ssh_pass='123456'

[db]
192.168.205.133  ansible_ssh_user='root' ansible_ssh_pass='123456'

测试
ansible  db  -m  shell  -a  "ip  add"
db 表示操纵的组
-m  shell 调用shell模块去执行命令
-a  "ip  add"  具有需要去执行的命令
在所有的被控机器上执行命令
分组  all

2、和被控的web和MySQL之间建立免密通道

3、使用ansible安装软件、执行命令,体验批量管理的效果

第三天、Prometheus监控所有的服务器

1、搭建免密通道

1、生成公钥和私钥对

[root@ansible ~]# ssh-keygen 
[root@ansible ~]# cd /root/.ssh/

[root@ansible .ssh]# ll
总用量 12
-rw------- 1 root root 1675 74 11:15 id_rsa
-rw-r--r-- 1 root root  394 74 11:15 id_rsa.pub
-rw-r--r-- 1 root root  354 73 17:11 known_hosts

2、上传公钥到db服务器

[root@ansible .ssh]# ssh-copy-id  -i id_rsa.pub  root@192.168.205.133
root@192.168.205.133's password: 
输入密码

3、验证免密通道是否建立成功

[root@ansible .ssh]# ssh 'root@192.168.205.133'

4、在ansible的hosts文件里修改

[root@ansible .ssh]# cd /etc/ansible/
[root@ansible ansible]# ls
ansible.cfg  hosts  roles
[root@ansible ansible]# vim   hosts 

[web]
192.168.205.132  ansible_ssh_user='root' ansible_ssh_pass='123456'

[db]
192.168.205.133

5、测试

[root@ansible ansible]# ansible db  -m  shell  -a "ip add"

2、Prometheus介绍

Prometheus is an open-source systems monitoring and alerting toolkit
Prometheus是一个开源的监控和报警系统。

监控什么?
系统性能(cpu、内存、磁盘容量、磁盘IO、网络流量)
卡顿、访问不了、死机
监控的意义?
有问题及时解决
没有问题,及早发现问题,提前防止事故发生。
监控软件:
1.	开源的 Prometheus 免费的
2.	自研

核心组件:
(1)	Prometheus server :存储数据(TSDB)、提供访问数据的接口的(HTTP)
(2)	exporter 收集数据的
(3)	altermanager ---》--》设置阈值  cpu 80%--》报警 
(4)	数据可视化工具: web UI  ---》user interface 用户界面
(5)	pushgateway: 是一个中间件(代理程序)---》分布式

如何报警?
短信、钉钉、微信、电话、邮件等

场景题:

[root@mysql ~]# crontab  -l
50  3      23  2  *  bash /root/mkdir.sh
分  小时  日  月
[root@mysql ~]# 
* */3 * * * 

在这里插入图片描述

3、进制源码安装Prometheus

1、使用ansible下发node_exporter-1.4.0-rc.0.linux-amd64.tar.gz 到web和db服务器上

[root@ansible ~]# ansible all -m copy -a "src=/root/node_exporter-1.4.0-rc.0.linux-amd64.tar.gz 

[root@ansible ~]# ansible  all  -m fetch  -a "src=/etc/passwd  dest=/root"
这条命令会遍历所有的受管节点,从每个节点上复制其/etc/passwd文件,并根据各个节点的主机名在控制节点的/root目录下创建对应的文件副本。

2、改主机名

[root@nfs-ansible ansible]# hostnamectl set-hostname nfs-ansible-prom

3、上传下载的源码包到linux服务器,去QQ群里下载,或者找冯老师要

[root@nfs-ansible-prom ansible]# mkdir /prom
[root@nfs-ansible-prom ansible]# cd /prom
[root@nfs-ansible-prom prom]# ls
grafana-enterprise-9.1.2-1.x86_64.rpm        prometheus-2.43.0.linux-amd64.tar.gz
node_exporter-1.4.0-rc.0.linux-amd64.tar.gz

4、解压源码包

tar xf prometheus-2.43.0.linux-amd64.tar.gz 

5、修改解压后的压缩包名字prometheus

mv prometheus-2.43.0.linux-amd64 prometheus

6、临时和永久修改PATH变量,添加prometheus的路径

[root@nfs-ansible-prom prom]# PATH=/prom/prometheus:$PATH
[root@nfs-ansible-prom prom]# echo 'PATH=/prom/prometheus:$PATH'  >>/etc/profile
[root@nfs-ansible-prom prom]# 
[root@nfs-ansible-prom prom]# which prometheus
/prom/prometheus/prometheus

7、把prometheus做成一个服务来进行管理,非常方便日后维护和使用

[root@nfs-ansible-prom prom]# vim /usr/lib/systemd/system/prometheus.service 
[Unit]
Description=prometheus
[Service]
ExecStart=/prom/prometheus/prometheus --config.file=/prom/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

8、重新加载systemd相关的服务,识别Prometheus服务的配置文件

[root@nfs-ansible-prom prom]# systemctl  daemon-reload
[root@nfs-ansible-prom prom]# 

9、启动Prometheus服务

[root@nfs-ansible-prom prom]# systemctl start prometheus
[root@nfs-ansible-prom prom]# systemctl restart prometheus
[root@nfs-ansible-prom prom]# ps aux|grep prome
root       2740  2.7  0.9 798956 37312 ?        Ssl  14:57   0:00 /prom/prometheus/prometheus --config.file=/prom/prometheus/prometheus.yml
root       2748  0.0  0.0 112824   976 pts/0    S+   14:57   0:00 grep --color=auto prome

10、设置开机启动

[root@nfs-ansible-prom prom]# systemctl enable prometheus
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /usr/lib/systemd/system/prometheus.service.

11、访问Prometheus 的web server

http://192.168.203.135:9090

在这里插入图片描述

4、安装exporter

1、exporter介绍

export 出口/输出  exporter
import 进口
第2步:在整个web集群节点服务器(任何一台linux系统,例如nfs、mysql、web1、web2、LB1、LB2等)上安装exporter程序
exporter 是Prometheus的客户端的数据采集工具--》go语言编写的
node-exporter 是专门用来采集节点服务器的通用性能指标(cpu、内存、磁盘、网速等)

2、将node-exporter传递到所有的服务器上的/root目录下

scp node_exporter-1.4.0-rc.0.linux-amd64.tar.gz root@192.168.203.144:/root
exporter
scp node_exporter-1.4.0-rc.0.linux-amd64.tar.gz root@192.168.203.147:/root

或者

ansible all -m copy  -a 'src=node_exporter-1.4.0-rc.0.linux-amd64.tar.gz dest=/root/'

3、编写在其他机器上安装node_exporter的脚本,vim install_node_exporter.sh

#!/bin/bash

tar xf /root/node_exporter-1.4.0-rc.0.linux-amd64.tar.gz  -C /
cd  /
mv node_exporter-1.4.0-rc.0.linux-amd64/ node_exporter
cd /node_exporter/
echo 'PATH=/node_exporter/:$PATH' >>/etc/profile

#生成nodeexporter.service文件
cat >/usr/lib/systemd/system/node_exporter.service  <<EOF
[Unit]
Description=node_exporter
[Service]
ExecStart=/node_exporter/node_exporter --web.listen-address 0.0.0.0:9090 
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

#让systemd进程识别node_exporter服务
systemctl daemon-reload
#设置开机启动
systemctl  enable node_exporter
#启动node_exporter
systemctl  start node_exporter

4、使用ansible的copy模块推送脚本到db服务器

ansible db  -m copy  -a "src=install_node_exporter.sh dest=/root"

5、演示shell模块的使用

[root@mysql ~]# cat mkdir.sh 
mkdir sc{1..100}
[root@ansible prometheus]# ansible db -m shell -a "bash /root/mkdir.sh"
ansible db -m script -a "/prome/prometheus/install_node_exporter.sh"

shell模块和script模块的区别 shell模块执行的脚本,需要提前copy到其他的机器上
script模块不需要提前将脚本传输到其他机器,直接在ansible机器上执行就可以,会自动先推送文件到执行脚本的机器上,执行完后删除脚本

6、在ansible服务器上执行安装node_exporter的脚本

ansible all -m script  -a "/prom/install_node_exporter.sh"

7、在其他的服务器上查看是否安装node_exporter成功

[root@lb2 ~]# ps aux|grep node
root       5408  0.0  0.2 716288 11068 ?        Ssl  15:25   0:00 /node_exporter/node_exporter --web.listen-address 0.0.0.0:9090
root       5524  0.0  0.0 112824   976 pts/1    S+   15:27   0:00 grep --color=auto node

8、刚刚防火墙服务器lb2没有开机,单独给它安装node_exporter

[root@lb2 ~]# 
ansible fw -m copy  -a 'src=node_exporter-1.4.0-rc.0.linux-amd64.tar.gz dest=/root/'
ansible fw -m script  -a "/prom/install_node_exporter.sh"

9、在防火墙服务器上查看是否安装node_exporter成功

[root@firewall ~]# ps aux|grep node
root        681  0.0  0.3 716544 13088 ?        Ssl  15:27   0:00 /node_exporter/node_exporter --web.listen-address 0.0.0.0:9090
root       1705  0.0  0.0 112828   976 pts/0    S+   15:29   0:00 grep --color=auto node

三、添加被监控的服务器

1、在prometheus服务器上添加抓取数据的配置,添加node节点服务器,将抓取的数据存储到时序数据库里

[root@nfs-ansible-prom prometheus]# pwd
/prom/prometheus
[root@nfs-ansible-prom prometheus]# vim prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

#添加下面的配置
  - job_name: "web1"
    static_configs:
      - targets: ["192.168.203.133:9090"]
  - job_name: "web2"
    static_configs:
      - targets: ["192.168.203.134:9090"]
  - job_name: "lb1"
    static_configs:
      - targets: ["192.168.203.136:9090"]
  - job_name: "lb2"
    static_configs:
      - targets: ["192.168.203.137:9090"]
  - job_name: "fw"
    static_configs:
      - targets: ["192.168.203.138:9090"]

2、重启Prometheus服务

[root@nfs-ansible-prom prometheus]# service prometheus restart
Redirecting to /bin/systemctl restart prometheus.service

3、访问

在windows的浏览器访问
http://192.168.203.135:9090/targets

在这里插入图片描述

四、安装grafana出图展示

1、安装,需要提前上传安装包grafana-enterprise-9.1.2-1.x86_64.rpm

yum install grafana-enterprise-9.1.2-1.x86_64.rpm -y

2、启动grafana,设置开机启动

systemctl start grafana-server
systemctl enable grafana-server

3、查看grafana是否启动

[root@nfs-ansible-prom prom]# ps aux|grep grafana

4、登录,在浏览器里登录

http://192.168.203.135:3000
默认的用户名和密码是
用户名admin
密码admin

在这里插入图片描述

修改一个新密码123456,然后会进入下面的图形

在这里插入图片描述

五、Grafana出图的配置

1、先配置prometheus的数据源

	管理--》数据源--》add new data source-->prometheus

在这里插入图片描述

填写好配置

在这里插入图片描述

点击测试是否能成功连接到Prometheus 时序数据库

在这里插入图片描述

2、导入grafana的模板

点击Dashboards 进入仪表盘设置

在这里插入图片描述

点击import直接导入模板

在这里插入图片描述

输入8919模板,点击load

在这里插入图片描述

给模板起一个名字,然后选择Prometheus数据库,最后点击import

在这里插入图片描述

进入dashboard界面,看到非常漂亮的监控效果图

在这里插入图片描述

	https://grafana.com/grafana/dashboards
步骤:
	1.需要知道哪些模板可以使用,可以去官方找,也可以百度
	1-node-exporter-for-prometheus-dashboard-cn-v20200628_rev1.json
	2.导入模板

创建文件夹,存放模板 sanchuang


Dashboards  --》Import dashboard


这2个模板ID非常好用,推荐使用
1860
8919  -->推荐使用,因为是中文版的字符

六、总结

1.	ansible的使用
(1)	模块: copy、fetch、shell、script
2.	Prometheus 普罗米修斯: 监控软件、时序数据库
(1)	server
(2)	exporter
源码解压安装--》service文件,方便systemctl来进行管理、启动
nohup
systemctl
信号

第四天 mysqld_exporter

一、YAML

YAML(YAML Ain't Markup Language,YAML 不是一种标记语言)是一种直观的数据序列化格式,设计用于人类易于阅读和编写,同时也易于机器解析和生成。它广泛用于配置文件、数据交换以及脚本语言中的数据结构表示。YAML 的设计目标是简单、直观且易于实现。
YAML文件是存放数据的文件,它广泛用于配置文件、数据交换以及脚本语言中的数据结构表示。
Prometheus、k8s、docker等

在windows的浏览器访问
http://192.168.203.135:9090/targets

在这里插入图片描述

二、 Prometheus的问题:

如何访问Prometheus TSDB时序数据库?
PromSQ 你是否了解?

三、安装mysql的mysqld_exporter

1、mysqld_exporter介绍

MySQL的exporter  --》可以获取MySQL内部的性能指标
  1.安装了node_exporter   -->获取mysql服务器的cpu、内存、磁盘IO、网络IO、进程等信息     监听:9090
  2.安装mysqld_exporter  -->获取MySQL内部的性能指标
        监听:9104

所有的exporter本质上是一个程序,运行起来就是一个进程,可以理解为一个接口API
application  interface  应用程序接口
很多exporter本质是一个web系统,对外提供API接口 --》gin框架

目前我们安装的是通用的node_exporter

[root@db-mysql ~]# ps aux|grep node
root        686  0.1  0.5 717952 20544 ?        Ssl  09:39   0:01 /node_exporter/node_exporter --web.listen-address 0.0.0.0:9090
root       1713  0.0  0.0 112828   988 pts/0    S+   09:55   0:00 grep --color=auto node
[root@db-mysql ~]# 

接下来我们安装mysqld_exporter代理程序(agent)

在这里插入图片描述

2、在db服务器上下好mysql-5.7,执行脚本onekey_install_mysql_binary_v3.sh。测试登录数据库

[root@db ~]# mysql -uroot -p'Sanchuang123#'

3、 创建用于获取mysqld进程信息的数据库的用户exporter

root@(none) 18:58  mysql>
CREATE USER 'exporter'@'%' IDENTIFIED BY 'Sanchuang123' WITH MAX_USER_CONNECTIONS 3;
对用户exporter进行授权,授予PROCESS, REPLICATION CLIENT, SELECT 三种权限,在任何的库里的任何表上。
root@(none) 18:58  mysql>
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';

4、 部署mysqld_exporter

需要提前上传下载的mysqld_exporter-0.15.0.linux-amd64.tar.gz
[root@db ~]# tar xf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C  /usr/local
[root@db ~]# cd /usr/local/
[root@db local]# mv mysqld_exporter-0.15.0.linux-amd64  mysqld_exporter
[root@db-mysql local]# cd mysqld_exporter/
 .my.cnf是mysqld_exporter用于登录mysqld进程的配置文件
[root@db-mysql mysqld_exporter]# ls
LICENSE  mysqld_exporter  NOTICE
[root@db-mysql mysqld_exporter]# 
[root@db-mysql mysqld_exporter]# vim  .my.cnf 
[client]
user=exporter
password=Sanchuang123

5、mysqld_exporter做成服务

[root@db mysqld_exporter]# vim /usr/lib/systemd/system/mysqld_exporter.service 
[Unit]
Description=mysqld_exporter

[Service]
Environment=DATA_SOURCE_NAME=exporter:Sanchuang123@(localhost:3306)/
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf --web.listen-address=:9104
Restart=on-failure
[Install]
WantedBy=multi-user.target

6、重启并设置开机启动

systemctl daemon-reload
systemctl enable mysqld_exporter

7、 在Prometheus.yml中添加mysqld_exporter的配置

[root@nfs-ansible-prom prom]# vim /prom/prometheus/prometheus.yml 
  - job_name: "db_mysqld_exporter"
    static_configs:
                - targets: ["192.168.203.147:9104"]
[root@nfs-ansible-prom prom]# systemctl restart prometheus
[root@nfs-ansible-prom prom]# systemctl status prometheus

8、登录网站查看效果

在这里插入图片描述

9、Grafana里添加支持mysqld_exporter模板

https://grafana.com/grafana/dashboards/

在这里插入图片描述

添加mysqld_exporter模板,编号17320,14077

10、问题:

Grafana出图的时候,很多参数没有数据,报错是no  data
分析日志/var/log/messages看到时mysqld_exporter连接到mysqld数据库出现了问题,主要是密码里有#号导致,因为#是注释在配置文件里

[root@db-mysql mysqld_exporter]# vim  .my.cnf 
[client]
user=exporter
password=Sanchuang123#

11、解决方法

解决方法:
1.	将配置文件里的密码修改为Sanchuang123
[root@db-mysql mysqld_exporter]# vim  .my.cnf 
[client]
user=exporter
password=Sanchuang123#

2.	同时到mysql里修改exporter用户的密码为Sanchuang123
alter USER 'exporter'@'%' IDENTIFIED BY 'Sanchuang123' WITH MAX_USER_CONNECTIONS 3;


12、难点

Prometheus深入去学习的点
1.	PromQL数据类型和方法
2.	如何自己制作grafana出图的模版
3.	metrics 指标

在这里插入图片描述

第五天 ansible-nginx

一、cron模块使用

1、编写一个备份脚本

[root@ansible-prome ansible]# cd /etc/ansible/
[root@ansible-prome ansible]# ls
ansible.cfg  hosts  roles
[root@ansible-prome ansible]# vim  backup_file.sh

[root@ansible-prome ansible]# vim  backup_file.sh
[root@ansible-prome ansible]# cat backup_file.sh 
set -e
#!/bin/bash
#/etc/passwd   /etc/shadow  /var/log
mkdir  -p /backup
tar czf  /backup/$(date +%Y%m%d)_passwd_shadow_log.tar.gz  /etc/passwd  /etc/shadow  /var/log

[root@ansible-prome ansible]#
先在所有的节点服务器上创建/backup目录
[root@ansible-prome ansible]#   ansible all -m shell -a "mkdir -p /backup"
[root@ansible-prome ansible]# ansible all -m copy -a "src=/etc/ansible/backup_file.sh  dest=/backup"
每天的2:30执行
[root@ansible-prome ansible]# ansible all -m cron  -a "minute=30 hour=2 job='bash /backup/backup_file.sh' name=backup_file "

2、查看效果

[root@mysql backup]# crontab -l
50 3 23 2 *  bash /root/mkdir.sh
#Ansible: backup_file
30 2 * * * bash /backup/backup_file.sh
[root@mysql backup]# 

3、你使用过的ansible模块有哪些?

copy   fetch
shell   script
yum   cron   service

playbook是否是必须的?
不是必须得,可以script模块,去执行脚本也可以达到playbook的效果,批量在很多机器同时执行很多的任务

二、playbook

1、playbook介绍

playbook是Ansible的配置,部署和编排的语言。
playbook 是ansible内部的脚本,可以批量的去完成很多操作。
[root@ansible-prome playbooks]# mkdir /playbook
[root@ansible-prome playbooks]# cd /playbook/
[root@ansible-prome playbook]# 

[root@ansible-prome playbook]# cat redis_first.yaml 
- hosts: web
  remote_user: root
  tasks:
  - name: install redis
    yum: name=redis  state=installed
  - name: start redis
    service: name=redis state=started enabled=true
  - name: create crontab
    cron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file2
- hosts: db
  remote_user: root
  tasks:
  - name: install redis
    yum: name=redis  state=installed
  - name: start redis
    service: name=redis state=started enabled=true
  - name: create crontab
    cron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file2

测试
[root@ansible-prome playbook]# ansible-playbook --syntax-check redis_first.yaml 
执行
[root@ansible-prome playbook]# ansible-playbook redis_first.yaml 

2、在web和db服务器上执行

[root@web-1 ~]# crontab -l
#Ansible: backup_file
30 2 * * * bash /backup/backup_file.sh
#Ansible: backup_file2
30 3 * * * bash /backup/backup_file.sh
[root@web-1 ~]# ps aux|grep redis
redis      3034  0.2  0.3 143056  5788 ?        Rsl  17:32   0:00 /usr/bin/redis-server 127.0.0.1:6379
root       3100  0.0  0.0 112824   988 pts/0    R+   17:34   0:00 grep --color=auto redis

三、playbook练习

1、要求

练习:
	1.你使用的ansible什么版本?
	2.任务:使用playbook完成
		0.卸载nginx
		1.yum安装nginx
		2.修改nginx的配置的端口号9900
			sed命令--》shell
			手工修改配置里的端口号
		3.将配置文件下发到所有的node节点服务器
		4.启动nginx
		5.卸载tree命令软件
		6.在所有的node节点服务器上新建/scbackup目录
		7.编写一个脚本backup_file.sh 实现备份/etc/passwd和/etc/shadow文件到/backup下,文件名里包含当天的日期,例如2019-7-10-passwd_shadow.tar.gz 添加一个计划任务,每天的5:30去执行,在所有的node节点服务器上实施。

install_nginx.yaml

[root@ansible-prome ansible]# cd /playbook/
[root@ansible-prome playbook]# ls
192.168.205.133  redis.conf  redis_first.yaml  redis_second.yaml  redis_third.yaml
[root@ansible-prome playbook]#
先准备一个nginx.conf配置文件
[root@ansible-prome playbook]# yum  install  nginx -y
[root@ansible-prome playbook]# cp /etc/nginx/nginx.conf  /playbook/
[root@ansible-prome playbook]# vim  /playbook/nginx.conf
   listen       9900;  #将80修改为9900
   listen       [::]:9900;  #将80修改为9900
[root@ansible-prome playbook]# vim install_nginx.yaml 
[root@ansible-prome playbook]# cat install_nginx.yaml 
- hosts: web
  remote_user: root
  tasks:
  - name: remove nginx
   yum: name=nginx state=removed
  - name: install nginx
   yum: name=nginx state=installed
  - name: copy nginx.conf file
   copy: src=/playbook/nginx.conf  dest=/etc/nginx/nginx.conf
#  - name: use sed modify nginx.conf
#   shell: sed -i '/listen/ s/80/9900/'  /etc/nginx/nginx.conf
  - name: start nginx
   service:  name=nginx  state=started
  - name: remove tree
   yum: name=tree  state=removed
  - name: mkdir /scbackup
   shell: mkdir -p /scbackup
  - name: crontab 
   cron: minute=30 hour=5 job='bash /backup/backup_file.sh' name=backup_file3
[root@ansible-prome playbook]# ansible-playbook --syntax-check install_nginx.yaml 

playbook: install_nginx.yaml
[root@ansible-prome playbook]# 
执行playbook脚本
[root@ansible-prome playbook]# ansible-playbook install_nginx.yaml 

2、在web服务器上验证

[root@web-1 web]# ps aux|grep nginx
root       3695  0.0  0.0  39312   940 ?        Ss   12:01   0:00 nginx: master process /usr/sbin/nginx
nginx      3697  0.0  0.0  39700  1564 ?        S    12:01   0:00 nginx: worker process
root       3861  0.0  0.0 112824   988 pts/0    R+   12:01   0:00 grep --color=auto nginx
[root@web-1 web]# netstat -anplut|grep nginx
tcp        0      0 0.0.0.0:9900            0.0.0.0:*               LISTEN      3695/nginx: master  
tcp6       0      0 :::9900                 :::*                    LISTEN      3695/nginx: master  

[root@web-1 web]# crontab -l
#Ansible: backup_file
30 2 * * * bash /backup/backup_file.sh
#Ansible: backup_file2
30 3 * * * bash /backup/backup_file.sh
#Ansible: backup_file3
30 5 * * * bash /backup/backup_file.sh

3、另外一个playbook,验证使用shell命令去修改配置文件

[root@ansible-prome playbook]# cat install_nginx.yaml 
- hosts: db
  remote_user: root
  tasks:
  - name: remove nginx
   yum: name=nginx state=removed
  - name: install nginx
   yum: name=nginx state=installed
#  - name: copy nginx.conf file
#   copy: src=/playbook/nginx.conf  dest=/etc/nginx/nginx.conf
  - name: use sed modify nginx.conf
   shell: sed -i '/listen/ s/80/9900/'  /etc/nginx/nginx.conf
  - name: start nginx
   service:  name=nginx  state=started
  - name: remove tree
   yum: name=tree  state=removed
  - name: mkdir /scbackup
   shell: mkdir -p /scbackup
  - name: crontab 
   cron: minute=30 hour=5 job='bash /backup/backup_file.sh' name=backup_file3
[root@ansible-prome playbook]# 
[root@ansible-prome playbook]# ansible-playbook install_nginx.yaml 

4、验证

[root@mysql ~]# ps aux|grep nginx
root       8868  0.0  0.0 112824   988 pts/0    S+   12:03   0:00 grep --color=auto nginx
[root@mysql ~]# ps aux|grep nginx
root       9387  0.0  0.0  39312   936 ?        Ss   12:05   0:00 nginx: master process /usr/sbin/nginx
nginx      9388  0.0  0.0  39700  1824 ?        S    12:05   0:00 nginx: worker process
nginx      9389  0.0  0.0  39700  1560 ?        S    12:05   0:00 nginx: worker process
root       9560  0.0  0.0 112824   988 pts/0    S+   12:05   0:00 grep --color=auto nginx
[root@mysql ~]# netstat -anplut|grep nginx
tcp        0      0 0.0.0.0:9900            0.0.0.0:*               LISTEN      9387/nginx: master  
tcp6       0      0 :::9900                 :::*                    LISTEN      9387/nginx: master  
[root@mysql ~]# 

5、总结:

1.	搭建了一个go语言开发的web网站
(1)	刘老师研发的一个web网站--》go

2.	搭建了MySQL数据库服务器
3.	ansbile自动化运维工具
4.	监控Prometheus

四、nginx

1、nginx介绍

nginx的web服务器软件
1.	web软件--》支持静态-->http server
2.	负载均衡--》中间件  --->reverse proxy server 反向代理服务器
k8s--》ingress
负载均衡: load balance --》LB
反向代理服务器也是负载均衡服务器   

2、yum安装nginx

[root@web-1 yum.repos.d]# yum install nginx  -y

3、 启动nginx

[root@web-1 yum.repos.d]# systemctl  start nginx

4、查看进程和端口

[root@web-1 yum.repos.d]# ps aux|grep nginx
root       4238  0.0  0.0  49076  1008 ?        Ss   15:25   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx      4239  0.0  0.1  49472  1908 ?        S    15:25   0:00 nginx: worker process
root       4242  0.0  0.0 112824   984 pts/0    R+   15:25   0:00 grep --color=auto nginx
[root@web-1 yum.repos.d]# 
查看端口
[root@web-1 yum.repos.d]# netstat -anplut|grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4238/nginx: master  
[root@web-1 yum.repos.d]# 

5、访问网站

在这里插入图片描述

6、 yum 安装的nginx,配置文件所在的目录/etc/nginx/

[root@web-1 system]# cd /etc/nginx/
[root@web-1 nginx]# ls
conf.d  default.d  fastcgi_params  mime.types  modules  nginx.conf  nginx.conf.rpmsave  scgi_params  uwsgi_params
nginx.conf 配置文件: 给nginx进程传参

7、 /usr/share/nginx/html 是nginx存放网站的目录

[root@web-1 conf.d]# cd  /usr/share/nginx/html/
[root@web-1 html]# ls
50x.html  index.html
[root@web-1 html]# 
index.html  首页  ---》访问一个网站,第一个看到的页面
超链接:

vim  index.html


http://192.168.205.132/luo.html

五、 编译安装nginx

1、 新安装一台web服务器,web-2,在ansible里添加进入主机清单

[root@ansible-prome ansible]# vim hosts 

[web2]
192.168.205.135  ansible_ssh_user='root' ansible_ssh_pass='123456'

[root@ansible-prome ansible]# ssh  root@192.168.205.135
The authenticity of host '192.168.205.135 (192.168.205.135)' can't be established.
ECDSA key fingerprint is SHA256:KoJyn5w+0AtY83GpiCKAdpMryo2G9rmawcLP/rdYXns.
ECDSA key fingerprint is MD5:d0:bd:ee:53:40:29:6e:08:df:c2:22:f4:86:66:76:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.205.135' (ECDSA) to the list of known hosts.
root@192.168.205.135's password: 
Last login: Sat Jul  6 17:06:31 2024 from 192.168.205.1
[root@localhost ~]# exit
登出
Connection to 192.168.205.135 closed.
ansible web2  -m script  -a "/etc/ansible/init_env_1.sh web-2 192.168.205.135  192.168.205.2"
ansible web2  -m script  -a "/etc/ansible/init_env_1.sh web-2 192.168.146.133
  192.168.146.2"

验证:使用ansible去执行初始化的操作不是特别方便,主要是脚本里有reboot命令,会重启服务器

2、使用ansible去安装node_exporter

3、将web-1服务器上的安装脚本和源码包文件,scp到ansible机器上

[root@web-1 ~]# scp install_node_exporter.sh root@192.168.205.134:/etc/ansible
root@192.168.205.134's password: 
install_node_exporter.sh                                                                                                                         100%  699    25.8KB/s   00:00    

[root@ansible-prome ansible]# ls
ansible.cfg  backup_file.sh  hosts  init_env_1.sh  install_node_exporter.sh  node_exporter-1.4.0-rc.0.linux-amd64.tar.gz  roles
[root@ansible-prome ansible]# ansible web2 -m copy -a "src=node_exporter-1.4.0-rc.0.linux-amd64.tar.gz  dest=/root"
[root@ansible-prome ansible]# ansible web2 -m script -a "install_node_exporter.sh"
在Prometheus server上添加 web2机器信息
[root@ansible-prome playbook]# cd /prome/prometheus
[root@ansible-prome prometheus]# vim prometheus.yml 
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    static_configs:
      - targets: ["192.168.205.134:9090"]
  - job_name: "web-1"
    static_configs:
      - targets: ["192.168.205.132:9090"]
  - job_name: "db_node"
    static_configs:
      - targets: ["192.168.205.133:9090"]
  - job_name: "db_mysql"
    static_configs:
      - targets: ["192.168.205.133:9104"]
  - job_name: "web-2"
    static_configs:
      - targets: ["192.168.205.135:9090"]

重启Prometheus 服务
[root@ansible-prome prometheus]# systemctl  restart prometheus
[root@ansible-prome prometheus]# 

在这里插入图片描述

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

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

相关文章

“AI视频智能分析系统:让每一帧视频都充满智慧

嘿&#xff0c;大家好&#xff01;今天咱们来聊聊一个特别厉害的东西——AI视频智能分析系统。想象一下&#xff0c;如果你有一个超级聪明的“视频助手”&#xff0c;它不仅能自动识别视频中的各种元素&#xff0c;还能根据内容生成详细的分析报告&#xff0c;是不是感觉特别酷…

kaggle视频追踪NFL Health Safety - Helmet Assignment

3年前的比赛了&#xff0c;检测视频中的头盔&#xff0c;通过对比赛录像的分析&#xff0c;正确指派球员。每个进攻都有两个相关的视频&#xff0c;一个是边线视角&#xff0c;另一个是端区视角&#xff0c;而且这两个视频是同步的&#xff0c;即视频中的每一帧都是对应的。我用…

idea对jar包内容进行反编译

1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径&#xff0c;在idea的plugins下面的lib文件夹内&#xff1a;java-decompiler.jar。下面是我自己本地的插件路径&#xff0c;以作参考&#xff1a; D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…

deepseek R1 14b硬件要求

RTX2080ti 11G显卡&#xff0c;模型7b速度挺快&#xff0c;试试14B也不错。 7B显存使用5.6G&#xff0c;11B显存刚好够&#xff0c;出文字速度差不多。 打算自己写个移动宽带的IPTV播放器&#xff0c;不知道怎么下手&#xff0c;就先问他了。

DeepSeek-R1环境搭建推理测试

引子 这两天国货之光DeepSeek-R1火爆出圈&#xff0c;凑个热闹。过来看看 aha moment&#xff08;顿悟时刻&#xff09;的神奇&#xff0c;OK&#xff0c;我们开始吧。 一、模型介绍 1月20日&#xff0c;中国AI公司深度求索&#xff08;DeepSeek&#xff09;发布的DeepSeek-…

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

练习(复习)

大家好&#xff0c;今天我们来做几道简单的选择题目来巩固一下最近学习的知识&#xff0c;以便我们接下来更好的学习。 这道题比较简单&#xff0c;我们前面学过&#xff0c;在Java中&#xff0c;一个类只能继承一个父类&#xff0c;但是一个父类可以有多个子类&#xff0c;一个…

【原创改进】SCI级改进算法,一种多策略改进Alpha进化算法(IAE)

目录 1.前言2.CEC2017指标3.效果展示4.探索开发比5.定性分析6.附件材料7.代码获取 1.前言 本期推出一期原创改进——一种多策略改进Alpha进化算法&#xff08;IAE&#xff09;~ 选择CEC2017测试集低维&#xff08;30dim&#xff09;和高维&#xff08;100dim&#xff09;进行测…

56. 协议及端口号

协议及端口号 在计算机网络中&#xff0c;协议和端口号是两个重要的概念。它们共同确保了不同计算机和网络设备之间可以正确、有效地进行通信。 协议&#xff08;Protocol&#xff09; 协议是网络通信的一组规则或标准&#xff0c;它定义了如何在计算机网络中发送、接收和解释…

短链接项目02---依赖的添加和postman测试

文章目录 1.声明2.对于依赖的引入和处理2.1原有的内容说明2.2添加公共信息2.3dependencies和management区别说明2.4添加spring-boot依赖2.5数据库的相关依赖2.6hutool工具类的依赖添加2.7测试test 的依赖添加 3.core文件的代码3.1目录层级结构3.2启动类3.3testcontroller测试类…

ADC 精度 第二部分:总的未调整误差解析

在关于ADC精度的第一篇文章中&#xff0c;我们阐述了模拟-数字转换器&#xff08;ADC&#xff09;的分辨率和精度之间的区别。现在&#xff0c;我们可以深入探讨影响ADC总精度的因素&#xff0c;这通常被称为总未调整误差&#xff08;TUE&#xff09;。 你是否曾好奇ADC数据表…

密码强度验证代码解析:C语言实现与细节剖析

在日常的应用开发中&#xff0c;密码强度验证是保障用户账户安全的重要环节。今天&#xff0c;我们就来深入分析一段用C语言编写的密码强度验证代码&#xff0c;看看它是如何实现对密码强度的多维度检测的。 代码整体结构 这段C语言代码主要实现了对输入密码的一系列规则验证&a…

Vue - pinia

Pinia 是 Vue 3 的官方状态管理库&#xff0c;旨在替代 Vuex&#xff0c;提供更简单的 API 和更好的 TypeScript 支持。Pinia 的设计遵循了组合式 API 的理念&#xff0c;能够很好地与 Vue 3 的功能结合使用。 Pinia 的基本概念 Store: Pinia 中的核心概念&#xff0c;类似于…

JxBrowser 7.41.7 版本发布啦!

JxBrowser 7.41.7 版本发布啦&#xff01; • 已更新 #Chromium 至更新版本 • 实施了多项质量改进 &#x1f517; 点击此处了解更多详情。 &#x1f193; 获取 30 天免费试用。

亚博microros小车-原生ubuntu支持系列:17 gmapping

前置依赖 先看下亚博官网的介绍 Gmapping简介 gmapping只适用于单帧二维激光点数小于1440的点&#xff0c;如果单帧激光点数大于1440&#xff0c;那么就会出【[mapping-4] process has died】 这样的问题。 Gmapping是基于滤波SLAM框架的常用开源SLAM算法。 Gmapping基于RBp…

Python 变量和简单数据类型思维导图_2025-01-30

变量和简单数据类型思维导图 下载链接腾讯云盘&#xff1a; https://share.weiyun.com/15A8hrTs

小麦重测序-文献精读107

Whole-genome sequencing of diverse wheat accessions uncovers genetic changes during modern breeding in China and the United States 中国和美国现代育种过程中小麦不同种质的全基因组测序揭示遗传变化 大豆重测序-文献精读53_gmsw17-CSDN博客 大豆重测序二&#xff…

Django基础之ORM

一.前言 上一节简单的讲了一下orm&#xff0c;主要还是做个了解&#xff0c;这一节将和大家介绍更加细致的orm&#xff0c;以及他们的用法&#xff0c;到最后再和大家说一下cookie和session&#xff0c;就结束了全部的django基础部分 二.orm的基本操作 1.settings.py&#x…

大模型知识蒸馏技术(2)——蒸馏技术发展简史

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl2006年模型压缩研究 知识蒸馏的早期思想可以追溯到2006年,当时Geoffrey Hinton等人在模型压缩领域进行了开创性研究。尽管当时深度学习尚未像今天这样广泛普及,但Hinton的研究已经为知识迁移和模…

android获取EditText内容,TextWatcher按条件触发

android获取EditText内容&#xff0c;TextWatcher按条件触发 背景&#xff1a;解决方案&#xff1a;效果&#xff1a; 背景&#xff1a; 最近在尝试用原生安卓实现仿element-ui表单校验功能&#xff0c;其中涉及到EditText组件内容的动态校验&#xff0c;初步实现功能后&#…