「Nginx」- 配置文件格式化

问题描述
对于 Nginx 配置文件的修改或增加,通常是在命令行中是通过 vim 编辑器完成的。
但是,最痛苦的事情就是配置文件的格式化,即配置行的缩进。由于 vim 不会自动缩进 Nginx 配置行,在经过日积月累的修改后,Nginx 配置文件的格式乱七八糟,可读性极低,维护这种配置文件极易出错。
该笔记将记录:如何格式化 Nginx 配置文件,以及常见问题的处理。
解决方案
命令行工具
1)Nginx Formatter,这是目前(05/22/2019)能找到的、Star 比较多的项目(使用 Python 开发),也是我们正在使用的工具:

git clone https://github.com/slomkowski/nginx-config-formatter.git

conf_folder=’/etc/nginx/conf.d/’ # 针对 CentOS RHEL 发行版
conf_folder=’/etc/nginx/sites-available/’ # 针对 Debian Ubuntu 发行版

# 格式化配置文件,同时备份
nginx-config-formatter/nginxfmt.py \
-v –backup-original –indent 4 \
$conf_folder/*.conf

# 如果生成的配置文件符合预期,则进行清理工作(使用 mv 替代 rm 是个好习惯)
find $conf_folder -type f -name ‘*.conf~’ -exec mv -v {} /tmp \;

2)nginxbeautifier,需要使用 NodeJS 环境来安装运行。但是,我们没有使用该工具,因为在我们的场景中,我们不会为了格式化 Nginx 配置而在主机中安装 NodeJS 环境,否则就把问题搞复杂了。
3)conffmt,该项目比较久,所以我们也没有使用该工具。
4)nginxfmt,是我们现在(04/06/2023)正在使用的工具,原因是在服务器中安装比较简单:

# https://pypi.org/project/nginxfmt/
pip3 install nginxfmt

cp nginx.conf nginx.conf.backup
nginxfmt nginx.conf

在线工具
NGINX Beautifier
格式化 Nginx 配置文件这个问题的本质:实质是对配置行的正确缩进:-),我们仅需合适的缩进工具即可。因此我们完全能够借助其他代码格式化工具:Online JavaScript beautifier
参考文献
Is[……]

READ MORE

「PHP」- 性能优化

OPCache
PHP: OPcache – Manual
OPcache 通过将预编译的脚本字节码存储在共享内存中来提高 PHP 性能,从而消除 PHP 在每个请求上加载和解析脚本的需要,以提高 PHP 性能。
安装方法: 1)Learn how to integrate PHP OPcache in a web application 2)PHP 7 + OPcache speed up websites noticeably – IONOS
配置属性: 1)PHP: Runtime Configuration – Manual[……]

READ MORE

「Network」- 网络协议,OSI model, TCP/IP model

Layer 5: Application Layer(TCP/IP model)
Application Layer Protocols: https://en.wikipedia.org/wiki/Category:Application_layer_protocols
Layer 7: Application Layer(OSI model)
功能:为应用程序提供接口;
协议:TELNET,FTP,TFTP,SNMP,HTTP,SMTP,DNS,DHCP
Layer 6: Presentation Layer(OSI model)
功能:进行数据格式的转换,以确保 某个系统生成的应用层数据 能被 另个系统的应用层 所识别和理解;
表示层:数据格式化,加密、解密。
数据单元:PPDU
Layer 5: Session Layer(OSI model)
功能:在通信双方之间建立、管理、终止会话;
Layer 4: Transport Layer(OSI model & TCP/IP model)
Transport Layer Protocols: https://en.wikipedia.org/wiki/Category:Transport_layer_protocols
功能:建立、维护、取消单次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等;
协议:TCP,UDP
The protocols of this layer provide host-to-host communication services for applications. It provides services such as connection-oriented communication, reliability, flow control, and multiplexing.[……]

READ MORE

「P2P」- Peer-to-Peer,点对点

问题描述
WIP
解决方案
点对点 (P2P) 计算或网络是一种分布式应用程序架构,可在对等点之间划分任务或工作负载。对等点是网络中具有同等特权、同等权力的参与者。据说它们形成了一个点对点的节点网络
P2P,是种网络架构,而非网络协议;
原理简述
在 Client 间,直接互相分享数据;

P2P 技术原理 P2P 技术详解
特性特征
去中心化 —— 即只要有网络,就可以维持下去。
应用场景
聊天协议
WIP
文件分享
一个BT站倒了,大家手中有种子有文件,可以继续分享。毕竟文件不是存在BT站上的。 网络的维持需要每个人的奉献,因此P2P中出现了“排队”的概念,你上传的文件越多,你就越容易下载。
某些软件最糟骂的是破坏了 p2p 规则,无论是 bt 下载和 ed2k 协议都是这样,某些软件优先把上传供给使用其客户端的用户(发展到现在,演变成了优先给付费用户),这才是关键!p2p 本应该是一个公平的排队机制协议,而不是某些软件这样的吸血鬼!
参考文献
Peer-to-peer – Wikipedia[……]

READ MORE

「P2P」- 概念术语

Private Tracker
Private Tracker 是种 Torrent 网站,它提供与 Public Tracker 相同的功能,但仅限邀请。这意味着我们需要成为会员才能查看网站内容并下载其种子文件。
Bit Torrent
BitTorrent – Wikipedia
BitTorrent 是一种用于点对点文件共享 (P2P) 的通信协议,它使用户能够以分散的方式在 Internet 上分发数据和电子文件。
BitTorrent Tracker 提供可用于传输的文件列表,并允许客户端找到可以传输文件的对等用户(称为“种子”)。[……]

READ MORE

「UPnP」- Universal Plug and Play

「通用即插即用(UPnP)」是一组网络协议,允许联网设备(如个人计算机,打印机,互联网网关,无线接入点,移动设备)无缝地发现彼此在网络上的存在,并建立功能性网络服务,用于数据共享、通信、娱乐。它主要用于没有企业级设备的住宅网络。
为什么要写这东西?
我并不想深入了解这个东西,因为还没有遇到使用场景。
之所以开了这么一篇文章,完全是因为我在排查其他问题的时候发现了239.255.255.250.1900的UDP报文,因此简单了解一下。
有这么一句话:通过使用多播(称为HTTPMU)在UDP上运行HTTP来支持设备搜索请求和通知。
所以用tcpdump抓包:

# tcpdump -n -i eth0 -X ‘port 1900 and src host 172.16.0.100’

17:01:06.972122 IP 172.16.0.100.45283 > 239.255.255.250.1900: UDP, length 166
0x0000: 4500 00c2 bf01 4000 0111 1dbb ac10 0064 E…..@……..d
0x0010: efff fffa b0e3 076c 00ae 9d2e 4d2d 5345 …….l….M-SE
0x0020: 4152 4348 202a 2048 5454 502f 312e 310d ARCH.*.HTTP/1.1.
0x0030: 0a48 4f53 543a 2032 3339 2e32 3535 2e32 .HOST:.239.255.2
0x0040: 3535 2e32 3530 3a31 3930 300d 0a4d 414e 55.250:1900..MAN
0x0050: 3a20 2273 7364 703a 6469 7363 6f76 6572 :.”ssdp:discover
0x0060: 220d 0a4d 583a 2031 0d0a 5354 3a20 7572 “..MX:.1..ST:.ur
0x0070: 6e3a 6469 616c 2d6d 756c 7469 7363 7265 n:dial-multiscre
0x0080: 656e 2d6f 7267 3a73 6572 7669 6365 3a64 en-org:service:d
0x0090: 6961 6c3a 310d 0a55 5345 522d 4147 454e ial:1..USER-A[……]

READ MORE

「MPLS/LDP」- 工作原理

原理概述
1)网络连通:首先,LSR 通过运行 IGP 协议(例如 OSPF、IS-IS 等等)来构建路由表、FIB表; 2)分配标签:LDP根据相应的模式,为路由表中的路由前缀(FEC)分配标签; 3)通告标签:LDP根据相应的模式,将自己为路由前缀分配的标签,通过LDP标签映射报文通告给LDP邻居; 4)存储标签:LSR将自己为路由前缀分配的标签,以及LDP邻居为该路由前缀通告的标签存储起来,并与出接口、下一跳地址等信息形成关联(标签转发表项); 5)报文转发:当 LSR 转发到达目的网络的标签报文时,所使用的出站标签总是下游LDP邻居(指设备的路由表中到达该目的网络的下一跳设备)所通告的标签;[……]

READ MORE

「MPLS-TE」- MPLS TE

WIP !!! MPLS TE 实验:16、MPLS TE属性相关实验 WIP !!! MPLS TE 实验:18、MPLS TE显式路径实验 WIP !!! MPLS TE 实验:21、MPLS TE流量转发实验 WIP !!! MPLS TE 实验:24、MPLS TE 可靠性实验(HSB、FRR)[……]

READ MORE

「INFORMATION-SECURITY」- 信息安全

[……]

READ MORE

「nmap」- Network exploration tool and security / port scanner

命令安装
Download: https://nmap.org/download.html Install Guide: https://nmap.org/book/install.html
安装的二进制文件

nmap/bin/
├── ncat
├── ndiff
├── nmap
├── nmapfe -> zenmap
├── nping
├── uninstall_ndiff
├── uninstall_zenmap
├── xnmap -> zenmap
└── zenmap

0 directories, 9 files

常用命令
Docs: https://nmap.org/docs.html
主机扫描
nmap -sn 192.168.0.0/24
端口扫描
Nmap Network Scanning/Port Scanning Techniques
nmap –open -p 8080 your-hostname
参考文献
Homepage: https://nmap.org/[……]

READ MORE

「ROOK-CEPH」- 系统监控

第一步、监控指标
1)OSD 磁盘读写监控
通过 Node Exporter 服务,来采集 OSD 节点磁盘读写;
2)OSD 容器读写监控
通过 kubelet cAdvisor 服务,来采集 OSD 容器的磁盘读写;
3)Ceph 集群运行监控
WIP
第二步、配置告警[……]

READ MORE

「SYNOLOGY-DSM」- 按转群辉系统(黑群辉)

问题描述
黑群晖是指群晖公司的 Synology DiskStation Manager (简称 DSM 操作系统)被黑客改装后安装在非群晖的机器上具有大部分正版群晖服务器功能的非正版 NAS 系统;
该笔记将记录:我们安装黑群辉的过程,以及相关问题的解决办法;
解决方案
借助 Promox VE(PVE)虚拟机安装黑群晖保姆级图文教程 文档,我们才能在 PVE 中的安装 DSM 6.2-23739 系统。建议阅读原始文档,以获取详细的安装过程。我们具有一定的基础,所以仅将简记相关内容;
第一步、创建 VM 实例
针对该过程,其与普通的虚拟机创建过程无异,下一步,下一步,下一步,……完成虚拟机创建即可;
第二步、修改 VM 硬盘
访问 https://www.nas2x.com/downloads/ 站点; 下载引导文件:http://down.nas2x.com/synology/dsm/6.2/6.2.0/ds3617_6.2/synoboot.img 通过 qm importdisk 将 synoboot 镜像导入虚拟机,该镜像文件负责引导;
在创建虚拟机时,虚拟机实例包含一块默认磁盘(32G),该磁盘将用于安装 DSM 系统;
注意:两个磁盘都要使用 SATA 协议,否则当系统安装时,或提示无法找到磁盘,或网页管理界面无法正常访问;
第三步、修改 VM 网卡
虚拟群晖可以识别 E1000 和 vmxnet3 网卡,我们使用 vmxnet3 网卡(与作者保持一致);
并要填写网卡的 MAC 地址,需要引导镜像里面的 MAC 地址一致(在 synoboot.img/grub.cfg 中,通常为 00:11:32:2C:A6:03);
第四步、启动 VM 实例
启动虚拟机实例
第五步、访问管理界面
在我们的网络环境中,访问 find.synology.com 无法找到未配置的群晖虚拟机(原因在于其检测方式,浏览 F12 查看浏览器网络请求便可知其原因);
通过 nmap 命令,内网扫描 5000 端口即可:

# nmap –open -p 5000 172.31.253.*
Starting Nmap 7.80 ( https://nmap.org ) at 2023-03-19 18:54 CST
Nmap scan report for 172.31.253.140
Host is up (0.018s latency).

PORT STATE SERVICE
5000/tcp open upnp

Nmap done: 256 IP addresses (20 hosts up) scanned in 2.[……]

READ MORE

「SYNOLOGY-DSM」- 场景及方案

密码重置
通过以下网站中模式 1 的方式来对 NAS 进行重置;
– 对于 DSM 6.2.4 或以上版本: https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_reset_my_Synology_NAS_7
– 对于 DSM 6.2.3 或更早版本: https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_reset_my_Synology_NAS
重置不会丢失数据,也不会丢失以往的用户;
但部分系统配置会处于以下状况: -管理员帐户会还原为默认值; -UI 管理端口会重置为 5000/5001; -IP、DNS、网关和其他网络接口会重置为 DHCP; -PPPoE 会禁用; -自动封锁会禁用; -防火墙规则会禁用; -加密文件夹会卸载,开机时自动装载功能会禁用; -High-availability 集群会被移除; -Virtual Machine Manager 集群会被移除;
多媒体
Audio Station
Audio Station – Synology Knowledge Center
1)Go to File Station > music, and click Upload. By default, you can access music in this folder in Audio Station. If you want to change the designated folder for music, please refer to Media Indexing. 2)Select the files you want to upload to your music folder from your local computer.
Moments
WIP[……]

READ MORE

「STORAGE」- 性能测试:基准指标

解决方案
针对不同类型的存储,其能达到的性能基线并不相同;
我们在这方面缺乏相关经验,所以我们将尝试参考云商(Alibaba Cloud,Google Cloud)提供的性能基准;
Block Storage
块存储需要关注 Bandwidth、IOPS、Latency、Capacity 四个指标;
Alibaba Cloud
1)块存储性能:其内容为各类存储性能概述介绍,涉及各个类型块存储的性能,及相关计算公式; 2)块存储介绍:其内容为特定存储性能的详细说明,涉及各种块存储,包含各类存储自身的性能; 3)存储I/O性能:是存储性能的变化规则,各存储规格的性能表现的行为;
如下表格,其来自阿里云云盘性能表格,是我们对部分内容的摘录:

_IDX_
存储类型
单盘容量范围(GiB)
最大IOPS
最大吞吐量(MB/s)
单路随机写平均时延(ms)
_DESC_

01
普通云盘
5~2,000
数百
30~40
5~10(Blk-Sz=4K)
 

02
高效云盘
20~32,768
5,000
140
1~3(Blk-Sz=4K)
 

 
 
 
 
 
 
 

 
 
 
 
 
 
 

 
 
 
 
 
 
 

普通云盘,其 IOPS 我们按照 55-180 计算(Know Your Storage Constraints: IOPS and Throughput)
File Storage
单个文件系统的吞吐性能上限(峰值)与文件系统的当前使用容量线性相关,即存储量越大,吞吐性能上限(峰值)越高。支持上千个 ECS 通过 POSIX 接口并发访问,随机读写;
Alibaba Cloud
极速型,基于阿里云最新一代网络架构和全闪存储打造的高性能共享文件存储。最大容量256 TiB,[……]

READ MORE

「fio」- 命令安装

on Linux

apt-get install fio

on Kubernetes


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fio-test-blk
namespace: default
spec:
accessModes:
– ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: ceph-block

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fio-test-fs
namespace: default
spec:
accessModes:
– ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: ceph-filesystem

apiVersion: apps/v1
kind: Deployment
metadata:
name: fio
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: fio
template:
metadata:
labels:
app: fio
spec:
containers:
– command:
– sh
– -c
– while true; do sleep 1234567; done
image: xridge/fio
name: fio
resources:
limits:
cpu: “16”
memory: 32Gi
requests:
cpu: 1m
memory: 1Mi
volumeMounts:
– mountPath: /srv/fio-test-blk/
name: fio-test-blk
– mountPath: /srv/fio-test-fs/
name: fio-test-fs
volumes:
– name: f[……]

READ MORE

「fio」- 存储性能测试

问题描述
通过 fio 命令,完成对存储的性能测试:linux, fio, block device, file system,
解决方案
常用的存储测试
块设备(Block Device) 文件系统(File System)
测试结果可视化
fio_generate_plots fio/fio_generate_plots at master · axboe/fio
gfio(图形化程序) fio/gfio.c at master · axboe/fio
Visualize Fio Logs With Fio2gnuplot – Virtono Community intel/fiovisualizer FioSynth I/O benchmark and data visualizer – Engineering at Meta Benchmarking with fio and generating graphs | ServeTheHome Forums louwrentius/fio-plot: Create charts from FIO storage benchmark tool output[……]

READ MORE

「TLS」- Transport Layer Security

问题描述
不使用 SSL/TLS 的 HTTP 通信的风险 窃听风险(eavesdropping):HTTP 报文明文传输,第三方可以获知通信数据; 篡改风险(tampering):第三方可以修改通信内容; 冒充风险(pretending):第三方可以冒充他人身份参与通信;
我们创建该部分笔记是为了明白以下问题: 2)它们是如何工作的,握手流程是怎样的?证书中包含哪些信息?Client 如何验证 Server? 3)证书、密钥、在 Nginx HTTPS 中配置使用的些什么文件? 4)完整的证书签发流程是怎样的,如何创建自签名证书?
解决方案
SSL(Secure Sockets Layer,安全套接字)及 TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议;
TLS 是 SSL 的标准化后的产物。SSL 与 TLS 在传输层与应用层之间对网络连接进行加密,不影响原有的 TCP 协议和 HTTP 协议,所以使用 HTTPS 不需要对 HTTP 页面进行太多的改造;
特性特征
使用 SSL/TLS 的 HTTPS 通信的特点 数据具备完整性,HTTPS 使用 SSL/TLS 加密传输所有的 HTTP 报文,所有信息都是加密传播,第三方无法窃听,即使截获也无法篡改; 数据具有校验机制,一旦被篡改,通信双方会立刻发现; 数据来源可信,配备身份证书,防止身份被冒充;
概念术语
What layer is TLS?
根据 OSI protocols – Wikipedia 与 packet – What layer is TLS? 来说,没有适合 TLS 的 ISO Model 曾,不管放在哪个曾都很牵强;
TLS 使用 TCP 协议,因此在第四层之上。而其使用的握手信息,像是第五层,因此 TLS 应该属于第六曾或第七层(第六层,定义和加解密来自应用层的数据);
但是,应用通常将 TLS 视为传输层,并且应用层具有自己的会话机制,因此 TLS 又不能查过第四层;
最终结论,有人将 TLS 划分在第五层,Wikipedia 将其划分在第六层。暂时还没有定论,并经关心协议属于哪个层并不是什么关键问题,而且 OSI Model 只是个模型,并不是什么事实标准;
TLS,Transport Layer Security
传输层安全(TLS),以及已弃用的前身安全套接字层(SSL),都是密码协议,用于在网络上提供通讯安全。该协议几个版本在一些应用中广为使用,比如邮件、浏览器、即时通讯、VoIP 等等;
TLS and SSL
早期对传输层安全性的研究工作包括安全网络编程(SNP)应用程序编程接口(API)[……]

READ MORE

「TLS/SSL」- 握手过程简述

该笔记将记录:简述 TLS handshake 过程,以及熟悉调试处理 TLS 问题的方法。
握手流程概述
握手过程可以分为以下步骤:
第一步、协议协商
Client 与 Server 将协商要使用的协议版本。例如:决定使用 TLSv1.1 协议,还是 TLSv1.3 协议
第二步、选择算法
选择加密算法。
第三步、证书验证
通过 Server 的公钥 和 SSL 证书的 CA 的数字签名 来验证 Server 的身份。
第四步、数据传输
使用「非对称加密」技术生成「共享密钥」,避免密钥分发问题。然后使用「共享密钥」进行消息的「对称加密」,因为「对称加密」比「非对称加密」更快。
两种类型握手
有两种类型握手,本文将分别讨论这两种握手过程(只涉及过程,不涉及过多细节)。
第一种、基本 TLS 握手(Basic TLS handshake)
这种最常见的,在建立 HTTPS 连接中使用“基本 TLS 握手”。
第二种、认证客户端的 TLS 握手(Client-authenticated TLS handshake)
这种握手需要客户端持有证书,例如在使用证书连接 MySQL 数据库、访问 K8S API Server 时,会使用“认证客户端的 TLS 握手”。
基本 TLS 握手(Basic TLS handshake)

The ‘client hello’ message
通过发送 Client Hello 消息,Client 发起握手,消息包含如下内容: 1)Client 支持的 TLS 版本; 2)Client 支持的加密方法(Cipher Suite); 3)被称为 Client Random 的随机字节串(由 Client 生成)
The ‘server hello’ message
为响应 Client Hello 消息,Server 发送 Server Hello 消息,消息内容如下: 1)Server 的 SSL Certificate 2)Server 选择的加密方法(从 Client 支持的加密算法中选择) 3)被称为 Server Random 的随机字节串(由 Server 生成)
Authentication
Client 使用颁发 Server SSL Certificate 的 CA 验证证书,以确定服务器身份。
The premaster secret
Client 再发送壹个随机的字节字符串,Premaster Secret,并使用公钥(来自 SSL Certificate 内部)加密,并且这只能由拥有私钥的 Server 解密。
Private key used[……]

READ MORE

「SSL certificate」- 在证书中的信息

包含在证书中的信息
The domain name that the certificate was issued for
Which person, organization, or device it was issued to
Which certificate authority issued it
The certificate authority’s digital signature
Associated subdomains
Issue date of the certificate
Expiration date of the certificate
The public key (the private key is kept secret)
查看证书信息

# 查看全部信息
openssl x509 -in “/path/to/cert/file” -text

# 查看证书过期时间
openssl x509 -in “/path/to/file.pem” -noout -enddate

# 查看站点证书过期时间
openssl s_client -servername www.example.com -connect www.example.com:443 | openssl x509 -noout -enddate

参考文献
What is an SSL Certificate? | How to Get a Free SSL Certificate | Cloudflare How to determine SSL cert expiration date from a PEM encoded certificate? X509Certificate2.NotAfter Property How to determine SSL certificate expiration date from the crt file itself OpenSSL: Check SSL Certificate Expiration Date and More The Most Common OpenSSL Commands[……]

READ MORE

「SSL」- 常见错误汇总

#1 Peer’s certificate issuer has been marked as not trusted by the user.
错误描述: curl: (60) Peer’s certificate issuer has been marked as not trusted by the user.
错误原因: 你可能遇到这个错误了,但是可能和我的场景不太一样。我是因为上网行为管理设备闹的,主机的MAC地址没认证,被拦截了。
开始我还以为是系统CA证书过旧导致的。
解决办法: 认证一下呗,或者加个白名单。
# SSL connect error
「cURL doesn’t connect to HTTPS while wget does (NSS error -12286)」 「Adding trusted root certificates to the server」
问题描述:

# …
fatal: unable to access ‘https://github.com/boostorg/boost.git/’: SSL connect error

# curl https://github.com
curl: (35) SSL connect error

# curl -vvv https://github.com
About to connect() to github.com port 443 (#0)
Trying 13.250.177.223… connected
Connected to github.com (13.250.177.223) port 443 (#0)
Initializing NSS with certpath: sql:/etc/pki/nssdb
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
NSS error -12190
Closing connection #0
SSL connect error
curl: (35) SSL connect error

访问curl https://www.baidu.com是正常的;使用curl -1 https://github.com是正常的。
问题原因: NSS库的版本太久了,或者系统CA过旧。
解决办法:

#!/bin/sh

# 升级nss库和CA:
yum install -y nss ca-certificates
update-ca-trust # 我也不知道这个有什么用

注意事项: 我并不能确定是否和CA由关系,只是说我执行了哪些操作。[……]

READ MORE

「PVE」- 通过 Telegraf + InfluxDB 监控(存在困难)

问题描述
该笔记将记录:通过 Telegraf 与 InfluxDB 监控 PVE Cluster 的方法,以及相关问题的解决办法。
解决方案
补充说明
我们目前(10/19/2022)还未配置成功,原因如下: 1)但是,我们没有找到合适的 Dashboard 来显示指标数据; 2)并且 Telegraf 提示 E! [inputs.proxmox] Error in plugin: search domain is not set 错误,暂时未找到解决办法;
原理简述
Telegraf Proxmox 插件能够访问 PVE Cluster 并从中采集指标,并发送到 InfluxDB 服务中;
服务部署
第零步、创建 PVE Token 参数
Can’t create API Token – Error 400 | Proxmox Support Forum
在 PVE Cluster 中: 1)Permissions / API Tokens / Add 2)Token ID:[A-Za-z][A-Za-z0-9\.\-_]+ 3)Privilege Separation:是否进行独立的权限管理;
第一步、部署 InfluxDB 服务
InfluxDB v2.4.0,通过 APT 直接安装:Install InfluxDB as a service with systemd
1)创建用户名密码,以完成首次初始化; 2)创建 Bucket 实例,进行数据存储; 2)配置 Token 授予 Bucket 访问全新;
第二步、部署 Telegraf 组件
Telegraf 1.24.2,通过 APT 直接安装(与 InfluxDB 使用相同仓库):Telegraf open source data collector


[[inputs.proxmox]]
## API connection configuration. The API token was introduced in Proxmox v6.2. Required permissions for user and token: PVEAuditor role on /.
base_url = “https://172.31.253.254:8006/api2/json”
api_token = “root@pam!A123A56.123zde=361d1328-XXXXXXXXXXXXXXXXXX-a765bbc4e574”
## Node name, defaults to OS hostname
node_name = “testing-space”

## O[……]

READ MORE

「PVE」- 存储(Storage)

删除磁盘(删)
删除未绑定磁盘
[SOLVED] – Removing disk image | Proxmox Support Forum
我们从虚拟机配置中删除了该磁盘,但没有删除实际的磁盘。
运行 qm rescan 命令,磁盘将再次关联到虚拟机,然后我们再执行手动删除;
修改磁盘(改)
磁盘扩容
Resize disks – Proxmox VE

qm resize 100 virtio0 +5G # 将磁盘增加 5G
qm resize 100 virtio0 5G # 将磁盘设为 5G

参考 Resize disks – Proxmox VE 文档,以获取后续的 磁盘扩容、文件系统扩容 相关内容。
调整带宽
Disk Throttling Settings and Default Values | Proxmox Support Forum

qm set 168010105 –scsi0 file=local-lvm:vm-168010105-disk-0,iops_rd=180,iops_wr=180,mbps_rd=40,mbps_wr=40

通过 Web 界面,配置磁盘,选择 Bandwidth 选项卡,修改其中的 Read limit、Write limit 字段;
I’m experimenting with the VM Disk Throttle settings. So far here is my understanding: 1)Read limit (MB/s): total read bandwidth per second allowed (I’m using 115 to simulate a HDD) 2)Write limit (MB/s): total write bandwidth per second allowed (I’m using 115 to simulate a HDD) 3)Read limit (ops/s): number of read io operations per second (iops) (I’m using 300 to simulate a HDD doing sequential reads) 4)Read limit (ops/s): number of write io operations per second (iops) (I’m[……]

READ MORE

「Learning」- 电气工程及其自动化

080601,Electrical Engineering and Automation,电气工程及其自动化[……]

READ MORE

「Vernier Caliper」- 游标卡尺

游标原理是法国人 P.韦尼埃于 1631 年提出的。它常用于长度测量工具的长度和角度的细分读数机构中。详细可查阅国家标准(GB/T21388、GB/T21389、GB/T21390);

游标卡尺的测量原理
游标卡尺的测量原理是什么?_百度知道
原理:游标卡尺是利用主尺上的刻线间距(简称线距)和游标尺上的线距之差来读出小数部分;

如图卡尺,50mm / 50 – 49 / 50 = 1mm – 0.98mm = 0.02mm,即 主尺刻度 与 副尺刻度 每个相差 0.02mm;
现在主尺与副尺的 0 刻线相重合,两个 1 刻线 相差 0.02mm; 当副尺 1 刻线与主尺 1 根刻重合时,则表示副尺向右移动 0.02mm; 当副尺 2 刻线与主尺 2 根刻重合时,则表示副尺向右移动 0.04mm; … 依此类推,可从游标尺与主尺上刻线重合处读出量值的小数部分;
同理,若它们的线距的差值为 0.05 毫米或 0.02 毫米(游标尺上分别有 20 格或 50 格),则其最小读数值分别为 0.05 毫米或 0.02 毫米;
游标卡尺的读数方法
王尚/游标卡尺读数方法及例题解析

如上图所示,在放大图上我们能看到零刻线对着的主尺位置是 22mm 多一些,主尺读数记为 22mm;
再来看副尺,为十分度尺,每个刻度的单位为 0.1mm;
通过刻度线的观察,发现第六刻度线与主尺刻度线对其,副尺读数为 0.6mm;
因此,该题的读数结果就是:22mm+0.6mm,即为 22.6mm,如果题目单位的是 cm,则为 2.26cm;
卡尺分度问题

该图为直接给出标尺的分度(即卡尺的精确度),这需要从图中获得信息,标尺上有 20 个格,说明是 20 分度的卡尺,其精确度为 0.05mm;
正确结果: 10mm+10×0.05mm=10.50mm 错误结果:10mm+5×0.1mm=10.5mm;或 10mm+5×0.05mm=10.25mm[……]

READ MORE

「Analog-Circuit」- 模拟电路

来自一个双控转模拟设计的人的建议
我真诚建议上youtube看razavi和ali的模电视频。讲得非常好。而且youtube有自动字幕功能,只要英语能上130肯定能看懂。
具体的建议还是先看书(Allen的或者Razavi的都可以,最好还是看英文原版的,国内的翻译工作说是老师翻译的其实都是找几个研究生,翻译的,水平真不行),第一遍肯定有很多看不懂的地方,然后带着问题针对性地看视频。Razavi的B站有搬运, Ali的还是得去Youtube上看,B站°的没字幕。[……]

READ MORE

「FPGA」- Field Programmable Gate Array

FPGA 是一种以数字电路为主的集成芯片,于 1985 年由 Xilinx 创始人之一 Ross Freeman 发明,属于可编程逻辑器件(Programmable Logic Device,PLD)的一种。这个时间比著名的摩尔定律出现的时间晚 20 年左右,但是 FPGA 一经发明,后续的发展速度之快,超出大多数人的想象;
发展历程
在 PLD 未发明之前,工程师使用包含若干个逻辑门的离散逻辑芯片进行电路系统的搭建,复杂的逻辑功能实现起来较为困难;
为了解决这一问题,20 世纪 70 年代,可编程逻辑阵列(Programmable Logic Array,PLA)问世,PLA 中包含了一些固定数量的与门、非门,分别组成了“与平面”和“或平面”,即“与连接矩阵”和“或连接矩阵”,以及仅可编程一次的连接矩阵(因为此处编程是基于熔丝工艺的),因此可以实现一些相对复杂的与、或多项表达式的逻辑功能
学习方法
分享些学习思路吧。可以淘宝买个200块钱的开发板,一边学习verilog,一边学习demo入门。买个altera。,黑金、小梅哥都还不错。verilog的语法非常简单,基本没有语法,掌握if else、assign、case、还有状态机就齐活了,撑死在搞一个generate for,剩下的就是搭积木。掌握常用的通信协议例如UART、I2C和SPI,最好能自己搭一个图像采集和显示的demo。能在上面搞一些图像处理的算法就更厉害了,例如中值滤波、直方图均衡、sobel边缘处理。直方图均衡这个算法稍微有点难度,其他两个都能在开发板上找到现成的。学习完这些以后,在补个时序分析a和约束,有纸质和视频教程,自己买也不贵,300块吧。
参考文献
FPGA 是什么(超级详细)[……]

READ MORE

「数据库」- 杂记

Otter
分布式数据库同步系统:https://github.com/alibaba/otter
Canal
MySQL 数据库 binlog 的增量订阅&消费组件:https://github.com/alibaba/canal
数据库协作管理(团队使用)
Inception – MySQL 审核工具
https://blog.csdn.net/kk185800961/article/details/84863216
GitHub/hhyo/Archery: SQL 审核查询平台
https://github.com/hhyo/Archery
Slashbase
Slashbase – The in-browser collaborative database IDE https://slashbase.com/[……]

READ MORE

「DBeaver」

基于Eclipse的产品。分为「社区版」和「企业版」,企业版本是按年付费的。
我目前正在使用的数据库工具。我使用的是社区版,因为社区版已经可以我的满足日常需要了(日常开发),并且还附带了数据导出功能、支持主流数据库、ER图等等。支持大多数主流数据库:MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby等等。
# 12/22/2018 已经不用DBeaver了,因为Eclipse的Marketplace中包含了该插件(DBeaver)。在初体验中,功能上没有太大差异。继续体验中。。。
# 03/23/2019 DBeaver Eclipse Plugin,很好用
软件的截图如下:
设置发送心跳包
Keep-alive db connection via heartbeat #332
默认是禁用KeepAlive的,就是说过一会之后,连接就断开了。碰巧又有BUG,在进行连接断开时,会出现长时间挂起的现象。 Edit Connection -> Connection settings -> Initialization -> Keep Alive 设置为零表示禁用,以秒为单位。
常见问题处理
native client is not specified for connection
Native client is not specified for connection – Mac · Issue #7976 · dbeaver/dbeaver
在 Local Client… 中,选择本地 MySQL 的目录,因为 DBeaver 数据库的导出操作需要结束 mysqldump 命令。[……]

READ MORE

「Microsoft SQL Operations Studio」

SQL Operations Studio(预览版)是一个在Windows、MacOS、Linux上都可以运行的免费工具,用于管理SQL Server、Azure SQL数据库、Azure SQL数据仓库等微软旗下的数据库产品; 无论他们在哪里运行。
从界面上明显能感觉到是VS Code的一个分支,代码位于GitHub托管,特性可以参考发行日志以及CHANGELOG。
On Debian

#!/bin/bash

# 需要先安装依赖
apt-get install libxss1
apt-get install libgconf-2-4
apt-get install libunwind8

# 下载相应的安装包,解压,执行sqlops启动。
wget http://download.microsoft.com/download/D/6/5/D655C5FA-52CB-4591-8D65-DEE04F05FF16/sqlops-linux-0.24.1.tar.gz
tar -xf sqlops-linux-0.24.1.tar.gz
./sqlops-linux-x64/sqlops

参考文献
Microsoft SQL Operations Studio主页 微软的跨平台数据管理工具 SqlOps 发布公开预览版[……]

READ MORE

「Programming Languages」- 编程语言杂记

编程语言性能比较
编程语言 API 性能大比拼 编程语言速度对比
首先,我们不会选 Shell 了。这主要是因为我们的使用场景:需要处理大量的数据,还有一些循环,尤其是循环中 Shell 的表现很差。即使做了一些优化,在数据很大时,Shell 的表现依旧不佳;
所以,要换语言了,重新实现;
编程语言 API 性能大比拼 Ciaran 是 Skimlinks 项目团队中的一名领导者,热爱开发,在业余时间喜欢研究一门新语言。作者和他的团队在开发 Skimlinks 项目时遇到了一些困难,于是做了这份测试,文中将 Node.js、Scala、Go、Python、PHP 进行对比,最终 Python 获胜,目的的是为了让开发者为 stack 挑选最好的开发技术;[……]

READ MORE