「Elasticsearch」- 中文拼音分析器
拼音分析器:GitHub/medcl/elasticsearch-analysis-pinyin
在搜索关键字中可以包含拼音。
Elasticsearch 7.6.2
第一步、下载插件(可选)
https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.6.2/elasticsearch-analysis-pinyin-7.6.2.zip
第二步、安装插件
在 CentOS 7.4 中,如果使用 YUM 安装 Elasticsearch 服务,则:
#!/bin/sh
cd /usr/share/elasticsearch
# 直接在线安装
./bin/elasticsearch-plugin install \
“https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.6.2/elasticsearch-analysis-pinyin-7.6.2.zip”
# 或者使用离线(第一步下载的安装包)
./bin/elasticsearch-plugin install “file:///path/to/elasticsearch-analysis-pinyin-7.6.2.zip”
第三步、重启服务
systemctl restart elasticsearch.service
第四步、验证服务
# curl http://10.10.50.233:9200/_cat/plugins
elasticsearch-deve analysis-pinyin 7.6.2
Elasticsearch 6.3.2
# 方法一:直接使用预编译的插件
#!/bin/sh
################################################################################
# 安装
################################################################################
# CentOS 7.4,如果你使用YUM源来安装Elasticsearch服务
cd /usr/share/elasticsearch
./bin/elasticsearch-plugin install \
“https://github.com/medcl/elasticsearch-analysis-pinyin/release[……]
「Elasticsearch」- 使用 Curator 管理索引(学习笔记)
问题描述
在日志收集集群中,集群会按照时间创建索引。我们希望保留在某段时间内的日志,比如保留在 30 天内的日志,超过 30 天的日志将被自动删除。
本文将记录管理索引的方法,并实现自动删除索引,而无需人为干预。
解决方法
Index Lifecycle Management
官方提供 Index Lifecycle Management 特性,但是属于 X-PACK 的非免费功能,因此这条路不通。
本笔记不记录与 Index Lifecycle Management 特性有关的内容
Curator
还有其他的方案 – 可以使用 Curator 整理 Elasticsearch 索引,但是需要考虑一下几个问题: 1)项目是否还在维护 => # 06/02/2020 Latest commit b131026 on Mar 17 2)是否支持我们的集群版本 => 根据 Version Compatibility 文档,Version 5 支持 ES 7.X 版本
官方文档:Curator Index Management 5.8 项目地址:GitHub/elastic/curator
本笔记将重点记录 Curator 工具的使用方法,以及相关参考文档的位置。
安装 Curator 工具
CentOS 7 and Curator 5
Curator Reference [5.8] » Installation » YUM repository
rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/curator-5.repo <<EOF
[curator-5]
name=CentOS/RHEL 7 repository for Elasticsearch Curator 5.x packages
baseurl=https://packages.elastic.co/curator/5/centos/7
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOF
yum makecache
yum install elasticsearch-curator
# 安装到 /opt/elasticsearch-curator 目录
# 并自动创建 /usr/bin/curator 软链接
Debian 10 and Curator 5
Curator Reference [5.8] » Installa[……]
「Curator」- 删除五天前日志索引
问题描述
日志集群:Elasticsearch 7.6.3 我们需要自动删除在日志集群中五天前的日志。
我们的日志以天为单位存储在不同的索引中,的以天日志索引格式为 logstash-YYYY.MM.DD
解决方法
使用 Curator 工具
第一步、创建配置文件
该配置文件用于指定集群的连接信息,config.yaml:
—
client:
hosts:
– 10.10.50.229
– 10.10.50.230
– 10.10.50.231
port: 9200
url_prefix:
http_auth:
timeout: 300
master_only: False
logging:
loglevel: INFO
logfile:
logformat: default
blacklist: [‘elasticsearch’, ‘urllib3’]
第二步、创建动作文件
该配置文件用于指定要执行的动作,action.yaml
—
actions:
1:
description: “删除五天前的索引”
action: delete_indices
options:
ignore_empty_list: True
timeout_override: 300
continue_if_exception: False
disable_action: False
filters:
– filtertype: pattern
kind: timestring
value: ‘logstash-%Y.%m.%d’
– filtertype: age
source: name
direction: older
timestring: ‘%Y.%m.%d’
unit: days
unit_count: 5
第三步、测试
使用 –dry-run 测试,根据日志输出进行调整:
curator –config /path/to/config.yaml –dry-run action.yaml
然后去掉 –dry-run 选项执行,并检查索引是否被删除:
curator –config /path/to/config.yaml action.yaml
第四步、添加定时任务
附加说明
时间选择的问题
时间选择是个复杂的问题,该方案不适用与删除 30[……]
「Elasticsearch」- 查询语法(学习笔记)
参考文献
Query DSL | Elasticsearch Guide [7.12] | Elastic[……]
「Elasticsearch」- 常见错误列表
#4 Data too large
I got issue about “Data too large”
问题描述: 在 Kibana 中,返回如下错误信息:
[circuit_breaking_exception] [parent] Data too large, data for [<http_request>]
would be [1004465832/957.9mb], which is larger than the limit of [986061209/940.
3mb], real usage: [1004465832/957.9mb], new bytes reserved: [0/0b], with { bytes
_wanted=1004465832 & bytes_limit=986061209 & durability=”TRANSIENT” }
解决办法: 修改 JVM Heap 大小,参考 Setting JVM options 笔记。
#3 java.lang.OutOfMemoryError: Java heap space
-「Setting the heap size」 -「Elasticsearch service failing」
问题描述: 服务挂了,看日志,而java.lang.OutOfMemoryError: Java heap space是最后一条日志。
问题原因: 内部太少了。
解决方案: 系统为CentOS 7.5,Elasticsearch 6.3.2,修改/etc/sysconfig/elasticsearch文件中的ES_JAVA_OPTS=”-Xms6000m -Xmx6000m”,然后重启服务。
#2 cluster_block_exception blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]
-「Elasticsearch error: cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)], flood stage disk watermark exceeded」
问题描述: 执行操作时,产生如下错误:
{
“error”: {
“root_cause”: [
{
“type”: “cluster_block_exception”,
“reason”: “blocked by: [FORBIDDEN/12/index read-only / all[……]
「Elasticsearch」- 集群/索引 Red/Yellow 状态
问题描述
我们修改 JVM Heap 参数后,当重启集群后,集群呈现 Red 状态,部分索引也呈现 Red 状态。
使用 GET /_cluster/allocation/explain?pretty 接口,查看状态,得到如下信息:
reached the limit of incoming shard recoveries [2], cluster setting [cluster.rou
ting.allocation.node_concurrent_incoming_recoveries=2] (can also be set via [clu
ster.routing.allocation.node_concurrent_recoveries])
随着时间的推进,索引从 RED => YELLOW => GREEN 过渡。另外,我们使用 Elasticsearch 7.6 版本。
附加说明: 1)本笔记将介绍排查 Red Cluster 的通用方法,而不是针对特定成因(因为成因有很多,但是排查思路是类似的)。
背景知识
当我们运行单实例时……
当我们运行单实例时,所有 Primary Shards 在同个节点,没有 Replica Shards 存在,节点呈现 Yellow 状态。
此时集群功能正常,但是数据可能丢失。
当我们加入节点后……
当我们向集群加入新的节点后,集群立刻开始 Replica Shareds 分配。
当分配结束后,集群进入 Green 状态。最终,所有 Primary Shard 被分散在不同的节点上。
当集群 Red 状态时……
隐含信息
表示至少某个 Primary Shard 及它的 Replica Shard 没有分配到节点。
简单说,Primary Shard 与 Replica Shard 的分配都存在问题。
可能原因
1)集群节点故障,及负载过高导致进程退出。 解释:所有 Primary Shard 被分散在不同的节点上,当某个节点故障时,分配在其上的 Primary Shard 丢失,那么此时集群的 Primary Shard 就存在问题,集群功能异常,无法使用,呈现红色。
排查思路
Red Index 导致 Red Shard 状态,Red Shard 导致 Red Cluster 状态。
使用 GET /_cluster/allocation/explain 获取首个无法分配的 Shard 并解释原因:
{
“index”: “test4”,
“shard”: 0,
“primary”: true,
“c[……]
「Kibana」- 常见问题处理
# 如果你的Kibana显示中文,那很可能是用了「anbai-inc/Kibana_Hanization」这个。[……]
「Zabbix」- 基本概念
内容简介
在Zabbix中的一些基本概念和术语,比如Server、Agent、Proxy、Sender、Get、Trigger、Item、Event等等。
理解这些术语,有助于进一步的了解Zabbix的组成及Zabbix是如何工作的。
host
想要监控的有IP/DNS的联网设备。
host group
逻辑上的一组主机;可以包含主机,也可以包含模板。host group内的主机和模板不以任何方式相互链接。当为不同用户组的主机分配访问权限时,将使用主机组。
item
要从主机接收的特定数据片段。 在设置了host之后,还要添加一些监控项(item)才能开始获取实际的数据。如果想一次添加更多的item到主机上,可以将template绑定到主机上。 在单个item中,可以指定要从主机获取什么数据,使用item key来实现。
trigger
trigger是一个表达式,定义了相关的阈值来”评估”item中收到的数据,如果超过“可接受的”阈值,就会触发trigger。 item虽然可以搜集数据,但是当某些数据值得关注或警告的时候,item并不会进行评估处理,而这个任务是由trigger完成的。 当接收到的数据高于阈值时,trigger从“Ok”进入“Problem”状态。当接收到的数据低于阈值时,trigger保持/返回到“Ok”状态。
event
发生的一些值得注意的事情。在Zabbix中,生成以下几种event:
trigger events – trigger的状态是否发生改变 (OK→PROBLEM→OK)。
discovery events – 检测到主机和服务。
auto registration events – 主动代理由服务器自动注册
internal events – 当item/low-level discovery规则变成不支持,或者trigger进入为止状态。
a trigger goes into an unknown state
problem
problem指的是处于“Problem”状态的trigger
action
如果希望由于event而发生某些操作(例如发送通知),则需要配置操作。对event做出反应的预定义的方法。 action由操作(例如发送通知)和条件(执行操作时)组成。可以根据所有支持的类型的event来定义操作:
Trigger events – 当trigger状态从OK改变为PROBLEM,或者反向改变时。
Discovery events – 发生网络发现时。
Auto registration events – 当新的主动[……]
「Zabbix」- 主动模式(Active checks)与被动模式(Passive checks)
主动模式(Active checks)与被动模式(Passive checks)
(1)“主动模式(Active checks)”与“被动模式(Passive checks)”是相对于 AGENT 来说的,即“由 zabbix agent 主动检查”或“有 zabbix agent 被要求检查”。(2)监控项目是主动检查还是被动检查则在 zabbix server 中定义,在 zabbix agent 中并没有定义监控项。
被动模式
首先由 zabbix server 发起请求,根据 zabbix server 请求,再由 zabbix agent 在主机中获取目标数据。
在 zabbix server 中的 poller 进程连接 zabbix agent 服务,并等待数据返回,然后关闭连接。
主动模式
首先由 zabbix agent 从 zabbix server 获取检索项目,然后 zabbix agent 周期性向 zabbix server 发送数据。
在 zabbix agent 中,默认间隔两分钟连接 zabbix server 的 trapper 端口,以获取检测指标。zabbix agent 根据检测指标获取数据并处理,处理之后将数据发送给 zabbix server。
应该使用主动模式还是被动模式?
只能使用被动模式的场景
在特殊场景中,比如 Zabbix 部署于内网,而被监控主机位于外网,此时只能使用被动模式(也有其他“繁琐的”解决办法)。或者网络访问有特殊要求(不能进只能出),也只能使用主动模式。
远程命令(Remote Command)特性只能在被动模式下使用。在主动模式下,zabbix agent 只负责收集数据,不受 zabbix server 管控,也不知道何种状态属于故障,因此无法执行远程命令。
两者性能对比
在被动模式中,zabbix server poller 连接 zabbix agent,在数据返回后再关闭连接。可以在配置文件中指定超时时间,以及使用 time zabbix_get 命令测试命令执行时间。
在被动模式中,(1)如果 UserParameter 执行时间较长,则 zabbix server poller 将无法处理其他监控项,需要在配置文件中增加 poller 的数量。(2)同样如果 zabbix agent 处理某个 UserParameter 时间过长,将无法处理其他监控项,需要在配置文件中增加 zabbix agent 进程数量。(3)执行时间过长将导致性能下降,但是有时又没有其他办法。
在主动模式中,就不会具有上述缺点,因为数据有 zabbix agent 处理并发送,无需 zabbix serv[……]
「Zabbix」- 安装与升级
内容简介
本部分内容与 Zabbix 安装有关;
安装过程概述
第一步、安装 Nginx 服务
安装 Nginx 服务,用作前端访问。安装发行版自带版本即可;
第二步、安装 PHP 环境
安装 PHP 环境,负责提供 Zabbix Web UI 运行环境;
第三步、安装 MySQL 数据库
作为 Zabbix 后端存储;
第四步、安装 Zabbix 监控
不知何时起,官方改版「Download and install Zabbix」页面,在选择平台后会自动显示安装命令,非常方便;
相关程序(命令)
Zabbix Manual Pages
在 Zabbix 中,安装的程序及各自作用如下:
zabbix_server,服务端的核心程序; Zabbix 的核心守护进程; 用于从设备收集监控数据,然后发送到 Zabbix Server
zabbix_proxy,代理服务程序,用于分布式监控的 Proxy 模式中;
zabbix_agentd,代理程序,运行于监控节点,负责收集监控数据;
zabbix_agent,与 zabbix_agentd 的类似,但是 zabbix_agent 需要以 xinetd 方式来启动; Zabbix Agent 守护进程; 用于监视各种服务器参数。默认监听的端口为 10050;
zabbix_java_gateway,使用 JMX 方式,采集 Java 程序信息;
zabbix_get,命令行工具,用于从 Agent 中获取数据; 用于从 Zabbix agent 获取数据;
zabbix_sender, 用于向 zabbix_server 或 zabbix_proxy 发送数据。 在 Zabbix 服务器上,应使用相应的「key」创建类型为「Zabbix trapper」的「item」。 请注意,要想接受传入值,只有从此「item」的“Allowed hosts”字段中指定主机;
参考文献
访问 Zabbix 主页 访问 Zabbix 文档 Zabbix manpages[……]
「Zabbix」- 安装(CentOS)
本笔记整理在 CentOS 中部署 Zabbix 的过程,大致步骤如下: 1)安装 Nginx 服务; 2)安装 PHP-FPM 环境; 3)安装 MySQL/MariaDB 数据库; 4)安装 Zabbix Server、Agent、Frontend 服务; 5)配置 MySQL 用户,导入数据库表结构,并启动数据库服务; 6)配置 Zabbix Server 数据库连接,并启动服务以验证配置正确; 7)配置 PHP 环境参数,并启动 PHP-FPM 服务; 8)配置 Nginx 服务,绑定域名,指定目录,并启动服务; 9)配置 Frontend 以连接数据库,访问网页以查看;
CentOS 7.0 and Zabbix 4.0.1
Zabbix Documentation 4.0/1 Red Hat Enterprise Linux/CentOS
# 添加仓库,并安装 Server、Agent、Frontend(使用 MySQL 数据库)
rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y zabbix-agent-4.0.1 zabbix-server-mysql-4.0.1 zabbix-web-mysql-4.0.1 \
zabbix-get-4.0.1
# c. Create initial database
# Import initial schema and data. You will be prompted to enter your newly created password.
yum groups install ‘MariaDB Database Client’ ‘MariaDB Database Server’
mysql_secure_installation
mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘password’;
mysql> quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# d. Configure the database for Zabbix server
# Edit fil[……]
「Zabbix」- Debain 8.2 and Zabbix 4.0
系统环境
操作系统:
Debian 8.2
软件版本:
Zabbix 4.0
a.Install Repository with MySQL database
wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2+jessie_all.deb
dpkg -i zabbix-release_4.0-2+jessie_all.deb
apt update
b.Install Zabbix server, frontend, agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent
c.Create initial database
mysql -uroot -p
# password:
# mysql> create database zabbix character set utf8 collate utf8_bin;
# mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘password’;
# mysql> quit;
Import initial schema and data. You will be prompted to enter your newly created password.
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
d.Configure the database for Zabbix server
Edit file /etc/zabbix/zabbix_server.conf
DBPassword=password
e.Configure PHP for Zabbix frontend
Edit file /etc/zabbix/apache.conf, uncomment and set the right timezone for you.
php_value date.timezone Europe/Riga
f.Start Zabbix[……]
「Zabbix」- Raspbian and Zabbix 4.0
内容简介
本文将介绍在Raspbian中部署Zabbix 4.0版本。
系统要求
# Requirements
MariaDB Installation
# Repository
Adding Zabbix repository
# Server
Server/proxy/frontend installation
Creating database
# Frontend
Server/proxy/frontend installation
# Agent
Agent installation
详细内容参考官方手册。Zabbix Documentation 4.0/2 Debian/Ubuntu/Raspbian
# Error mysql Specified key was too long; max key length is 767 bytes https://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html#innodb-maximums-minimums https://blog.csdn.net/bigdataf/article/details/78921409 https://stackoverflow.com/questions/16568128/max-size-of-unique-index-in-mysql[……]
「Zabbix」- 关于版本升级
内容简介
本文整理了与Zabbix版本升级有关的内容,但是并不涉及升级的具体过程,只是对升级过程的一个概述,及需要注意的问题。
升级过程
在官方文档中,列举出了基本的升级过程,下面是一个简单的整理:
##1 停止Zabbix服务。
##2 备份数据。这是至关重要的一步,因为升级过程中,启动Zabbix Server后,它会去检查数据库的版本,并进行自动数据库表升级。如果这个过程出现问题,那数据就毁了,所以一定要做好数据的备份。
##3 备份配置文件。这可能包括:在/etc/zabbix中的配置文件;前端Web程序;前端Web程序的HTTP站点配置。具体内容视情况而定。
##4 配置源。配置新的源,进行升级。(如果能够使用源安装,尽量不要使用源码编译安装。)
##5 安装新版本的包。
##6 启动服务。在启动服务之前,最好先执行tail -f /var/log/zabbix/zabbix_server.log命令,因为zabbix_server会检查数据库的版本,并进行一系列的数据库升级动作,要留意升级过程中是否出现了错误(这也是进行数据库备份的原因,挺刺激的)。
##7 收尾工作。最后的工作就是检查Web前端,以及有没有其他的错误。这些都是小事情了。
流程就是这个样子的,详细的细节在官方文档上有所描述。
# 08/22/2019 # Zabbix 3.02 to Zabbix 4.25
这个是已经测试过的,将3.02升级到4.25版本,成功了。暂时没有遇到问题。
升级过程参考官方「Upgrade from packages/1 Red Hat Enterprise Linux/CentOS」文档,这是升级到4.2版本的文档。
升级过程中,我的系统是CentOS 6.9发行版,没有systemd服务。所以,我直接参考「Download and install Zabbix」手册,进行了安装,这与升级并不冲突。
注意事项
要详细阅读“新版Zabbix”(要升级到的版本)对资源的要求。
要详细阅读每个升级手册的「upgrade notes!」部分,该部分描述了升级过程中会发生的问题,需要的时间,变更的内容等等。[……]
「Zabbix」- 在 Windows 中安装 zabbix agent 服务
第一步、下载安装包
https://www.zabbix.com/download_agents
第二步、执行安装
参考官方 Zabbix Documentation 4.4/4 Windows agent installation from MSI 文档,执行 下一步 => 下一步 => 下一步 安装。
修改配置与重启
配置文件为 C:\Program Files\Zabbix Agent\zabbix_agentd.conf 文件,即默认安装目录。
服务重启(好像没有 restart 命令):
net stop ‘Zabbix Agent’
net start ‘Zabbix Agent’
参考文献
Zabbix Documentation 4.4/4 Windows agent installation from MSI Essential Tools for Windows Services: The NET Command[……]
「Zabbix 3.2」- 使用源码安装
内容简介
本文将介绍如何使用源码安装Zabbix监控(只包含Zabbix Server和Zabbix Agent服务的安装)。
注意事项
本文只安装Zabbix Server和Zabbix Agent服务,没有安装Zabbix Proxy服务。
创建普通用户及组
Zabbix出于安全考虑,不允许使用root运行。如果使用root运行,会自动切换到zabbix用户,如果zabbix用户不存在就会报错。下面是创建用户、组的命令:
#!/bin/sh
groupadd zabbix
useradd -g zabbix zabbix
而且,如果Zabbix Agent和Zabbix Server运行于同一台服务器,最好是使用不同的用户。防止Agent访问Server的配置文件。
创建Zabbix Server使用的数据库
因为Zabbix Server要保存数据,所以要在Zabbix Server所在的服务器上创建数据库。SQL文件位于源码目录下的database中,具体使用那种数据库,根据需要而定。这里以MySQL为例:
第一步,登录MySQL创建用户并授权:
#!/bin/sh
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by ‘<password>’;
quit;
第二步,导入相关的数据库:
#!/bin/sh
mysql -uzabbix -p zabbix < schema.sql
# Zabbix Proxy不需要下面这两个SQL文件。
mysql -uzabbix -p zabbix < images.sql
mysql -uzabbix -p zabbix < data.sql
关于其他的数据库,参考「1 Database creation scripts」手册。
安装Zabbix Server和Zabbix Agent
第一种情况,如果Server和Agent在同一台主机上:
#!/bin/sh
# 如果MySQL不再标准路径,需要使用–with-mysql=/<path_to_the_file>/mysql_config来指定
./configure –enable-server \
–enable-agent –with-mysql \
–enable-ipv6 –wit[……]
「zabbix_get」-
从Zabbix Agent获取数据
命令语法格式
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] –tls-connect cert –tls-ca-file CA-file [–tls-crl-file CRL-file] [–tls-agent-cert-issuer cert-issuer] [–tls-agent-cert-subject cert-subject] –tls-cert-file cert-file –tls-key-file key-file -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] –tls-connect psk –tls-psk-identity PSK-identity –tls-psk-file PSK-file -k item-key
命令描述
命令zabbix_get是一个命令行程序,用户从用户Zabbix Agent获取数据。
命令支持的选项及含义
-s, –host host-name-or-IP 指定主机的IP地址
-p, –port port-number 指定Zabbix Agent所在的端口号。默认为10050
-I, –source-address IP-address 指定源IP地址。
-k, –key item-key 指定要取值的ITEM的key
设置TLS信息
–tls-connect value 如何连接到Agent,参数value的取值可能为:
unencrypted,不加密的连接,默认。
psk,使用TLS和预共享密钥连接。
cert,使用TLS和证书连接。
–tls-ca-file CA-file 包含用于对等证书验证的顶级CA证书的文件的完整路径名。
–tls-crl-file CRL-file 包含已吊销证书的文件的完整路径名。
–tls-agent-cert-issuer cert-issuer 允许的代理证书发行者。
–tls-agent-cert-subject cert-subject 允许的代理证书主题。
–tls-cert-file cert-file 包含证书或证书链的文件的完整路径名。
–tls-key-file key-f[……]
「Zabbix」- 管理与配置
内容简介
本部分整理与 Zabbix 日常维护与管理相关的内容。
配置流程
Host groups => Hosts => Applications => Items => Trigger => Actions
User Groups => Users => Medias => Audit
版本号在页面的最下方
在手动确认问题后,关闭闪烁
Problems Widget – Can you Disable Flashing of recent problems?
Administration -> General -> Trigger displaying options -> blinking[……]
「Zabbix」- 设置主动模式与被动模式
本笔记将记录如何配置主动模式监控与被动模式监控。(1)在默认配置(Zabbix Server)中,所有监控项默认为被动模式。(2)zabbix agent 可同时运行两种类型检查。
环境概述
软件版本:Zabbix 4.2
配置主动模式(Active checks)
第一步、修改 zabbix agent 配置
(配置)修改 /etc/zabbix/zabbix_agentd.conf 文件:
# 禁用被动检查(不建议:因为在默认模板中主动与被动都有使用)
# StartAgents=0
# zabbix agent 将从该 zabbix server 拉取监控项
ServerActive=zabbix.example.com
# 当前主机名,用于表示该主机,将会在 zabbix server 配置中用到
# => 建议使用 HostnameItem 参数
# Hostname=zabbix_client
# 如果未配置 Hostname 参数,则将使用 HostnameItem 参数自动获取主机名。如果 HostnameItem
# 参数也没有配置,则会使用实际系统主机名(但可能不是期望的值)。
# 使用 zabbix_get -s127.0.0.1 -k system.hostname 查看主机名。
HostnameItem=system.hostname
(重启)其他参数保持不变,重启 zabbix agent 服务。
第二步、修改 Zabbix Server 配置
创建主动模式模板(克隆被动模板,把所有项改为 Zabbix agent(Active) 类型):
(1)Configuration => Template => Template OS Linux => Full clone => Template name: Template OS Linux Active => Add
(2)Template name: Template OS Linux Active => Linked templates => Linked templates => Unlink
(3)Template name: Template OS Linux Active => Items => Select all => Mass update => Type: Zabbix agent(Active) => Update
稍后在 Graph 中查看数据是否存在即可。
补充说明
如果多个 zabbix[……]
「Zabbix」- 监控项(Items)
内容简介
在很多情况下,我们需要更加复杂的监控方式、监控指标,这时候就需要自定义监控项。
本文件简单介绍了在Zabbix中有关监控项(Item)添加及监控项管理相关内容。
什么是监控项?
监控项是要获取的指标。由要获取的数据、获取频率、数据类型保存时间等等组成。检测周期影响了数据获取,可影响Zabbix Server的频率。
如何添加监控项?
监控项可以在「Host」中添加,也可以在「Template」中添加。在「Template」中添加的监控项可以复用。
# 第一步、添加监控项
这里演示在Template中添加。依次找到「Configuration – Templates – Items – Create Item」后,进入监控项的创建页面:
# Name – 监控项的名称。
# Key – 监控项的值。(1)可以自行选择,但是“自定义KEY”(后面介绍)需要手动填入。(2)然后,将[<xxx>]中的值修改为特定参数(参考「4.2/Item types」手册)。比如要统计内存总大小,在选择vm.memory.size[<mode>]之后,修改为vm.memory.size[total]既可(当然除了total还有其他的参数可选择)。
在页面中的其他输入框,如字面含义一样,详细可以参考「4.2/2 Items」文档。下面只简单列举一部分:
Name
监控项名称
Type
监控项的类型
Key
该监控项对应的KEY名
Type of information
所获取到的信息的类型
Update interval
数据的获取频率
Custom intervals
自定义频率,可以重定义Update interval的规则
关于「KEY」格式 (1)在页面中的KEY字段,它的值可以有KEY或者KEY[PARAM]两种格式,即“有参数”与“无参数”两种。 (2)其中KEY的合法命名使用正则表示为:[a-zA-z0-9-_.] (3)其中PARAM为参数,格式可以是“引号字符串”,“非引号字符串”,“数组”这三种。“引号字符串”形如:vm.memory.size[“total”];“非引号字符串”形如:vm.memory.size[total],如果有引号则要使用反斜线转义,不能使用逗号及方括号;“数组”形如:icmpin[……]
「Zabbix 企业级分布式监控系统」- 读书笔记
第1部分 Zabbix基础部分
第1章 监控系统简介 2
1.1 为何需要监控系统 2
1.2 监控系统的实现 2
1.3 监控系统的开源软件现状 4
1.4 监控系统的原理探究 11
第2章 Zabbix简介 14
2.1 Zabbix的客户 14
2.2 使用Zabbix的准备 15
2.3 Zabbix为何物 15
2.4 选择Zabbix的理由 16
2.5 Zabbix的架构 17
2.6 Zabbix的运行流程 18
2.7 Zabbix的功能特性 19
第3章 安装部署 21
3.1 安装环境概述 21
3.2 Zabbix_Server服务端的安装 25
3.3 Zabbix_Agent客户端的安装 39
3.4 SNMP监控方式的安装配置 40
3.5 Windows上安装Zabbix-Agent 40
3.6 其他平台的安装 43
3.7 zabbix_get的使用 43
参考Zabbix手册中的说明。
示例命令:zabbix_get -s 127.0.0.1 -p 10050 -k “system.cpu.load[all,avg1]”
3.8 Zabbix相关术语(命令) 44
3.9 Zabbix Server对数据的存储 45
3.10 Zabbix init脚本解释 55
3.11 高可用和安全 56
3.12 Zabbix数据库的备份 57
第4章 快速配置使用 59
配置完成后,访问`http://hostnameOrIpAddress/zabbix’来访问。
4.1 配置流程 59
Host groups – Hosts – Applications – Items – Triggers – Event – Action – User groups – Users – Medias – Audit
其中,Item、Trigger、Graphs通常使用模板进行配置,无需逐个配置。
其中,Item用于获取数据;Graphs用于向用户展示Item获取的数据;
配置Trigger不是必须的。它主要用于条件判断,如果在不满足条件时触发事件,则需要配置触发器。
配置Screens可以将多个Graphs集中显示。
简单的逻辑图就是:
下面介绍配置。
4.2 主机组的添加 61
添加主机组,将一组主机存放在一起,也可以存放模板。
建议:同一属性的主机或者模板,应该归类到同一个分组中。
分组原则:
以地理位置进行划分;
以业务单位进行划分;
以机器用途进行划分;
以系统版本划分;[……]
「Zabbix」- 使用 Ansible 批量部署 zabbix-agent 服务
问题描述
需要为内网 50.x 网络的多台 Linux 主机部署 zabbix 监控,工作内容如下:
安装 zabbix agent 服务
由于资产管理极度混乱,因此需要先辨别出 Linux 主机,排除 Windows/ESXi 主机 在安装 zabbix agent 服务时,需要辨别发行版(CentOS 6/7)
在 zabbix server 中添加主机
将主机添加到 zabbix server 中 并为主机添加监控模板
解决办法
安装 zabbix agent 服务
使用 Ansible 批量部署,避免重复执行安装任务。
在 zabbix server 中添加主机
使用 Zabbix 自动发现,避免重复执行配置工作。
注意事项
本笔记只是简述过程,用于记录操作流程,并非详细操作方法。场景不同需要具体问题需要具体分析。
环境概述
网络:10.10.50.0/25 主机:Linux / Windows / ESXi,但是我们只部署 Linux 监控 系统:CentOS 6.x / CentOS 7.x
第一步、配置自动发现(Active agent autoregistration)
参考 Active agent autoregistration 笔记进行配置
创建自动注册规则(Auto registration)
使用自动注册,需要添加规则:Event source => Auto registration
过滤自动注册主机(Conditions)
在该网络中,同时具有 Windows/Linux/ESXi 主机,我们只部署 Linux 监控,需要防止其他主机自动注册。
因此需要在 zabbix agent 中配置 HostMetadata 参数(添加 Linux 字符串),然后在 Conditions 中过滤(Host metadata contains Linux)。在此步骤中我需要们配置过滤条件,而配置 HostMetadata 参数放在下一步(配置 Zabbix Agent 服务)中完成。
添加自动注册操作(Operations)
根据需要在 Operations 中添加 Add host、Add to host groups、Link to templates 等等,以指定在出发自动注册时需要进行的动作。
第二步、部署 zabbix agent 服务
辨别 CentOS 主机,创建清单文件
使用 fping 命令找到全部存活主机(00-fping-scan.sh) => 获取内网所有 Linux 主机,以端口 22 开放为标准(01-port22-detecting.sh) =&[……]
「00-fping-scan.sh」
#!/bin/sh
################################################################################
# 检测 所有 主机
################################################################################
for i in $(seq 1 255)
do
ip_address=”10.10.50.${i}”
(
ping -W 2 -c 1 $ip_address &> /dev/null \
&& echo $ip_address
) &
done
wait[……]
「01-port22-detecting.sh」
#!/bin/sh
################################################################################
# 检测 Linux 主机
################################################################################
for i in $(seq 1 255)
do
ip_address=”10.10.50.${i}”
(
nc -z -w 1 $ip_address 22 \
&& echo $ip_address
) &
done
wait[……]
「02-linux-detecting.sh」
#!/bin/sh -e
################################################################################
# 检测 CentOS 主机
################################################################################
for i in $(seq 1 255)
do
ip_address=”10.10.50.${i}”
# ssh-keygen -R $ip_address &>/dev/null
(
nc -z -w 1 $ip_address 22 \
&& ssh -i config/ssh-private-key/id_rsa -oBatchMode=yes \
-o StrictHostKeyChecking=no \
root@$ip_address test -e /etc/redhat-release &>/dev/null \
&& echo $ip_address
) &
done
wait[……]
「zabbix agentd.conf」
ServerActive=10.10.50.188
HostnameItem=system.hostname
HostMetadata=CentOS Linux[……]
「Zabbix」- 宏(Macros)
内容简介
在Zabbix中,支持许多可用于各种情况的宏。所谓“宏”,可以理解为一个变量,宏是以键值形式存在的。
本部分整理了与Zabbix中“宏”(Macros)相关的内容。
宏的类型
全局宏:Adminstrator – General – Macros
模板宏:Configuration – Templates – Macros
主机宏:Configuration – Hosts – Zabix server – Maacros
注意,主机宏的优先级最高,在进行宏解析是,先在主机宏中查找。
宏函数
用户自定义宏
用户自定义宏的语法为:{$MACRO}
例如:net.tcp.service[ssh,,{$SSH_PORT}]
底层自定义发现宏
相关连接
有关支持的宏,可以参考「7 Macros/1 Supported macros」手册。
参考文献
Zabbix Documentation 4.2/7. Configuration/10 Macros[……]
「Zabbix」- 忘记密码重置
内容简介
本文介绍重置Zabbix管理员密码。交接工作一直都做不好,总有点东西每交接。这不是么?把Zabbix的管理员密码忘记了。
操作过程
默认的用户名为Admin,密码为zabbix。如果忘记密码,可以修改数据库的zabbix.users.passwd字段来修改密码,密码是md5存储的。
#!/bin/sh
# 连接数据库
mysql -uroot -p’your-password’
# 重置密码
mysql> update zabbix.users set password = md5(‘zabbix’) where alias=’Admin’;
mysql> update zabbix.users set passwd = md5(‘zabbix’) where alias=’Admin’ # 在Zabbix 4.2中
参考文献
Zabbix Password Recovery[……]
「Zabbix」- 中文字体“乱码”(无中文字体)
问题描述
在 Graph 中,无法显示中文字体(字体变成“方块”或者完全不显示),如下图所示:
问题原因
这并不是“乱码”,而是字体缺失。在 Zabbix 中,使用图片呈现图表数据,而在图片上渲染字体时需要找到对应的字体文件。如果没有正确配置字体(字体不支持中文或者无法找到字体),则无法在图片中渲染字体,此时将显示方块或这完全空白。
解决方案
在代码中搜索 ttf 关键字,然后逐步追查到字体加载路径。
Debian and Zabbix ???
#!/bin/sh
# 安装包含中文字体的字体
apt-get install fonts-wqy-microhei
# update alternative zabbix-frontend-font
update-alternatives –install /usr/share/zabbix/fonts/graphfont.ttf \
zabbix-frontend-font /usr/share/fonts/truetype/wqy/wqy-microhei.ttc 10
# 配置使用wqy-microhei.ttc字体
update-alternatives –config zabbix-frontend-font
CentOS and Zabbix
适用于 CentOS 6.9、CentOS 7.x 发行版:
#!/bin/sh
# 你也可以使用自己喜欢的字体,随便吧,要有中文字体
yum install -y wqy-microhei-fonts.noarch
# CentOS release 6.9 (Final) and Zabbix 4.2
update-alternatives –install /usr/share/zabbix/assets/fonts/graphfont.ttf \
zabbix-web-font /usr/share/fonts/wqy-microhei/wqy-microhei.ttc 10
# CentOS Linux release 7.5.1804 (Core) and Zabbix 4.0.1
update-alternatives –install /usr/share/zabbix/assets/fonts/graphfont.ttf \
zabbix-web-font /usr/share/fonts/wqy-microhei/wqy-microhei.ttc 10
# 配置选择字体
update-alternatives –config zabbix-web-font
附件说明
实际上操作了这一波就是修改了 /u[……]
「Zabbix」- zabbix_agentd.conf
配置文件 zabbix_agentd.conf 用于调整 Zabbix Agent 的行为,配置参数分为以下类别: 1)基本参数 2)被动检查的相关参数 3)主动检查的相关参数 4)高级参数 5)用户定义检测参数 6)模块加载的相关参数 7)TLS相关的参数
注意:在 Windows 下的 zabbix_agentd.con f配置在 Linux 下的配置稍有不同。本文的内容以 Linux 下的 zabbix_agentd.conf 配置为主,除非有特殊说明。
相关链接
Zabbix Documentation 4.2/Appendixes/3 Daemon configuration/3 Zabbix agent (UNIX) Zabbix Documentation 4.2/Appendixes/3 Daemon configuration/3 Zabbix agent (Windows)
基本参数
PidFile PID文件位置。该参数可选。 默认:PidFile=/tmp/zabbix_agentd.pid
SourceIP 发出连接时使用的IP地址。 该参数是可选的 默认值:SourceIP=
EnableRemoteCommands 是否允许Zabbix Server发出的远程命令:
0 – not allowed
1 – allowed
该参数是可选的
默认值:EnableRemoteCommands=0
调整日志信息
LogType 日志要写入的位置,该参数使可选的,默认值为file:
system – 写入。yslog
file – LogFile参数指定的位置。
console – 标准输出,即直接打印到控制台。
LogFile 为LogType=file的参数指定日志文件的位置。 可选的参数。 配置文件中默认LogFile=/tmp/zabbix_agentd.log
LogFileSize 日志文件的最大大小。以MB为单位。 该选项是可选的。范围:0-1024 默认值:1
DebugLevel 指定调试等级:
0 – basic information about starting and stopping of Zabbix processes
1 – critical information
2 – error information
3 – warnings
4 – for debugging (produces lots of information)
5 – extended debugging (p[……]