Zabbix 5.0:优化建议
在使用Zabbix过程中,正确的调整Zabbix系统,使之保持高性能是非常重要的,能够充分利用硬件资源,监控更多主机和性能指标。
硬件关于Zabbix Server端硬件的建议:
处理器:使用最新稳定的处理器,一般同级别的处理器,新一代的往往比上一代的性能更强、功耗更低;
磁盘:建议固态硬盘,或者不低于10K RPM的机械硬盘,建议做RAID;
内存:通常建议不低于8G,若监控主机超过1000台,建议配置更高的内存;
网卡:建议至少千兆网卡;
官网硬件配置参考:
规模
平台
CPU/内存
数据库
受监控的主机数量
小型
CentOS
Virtual Appliance
MySQL InnoDB
100
中型
CentOS
2 CPU cores/2GB
MySQL InnoDB
500
大型
RedHat Enterprise Linux
4 CPU cores/8GB
RAID10 MySQL InnoDB 或 PostgreSQL
>1000
极大型
RedHat Enterprise Linux
8 CPU core ...
容器进阶:OCI与容器进行时
什么是容器运行时(Container Runtime)Kubernetes节点的底层由一个叫做容器运行时的软件进行支撑,它负责比如启停容器 这样的事情。最广为人知的容器运行时当属Docker,但它不是唯一的。
容器运行时分类
低级运行时:只负责利用Cgroups和Namespaces等管理容器;
高级运行时:负责额外实现管理镜像的API,包括镜像格式、镜像管理(构建、查询和删除等)和镜像共享等;
什么是OCIOCI(Open Container Initiative,开放容器标准)的容器运行时规范设定的标准定义了容器运行状态的描述,以及运行时需要提供的容器管理功能,例如创建、删除和查看等操作。容器运行时规范不受上层结构绑定,不受限于任何特定操作系统、硬件、CPU架构或公有云等,从而允许任何人遵循该标准开发应用容器技术。
符合规范的容器运行时
runc, docker默认的运行时,与宿主机共享内核,利用cgroup做资源隔离,安全性不是很高,由于内核共享,性能最好
runv,基于hypervisor的容器运行时,有自己单独的内核,安全性好很多
kata,被蚂蚁收了,号称“容器的速度, ...
OpenResty入门
概述OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
组成OpenResty并不是个“单块”(Monolithic)的程序,而是由众多设计精良的组 ...
钱镠墓背后吴越钱氏的故事:千年名门望族,两浙第一世家
本文转载自钱镠墓背后吴越钱氏的故事:千年名门望族,两浙第一世家
刚刚看见钱镠墓被盗的通报,确认被盗,但好在179件文物都追回了。其实挺震惊的,钱镠和吴越钱氏在我国历史上非常有传奇性,尤其是钱氏家族的丹书铁券,可以说是国宝(一级文物,目前在国博),临安的钱王陵也算是热门景点,没想到眼皮下被盗了。
很多人对钱镠可能有点陌生,也看见有人把钱王陵和西湖边那个钱王祠弄混,这里简单讲下他们的故事吧。因为这个故事,现在非常有必要讲。注意,这个故事有点长,横跨多个历史文学典故。因为这个家族非常传奇,被誉为千年名门望族,两浙第一世家。故事要从唐朝说起。唐朝末年,发生了黄巢起义,黄巢也就是大家熟悉的那句满城尽带黄金甲的作者。“待到秋来九月八,我花开后百花杀。冲天香阵透长安,满城尽带黄金甲。”当年他科举考试不第,于是留下了这首诗后离开长安,再后来成为了唐末起义军领袖将唐朝搅得天翻地覆,某种意义上完成了这首诗的意愿而当黄巢起义军劫掠江南时,时任镇海军右职的钱镠分析形势,采用伏击与虚张声势等战术以少胜多击退起义军,保全了杭州。再之后,天下大乱,钱镠上司董昌在越州起兵造反并邀请钱镠加入,但钱镠不从,还率军击溃 ...
Shell:如何遍历包含空格的文本
翻译自Looping Through a File that Contains Spaces – Bash for Loop
处理包含空格或特殊字符的文件是每个使用Linux的人都应必须掌握的。本文我们将讨论如何在带有空格的文件上使用for循环。
测试文本如下:
1234This line has spacesthesedonot
现在,我们使用for循环来迭代这个文本。当我们执行for循环时,shell会看到第一行的空格,并假设每一行都是不同的迭代。
12345678[root@test ~]# for i in $(cat test);do echo $i;doneThislinehasspacesthesedonot
IFS定义了在分隔单词时用作分隔的字符或字符集。
维基百科:对于Unix操作系统的许多命令行解释器(“shell”),内部字段分隔符(简称IFS)是指一个变量,该变量定义用于将模式拆分为某些操作的标记的字符。
默认情况下,IFS(字段分隔符)的值为<space><tab><newline>。因此,当shell看到第一行 ...
Linux性能优化:内存使用情况分析
什么是内存内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据。
它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。
只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。
内存的运行也决定计算机整体运行快慢的程度。
Linux内存回收机制为啥要回收:
内核需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态。
当真的有大于空闲内存的申请到来的时候,会触发强制内存回收。
内存回收针对的目标有两种,一种是针对zone的,另一种是针对一个memcg的,把针对zone的内存回收方式分为三种,分别是快速内存回收、直接内存回收、kswapd内存回收。
查看Linux内存情况查看*/proc/meminfo*123456789101112131415161718192021222324252627282930 ...
Shell:如何写一个多选菜单的脚本
翻译自How to Create a Multiple Choice Menu in Bash Scripts
有很多方法可以读取Bash脚本中的用户输入。 但是,允许用户键入输入会带来一些问题。 主要问题是输入验证,您必须在其中考虑所有可能的输入。 解决此问题的一种简单方法是为Bash脚本创建一个多选菜单。 使用此方法,您可以定义用户可以选择的一组简单的预定选项。
下文,我们将讨论使用select语句和case语句在Bash脚本中创建简单的多选菜单。
首先,让我们看一个示例多选菜单脚本,然后我们将其分解并解释每个部分。
12345678910111213141516171819202122232425#!/bin/bashPS3='Choose your favorite food: 'foods=("Pizza" "Pho" "Tacos" "Quit")select fav in "${foods[@]}"; do case $fa ...
容器进阶:运行环境的一致性
参考:深入剖析Kubernetes 镜像分层结构理论详解1 深入理解Docker容器和镜像 Union File System
上文简单介绍了容器的隔离与限制,下文会更进一步去讲解docker是如何保持一致性的。
Docker在镜像的设计中引入了层(layer)的概念。也就是说,用户制作镜像的每一步操作,都会生成一个层,也就是一个增量rootfs(根文件系统)。
这里涉及到几个概念:rootfs、image、layer和Union File System 。
rootfs什么是rootfs?rootfs是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
docker架构下沿用了linux中的rootfs的思想,当 docker daemon 为 docker 容器挂载 rootfs 时与传统的linux内核极其类似,将其设置为只读模式,在rootfs挂载完成之后,和linux内核不一样的是,docker daemon没有将它切换为读写模块。
可以这样理解,对 ...
容器进阶:隔离与限制
参考:深入剖析Kubernetes LINUX NAMESPACE(上) cgroup 原理分析
容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。
容器如何去实现这个边界来避免应用之间的互相干扰?这就涉及到Linux的两个技术:Cgroups技术和Namespace技术。
Cgroups技术:用来制造约束
Namespace技术:用来修改进程视图
Namespace技术介绍先说结论,Docker 容器这个听起来玄而又玄的概念,==实质是指定了容器进程所需要启用的一组Namespace参数。这样,容器就只能“看”到当前 Namespace 所限定的资源、文件、设备、状态,或者配置。==而对于宿主机以及其他不相关的程序,它就完全看不到了。也就是说,容器是一种特殊的进程。
Namespace种类Linux Namespace 有如下种类
分类
系统调用参数
隔离内容
相关内核版本
Mou ...
容器进阶:网络概述
参考:《每天5分钟玩转Docker容器技术》
容器网络可以分为单个host上的容器网络和跨多个host的网络。
单主机网络docker安装时会自动在host上创建三个网络,如:
12345[root@test ~]# docker network lsNETWORK ID NAME DRIVER SCOPEd9cf9b2bd659 bridge bridge local44689f1ca656 host host local2d6cf648cb7e none null local
即bridge、host、none三个网络。
none网络顾名思义,none网络就是什么都没有的网络。挂在这个网络下的容器除了lo,没有其他任何网卡。容器创建时,可以通过--network none指定使用none网络。 ...