生产服务器根目录空间余量告急,你可能会选择对重装系统重装,这种方式对生产服务器不友好,也不推荐。网上你可以看到很多文章进行LVM进行根目录扩容,当然一顿猛操作后,发现无计于事,因为你的根目录挂载的磁盘根本不是LVM方式,无法这样操作。在不重装,也不影响线上生产,有没有一种方式可以实现动态扩容呢?答案:有 概要 使用rsync命令带属性方式转移数据 然后再使用lvm方式进行对某些目录进行重装挂载 这样就可以扩出容量。 LVM 原理 LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用 掌握4个基本的逻辑卷概念 PE(Physical Extend) 物理扩展(底层) PV(Physical Volume) 物理卷(底层) VG(Volume Group) 卷组 LV(Logical Volume) 逻辑卷(上层) 工作原理 常用命令操作 # 格式为物理卷 pvcreate /dev/vda1 [可以多个] pvdisplay #查看物理卷 pvs #查看物理卷列表 # 创建卷组 vgcreate vg1 /dev/vda1 # vg1 是卷组名称, /dev/vda1 是分区名称 vgdisplay # 查看卷组 vgs # 查看卷组列表 # 创建逻辑卷 lvcreate -n lv1 -L 50G vg1 # lv1 是逻辑卷名称, 50G 是转成逻辑卷大小 vg1就是卷组 lvdisplay # 查看逻辑卷信息 lvs # 查看逻辑卷列表 实战 查看你的磁盘分区信息(df -h) 查看你的磁盘信息(fdisk -l) 对指点磁盘进行分区操作(fdisk /dev/vdc 每个人的磁盘分区名称不一样) 创建物理卷 创建卷组 创建逻辑卷 对逻辑卷进行格式化 ext4 挂载某目录 # 1.
经过前面二篇 Go 简介,Go 环境配置 学习,大家对 Golang 有个大概的了解了, 环境也配置好了,就差上手写代码啦,今天主要介绍 Golang 的开发工具与工具链,如何写出第一个 “Hello World” Goland 开发工具 编写 Golang ,首选 Goland 开发工具,当然 Goland 是收费的(可试用30天)。国内也有破解教程。自行 Google,在此也会介绍一种快捷的方式 下载 Goland https://www.jetbrains.com/go/ 安装 官方提供:Window, Mac, Linux 三个平台的安装包。 安装过程下一步,下一步即可,在此不赘述。 激活 可能会遇到用一段时间就失效啦,你只需要再次来到这个网站下载激活码,重新激活一次即可。 http://idea.medeming.com/jetbrains/ 设置 Go Modules File -> Settings -> Go -> Go Modules ![image-20200916200143415](https://cdn.jsdelivr.net/gh/yezihack/assets/b/20200916200144.png?imageslim) 将 `GOPROXY=https://goproxy.cn,direct` 填写到 Environment 处。 用于 Go GET 加速下载依赖包。![image-20200916170456456](https://cdn.jsdelivr.net/gh/yezihack/assets/b/20200916170457.png?imageslim) 第一个 Go 程序 新建项目 File -> New -> Project 新建 Go 文件 右击 awesomeProject -> New -> Go -> 选择"Simple Application"
docker 的优点,就是简化所有的安装流程。移植性好,安装快捷。 在安装之前,Elasticsearch 与 Kibana 需要注意版本一致。 当前IK分词器也需要一致。见 github release dockerhub es dockerhub kibana github ik analysis Docker 创建网络栈 后面创建 elaticsearch, kibana 需要用到。 docker network create es-network Elasticsearch 安装 docker pull elasticsearch:7.14.1 docker run -d --name elasticsearch --net es-network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.14.1 --net es-network 使用刚创建的网络栈 -e "discovery.type=single-node" 设置配置参数为单结点集群 --name elasticsearch 设置容器名称 -p 9200:9200 设置端口映射,前为宿主机端口,后为容器里的端口。 -d 后台运行模式 elasticsearch:7.14.1 镜像名称,通过docker images 查看,若没有会自动下载 查看日志,发现一处警告: docker logs elasticsearch { "type":"deprecation.elasticsearch", "timestamp":"2021-09-15T03:55:39,835Z", "level":"DEPRECATION", "component":"o.
本教程基于 Go1.11版本展开, 也就是官方提供 Go Module 功能。 安装 Golang 国内推荐下载点 Go 语言中文网 ,默认大家使用 CPU Amd 64 架构 最新版本:go1.15.2 Window https://studygolang.com/dl/golang/go1.15.2.windows-amd64.msi 傻瓜式一键安装即可。安装目录推荐 c:\\Go Linux cd /usr/local/src/ wget https://studygolang.com/dl/golang/go1.15.2.linux-amd64.tar.gz tar -zxvf go1.15.2.linux-amd64.tar.gz -C /usr/local/ MacOS https://studygolang.com/dl/golang/go1.15.2.darwin-amd64.pkg cd /usr/local/src/ wget https://studygolang.com/dl/golang/go1.15.2.darwin-amd64.tar.gz tar -zxvf go1.15.2.darwin-amd64.tar.gz -C /usr/local/ 设置 Goproxy 国内加速代理,用于加速下载 github 或 google 上的包 window设置方法 临时生效设置方法 # 启用 Go Modules 功能 $env:GO111MODULE="on" # 配置 GOPROXY 环境变量 $env:GOPROXY="https://goproxy.io,direct" 永久生效设置方法 计算机 图标上鼠标右击 选择 属性 选择左侧 高级系统设置 GO111MODULE="on" GOPROXY="https://goproxy.
为什么写这个教程 Golang在中国发展非常不错,国内关于 Golang 的书籍也挺多,网上的 Golang 教程也不在少数。为什么我还要重复造这个轮子呢?我自学 Golang 也是看网上各种教程,学至今日,我回头看过来。刚开始学习时会写个 “Hello World”,懂 Golang 语法,然后实际项目应用上感觉还是从零开始一样,刚开始无法自己去独立构建一个项目,只能采用模仿公司前辈写的项目再加领导指点一下,在写项目其间也遇到各种坑,如指针,Chan,切片等问题。而网上的教程大多数都是一种教科书式的,基本模式是:学习理论 -> 实践 -> 入坑 -> 理论 -> 实践 。 完成一个完整的闭环,你算是从理论入门到实践入门再到理论与实践结合入门。 这个教程的初衷就是让你一次:实践入门,至于基本理论原理涉及篇幅太大,不过其间也会略提一些。我也会推荐一些非常棒的教程供大家学习。 本入门系列只带你实践入门,教你写出日常工程代码 历史 Go 语言起源于 2007 年,并在 2009 年正式发布 Go 是一门非常年轻的语言,它“兼具 Python 的简洁,C/C++ 的性能与安全” Go 被誉为“21世纪的 C 语言" 创始人 Rob Pike Go语言项目总负责人,贝尔实验室 Unix 团队成员 Ken Thompson 贝尔实验室 Unix 团队成员,C语言、Unix 和 Plan 9 的创始人之一 Robert Griesemer 就职于 Google,参与开发 Java HotSpot 虚拟机,对语言设计有深入的认识,并负责 Chrome 浏览器和 Node.js 使用的 Google V8 JavaScript 引擎的代码生成部分。 特点&优势 语言层面支持并发编程 跨平台编译 特性少,语法简单,易于上手 静态类型语言 丰富的标准库和丰富的工具链 可直接编译成机器码,不依赖其他库 内嵌C支持 支持GC 支持反射 匿名函数和闭包 用途 网络编程 系统编程 并发编程 分布式编程 知名项目 Kubernetes Etcd Prometheus Grafana Docker Hugo Influxdb 推荐教程 Go入门指南 Go 语言设计与实现 — 底层实现原理一一讲透 Go 语言101—也是讲底层实现的不可多得的教程 Go 语言学习资料与社区索引
最近同事发了一篇硬核!30 张图解 HTTP 常见的面试题 文章给我看,一打开就被博主的博客风格吸引,条理清晰,采用总分总的形式写的,图文并茂,文章虽然很长,看完也不觉得累,而且还乐在其中,将久违的知识又重新复习了一篇,又重新学习了一篇,加深了理解。文章写得好,做个搬运工,整理下方便以后查阅。也感谢博主小林。 图解计算机系统原理 序列 超链 1 20 张图揭开「内存管理」的迷雾,瞬间豁然开朗 2 进程、线程基础知识全家桶,30 张图一套带走 3 多线程为了同个资源打起架来了,该如何让他们安定? 4 凉了!张三同学没答好「进程间通信」,被面试官挂了…. 5 一口气搞懂「文件系统」,就靠这 25 张图了 图解计算机网络 序列 超链 1 硬核!30 张图解 HTTP 常见的面试题 2 30张图解:键入网址后,到网页显示,其间发生了什么? 3 20 张图解: ping 的工作原理 4 35 张图解:被问千百遍的 TCP 三次握手和四次挥手面试题 5 30张图解: TCP 重传、滑动窗口、流量控制、拥塞控制 6 IP 基础知识全家桶,45 张图一套带走 7 实战!我用 Wireshark 让你“看见“ TCP 8 TCP 半连接队列和全连接队列满了会发生什么?又该如何应对? 9 面试官:换人!他连 TCP 这几个参数都不懂
mysqld_exporter 安装 下载慢,请查看软件下载列表 https://prometheus.io/download/ cd /usr/local/src/ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.darwin-amd64.tar.gz tar -zxvf mysqld_exporter-0.12.1.darwin-amd64.tar.gz -C /usr/local/ mv /usr/local/mysqld_exporter-0.12.1.darwin-amd64 /usr/local/mysqld_exporter 创建 .my.cnf 文件 host 主机地址 user mysql名称 password mysql密码 cat > /usr/local/mysqld_exporter/.my.cnf << EOF [client] host=127.0.0.1 user=root password=root EOF 创建 systemd 服务 cat > /lib/systemd/system/mysqld_exporter.service << EOF [Unit] Description=mysqld_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=root ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf KillMode=process Restart=on-failure RestartSec=10s [Install] WantedBy=multi-user.target EOF 启动 systemctl daemon-reload systemctl start mysqld_exporter systemctl status mysqld_exporter 验证 metrics 显示有数据则表示已经采集到数据啦。

Debug 调试

Linux 网络调试 tcpdump 监听网卡 eth0 及 端口 80 tcpdump -i eth0 -nnA 'port 80'
.1. 简介 Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分 析,查询,然后进行可视化的展示,并能实现报警 官网:https://grafana.com/ .2. 源码安装 官方最新版本下载:https://grafana.com/grafana/download # 下载 cd /usr/local/src wget https://dl.grafana.com/oss/release/grafana-7.1.5.linux-amd64.tar.gz wget https://dl.grafana.com/oss/release/grafana-9.0.0.linux-amd64.tar.gz # 解压 tar -zxvf /grafana-7.1.5.linux-amd64.tar.gz -C /usr/local # 重命名文件夹 grafana mv /usr/local/grafana-7.1.5.linux-amd64 /usr/local/grafana .3. RPM 方式安装 wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.0-1.x86_64.rpm sudo yum install grafana-enterprise-9.0.0-1.x86_64.rpm sudo systemctl daemon-reload sudo systemctl start grafana-server sudo systemctl status grafana-server sudo systemctl enable grafana-server 创建 systemd 服务 -homepath grafana的工作目录。 cat > /lib/systemd/system/grafana.service << EOF [Unit] Description=Grafana Documentation=https://grafana.com/ After=network.target [Service] Type=notify ExecStart=/usr/local/grafana/bin/grafana-server -homepath /usr/local/grafana/ Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.
基于 CentOS 7 amd64 系统 Prometheus 多维数据模型(有metric名称和键值对确定的时间序列) 灵活的查询语言 不依赖分布式存储 通过pull方式采集时间序列,通过http协议传输 支持通过中介网关的push时间序列的方式 监控数据通过服务或者静态配置来发现 支持图表和dashboard等多种方式 组件: Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面。 Alertmanager 程序,主要是负责实现报警功能。 Pushgateway 程序,主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。 node_exporter 监控远程 linux 服务器CPU、内存、磁盘、I/O等信息 生态架构图 普罗米修斯的体系结构及其一些生态系统组件 https://prometheus.io/docs/introduction/overview/ 工作流程 Prometheus 服务器定期从配置好的 jobs 或者 exporters 中获取度量数据;或者接收来自推送网关发送过来的 度量数据。 Prometheus 服务器在本地存储收集到的度量数据,并对这些数据进行聚合; 运行已定义好的 alert.rules,记录新的时间序列或者向告警管理器推送警报。 告警管理器根据配置文件,对接收到的警报进行处理,并通过email等途径发出告警。 Grafana等图形工具获取到监控数据,并以图形化的方式进行展示。 Client Library 提供度量的四种类型 Counter 类型: 计数器。 是一个累计的指标,代表一个单调递增的计数器,它的值只会增加或在重启时重置为零。 一般用于记录访问数,错误数,任务数等 Gauge 类型:计量器。 是代表一个数值类型的指标,它的值可以增或减 如CPU的负载,协程数,并发请求量,内存使用量等 Histogram 柱状图 是一种累积直方图,在一段时间范围内对数据进行采样,并将其计入可配置的存储桶(bucket)中。 histogram并不会保存数据采样点值,每个bucket只有记录样本数的counter,即histogram存储是区间的样本数据统计值。 如请求持续时间或响应大小等。 Summary 摘要 是对百分数进行统计的。 即在一段时间内(默认10分钟)的每个采样点进行统计,并形成分位图 (如:正态分布一样,统计低于60分不及格的同学比例,统计低于80分的同学比例,统计低于95分的同学比例) 参考 文档下载 官方文档 非官方中文文档 CentOS7.5 Prometheus2.