MongoDB数据比较工具dbHash介绍


dbHash主要是用来比较MongoDB数据是否一致,例如升级版本前后的数据比较,主要是为了确认数据在升级后是完全恢复无误的。命令用法如下:先切换需要的库use news对全库进行dbHashdb.runCommand({dbHash:1}):{"host" : "localhost","collections" : {"con

mongodb的认证(authentication)与授权(authorization)


在文档中,system.users集合中的文件有如下模式:{ _id: <system defined id>, userId : <system assigned UUID>, // Starting in MongoDB 4.0.9 user: "<name>", db: "<database>"

MongoDB的备份和恢复,导入和导出


mongodb数据备份和恢复主要分为二种:一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport。mongodump备份数据库常用命令格式mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表 -o 文件存放路径参数说明:-h 指明数据库宿主机的IP–port 指明数据库的端口-u

rabbitmq权限管理及常用命令


RabbitMQ 的权限角色none: 不能登录管理控制台(启用management plugin的情况下)普通管理者(management):仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。用户可以通过AMQP做的任何事外加:列出自己可以通过AMQP登入的virtual hosts查看自己的virtual hosts中的queues,

jenkins pipeline 报 unexpected char: '\' 错误


问题:在写jenkins pipeline script的时候,如果字符里面有\字符,比如这样:pipeline { agent any stages { stage('Check virtualenv') { steps { sh """ rm -r /mnt/x/some/director

Jenkins利用if和when进行阶段构建


Stages 阶段(if)一般来说,当我们使用脚本步骤时,可以用声明式的语法来使用Groovy的条件式。例如,如果我们只想在某个布尔参数RELEASE被设置时发生释放,我们可以这样编码pipeline { agent any parameters { booleanParam(name: "RELEASE", defaultValue: false)

ubuntu 20.04安装fail2ban1.0.1


安装:由于ubuntu 20.04已经默认没有python2,所以不使用python2来安装fail2ban,改使用python3来安装。通过github下载fail2ban源码wget https://github.com/fail2ban/fail2ban/archive/refs/tags/1.0.1.tar.gz解压并进入目录tar xzf 1.0.1.tar.gz &&

Logstash修改@timestamp时间为日志的产生时间


背景在Logstash读取nginx日志的消息简要如下,可以看到这里的@timestamp和time中的时间戳不一致,那么我们可以修改@timestamp指定为time。{ "@timestamp" => 2022-07-21T07:12:40.806Z, "url" => "/index.php?m=message&

nginx-module-vts模块获取的缓存状态说明


通过nginx-module-vts模块中可以得到nginx的8种缓存状态,分别代表的作用说明如下:miss: 未命中的缓存数。响应在缓存中找不到,所以需要在服务器中取得。这个响应之后可能会被缓存起来。bypass: 绕过缓存旁路数。响应来自原始服务器而不是缓存,因为请求匹配了一个proxy_cache_bypass,这个响应之后可能会被缓存起来。expired: 过期的缓存数。缓存中的某一项过期

Nginx禁用TLS 1.0和TLS 1.1


背景传输层安全性协议(英语:Transport Layer Security,缩写:TLS)及其前身安全套接层(英语:Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器-网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999

Nginx安装Brotli压缩扩展


关于BrotliBrotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。与常见的通用压缩算法不同,Brotli使用一个预定义

Nginx支持http2.0


配置nginx要配置使用http2.0,方法也很简单,在nginx配置文件的server模块的listen里,加入http2即可使用http2.0。示例如下:server { listen 443 ssl http2; ssl_certificate server.crt; ssl_certificate_key server.key;}配置完后,需要运行nginx -t检查配置

Etcd的运行时重配置


运行时重配置etcd 被设计为能承受机器失败。etcd 集群自动从临时失败(例如,机器重启)中恢复,而且对于一个有 N 个成员的集群能容许 (N-1)/2 的持续失败。当一个成员持续失败时,不管是因为硬件失败或者磁盘损坏,它丢失到集群的访问。如果集群持续丢失超过 (N-1)/2 的成员,则它只能悲惨的失败,无可救药的失去法定人数(quorum)。一旦法定人数丢失,集群无法达到一致而因此无法继续接收

Etcd介绍


EtcdEtcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。Etcd 主要功能基本的 key-value 存储监听机制key 的过期及续约机制,用于监控和服务发现原子 CAS 和 CAD,用于分布式锁和 leader 选举Etcd 基于 RAFT 的一致性选举方法初始启动时,节点处于 followe

删除 Elasticsearch 中指定日期前的数据


之前已搭建一个ELK+Filebeat 的集群,并收集了 Nginx 的日志信息。在 Elasticsearch 中索引的名字是:nginx-access-log-*,后面的*代表的是日期。假如,需要删除7天前的数据,可以执行通过以下方法:curl -u elastic:****** -H'Content-Type: application/json' -d'{ &qu

ELK集群设置账号密码认证


前提在几篇中搭建的 ELK+Filebeat 集群中,版本都是7.16.1,其中ElasticSearch 有两个节点。默认都是无密码登录,所有人都可以登录操作,安全考虑可以设置密码认证。6.2或更早版本需要安装X-PACK,新版本已包含在发行版中,所以可以直接在 ELK 上进行配置。1. Elas

Elasticsearch 单节点改集群,以及查看集群信息


前提:本文主要是将原来Elasticsearch 单节点改成两个节点组成的集群,以及查看集群信息。原来的node-1(192.168.1.240),准备部署的node-2(192.168.1.231)组成一个集群。Elasticsearch的 docker-compose.yml 内容如下:version: '3'services: elasticsearch:

Elasticsearch的RESTful API


接上一篇搭建文章中,nginx.conf 定义的log格式是: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer&qu

ELK+Filebeat 部署安装


ELK+Filebeat介绍ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称(但是后期出现的filebeat(beats中的一种)可以用来替代logstash的数据收集功能,比较轻量级)。市面上也被成为Elastic Stack。Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转

Prometheus监控PHP-FPM


环境PHP版本:7.3在docker里通过supervisor启动PHP步骤PHP-FPM端配置PHP-FPM开启status_path# vim /etc/php-fpm.d/www.confpm.status_path = /statusping.path = /pingNginx端配置监听9010端口server { listen 9010; location ~ ^/(stat