普拉多VX

人生一路,不问来时,不知归期

0%

基本概念

Dashboard(仪表盘)

仪表盘是Grafana里最为重要的一部分,它是由一行或者多行,或者多个面板组成。也就是说仪表盘可以单独由面板构成,也可以是面板和行一起构成。我们可以根据自己的需求来创建一个比较漂亮的仪表盘。
仪表盘也支持通过多种不同的方式来共享,支持通过链接的方式共享或者导出JSON等格式的文件。

仪表盘

分享

Panel(面板)

面板(panel)是Grafana可视化的基本块。每个面板都有一个特定于面板中的选数据源的查询编辑器(依赖于数据源)。查询编辑器允许您提取完美的可视化效果以显示在面板上。
面板(或整个仪表板)可以以多种方式轻松共享,既可以通过链接分享,也可以导出JSON等文本文件。
为了显示数据,需要至少向Grafana添加一个数据源。同时面板可以在仪表板上拖放和重新排列。它们也可以调整大小。

比如像这样

Row(行)

行(Row)是仪表板内的逻辑分隔。用于将面板分组在一起。它一般是12个单位宽度,这些单位会根据浏览器的水平分辨率自动缩放。同时可以通过设置面板的特定宽度来控制面板中的相对宽度。
添加一个Row

1.添加一个面板

2.修改成行

3.添加完成
如果当前dashboard没有row,那么默认的面板将在新添加的row下。

可以编辑或者删除

Data Source(数据源)

数据源顾名思义就是数据来源,grafana只是作为数据可视化,需要后端提供数据。目前,Grafana官方提供了对:Graphite, InfluxDB,Mysql,OpenTSDB, Prometheus, Elasticsearch, CloudWatch,PostgreSQL等的支持。对于管理员而言,只需要将这些对象以数据源的形式添加到Grafana中,Grafana便可以轻松的实现对这些数据的可视化工作。从Grafana 3.0开始,可以将数据源安装为插件。

获得更多数据源:https://grafana.com/grafana/plugins,选择"Plugin Type” 为 “Data Source”即可查询数据源。

User(用户)

Grafana默认创建的用户为管理员账户,一般情况下如果需求开发或者给普通运维权限的话需要为每个用户单独创建一个指定的用户。并且可以给这些用户设定相关的权限。
在Grafana中,只有管理员可以管理用户和团队

Permissions(权限)

  • Admin Role(管理员角色):可以做一切操作的组织。 例如:添加和编辑数据源。添加和编辑组织用户和团队。配置App插件并设置组织设置。
  • Editor Role(编辑角色):可以创建和修改仪表板和警报规则。 可以在特定文件夹和仪表板上禁用此功能。无法创建或编辑数据源,也无法邀请新用户。
  • Viewer Role(查看者角色):查看任何仪表板。 可以在特定文件夹和仪表板上禁用此功能。无法创建或编辑仪表板或数据源。

重置管理员密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli  admin
NAME:
Grafana CLI admin - Grafana admin commands

USAGE:
Grafana CLI admin command [command options] [arguments...]

COMMANDS:
reset-admin-password reset-admin-password <new password>
data-migration Runs a script that migrates or cleanups data in your db
help, h Shows a list of commands or help for one command

OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)

[root@iZ2zecgq3cou36re3sxh4bZ ~]#
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli admin reset-admin-password admin123456 # admin123456为新密码
INFO[09-28|15:07:07] Connecting to DB logger=sqlstore dbtype=sqlite3
INFO[09-28|15:07:07] Starting DB migrations logger=migrator

Admin password changed successfully ✔

Plugins(插件)

安装完Grafana后可以使用立即进行数据可视化,如果这些条件不满足,可以安装Grafana插件。也可以自己构建一个插件,构建插件https://grafana.com/docs/grafana/latest/developers/plugins/
Grafana插件分为3种:1.面板 2.数据源 3.应用插件

插件位置:https://grafana.com/grafana/plugins

插件安装有两种方式:

  • 使用命令行安装grafana-cli
  • 下载插件的zip包到指定位置下

说明

使用Grafana展示zabbix监控数据会更加直观明晰,同时方便我们统一管理。很多时候监控源数据过多,这个时候就可以使用grafana统一进行展示。下面就记录下如何集成zabbix。

集成

1.安装插件

插件说明

https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app

安装插件

1
2
3
4
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
installing alexanderzobnin-zabbix-app @ 4.0.1
from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.0.1/download
into: /var/lib/grafana/plugins

文件下载地址:https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.0.1/download

由于下载太慢,我们手动下载zip文件上传到服务器的/var/lib/grafana/plugins 解压即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@iZ2zecgq3cou36re3sxh4bZ plugins]# unzip alexanderzobnin-zabbix-app-4.0.1.zip 
[root@iZ2zecgq3cou36re3sxh4bZ plugins]# ls
alexanderzobnin-zabbix-app alexanderzobnin-zabbix-app-4.0.1.zip grafana-clock-panel
[root@iZ2zecgq3cou36re3sxh4bZ plugins]# rm -rf alexanderzobnin-zabbix-app-4.0.1.zip # 删除压缩包
[root@iZ2zecgq3cou36re3sxh4bZ plugins]# ll
total 8
drwxr-xr-x 8 root root 4096 Sep 2 23:06 alexanderzobnin-zabbix-app
drwxr-xr-x 5 root root 4096 Sep 27 16:13 grafana-clock-panel
[root@iZ2zecgq3cou36re3sxh4bZ plugins]# grafana-cli plugins ls
installed plugins:
alexanderzobnin-zabbix-app @ 4.0.1
grafana-clock-panel @ 1.1.1

Restart grafana after installing plugins . <service grafana-server restart>

[root@iZ2zecgq3cou36re3sxh4bZ plugins]# systemctl restart grafana-server.service #重启服务

2.配置数据源

启用插件
在plugins设置里可以看到zabbix插件已安装

点击进入插件详情-启用插件

添加数据源找不到zabbix数据源。解决方法如下:

编辑grafana配置文件grafana.ini

1
2
3
4
5
6
7
8
9
[root@iZ2zecgq3cou36re3sxh4bZ ~]# vim /etc/grafana/grafana.ini
724 [plugins]
725 ;enable_alpha = false
726 ;app_tls_skip_verify_insecure = false
727 # Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.
728 ;allow_loading_unsigned_plugins =
729 allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource # 取消注释,并添加zabbix.允许加载未签名的插件。 这里有点疑惑,就是在plugins下提示签名正常呢,不太清楚为啥。
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl restart grafana-server.service
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

再次添加数据源就出现zabbix了

选择并设置zabbix数据

点击测试

数据源添加成功

导入zabbix默认仪表盘

配置Dashboard

点击dashboard首页即可看到刚刚导入的模版

点击进入即可看到数据监控数据。

添加自定义面板

点击add panel

添加内存监控数据

保存仪表盘可以使用ctrl+s,提示我们更新插件后要丢失,这时候可以另存一个仪表盘

问题

  • 无法添加zabbix数据源问题
  • 数据查询慢问题,这个和服务器带宽以及grafana访问zabbix api 网络问题
  • 下载插件太慢,手动下载file包解压安装

参考

grafana介绍

Grafana是一个通用的可视化工具并且开源跨平台,可以通过将采集的数据查询后作数据可视化展示。grafana使用go开发也是目前最流行的架构和监控分析的数据可视化工具,并且支持非常多的数据源。
它目前已经更新到第7版本了。

参考grafana官网文档:https://grafana.com/docs/
预览grafana: https://play.grafana.org/
github: https://github.com/grafana/grafana

特点

  • 开源版/企业版
  • 动态仪表盘
  • 多数据源
  • 警告通知
  • 注释
  • 过滤器
  • 多插件
  • 可视化

下载安装

下载网站:https://grafana.com/grafana/download

Ubuntu and Debian

1
2
3
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.2.0_amd64.deb
sudo dpkg -i grafana_7.2.0_amd64.deb

Centos/RHEL/Red Hat

1
2
wget https://dl.grafana.com/oss/release/grafana-7.2.0-1.x86_64.rpm
sudo yum install grafana-7.2.0-1.x86_64.rpm

OpenSUSE and SUSE

1
2
wget https://dl.grafana.com/oss/release/grafana-7.2.0-1.x86_64.rpm
sudo rpm -i --nodeps grafana-7.2.0-1.x86_64.rpm

源码安装

1
2
wget https://dl.grafana.com/oss/release/grafana-7.2.0.linux-amd64.tar.gz
tar -zxvf grafana-7.2.0.linux-amd64.tar.gz

文件配置

1
2
3
4
5
6
7
8
/usr/sbin/grafana-server   #二进制文件位置
/etc/grafana/grafana.ini #配置文件
/var/run/grafana/grafana-server.pid #默认pid文件
/etc/init.d/grafana-server #启动脚本
/etc/sysconfig/grafana-server #默认环境变量
/var/log/grafana/grafana.log #日志文件
/var/lib/grafana/grafana.db #默认指定的sqlite3数据库
/var/lib/grafana/plugins #插件目录

运行

以下在centos 7下运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl start grafana-server #启动服务
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2020-09-27 15:35:18 CST; 7s ago
Docs: http://docs.grafana.org
Main PID: 19491 (grafana-server)
CGroup: /system.slice/grafana-server.service
└─19491 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=rpm cfg:default.paths.logs...

Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Executing migration" logger=migrator id="add uniqu...h_token"
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Executing migration" logger=migrator id="add uniqu...h_token"
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Executing migration" logger=migrator id="create ca...a table"
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Executing migration" logger=migrator id="add uniqu...che_key"
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Created default admin" logger=sqlstore user=admin
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Starting plugin search" logger=plugins
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="Registering plugin" logger=plugins name="Direct Input"
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="External plugins directory created" logger=plugins.../plugins
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ systemd[1]: Started Grafana instance.
Sep 27 15:35:18 iZ2zecgq3cou36re3sxh4bZ grafana-server[19491]: t=2020-09-27T15:35:18+0800 lvl=info msg="HTTP Server Listen" logger=http.server address=[::... socket=
Hint: Some lines were ellipsized, use -l to show in full.
[root@iZ2zecgq3cou36re3sxh4bZ ~]#
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl enable grafana-server # 开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

默认启动端口3000

1
2
3
[root@iZ2zecgq3cou36re3sxh4bZ ~]# netstat -nlpt | grep grafana
tcp6 0 0 :::3000 :::* LISTEN 19491/grafana-serve
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

访问http://ip:3000端口,输入默认用户密码admin/admin

第一次登陆后需要修改密码

登录成功

插件安装

插件安装工具 grafana-cli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli plugins
NAME:
Grafana CLI plugins - Manage plugins for grafana

USAGE:
Grafana CLI plugins command [command options] [arguments...]

COMMANDS:
install install <plugin id> <plugin version (optional)> # 安装插件
list-remote list remote available plugins #列出插件
list-versions list-versions <plugin id> # 列出插件版本
update, upgrade update <plugin id> #更新插件
update-all, upgrade-all update all your installed plugins # 更新所有已安装的插件
ls list all installed plugins # 列出已安装的插件
uninstall, remove uninstall <plugin id> #卸载插件
help, h Shows a list of commands or help for one command #帮助信息

OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)

列出可用插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli plugins list-remote
id: abhisant-druid-datasource version: 0.0.5
id: aceiot-svg-panel version: 0.0.8
id: agenty-flowcharting-panel version: 0.9.0
id: aidanmountford-html-panel version: 0.0.1
id: akumuli-datasource version: 1.3.11
id: alexanderzobnin-zabbix-app version: 4.0.1
id: alexandra-trackmap-panel version: 1.2.5
id: andig-darksky-datasource version: 1.0.1
id: aquaqanalytics-kdbadaptor-datasource version: 1.0.1
id: ayoungprogrammer-finance-datasource version: 1.0.0
id: belugacdn-app version: 1.2.0
id: bessler-pictureit-panel version: 1.0.0
id: blackmirror1-singlestat-math-panel version: 1.1.7
id: blackmirror1-statusbygroup-panel version: 1.1.1

查看插件

在configuration->plugins

更多插件安装
https://grafana.com/grafana/plugins?utm_source=grafana_plugin_list

安装插件

选择一个插件,点击install,可以在预览里看到插件的效果

安装方式

1
2
3
4
5
6
7
8
9
10
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli plugins install grafana-clock-panel
installing grafana-clock-panel @ 1.1.1
from: https://grafana.com/api/plugins/grafana-clock-panel/versions/1.1.1/download
into: /var/lib/grafana/plugins

✔ Installed grafana-clock-panel successfully

Restart grafana after installing plugins . <service grafana-server restart>

[root@iZ2zecgq3cou36re3sxh4bZ ~]#

重启后查看安装的插件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@iZ2zecgq3cou36re3sxh4bZ ~]# service grafana-server restart
Restarting grafana-server (via systemctl): [ OK ]
[root@iZ2zecgq3cou36re3sxh4bZ ~]# grafana-cli plugins ls
installed plugins:
grafana-clock-panel @ 1.1.1

Restart grafana after installing plugins . <service grafana-server restart>

[root@iZ2zecgq3cou36re3sxh4bZ ~]#
[root@iZ2zecgq3cou36re3sxh4bZ ~]# ll /var/lib/grafana/plugins/ #查看插件安装目录
total 4
drwxr-xr-x 5 root root 4096 Sep 27 16:13 grafana-clock-panel
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

退出

参考

自动发现

zabbix监控系统提供了有效且灵活的自动发现功能,该功能在大规模部署监控时非常有用。主要由server端发起发现进程,定时扫描。主要有以下优点:

  • 加快Zabbix部署
  • 简化管理
  • 在快速变化的环境中使用Zabbix,无需过多管理

规则

自动发现基于以下信息

  • 可用的外部服务(FTP、SSH、WEB、POP3、IMAP、TCP 等)
  • 来自 Zabbix 客户端的信息(仅支持未加密模式)
  • 来自 SNMP 客户端的信息

自动发现包含两个阶段 1.发现 2.动作,也就是说发现过后接下来是干什么

动作

  • 发送通知
  • 添加/删除主机
  • 启用/禁用主机
  • 将主机添加到组
  • 从组中删除主机
  • 将主机链接到模板/从模板取消链接
  • 执行远程脚本

实例

1.当前只有一个server

2.创建自动发现规则

3.客户端配置

1
2
3
4
5
6
7
8
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.19.153.95
StartAgents=3
ServerActive=172.19.153.95
Hostname=web
Include=/etc/zabbix/zabbix_agentd.d/*.conf

4.添加动作
关联自动发现规则

5.在自动发现中查看是否已发现新的主机

6.开始监控

自动注册

Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。主要由客户端发起,并且需要安装agent服务。
在当前我们自己的云应用环境中,我更加倾向于使用自动注册。

自动重新注册规则

  • 如果主机元数据信息更改:
  • 由于HostMetadata已更改并且代理已重新启动
  • 由于HostMetadataItem返回的值已更改
  • 用于缺少元数据的手动创建的主机
  • 如果手动将主机更改为由另一个Zabbix代理监视
  • 如果同一主机的自动注册来自新的Zabbix代理

实例

1.当前只有一个server

2.配置客户端

1
2
3
4
5
6
7
8
9
10
11
[root@iZ2zecgq3cou36re3sxh4bZ ~]# vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=47.93.184.140
StartAgents=3
ServerActive=47.93.184.140
Hostname=webserver-01
Include=/etc/zabbix/zabbix_agentd.d/*.conf

[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl restart zabbix-agent.service

3.配置规则
动作-左上角选择类型(autoregistration actions)

创建动作(可以选择主机名,主机源数据,agent数据等)

主机名包含webserver

选择操作选项卡
关联以下操作

解释

  • 发送消息给administrators组
  • 添加主机
  • 关联到linux servers组
  • 关联zabbix agent模版

以上如果匹配成功,即按上面流程完成自动注册操作

创建完成后确保状态为已启用

等待1-2分钟检查,查看已经添加成功

检查是否自动注册通知,我们使用的微信报警,参考前面文章
http://roddypy.com/2020/09/23/zabbix-%E7%9B%91%E6%8E%A7%E6%8A%A5%E8%AD%A6-%E5%BE%AE%E4%BF%A1/

需要在报警媒介关联自动注册通知

两者对比

  • 自动发现和自动注册都可以添加主机、监控主机
  • 自动发现规则较多
  • 自动注册,注册方式少,需要安装agent由客户端主动上报数据,前提是需要能连通服务器
  • 自动发现由于规则多,网段大的情况下会导致压力大,时间消耗多。

参考

前言

zabbix监控有两种数据获取模式,一种是主动模式,另一种为被动模式。这种模式的对象都是对于agent而言的,默认情况下zabbix使用的是被动模式。对于小规模业务监控下,使用被动模式具有模版多、灵活配置等优点。如果监控的服务器过多就会导致server端压力,这时候有两种办法,一种增加zabbix proxy(分摊server的压力) ,另一种就可以采用主动模式监控。并且需要手动修改监控的模版为主动模式。

区别

两者区别在于连接方向问题

被动模式:agent启动10050端口进行监听,等待server端向agent轮询请求获取监控项的监控数据,由agent返回。
主动模式:由agent请求server获取主动的监控项列表,主动将监控项内需要检测的数据通过10050提交给server/proxy的10051端口。

参考图:

被动模式

被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix的默认工作模式,但是被动模式的 最大问题就是会加大zabbix server的工作量,在数百甚至数干台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载很高还会导致不能及时获取到最新数据,但由于无需其他复杂配置,被设置为了默认的工作方式。

被动模式agent上会看到有由server端来的很多连接及端口打开状态,如果压力大的话监控项过多确实抗不住。

主动模式

主动模式是由zabbix agent主动向zabbix server的10051端口发起tcp连接请求,因此主动模式下必须 在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到 zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返 回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式 在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在-定程度就减轻看 zabbix server 的压力。

1
2
3
4
5
6
7
8
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=47.93.184.140
StartAgents=3 # 如果为0被动模式将被禁用
ServerActive=47.93.184.140 # 主动模式serverip
Hostname=webserver.roddypy.com
Include=/etc/zabbix/zabbix_agentd.d/*.conf

连接模版为active模式

查看agent连接,可以看到连接数减少了,并且通过连接10051端口

查看监控

主动模式监控正常

查看绘图

参考

微信报警

微信报警我们要借助企业微信来实现,以前有个迪三方平台“方糖”也可以实现消息发送,有兴趣后面可以学习研究下。

注册地址:https://work.weixin.qq.com

创建企业微信

1.注册一个企业微信,填写相关信息

2.下载企业微信或者直接进入后台

3.进入管理后台

4.在通讯录中创建一个部门

5.可以手动添加一个成员

也可以分享二维码给其他用户,让其加入进来

6.在应用管理中-创建应用

可见范围可以选择人也可以选择部门,最好是选择部门

7.记录下Agentid和secret,以及企业号

查看企业号

报警脚本

python 报警脚本样例

头部需要声明python 否则zabbix执行时无法识别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
# @Time : 2017/4/23 11:13
# @Author : roddy
# @Email : xblinux05@gmail.com
import sys
import requests
import json

class WeChatAlert(object):
def __init__(self,user,subject,content):
self.user=user
self.subject = subject
self.content = content
self.agent_id = "1000002" #agentid
self.corpid = "xxxxx" # 企业号
self.secret = "zN6xTHu-xxxxxxxxx" #密钥


def get_token(self):
token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}'.format(
corpid=self.corpid,secret=self.secret)

token_data = requests.get(token_url).json()

try:
token = token_data["access_token"]
except:
print("token 获取失败")
sys.exit(1)
else:
return token

def send(self):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}'.format(self.get_token())
send_values = {
"touser": "LuoDi", # 企业号中的用户帐号
"msgtype": "text",
"toparty": 1, # 部门id,鼠标移动到部门上可查看,群发使用
"agentid": self.agent_id,
"text": {
"content": self.subject + "\n" + self.content
},
"safe": "0"
}

if int(sys.version_info[0]) == 3:
r = requests.post(send_url, data=json.dumps(send_values,ensure_ascii=False).encode("utf-8"))
else:
r = requests.post(send_url, data=json.dumps(send_values, ensure_ascii=False))
return r.content


if __name__ == "__main__":
wechat = WeChatAlert(str(sys.argv[1]),str(sys.argv[2]),str(sys.argv[3]))
print(wechat.send())
1
2
3
(july_3.5) luodi@roddydeMacBook-Pro:~/PycharmProjects/huobipool$ python wechatMessage.py  "" "测试主题" "报警了"
b'{"errcode":0,"errmsg":"ok","invaliduser":""}'
(july_3.5) luodi@roddydeMacBook-Pro:~/PycharmProjects/huobipool$

检查用户是否收到消息

配置zabbix

安装环境

1
2
3
4
5
6
7
8
9
[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]# yum install python-pip  #安装python-pip

[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]# pip install requests #安装requests
[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]# python
Python 2.7.5 (default, Apr 2 2020, 13:16:51)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>>

我们使用yum安装的zabbix,默认脚本路径可以在zabbix_server.conf中查看”AlertScriptsPath”.可以自定义路径

上传脚本文件到该目录下

1
2
3
4
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# cd /usr/lib/zabbix/alertscripts/
[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]# ls
wechatMessage.py
[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]#

再次测试

(务必要在真实服务器上测试)

1
2
3
[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]# python wechatMessage.py "" "jj" "22"
{"errcode":0,"errmsg":"ok","invaliduser":""}
[root@iZ2ze7k1pc9lk7pay5rcawZ alertscripts]#

添加报警媒介

注意脚本名为alertscripts中的文件名

1
2
3
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

选择模版

添加用户,并且选择报警媒介为wechat 收件人填写应用ID,我是直接在admin用户上添加的多报警方式。

测试

down掉一个服务或者主机来查看,或者自定义报警测试。

报警

恢复

注意

  • 脚本一定要放到服务器上测试
  • 添加收件人应为应用id
  • 选择部门id群发消息
  • 建议部门中设定报警级别,不同报警级别给不同的部门

邮件报警

邮件报警对于运维来说还是比较实用的,免费且方便配置,只是如果报警邮件过多可能会导致报警信息遗漏。这点需要运维知悉!

1.登录qq邮箱-账户-获取独立密码

2.添加报警媒介 QQemail

3.设置用户报警媒介并且指定消息接收人

4.启用trigger actions

新版本把actions的分类移动到了上面进行选择

测试报警结果

手动测试我们的报警规则

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 601 -vv
zabbix_sender [23894]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000029"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000029"
sent: 1; skipped: 0; total: 1
[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 603 -vv
zabbix_sender [23899]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000078"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000078"
sent: 1; skipped: 0; total: 1
[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 604 -vv
zabbix_sender [23901]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000087"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000087"
sent: 1; skipped: 0; total: 1
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

仪表盘已经提示出问题

打开邮箱确认下报警信息

发现邮件为啥是html的文本格式呢,貌似我们在报警媒介那个地方选择过。现在调整成html看看。

修改后的结果

1
2
3
4
5
6
Problem started at 15:36:56 on 2020.09.22
Problem name: UsersCount
Host: webserver.roddypy.com
Severity: Average
Operational data: 608 个
Original problem ID: 74

修改报警模版

默认模版为以上英文信息,同时主题和内容我们详细信息不多。我们是否可以设置一个新的模版呢,答案可以。

在报警媒介-模版中可以设置-记着点更新

注意:如果以下信息作为模版请选择Message format为 ”文本”,如果以html格式请选择html模版

文本

报警通知模版

1
2
3
4
5
6
7
8
9
10
11
12
主题:
Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
内容:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

报警恢复模版

1
2
3
4
5
6
7
8
9
10
11
主题:
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
内容:
告警主机:{HOSTNAME1}<b>故障问题已恢复</b>
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

html

报警通知模版

1
2
3
4
5
6
7
8
9
10
11
12
主题:
Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
内容:

<b>告警主机:</b>{HOSTNAME1}<br>
<b>告警时间:</b>{EVENT.DATE} {EVENT.TIME}<br>
<b>告警等级:</b>{TRIGGER.SEVERITY}<br>
<b>告警信息: </b>{TRIGGER.NAME}<br>
<b>告警项目:</b>{TRIGGER.KEY1}<br>
<b>问题详情:</b>{ITEM.NAME}:{ITEM.VALUE}<br>
<b>当前状态:</b>{TRIGGER.STATUS}:{ITEM.VALUE1}<br>
<b>事件ID:</b>{EVENT.ID}<br>

报警恢复模版

1
2
3
4
5
6
7
8
9
10
11
12
13
主题:
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

内容:
<b>故障问题已恢复</b><br>
<b>告警主机:</b>{HOSTNAME1}<br>
<b>告警时间:</b>{EVENT.DATE} {EVENT.TIME}<br>
<b>告警等级:</b>{TRIGGER.SEVERITY}<br>
<b>告警信息:</b> {TRIGGER.NAME}<br>
<b>告警项目:</b>{TRIGGER.KEY1}<br>
<b>问题详情:</b>{ITEM.NAME}:{ITEM.VALUE}<br>
<b>当前状态:</b>{TRIGGER.STATUS}:{ITEM.VALUE1}<br>
<b>事件ID:</b>{EVENT.ID}<br>

结果:

故障日志排查

如果配置了报警仪表盘有提示,但是没有收到报警,这个时候就要去查看zabbix_server.log日志

最开始我就是配置端口错误

1
2
3
4
5
6
7
8
9
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# tailf /var/log/zabbix/zabbix_server.log
28695:20200922:135040.315 housekeeper [deleted 0 hist/trends, 0 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.002269 sec, idle for 1 hour(s)]
28695:20200922:145040.534 executing housekeeper
28695:20200922:145040.537 housekeeper [deleted 0 hist/trends, 0 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.002225 sec, idle for 1 hour(s)]
28719:20200922:151620.874 watchdog: 1 recipient(s) found for database down messages
28722:20200922:151922.945 failed to send email: Couldn't connect to server: Failed connect to mail.qq.com:25; Operation now in progress
28720:20200922:152007.968 failed to send email: Couldn't connect to server: Failed connect to mail.qq.com:25; Operation now in progress
28721:20200922:152052.989 failed to send email: Couldn't connect to server: Failed connect to mail.qq.com:25; Operation now in progress
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]#

以上方式由平台提供的email配置,还有一种方法是通过py脚本来发邮件,两种方式都可以。哪个方便用哪个即可,目前邮件报警还是业内比较常用的报警方式之一

参考

触发器

所谓触发器就是根据监控项指标的返回值来判断属于什么状态。触发器用于给监控项定义具体的阈值,每一个触发器管理一个监控项,但是可以为一个监控项目定义多个触发器。定义的条件不同,就可以实现不同级别的报警。比如cpu使用率 达到40% 什么状态,70%是什么状态 90%又是什么状态。触发器由表达式构成,定义监控项的采集数据的一个阈值,根据触发器表达式的判断决定触发器状态。

设置触发器,可以关联模版,也可以单独对一个主机定义触发器

触发器状态

  • 未分类 (Not classified)
  • 信息(Infomation)
  • 警告(Warning)
  • 一般严重(Average)
  • 严重(High)
  • 灾难(Disaster)

表达式常见用法

官网参考:https://www.zabbix.com/documentation/current/manual/config/triggers/expression

1
2
3
{www.roddypy.com:system.cpu.load[all,avg1].last()}>5

表示:获取到roddypy.com服务器负载system.cpu.load[all,avg1] 最新数据,如果大于5就表示有问题

判断语法

1
2
3
4
5
6
7
8
9
10
last( )  获取到的最新信息(数值) 

max( ) 在一定周期内,收集到的最大值

min( ) 在一定周期内,收集到的最小值

diff() 在一定时间内,判断收集到的信息是否不同

change() 在一定时间内,判断收集到的信息是否不同
avg() 取一段时间的平均值

创建触发器样例

如果UsersCount最后3次获取的数据都>600进行触发

报警媒介

报警媒介就是触发报警后需要将信息通过短信、邮箱、微信、或者第三方应用告知管理员,这个时候短信这种方式就是报警媒介。监控系统最主要的功能就是两个:1.数据采集做监控 2.通过设定的规则进行报警通知

zabbix 5.0默认支持以下报警媒介

对于国内运维常用的报警媒介主要有以下几种

  • SMS 短信报警 需要短信付费
  • Email 邮件报警
  • wechat 微信报警
  • telegram 电报 等等
  • 集成第三方平台

zabbix_sender

zabbix_sender 是用于将监视数据发送到Zabbix服务器或代理的命令行实用程序。也就是说可以在客户端主动上报数据给zabbix服务器,前提需要配置具体的监控项(items)。

zabbix_sender安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# yum install zabbix-sender -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* centos-sclo-rh: mirrors.huaweicloud.com
* centos-sclo-sclo: mirrors.bfsu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package zabbix-sender.x86_64 0:5.0.3-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================================================================
Package Arch Version Repository Size
=====================================================================================================================================================================
Installing:
zabbix-sender x86_64 5.0.3-1.el7 zabbix 348 k

Transaction Summary
=====================================================================================================================================================================
Install 1 Package

Total download size: 348 k
Installed size: 1.5 M
Downloading packages:
zabbix-sender-5.0.3-1.el7.x86_64.rpm | 348 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : zabbix-sender-5.0.3-1.el7.x86_64 1/1
Verifying : zabbix-sender-5.0.3-1.el7.x86_64 1/1

Installed:
zabbix-sender.x86_64 0:5.0.3-1.el7

Complete!
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]#

用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Example(s):
zabbix_sender -z 127.0.0.1 -s "Linux DB3" -k db.connections -o 43

zabbix_sender -z 127.0.0.1 -s "Linux DB3" -k db.connections -o 43 \
--tls-connect cert --tls-ca-file /home/zabbix/zabbix_ca_file \
--tls-server-cert-issuer \
"CN=Signing CA,OU=IT operations,O=Example Corp,DC=example,DC=com" \
--tls-server-cert-subject \
"CN=Zabbix proxy,OU=IT operations,O=Example Corp,DC=example,DC=com" \
--tls-cert-file /home/zabbix/zabbix_agentd.crt \
--tls-key-file /home/zabbix/zabbix_agentd.key

zabbix_sender -z 127.0.0.1 -s "Linux DB3" -k db.connections -o 43 \
--tls-connect psk --tls-psk-identity "PSK ID Zabbix agentd" \
--tls-psk-file /home/zabbix/zabbix_agentd.psk

常见参数说明,具体参考文档:https://www.zabbix.com/documentation/current/manpages/zabbix_sender?s[]=sender

1
2
3
4
5
6
7
8
-z 	指定zabbix server ip
-s 指定zabbix 客户端配置文件中的hostname
-k 指监控项对应的key值
-o 则表示要主动推送的数据
-r 将数据实时提交给服务器
-v 详细模式, -vv 更详细
-p zabbix server端口,默认10051
-i 从输入文件读取数据

参考实例

上报游戏客户端连接数量给zabbix服务端

1.创建一个模版

2.创建监控项

3.关联模版

4.发送测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 1 -vv
zabbix_sender [21938]: DEBUG: answer [{"response":"success","info":"processed: 0; failed: 1; total: 1; seconds spent: 0.000071"}]
Response from "47.93.184.140:10051": "processed: 0; failed: 1; total: 1; seconds spent: 0.000071"
sent: 1; skipped: 0; total: 1

[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 1 -vv
zabbix_sender [21940]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000087"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000087"
sent: 1; skipped: 0; total: 1

[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 500 -vv
zabbix_sender [21946]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000092"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000092"
sent: 1; skipped: 0; total: 1

[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 501 -vv
zabbix_sender [21951]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000029"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000029"
sent: 1; skipped: 0; total: 1

[root@iZ2zecgq3cou36re3sxh4bZ ~]# zabbix_sender -s "webserver.roddypy.com" -z 47.93.184.140 -p 10051 -k "UsersCount" -o 505 -vv
zabbix_sender [21953]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000091"}]
Response from "47.93.184.140:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000091"
sent: 1; skipped: 0; total: 1
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

4.通过最新数据获取结果

说明

  • 此时可以把命令写成脚本文件定时执行
  • 可以添加一个触发器进行报警

zabbix_get

zabbix_get 是用于从Zabbix代理获取数据的命令行实用程序。 就是从服务端获取客户端的数据,主要用于测试两边连通行和监控项是否正确。

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# yum install zabbix-get -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* centos-sclo-rh: mirror.bit.edu.cn
* centos-sclo-sclo: mirror.bit.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package zabbix-get.x86_64 0:5.0.3-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================================================================
Package Arch Version Repository Size
=====================================================================================================================================================================
Installing:
zabbix-get x86_64 5.0.3-1.el7 zabbix 315 k

Transaction Summary
=====================================================================================================================================================================
Install 1 Package

Total download size: 315 k
Installed size: 1.3 M
Downloading packages:
zabbix-get-5.0.3-1.el7.x86_64.rpm | 315 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : zabbix-get-5.0.3-1.el7.x86_64 1/1
Verifying : zabbix-get-5.0.3-1.el7.x86_64 1/1

Installed:
zabbix-get.x86_64 0:5.0.3-1.el7

Complete!
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]#

用法

1
2
Example(s):
zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
1
2
3
4
5
6
7
General options:
-s --host host-name-or-IP 指定客户端主机名或者IP
-p --port port-number 客户端端口,默认10050
-I --source-address IP-address 指定源IP,写上zabbix server的ip地址即可,一般留空
-k --key item-key 你想获取的key
-h --help 打印帮助信息
-V --version 显示版本

官方文档:https://www.zabbix.com/documentation/current/manpages/zabbix_get

参考实例

1.获取客户端CPU负载

1
2
3
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# zabbix_get -s 59.110.115.72 -p 10050 -k "system.cpu.load[all,avg5]"
0.020000
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]#

2.创建一个自定义监控,并通过zabbix_get获取数据

在客户端的zabbix_agentd.conf中增加自定义监控项

1
2
3
4
5
6
7
8
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
UserParameter=Echo[*],echo $1

重启客户端

1
2
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl  restart zabbix-agent 
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

在服务端测试,输入什么参数就会回显什么

1
2
3
4
5
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# zabbix_get -s 59.110.115.72 -p 10050 -k "Echo[c]"                  
c
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]# zabbix_get -s 59.110.115.72 -p 10050 -k "Echo[ewewe]"
ewewe
[root@iZ2ze7k1pc9lk7pay5rcawZ ~]#

环境

CentOS Linux release 7.8.2003 (Core)

安装agent

采用rpm包安装方法

1
2
3
4
5
6
7
8
9
10
11
[root@iZ2zecgq3cou36re3sxh4bZ ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.GUTI2l: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-5.0-1.el7 ################################# [100%]
[root@iZ2zecgq3cou36re3sxh4bZ ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates zabbix zabbix-non-supported
Cleaning up list of fastest mirrors
[root@iZ2zecgq3cou36re3sxh4bZ ~]# yum install zabbix-agent -y

安装完成查看下软件包生成的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@iZ2zecgq3cou36re3sxh4bZ ~]# rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-5.0.3
/usr/share/doc/zabbix-agent-5.0.3/AUTHORS
/usr/share/doc/zabbix-agent-5.0.3/COPYING
/usr/share/doc/zabbix-agent-5.0.3/ChangeLog
/usr/share/doc/zabbix-agent-5.0.3/NEWS
/usr/share/doc/zabbix-agent-5.0.3/README
/usr/share/doc/zabbix-agent-5.0.3/userparameter_mysql.conf
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix

修改配置文件

/etc/zabbix/zabbix_agentd.conf

1
2
3
4
5
6
7
PidFile=/var/run/zabbix/zabbix_agentd.pid   #pid文件
LogFile=/var/log/zabbix/zabbix_agentd.log。 #log文件
LogFileSize=0
Server=x.x.x.x #zabbix server ip 地址
ServerActive=x.x.x.x #主动监控 server ip 地址
Hostname=webserver.roddypy.com #自己能被server端识别的地址
Include=/etc/zabbix/zabbix_agentd.d/*.conf # 扩展配置文件

启动agentd

启动agent并开启自启

1
2
3
4
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl  start zabbix-agent             
[root@iZ2zecgq3cou36re3sxh4bZ ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@iZ2zecgq3cou36re3sxh4bZ ~]#

添加主机并关联模版

等待1-5分钟即可正常监控

如果出现如下状态需要检查配置或者防火墙,确认是否是ip地址填写错误还是防火墙没有允许10050端口

备注

  • 客户端允许服务器来访问10050端口
  • ip切记不要填写错误
  • 需要选择关联组及监控模版,模版里有默认的监控指标及报警规则,这个可以自己修改。