自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

洒满阳光的午后的博客

不会写代码的运维不是好运维

  • 博客(206)
  • 收藏
  • 关注

原创 kubeadm kubernetes集群证书过期的处理方法

动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。正确的重启方法是临时将清单文件从 /etc/kubernetes/manifests/ 移除并等待 20 秒(参考 KubeletConfiguration 结构 中的fileCheckFrequency 值)。此时kubelet 会自动终止这些pod。pod终止后再将文件移回去,kubelet将重新创建这些pod。

2022-11-16 10:53:26 34

原创 可观测性入门

可观测性是指可以在不了解系统内部运行机理的情况下,从外部诊断系统运行情况。它使我们能够轻松定位和处理新问题,并帮助我们了解为什么会发生这些问题。为了实现这个目标,必须正确地检测应用程序,也就是说应用程序代码必须发出调用链(trace)、指标(metric)和日志(log)。应用程序能够被正确检测,意味着开发人员不再需要添加更多的检测来解决问题,因为其已拥有所有的信息。

2022-10-19 11:27:30 359

原创 监控系统解决方案Thanos与VictoriaMetrics对比研究

目前主流的Prometheus长期存储及集群解决方案,包括Thanos、Cortex、VictoriaMetrics以及Grafana近期发布的Mimir,出现大一统趋势,其中以Thanos(receive模式)、Cortex、Mimir为代表的S3存储解决方案,架构、功能可以说基本一致。本文将从读写性能、资源成本、维护成本三个角度,简单对比Thanos与VictoriaMetrics的差异与优劣。

2022-10-12 16:31:45 443

原创 process-exporter中namedprocess_namegroup_states指标的正确含义是什么

注意:process-exporter在计算指标namedprocess_namegroup_states时,会将进程名相同的进程合并(例如多个java进程),因此上述公式在这种情况下也是不准的。这个指标通过process-exporter采集,原意是计算节点上sleeping进程的数量,表面看起来没什么问题,实际上得出的结果却是完全错误的。这个指标的含义为处于Sleeping状态的进程sshd线程数为7,可以通过/proc/{pid}/status查看进程的状态及线程数。...

2022-08-30 17:06:43 162

原创 rsync: [sender] write error: Broken pipe (32) 问题排查

同步开始时进行正常,说明配置正确。中途"Broken pipe",检查源端与目标端之间的防火墙等安全设备配置,发现配置有DDOS防护,DDOS相关告警也佐证了传输中断的原因为数据同步因流量过大被判定为DDOS攻击,因此被拦截。同步初始化时总是中断,一般在传输4G左右暂停,重启lsyncd后传输一段时间再次中断。方法一:关闭DDOS防护。......

2022-08-16 10:19:23 715

原创 Elasticsearch跨集群复制(CCR)介绍

跨集群复制(CCR,cross-clusterreplication)属于xpack增强包中的功能,需要白金级、企业级证书才可使用。对于分布在不同地域的Elasticsearch集群,您可以通过CCR进行数据备份。当其中一个集群发生故障时,您可以通过访问其他集群来获取故障集群的数据,保证数据不丢失。例如A集团下有多个子公司,各子公司所分布的地域不同。为了提高业务处理速度,可按照地理位置划分子公司要承担的业务,并通过CCR将业务数据分发给各地域中的Elasticsearch集群。...

2022-07-28 15:10:38 588

原创 ping域名报错unknown host,nslookup/systemd-resolve可以正常解析,ping公网地址通怎么解决?

ping域名报错unknown host,nslookup/systemd-resolve可以正常解析,ping公网地址通。需要检查的异常点1、检查/etc/nsswitch.conf检查hosts行,是否为 files dns,files 表示使用 /etc/hosts 和 /etc/network 配置文件,dns 表示使用 /etc/resolv.conf文件中的DNS解析地址。ping 程序解析域名依赖于C库中的函数 gethostbyname() 和 gethostbyaddr...

2022-06-30 16:44:20 350

原创 单节点高并发Linux服务器影响接入能力的因素有哪些

在单台服务器承载数十万并发的情况下,影响服务器接入能力的因素已经不在是CPU、内存、带宽等表层因素,而是内核参数、设备配置、应用优化等多种细节因素。Linux 中所有内容都是以文件的形式保存和管理的, 包括套接字、网络通信等资源,即一切皆文件,因此提升最大打开文件数是提高服务器并发性能的重要一步。Linux的最大打开文件数限制包括系统级(系统可打开的最大文件数)、用户级(单个用户可打开的最大文件数)、进程级(单个进程可打开的最大文件数),可分别通过如下方式修改:2、nf_conntrack对开启i

2022-06-29 17:43:12 429

原创 K8S某些节点容器网络访问异常的一种原因——网卡“源/目的地址检查”

移动云环境,自建K8S,所有主机处于同一网段,CNI插件是用Calico,BGP模式。某些节点的容器无法与K8S其他node通信,表现为该节点的容器无法访问其他节点及节点上的容器和服务,其他节点和节点上容器也无法访问该节点上的容器,节点间通信正常,仿佛该节点的容器被隔离了一样。通过在容器内及节点上抓包可以看到,数据包在节点与节点网卡之间丢失,如图:异常节点的网卡开启了“源目的地址检查”。该选项移动云默认开启,但无相关介绍。我们从华为云的文档中找到了一些介绍:默认情况下,“源/目的检查”状态为“ON”,系统会

2022-06-28 10:58:03 463

原创 Linux内核参数net.ipv4.ip_local_port_range对服务器连接数影响的正确解释

首先明确一下该参数的意义:net.ipv4.ip_local_port_range表示本机作为客户端对外发起tcp/udp连接时所能使用的临时端口范围。对于TCP连接,本机所能发起的tcp连接数受四元组(源地址*源端口*目标地址*目标端口)限制。而对于UDP连接,本机所能发起的udp连接数则受二元组(源地址*源端口)限制。(此处借用二元组的概念,并不表示udp套接字的二元组标识)。一个实际生产场景举例我们知道,在使用nginx作反向代理服务器时,会作为客户端向后端负载发起连接,在不考虑最大打

2022-04-29 16:57:09 1277

原创 关于Postgres主从复制延迟监控的错误告警问题

​在使用Prometheus监控的Postgres数据库时, 会发生主从复制延迟产生告警,但实际上数据库正常的问题,我们使用的exporter为https://github.com/prometheus-community/postgres_exporter,告警表达式为:pg_replication_lag > 300这个指标的说明如下:# HELP pg_replication_lag Replication lag behind master in seconds# TYPE pg_r

2022-04-22 17:50:36 1033

原创 Thanos如何为不同租户配置不同的数据保留时长

在之前的实践中我们已经实现了prometheus的多租户读写:Prometheus和Thanos Receiver的“写多租户”实现_洒满阳光的午后的博客-CSDN博客新的需求是要为不同的租户配置不同的数据保留时长。目前compactor组件天然是不具备多租户能力的,但是它有一个参数--selector.relabel-config=<content> Alternative to 'selector.relabel-co

2022-04-20 17:45:18 239

原创 prometheus告警记录持久化(历史告警保存与统计)

前段时间碰到一个需求:将Prometheus的历史告警进行持久化保存,一遍进行分析统计。在尝试了一些工具后,最终选用了alertsnitch+grafana的方案。

2022-03-02 17:06:54 2607 15

原创 k8s安装kube-prometheus后,kube top命令没有数据的排查思路

最近碰到的一个问题,安装完kube-prometheus后,kubectl top node显示metrics not available yet,但kubectl top po可以使用:

2022-03-02 15:23:35 915

原创 Prometheus监控influxdb的方法及指标释义

配置方法influxdb本身自带metrics(http://$ip:8086/metrics),但内容有限,需借助telegraf来扩展监控内容。wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8.x86_64.rpmyum localinstall influxdb-1.7.8.x86_64.rpmtelegraf在这里作为指标收集器,有两种使用方法:1、不使用influxdb_exporter,直接将tel

2022-02-21 17:03:06 2979

原创 Kubernetes CoreDNS常见问题资料参考

Kubernetes官方文档Pod与Service的DNS: https://kubernetes.io/zh/docs/concepts/services-networking/dns-pod-service/自定义DNS服务: https://kubernetes.io/zh/docs/tasks/administer-cluster/dns-custom-nameservers/调试DNS问题: https://kubernetes.io/zh/docs/tasks/administer-c.

2022-01-25 15:03:21 428

原创 Alertmanager重复/缺失告警现象探究及两个关键参数group_wait和group_interval的释义

生产中使用webhook对历史告警进行统计时发现,有些resolved消息没有对应的firing消息、有些的firing消息没有对应的resolved消息、有些resolved消息发送了多次、有些firing消息没有按照repeat_interval间隔重复且短时间内发送了多次。这些问题主要由group_wait和group_interval两个参数引起。

2022-01-21 16:54:06 3258

原创 Prometheus的relabel_configs和metric_relabel_configs解释及用法示例

先看两个配置的所处位置:global: ......# A list of scrape configurations.scrape_configs: # The job name assigned to scraped metrics by default. - job_name: <job_name> ........ # List of target relabel configurations. relabel_configs:

2021-11-29 11:06:04 1283

原创 Prometheus和Thanos Receiver的“写多租户”实现

Thanos Receiver的所谓“多租户”,主要体现在为不同的租户分配不同的Receiver(限制能向Receiver发送数据的来源),以及为不同的租户再实例本地创建不同的TSDB。Thanos Receiver组件接收Prometheus的remote_write请求,将数据写入本地TSDB,并定期将TSDB block上传到对象存储。Receiver组件同时还暴露Store API给Querer组件以实现指标实时查询。Thanos Receiver支持多租户,它从remote_write.

2021-11-24 16:39:28 631

原创 使用prom-label-proxy实现Prometheus Thanos的基于标签的多租户读

Go安装go env -w GOPROXY=https://goproxy.cngo get github.com/prometheus-community/prom-label-proxycd ~/go/bin./prom-label-proxy --help

2021-11-24 11:40:21 776

原创 Prometheus Thanos与Cortex组件比较

关于告警能力的配置:Thanos推荐除非有全局告警的特殊需求,否则应当使用Prometheus原生的告警能力。Cortex Thanos Distributor 接收Prometheus remote_write数据,进行验证并分发给Ingester Receiver 接收Prometheus remote_write数据,写入本地TSDB,并定期2h上传block到对象存储。 内部实现哈希环,不依赖外部存储。 Inges

2021-11-23 10:29:26 542

原创 Prometheus Thanos快速指南

Thanos系统构建于Prometheus之上,用于扩展Prometheus功能,提供了全局查询、高可用支持、历史数据备份到对象存储等核心能力。Prometheus在架构中扮演数据收集角色,告警功能仍然推荐使用各个Prometheus节点的本地数据及告警能力。Thanos组件Sidecar:连接到Prometheus,读取其数据并上传到对象存储。Store-gateway:提供对象存储中指标的查询能力。Compactor:对对象存储的数据进行压缩、降采样及配置保留时长。Receiver:

2021-11-22 15:34:11 1582

原创 Prometheus Cortex多租户读写的实现

Cortex的所有组件会从每个请求header的X-Scope-OrgID中获取租户ID。此处的租户表示的是一组数据的拥有者,它向Cortex写入数据,并拥有该数据的查询权限。所有的Cortex组件都会无条件信任带X-Scope-OrgID的请求,因此如果希望保护Cortex免受恶意调用,需要自行添加一个保护层。注意查询和写入请求的租户ID必须一致,否则无法查询到所需数据。启用多租户特性通过在配置文件中添加auth.enabled=true,或者命令行-auth.enabled=true启用多租

2021-11-19 15:02:41 575

原创 Prometheus Cortex使用Block存储时的相关问题

架构概述(必看)使用Block存储的相关问题使用Block存储时,需要运行额外两个服务,store-gateway和compactor。store-gateway负责查询block并被querier调用。compactor负责合并、去重block(因为replication factor的原因,同一序列会被N个Ingester存储N份,因此需要去重)。Ingester会被

2021-11-18 14:49:56 311

原创 Prometheus Cortex架构概述(水平可扩展、高可用、多租户、长期存储)

Cortex包含一系列可水平扩展的微服务。每个微服务采用了最合适的技术来实现水平拓展;大部分是无状态的,可以处理任意用户的请求,也有一些如ingesters则是半有状态的,依赖一致性哈希。这篇文档提供了Cortex的架构概览。

2021-11-17 13:55:31 1104

原创 Thanos Compact组件测试总结(处理历史数据)

参考文档官方文档:Thanos - Highly available Prometheus setup with long term storage capabilities译文及注解:https://zhangrongjie.blog.csdn.net/article/details/120976651组件作用总结compactor组件只与对象存储交互,是唯一拥有删除对象存储数据权限的组件。主要有两个作用:压缩block(将多个block合并成一个)、降采样(可禁用,5m/1h采样数据)。

2021-10-28 10:06:57 555

原创 Thanos Compactor组件使用

注:compaction,在本文档中有些地方意译为压缩。原文:Thanos - Highly available Prometheus setup with long term storage capabilitiesthanos compact命令运用Prometheus 2.0存储引擎的compaction过程处理存储在对象存储中数据。Compactor组件通常不是并发安全的,因此必须作为单例部署。Compactor还负责数据的降采样:为超过40小时(2d,2w)的blocks创建5分钟

2021-10-26 17:25:41 1311

原创 从逻辑上深入理解Kubernetes中Ingress及Nginx Ingress Controller的概念及原理

一、从逻辑上理解Ingress和Ingress控制器在传统的业务系统中,应用微服务化后,需要一个统一的入口来将各个服务进行整合,这个入口可以是Nginx、Apache、HAproxy等等。而在K8s中,同样需要一个工具来将应用的各个service整合到统一的入口,这个工具就叫Ingress控制器,Ingress的中文翻译即为“入口”。传统业务与k8s业务简化对比图实现Ingress控制器的方式同样有多种,有基于Apache实现的,有基于Haproxy实现的,有Kubernetes社区基于Ngi

2021-09-24 16:21:19 713

原创 VirtualBox如何修改“网络地址转换(NAT)”网络模式下分配给虚拟机的IP网段

在NAT模式下,给虚拟机分配的IP地址默认为 10.0.x.0/24。其中 x 为网卡号+1,例如第1块网卡启用了NAT模式,则默认分配给虚拟机的IP地址为 10.0.2.15,网关为 10.0.2.2。如果需要修改默认网段,可以使用如下命令:cd "C:\Program Files\Oracle\VirtualBox".\VBoxManage.exe list vms"k8s-master" {bdd664c6-4292-4c05-89ff-c09219bf0bfa}"k8s-worke

2021-09-09 09:36:58 1779 4

原创 Nginx Ingress Controller原理简介及使用示例

一、概念介绍介绍Nginx Ingress Controller之前,需要先理解三个概念。Ingress:对集群中服务的外部访问进行管理的 API 对象,可以理解为kubernetes中一种定义从集群外部到集群内服务的HTTP/HTTPS 路由的资源类型; Ingress Controller:负责通过负载均衡器(如nginx/haproxy)来实现 Ingress中定义的路由,通常以pod形式运行; IngressClass:一种定义某个具体Ingress Controller的资..

2021-08-26 20:20:00 5035 2

原创 如何在Kubernetes中安装redis集群

1、安装Helm$ wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz$ tar -zxvf helm-v3.6.3-linux-amd64.tar.gz$ sudo mv linux-amd64/helm /usr/local/bin/helm2、安装redis-operator目录1、安装Helm2、安装redis-operator3、配置secret4、创建一个三主三从的redis集群5、故障恢复

2021-08-25 09:25:38 722 12

原创 如何在Kubernetes中安装Mysql PXC(Percona XtraDB Cluster)集群

percona官方为我们提供在kubernetes中部署PXC集群的最佳实践:Percona Kubernetes Operator for PXC,https://github.com/percona/percona-xtradb-cluster-operator使用Operator安装PXC的方法如下:1、克隆percona-xtradb-cluster-operator代码仓$ git clone -b v1.9.0 https://github.com/perc..

2021-08-20 16:46:04 763

原创 使用kubeadm初始化k8s集群的一些问题解决办法

1、由于访问不到国外地址报错:could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://storage.googleapis.com/kubernetes-release/release/stable-1.txt": context deadline exceeded (Client.Timeou..

2021-08-19 10:19:25 1429

原创 如何在VirtualBox的CentOS虚拟机中安装阿里云版本Minikube

一、虚拟机启用嵌套VT-x/AMD-V嵌套虚拟化特性在VirtualBox虚拟机中默认是不启用的(设置-系统-处理器):打开Windows Powershell,进入VirtualBox安装目录,将要安装minikube的虚拟机启用嵌套VT-x/AMD-V。# 进入安装目录cd 'C:\Program Files\Oracle\VirtualBox\'# 列出所有虚拟机.\VBoxManage.exe list vms"测试机1" {12027609-b5b5-4364-8.

2021-07-16 18:00:28 536

原创 Redis集群中节点更换IP后如何恢复集群且保留数据

前段时间在生产中遇到一个问题,即系统需要从一个网段迁移到另一个网段。我们知道redis集群在创建时是指定了节点的ip:port,因此在节点IP变更后,集群自然就失效了。如果需要恢复集群怎么办?当然在大部分情况下,我们可以选择删除所有节点的数据文件dbfilename、持久化文件appendfilename、集群配置文件cluster-config-file,然后重建集群。但是如果需要保留数据,又该怎么操作呢?以下以一个三主三从的单副本集群来演示恢复过程:[root@test1 bin]# ./re

2021-07-16 11:00:17 758 2

原创 Mysql PXC(Percona XtraDB Cluster)集群的维护与故障处理方法

与主从复制不同,PXC集群更像一个逻辑整体。以下以三节点(A、B、C)为例,说明PXC集群的维护与故障恢复方法。1、节点A正常关闭此时B、C会收到A退出集群的消息,B、C的集群属性(例如wsrep_cluster_size)、节点属性(例如wsrep_local_index)会自动变更,集群可正常提供服务。节点A重新启动后,会自动加入集群,集群属性随之变更。2、节点A、B正常关闭此时集群规模减小到1,集群仍然可以正常提供服务。但是,当节点A/B重新启动后,节点C的状态将变为Donor/Des

2021-07-09 17:16:25 977

原创 Zabbix告警调用呼叫接口

#!/usr/bin/python# coding=utf-8# author:zhangrongjieimport requestsimport jsonimport sysimport datetimedef printToLog(file, info): with open(file, 'a+') as f: logtime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S ") f.

2020-12-25 16:03:58 616

原创 NGINX官方文档[译]:HTTP负载均衡

负载均衡是一种优化资源利用率、提升最大吞吐量、减少延迟、提高系统容错率的常用技术。要使用Nginx对一组服务器的HTTP流量进行负载均衡,首先需要使用upstream定义一组后端服务器(配置于http字段中),然后使用server对upstream组中的服务进行配置(同样配置于http字段中,注意与定义虚服务的server字段区分开)。例如,如下配置定义了一组由3台服务器组成的名为backend的资源组:http { upstream backend { server

2020-09-28 10:51:49 325

原创 关于Zabbix使用的一些经验性思考

1、Zabbix是什么?首先是定性,zabbix提供了全套的监控解决方案,即采集数据——存储和展示数据——定义告警触发条件——触发告警,这样一个完整的监控流程(在zabbix里对应的术语,也及配置流程为:主机——监控项——触发器——动作,zabbix中的主机是个泛称,泛指任意类型的被监控对象)。在一些基本场景下,可以做到拿来就用。但zabbix并不死板,在上述四个阶段都可以灵活定制。我自己亲身经历的从nagios迁移到zabbix的过程,让我深刻体会到这是一个既灵活又简单的系统。Nagios社区的所

2020-06-12 16:23:20 487

原创 Zabbix对接Grafana

1、安装grafana:[root@zabbix ~]# rpm -ivh grafana-6.7.3-1.x86_64.rpm warning: grafana-6.7.3-1.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 24098cb6: NOKEYPreparing... ################################# [100%]Updating / insta

2020-06-03 15:41:41 611

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除