随笔分类 - linux大全
测试和运维都会常用到的linux命令,工具等。
摘要:简介 etcd分为etcd2和etcd3版本,两个版本之间的api相互不兼容,现在大多数公司都在使用etcd3版本,本文也以etcd3作为演示对象。 etcdctl工具etcd附带的命令行工具,可以很方便的对etcd中的数据进行管理。 etcdctl有两个版本:v2和v3,可以分别使用如下方式来设置
阅读全文
摘要:问题 在项目中我写了个编译打包的脚本,会拉取gitlab上工程的代码进行编译,然后上传到产品服务器。其中有一次git pull去拉取gitlab上工程代码报错了: ssh_exchange_identification: Connection closed by remote host fatal:
阅读全文
摘要:背景 前面RocketMQ系列中分享了如何在机器上搭建rocketmq,其中nameserver和broker都是以nohup的方式启动。在实际运维过程中,这种启动存在一个比较麻烦的问题:比如机器宕机后,重新启动机器,broker和namserver服务无法自动随开机拉起,还需要我们登陆到每台机器上
阅读全文
摘要:背景 最近在测试一个MQTT的server,使用MQTT的client去连接server的时候,发现每次到1020个连接数左右的时候MQTTserver就挂了,而且MQTTserver只打印了一个退出的日志,没有打印其他信息。 问题定位 1)最开始我以为是该MQTT服务的日志没有打印全,于是尝试开启
阅读全文
摘要:背景 我在自己Macbook上使用homebrew安装telegraf。 执行:brew install telegraf,然后报错了:Error: Permission denied @ apply2files - /usr/local/opt/openssl/ssl/man/man3/HMAC.
阅读全文
摘要:前言 Telegraf 是一个用 Go 编写的用于收集机器数据的代理程序。它可部署到机器上收集系统和服务的统计数据,并通过配置写入到 InfluxDB 数据库,然后在通过Grafana或者Chrongraf用于数据展示。 核心功能 完全由GO编写,编译产物仅为一个二进制程序,安装运行无需外部依赖 运
阅读全文
摘要:背景 项目中使用到了pm2,用于管理微服务的启停,我在相关机器上安装好了pm2,然后使用ansible进行批量启动服务。在使用ansible的shell模块执行远程命令时候却报了错:/bin/sh: pm2 :command not found,如下图 问题定位 1. 在被执行机器上查看pm2命令,
阅读全文
摘要:背景 最近公司的网络不稳定,本地电脑访问公司内网的环境老是超时,请教了下组内的老前辈,得知可以通过使用ssh的socket5代理,通过隧道的方式走通。 如图,我本机机器到ServerA的延时较低,但是直接访问ServerB延时较高(A和B之间网络结构关系不明),这样可以在A与B通过ssh实现sock
阅读全文
摘要:前言 Elasticsearch Curator是一款ES索引(或快照)的清理神器,可以帮你轻松管理ES中的索引和快照,整体实现过程如下: 从ES集群中获取索引或者快照,作为待执行列表 通过用户定义的filters(过滤器)从待执行列表中删除索引或者快照 通过待执行列表,可以为其定义各种各样的处理动
阅读全文
摘要:前言 在项目中写了一个MQTT的客户端小程序,用于测试MQTTServer的连接数上限,运行了一段时间后报错:Cannot assign requested address 网上查了下"Cannot assign requested address"指的是linux系统无法继续为客户端分配端口了(已
阅读全文
摘要:背景 最近我所在项目的进程管理工具从supervisor切换到pm2了,原因之一是因为长期二者兼容导致维护成本过大。后来经过和研发同学沟通,最终选择统一成pm2,因为pm2在windows下也可以对进程进行管理,方便他们在windows本地开发环境起服务调试。 supervisor的进程配置文件中自
阅读全文
摘要:背景 最近在项目中需要编译arm架构的某驱动docker镜像,但是手头上没有现成的arm架构的机器环境,于是在网上搜索了下如何在x86机器模拟arm环境来进行编译。我找到了一款神器:multiarch/qemu-user-static 简介 项目地址:https://github.com/multi
阅读全文
摘要:简介 上文介绍了ansible的shell模块,今天要为大家分享的是command模块和raw模块的使用。 command和raw模块和shell一样,都是用于执行shell命令,三者都不具备幂等性,如果有能替代的ansible模块,尽量不要说使用该模块。 对比 模块 用途 特点 shell 均用于
阅读全文
摘要:简介 shell模块是ansible里面比较常用的模块。顾名思义,shell模块用于执行shell命令。我们利用ansible批量在多台机器上执行shell命令,该模块非常的简单粗暴。 对于ansible很多模块,都可以用shell替代达到相对应的效果。 虽然shell模块看起来非常万能,但存在着许
阅读全文
摘要:背景 项目中搭建了一套集群环境,整个集群机器的网络可用性通过一个shell脚本来进行监控。该脚本在检测网络连通性失败的情况下会打印错误日志并发送邮件通知给相关人员。那如何使用linux命令来发送邮件呢? 这里找到了一个好工具:mailx。 简介 Mailx is an intelligent mai
阅读全文
摘要:背景 在后端服务运行过程中,有时会遇到一个时间不同步的问题,即服务器时间对比当前时间会有滞后或超前。 这种时间不同步导致某些软件服务问题,例如: 1. 服务日志打印的时间不准,导致查问题比较麻烦。 2. 在服务写入数据到数据库或者其他中间件的时候,时间戳不对,导致页面显示异常 3. 集群化服务在不同
阅读全文
摘要:1.简介 iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current b
阅读全文
摘要:背景 由于需要在环境中用yum安装多个软件,于是通过终端在机器上打开了两个窗口,分别使用yum安装不同的软件,结果报了错: Another app is currently holding the yum lock; waiting for it to exit... 解决方法 1)查看yum进程:
阅读全文
摘要:背景 具有HA(高可用)的软件服务在集群某节点出现断网的时候,整个集群依旧可以提供正常的服务。很多开源软件都有HA版本(比如rocketmq,kafka),如果现在有一个软件需要进行高可用测试,该如何模拟其中的断网场景呢? 比如3台机器A,B,C组成的一个集群环境,其中A机器断网,B和C依旧能够正常
阅读全文
摘要:前言 本文介绍一个硬盘分区的工具:parted,可以用于大于2T的硬盘分区(小于2T也可以的,主要是和fdisk工具对比) 环境 查看当前系统的硬盘 执行:lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk └─sd
阅读全文