Zabbix 5.0:磁盘自动发现和读写监控
自动发现磁盘配置键值 注意:此键值仅支持Linux平台。 此发现键值返回两个宏 : {#DEVNAME} :设备名 {#DEVTYPE} :设备类型 例如: 123456789101112131415161718[ { "{#DEVNAME}":"loop1", "{#DEVTYPE}":"disk" }, { "{#DEVNAME}":"dm-0", "{#DEVTYPE}":"disk" }, { "{#DEVNAME}":"sda", ...
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...
容器进阶:OCI与容器进行时
什么是容器运行时(Container Runtime)Kubernetes节点的底层由一个叫做容器运行时的软件进行支撑,它负责比如启停容器 这样的事情。最广为人知的容器运行时当属Docker,但它不是唯一的。 容器运行时分类 低级运行时:只负责利用Cgroups和Namespaces等管理容器; 高级运行时:负责额外实现管理镜像的API,包括镜像格式、镜像管理(构建、查询和删除等)和镜像共享等; 什么是OCIOCI(Open Container Initiative,开放容器标准)的容器运行时规范设定的标准定义了容器运行状态的描述,以及运行时需要提供的容器管理功能,例如创建、删除和查看等操作。容器运行时规范不受上层结构绑定,不受限于任何特定操作系统、硬件、CPU架构或公有云等,从而允许任何人遵循该标准开发应用容器技术。 符合规范的容器运行时 runc, docker默认的运行时,与宿主机共享内核,利用cgroup做资源隔离,安全性不是很高,由于内核共享,性能最好...
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...
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...
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...
容器进阶:运行环境的一致性
参考:深入剖析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...
容器进阶:隔离与限制
参考:深入剖析Kubernetes LINUX NAMESPACE(上) cgroup 原理分析 容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。 容器如何去实现这个边界来避免应用之间的互相干扰?这就涉及到Linux的两个技术:Cgroups技术和Namespace技术。 Cgroups技术:用来制造约束 Namespace技术:用来修改进程视图 Namespace技术介绍先说结论,Docker 容器这个听起来玄而又玄的概念,==实质是指定了容器进程所需要启用的一组Namespace参数。这样,容器就只能“看”到当前 Namespace 所限定的资源、文件、设备、状态,或者配置。==而对于宿主机以及其他不相关的程序,它就完全看不到了。也就是说,容器是一种特殊的进程。 Namespace种类Linux Namespace...