WEB集群1-5天
文章目录
- 第一天、
- 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.dcurl -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查看软件的信息
问渠那得清如许,为有源头活水来
源--》仓库,存放软件的地方
仓库 repositorycentos-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 7月 4 11:15 id_rsa
-rw-r--r-- 1 root root 394 7月 4 11:15 id_rsa.pub
-rw-r--r-- 1 root root 354 7月 3 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/bashtar 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.json2.导入模板创建文件夹,存放模板 sanchuangDashboards --》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、进程等信息 监听:90902.安装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 serviceplaybook是否是必须的?
不是必须得,可以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: webremote_user: roottasks:- name: install redisyum: name=redis state=installed- name: start redisservice: name=redis state=started enabled=true- name: create crontabcron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file2
- hosts: dbremote_user: roottasks:- name: install redisyum: name=redis state=installed- name: start redisservice: name=redis state=started enabled=true- name: create crontabcron: 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.卸载nginx1.yum安装nginx2.修改nginx的配置的端口号9900sed命令--》shell手工修改配置里的端口号3.将配置文件下发到所有的node节点服务器4.启动nginx5.卸载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.conflisten 9900; #将80修改为9900listen [::]:9900; #将80修改为9900
[root@ansible-prome playbook]# vim install_nginx.yaml
[root@ansible-prome playbook]# cat install_nginx.yaml
- hosts: webremote_user: roottasks:- name: remove nginxyum: name=nginx state=removed- name: install nginxyum: name=nginx state=installed- name: copy nginx.conf filecopy: 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 nginxservice: name=nginx state=started- name: remove treeyum: name=tree state=removed- name: mkdir /scbackupshell: 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: dbremote_user: roottasks:- name: remove nginxyum: name=nginx state=removed- name: install nginxyum: name=nginx state=installed
# - name: copy nginx.conf file
# copy: src=/playbook/nginx.conf dest=/etc/nginx/nginx.conf- name: use sed modify nginx.confshell: sed -i '/listen/ s/80/9900/' /etc/nginx/nginx.conf- name: start nginxservice: name=nginx state=started- name: remove treeyum: name=tree state=removed- name: mkdir /scbackupshell: 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网站--》go2. 搭建了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.htmlhttp://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.133192.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]#

相关文章:
WEB集群1-5天
文章目录 第一天、1、初始化配置1. 编写的初始化的脚本 init_env.sh2. 远程拷贝初始化脚本到mysql服务器里3.在mysql这台服务器上执行脚本 2、总结 第二天1、yumyum介绍yum操作将冯老师提供的网站的源码包上传到web服务器 2、部署网站1、解压文件2、epel源:可以提供…...
“AI视频智能分析系统:让每一帧视频都充满智慧
嘿,大家好!今天咱们来聊聊一个特别厉害的东西——AI视频智能分析系统。想象一下,如果你有一个超级聪明的“视频助手”,它不仅能自动识别视频中的各种元素,还能根据内容生成详细的分析报告,是不是感觉特别酷…...
oracle中使用in 和 not in 查询效率分析
在Oracle数据库中,IN和NOT IN的查询效率受多种因素影响,以下是关键点总结和优化建议: 1. IN 的效率 优化方式: IN 通常会被优化为 OR条件 或 半连接(Semi-Join),如果子查询关联到外部表&#x…...
kaggle视频追踪NFL Health Safety - Helmet Assignment
3年前的比赛了,检测视频中的头盔,通过对比赛录像的分析,正确指派球员。每个进攻都有两个相关的视频,一个是边线视角,另一个是端区视角,而且这两个视频是同步的,即视频中的每一帧都是对应的。我用…...
idea对jar包内容进行反编译
1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径,在idea的plugins下面的lib文件夹内:java-decompiler.jar。下面是我自己本地的插件路径,以作参考: D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…...
deepseek R1 14b硬件要求
RTX2080ti 11G显卡,模型7b速度挺快,试试14B也不错。 7B显存使用5.6G,11B显存刚好够,出文字速度差不多。 打算自己写个移动宽带的IPTV播放器,不知道怎么下手,就先问他了。...
DeepSeek-R1环境搭建推理测试
引子 这两天国货之光DeepSeek-R1火爆出圈,凑个热闹。过来看看 aha moment(顿悟时刻)的神奇,OK,我们开始吧。 一、模型介绍 1月20日,中国AI公司深度求索(DeepSeek)发布的DeepSeek-…...
列表(修改、添加和删除元素)
你将学习列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。 列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。 修改、添加和删除元素 你…...
记录 | 基于Docker Desktop的MaxKB安装
目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章:如何利用智谱全模态免费模型,生成大家都喜欢的图、文、视并茂的文章! MaxKB的Github下载地址 参考视频:【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…...
策略梯度 (Policy Gradient):直接优化策略的强化学习方法
策略梯度 (Policy Gradient) 是强化学习中的一种方法,用于优化智能体的策略,使其在给定环境中表现得更好。与值函数方法(如 Q-learning)不同,策略梯度方法直接对策略进行优化,而不是通过学习一个值函数来间…...
练习(复习)
大家好,今天我们来做几道简单的选择题目来巩固一下最近学习的知识,以便我们接下来更好的学习。 这道题比较简单,我们前面学过,在Java中,一个类只能继承一个父类,但是一个父类可以有多个子类,一个…...
数据结构与算法之栈: LeetCode 739. 每日温度 (Ts版)
每日温度 https://leetcode.cn/problems/daily-temperatures/description/ 描述 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温…...
【原创改进】SCI级改进算法,一种多策略改进Alpha进化算法(IAE)
目录 1.前言2.CEC2017指标3.效果展示4.探索开发比5.定性分析6.附件材料7.代码获取 1.前言 本期推出一期原创改进——一种多策略改进Alpha进化算法(IAE)~ 选择CEC2017测试集低维(30dim)和高维(100dim)进行测…...
创建 priority_queue - 初阶(c++)
优先级队列 普通的队列是⼀种先进先出的数据结构,即元素插⼊在队尾,⽽元素删除在队头。 ⽽在优先级队列中,元素被赋予优先级,当插⼊元素时,同样是在队尾,但是会根据优先级进⾏位置 调整,优先级…...
56. 协议及端口号
协议及端口号 在计算机网络中,协议和端口号是两个重要的概念。它们共同确保了不同计算机和网络设备之间可以正确、有效地进行通信。 协议(Protocol) 协议是网络通信的一组规则或标准,它定义了如何在计算机网络中发送、接收和解释…...
前端知识速记—JS篇:null 与 undefined
前端知识速记—JS篇:null 与 undefined 什么是 null 和 undefined? 1. undefined 的含义 undefined 是 JavaScript 中默认的值,表示某个变量已被声明但尚未被赋值。当尝试访问一个未初始化的变量、函数没有返回值时,都会得到 u…...
短链接项目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测试类…...
Docker容器数据恢复
Docker容器数据恢复 1 创建mongo数据库时未挂载数据到宿主机2 查找数据卷位置3 将容器在宿主机上的数据复制到指定目录下4 修改docker-compose并挂载数据(注意端口)5 重新运行新容器 以mongodb8.0.3为例。 1 创建mongo数据库时未挂载数据到宿主机 versi…...
Sqoop源码修改:增加落地HDFS文件数与MapTask数量一致性检查
个人博客地址:Sqoop源码修改:增加落地HDFS文件数与MapTask数量一致性检查 | 一张假钞的真实世界 本篇是对记录一次Sqoop从MySQL导入数据到Hive问题的排查经过的补充。 Sqoop 命令通过 bin 下面的脚本调用,调用如下: exec ${HAD…...
AI常见的算法
人工智能(AI)中常见的算法分为多个领域,如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途: 例子代码:纠结哥/pytorch_learn 1. 机器学习 (Machine Learning) 监督学习 (S…...
ADC 精度 第二部分:总的未调整误差解析
在关于ADC精度的第一篇文章中,我们阐述了模拟-数字转换器(ADC)的分辨率和精度之间的区别。现在,我们可以深入探讨影响ADC总精度的因素,这通常被称为总未调整误差(TUE)。 你是否曾好奇ADC数据表…...
我的毕设之路:(2)系统类型的论文写法
一般先进行毕设的设计与实现,再在现成毕设基础上进行描述形成文档,那么论文也就成形了。 1 需求分析:毕业设计根据开题报告和要求进行需求分析和功能确定,区分贴合主题的主要功能和拓展功能能,删除偏离无关紧要的功能…...
密码强度验证代码解析:C语言实现与细节剖析
在日常的应用开发中,密码强度验证是保障用户账户安全的重要环节。今天,我们就来深入分析一段用C语言编写的密码强度验证代码,看看它是如何实现对密码强度的多维度检测的。 代码整体结构 这段C语言代码主要实现了对输入密码的一系列规则验证&a…...
独立成分分析 (ICA):用于信号分离或降维
独立成分分析 (Independent Component Analysis, ICA) 是一种用于信号分离和降维的统计方法,常用于盲源分离 (Blind Source Separation, BSS) 问题,例如音频信号分离或脑电信号 (EEG) 处理。 实现 ICA(独立成分分析) 步骤 生成…...
Java中的注解与反射:深入理解getAnnotation(Class<T> annotationClass)方法
Java的注解(Annotation)是一种元数据机制,它允许我们在代码中添加额外的信息,这些信息可以在编译时或运行时被读取和处理。结合Java的反射机制(Reflection),我们可以在运行时动态地获取类、方法…...
Vue - pinia
Pinia 是 Vue 3 的官方状态管理库,旨在替代 Vuex,提供更简单的 API 和更好的 TypeScript 支持。Pinia 的设计遵循了组合式 API 的理念,能够很好地与 Vue 3 的功能结合使用。 Pinia 的基本概念 Store: Pinia 中的核心概念,类似于…...
JxBrowser 7.41.7 版本发布啦!
JxBrowser 7.41.7 版本发布啦! • 已更新 #Chromium 至更新版本 • 实施了多项质量改进 🔗 点击此处了解更多详情。 🆓 获取 30 天免费试用。...
亚博microros小车-原生ubuntu支持系列:17 gmapping
前置依赖 先看下亚博官网的介绍 Gmapping简介 gmapping只适用于单帧二维激光点数小于1440的点,如果单帧激光点数大于1440,那么就会出【[mapping-4] process has died】 这样的问题。 Gmapping是基于滤波SLAM框架的常用开源SLAM算法。 Gmapping基于RBp…...
Python 变量和简单数据类型思维导图_2025-01-30
变量和简单数据类型思维导图 下载链接腾讯云盘: 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博客 大豆重测序二ÿ…...
