Zabbix监控介绍与部署

news2024/12/23 3:38:22

目  录

一、zabbix介绍和架构

1.1 zabbix介绍

1.2 为什么需要监控

1.3 需要监控什么

二、zabbix使用场景与系统概述

2.1 zabbix的功能

2.2 zabbix架构

2.3 Zabbix术语

三、编译安装zabbix

3.1 安装依赖环境

3.2 建立管理用户

3.3 准备源码包,解压包

3.4 编译安装

3.5 添加客户端

3.6 安装数据库

3.7 导入zabbix数据库文件

3.8 安装web apache

3.9 修改zabbix配置

3.10 升级php版本

3.11 下载配置

3.12 准备service文件

3.13 修改中文

3.14 修改字体,以及图表的中文乱码问题


一、zabbix介绍和架构

1.1 zabbix介绍

zabbix是一个企业级解决方案,支持实时监控数千台服务器,虚拟机和网络设备,采集百万级监控指标,适用于任何IT基础架构,服务应用程序和资源的解决方案。

1.2 为什么需要监控

在linux运维行业中,通常有句话是这么讲的:“无监控,不运维”。监控俗称“第三只眼”。没了监控,什么基础运维,业务运维都是“瞎子”。所以说监控是运维这个职业的根本。尤其是现在有人说运维是背锅侠,那么,有了监控,有了充足的数据,一切以数据说话,运维还需要背锅吗,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作。

监控功能:

在需要的时刻,提前预警即将出问题,避免故障发生。

实时监控系统和业务,当出问题之后,通过发出警告,提醒相关人员,快速可以找到问题的根源,从而及时处理问题

可以实现网站,应用或者服务器的故障自愈,保证高可用性。

以图形或易观察的方式呈现当前以及过往的状态,便于分析和预测系统发展趋势。

1.3 需要监控什么

zabbix作为一款监控系统,监控一切需要监控的资源。包括:服务器,网络设备,业务应用,云服务等。

 硬件监控:通过远程控制卡来完成物理设备的监控工作,通常必须要监控包括温度、硬盘故障等路由器,交换机,打印机等。

系统监控:CPU,内存,硬盘使用率,硬盘IO,系统负载,进程数。

服务监控:nginx,apache,php-fpm,mysql,memcache,redis,tomcat,JVM,TCP连接数

性能监控:网站性能,服务器性能,数据库性能,存储性能

日志监控:系统会产生系统日志,应用程序会有应用的访问日志、错误日志、服务器有运行日志等。

安全监控:用户登录数,passwd文件变化,本地所有文件改动,nginx+lua编写一个WAF通过kibana可以图形化的展示不同的攻击类型的统计。

网络监控:IP,端口,URL,DB,ping包,IDC带宽网络流量,网络流出速率,网络入流量,网络出流量,网络使用率,SMTP,POP3

二、zabbix使用场景与系统概述

2.1 zabbix的功能

Zabbix 是一个高度成熟完善的网络监控解决方案,包含了多种功能。

数据收集:

历史数据, 即记录每个监控项采集到的每个监控值
趋势数据, 主要保留某个监控项一个小时内历史数据的最大值、最小值和平均值以及该监控项一个小时内所采集到的数据个数
可用性和性能检查;
支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
自定义检查;
按照自定义的时间间隔采集需要的数据;
通过 Server/Proxy 和 Agents 来执行数据采集。

灵活的阈值定义:

您可以参考后端数据库定义非常灵活的告警阈值,即触发器

高度可配置化的告警:

可以根据递增计划、接收者、媒介类型自定义发送告警通知;
使用宏变量可以使告警通知变得更加高效有用;
自动操作包含远程执行命令。

实时图形:

使用内置图形功能可以将监控项实时绘制成图形。

Web监控功能:

Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。

丰富的可视化选项:

可以组合多个监控项到单个视图中,创建自定义图表;
网络拓扑图;
以仪表盘样式展示自定义聚合图形和幻灯片演示;报表;
监控资源的更高层次展示视图(业务视图)。

历史数据存储:

存储在数据库中的数据;
历史配置;内置数据管理机制

配置简单:

将被监控设备添加为主机;
主机一旦添加到数据库中,就会采集数据用于监控;
将模板用于监控设备。

使用模板:

模板中分组检查;
模板可以关联模板,继承已关联模板的属性。

网络发现:

自动发现网络设备;
Zabbix Agent 发现设备后自动注册;
自动发现文件系统、网络接口

快捷的Web界面:

基于 PHP 的 Web 前端;
可以从任何地方访问;
您可以定制自己的操作方式;
您可以通过审计日志来查看你的操作

Zabbix API:

Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途

权限管理系统:

安全的用户身份验证;
指定的用户只能查看指定的权限范围内的视图

功能强大且易于扩展的Zabbix Agent:

部署于被监控对象上;
支持 Linux 和 Windows ;

二进制守护进程:

为了更好的性能和更少的内存占用,采用 C 语言编写;
便于移植。

适应更复杂的环境:

使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控

2.2 zabbix架构

Zabbix 由如下主要的功能组件组成:

server

abbix server 是 Zabbix 软件的核心组件
Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。
Zabbix server也是存储所有配置信息、统计信息和操作信息的核心存储库。
Zabbix server也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。

基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。

Zabbix 的所有配置信息都存储在 Server和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

数据库

所有配置信息以及 Zabbix 采集到的数据都被持久存储在数据库中
可以支持MySQL,PostgreSQL,Oracle 等多种数据库

WEB 界面

WEB 界面是 Zabbix server 的一部分,用于实现展示和配置的界面通常(但不一定)和 Zabbix server 运行在同一台物理机器上基于 Apache(Nginx)+PHP 实现,早期只支持LAMP架构,从Zabbix5.0开始支持LNMP

AGENT

Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给Zabbix server。从Zabbix5.0开始支技Zabbix Agent2

PROXY

Zabbix Proxy 可以代替 Zabbix Server 采集性能和可用性数据
Zabbix Proxy 在 Zabbix 的部署是可选部分
Zabbix Proxy 的部署可以很好的分担单个Zabbix server的负载

Java 网关

Zabbix 要监控 tomcat 服务器和其它JAVA程序,需要使用 Java gateway 做为代理,才能从JAVA程序中获取数据

2.3 Zabbix术语

被监控: 即 Zabbix 监控的主机或设备

监控项item:即 Zabbix 监控的相关指标,比如:CPU利用率,内存使用率,TCP连接数等。监控指标,cpu利用率

应用集Application:为方便管理众多的监控项,可将多个同类型的监控项进行归类,纳入一个集合中,即应用集

触发器Trigger:是一个表达式,或者说一个条件,如磁盘利用率超过80%等,当触发条件后,会导致一个触发事件,这个事件会执行一个或多个动作

告警:当触发器和动作二者结合起来时,就构成了的告警机制,比如cpu的使用率达到80%以上,触发了报警动作,系统将自动发送一封邮件到指定的邮箱。然后运维可以及时的去处理此错误   host---> items---> triggers --> action

Web 监测:对WEB服务进行检测,比如:访问指定网站是否可正常访问

模板 Template: 可以方便地应用于多个主机的一组实体的集合。而这些实体包括:

items(监控项)
applications(应用集)
triggers(触发器)
graphs(图形)
screens (聚合图形,自Zabbix 2.0起)

使用模板是减少工作量并简化Zabbix配置的好方法。

模板分为内置模板和自定义模板

三、编译安装zabbix

zabbix作为监控系统,能够在浏览器上登录zabbix,并有数据库做存储。

3.1 安装依赖环境

[root@Node1 ~]#:yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel libevent-devel java-1.8.0-openjdk-devel  -y

3.2 建立管理用户

以zabbix用户的身份登录。

[root@Node1 ~]#:useradd zabbix

3.3 准备源码包,解压包

把准本好的源码包拖进来到/data/下,这个目录是我们自己创建的。

 解压:

3.4 编译安装

进入到zabbix中,编译安装:

[root@Node1 zabbix-4.0.30]#:./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
[root@Node1 zabbix-4.0.30]#:make
[root@Node1 zabbix-4.0.30]#:make install

3.5 添加客户端

[root@Node1 zabbix-4.0.30]#:./configure --prefix=/apps/zabbix --enable-agent

3.6 安装数据库

[root@Node1 zabbix-4.0.30]#:yum install mariadb-server.x86_64  -y
[root@Node1 zabbix-4.0.30]#:systemctl start mariadb
[root@Node1 zabbix-4.0.30]#:mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

 mysql_secure_installation      #安全加固脚本

由于第一次没有密码,直接回车

设置密码:set root password

然后设置密码,再输入一次密码。

移除匿名用户

移除测试数据库

不让root远程登录。

登录数据库。我设置的数据库密码是123123

[root@Node1 zabbix-4.0.30]#:mysql -uroot -p123123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)

 ctrl + C退出。

3.7 导入zabbix数据库文件

把/data/zabbix-4.0.30/database/mysql/下的数据库文件,导入安装的数据库mariadb

 data数据库必须最后一个导入。

3.8 安装web apache

安装好之后,把/data/zabbix-4.0.30/frontends/php/下的所有文件拷贝到apahceweb页面的目录下/var/www/html/取个文件夹名字zabbix,放入该文件夹下。

[root@Node1 mysql]#:yum install -y httpd
[root@Node1 mysql]#:systemctl start httpd
[root@Node1 mysql]#:cd /data/zabbix-4.0.30/frontends/php/
[root@Node1 php]#:cp -a . /var/www/html/zabbix/

3.9 修改zabbix配置

只需要修改密码配置项。在118行。

日志文件位置,数据库名,数据库用户名,数据库密码。超时时间

[root@Node1 php]#:vim /apps/zabbix_server/etc/zabbix_server.conf
DBPassword=zabbix
[root@Node1 php]#:grep -vE "^#|^$" /apps/zabbix_server/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
Timeout=4
LogSlowQueries=3000

 

 启动:

[root@Node1 php]#:/apps/zabbix_server/sbin/zabbix_server
[root@Node1 php]#:/apps/zabbix_server/sbin/zabbix_agentd

 可以看到,zabbix_server端口号为10050,zabbix_agent端口号为10051

打开浏览器:访问:192.168.114.10/zabbix进入监控页面:

 发现有一些失败的错误。

 

 升级版本。

3.10 升级php版本

[root@Node1 php]#:yum  install php-gettext php-xml php-net-socket php-gd php-mysql  -y
#修改php软件的配置,行号
[root@Node1 php]#:vim /etc/php.ini
384:max_execution_time = 300
394:max_input_time = 600
672:post_max_size = 16M
878:date.timezone = Asia/Shanghai
#重启apache服务
[root@Node1 php]#:systemctl restart httpd

 重新刷新页面:

这时就OK了,点击Next

 其他都默认,就输入密码

 名字随便取 

 下一步Next

3.11 下载配置

这里下载一个配置文件,叫zabbix.conf.php,下载到桌面,拖到/var/www/html/zabbix/conf/下。

从桌面拖进来

然后再去刷新一下:

点击finish

 登录zabbix

看到yes:表示成功进入zabbix监控页面

3.12 准备service文件

要先停止zabbix-server

[root@Node1 conf]#:pkill zabbix_server
[root@Node1 conf]#:vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity
#User=zabbix
#Group=zabbix
[Install]
WantedBy=multi-user.target

修改权限:重新加载配置文件,启动,查看状态。running

[root@Node1 conf]#:chown zabbix:zabbix  /apps/zabbix_server/ -R
[root@Node1 conf]#:systemctl daemon-reload
[root@Node1 conf]#:systemctl start zabbix-server.service
[root@Node1 conf]#:systemctl status zabbix-server.service
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2024-07-19 23:24:04 CST; 7s ago
  Process: 23683 ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 23685 (zabbix_server)
......

zabbix-agent同样先停止;

[root@Node1 conf]#:pkill zabbix_agent
[root@Node1 conf]#:vim /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=apps/zabbix_server/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
[root@Node1 conf]#:systemctl restart zabbix-agent && systemctl enable zabbix-agent

3.13 修改中文

右上角点击用户图标:

选择zh_CN中文。 点击更新。

 改成了中文:

 可以去监控,比如监控内存:在监测中,找到图形,主机选择zabbix server,图形选择Memory usage。可以看到下面的图形化展示,一个坐标轴,横坐标代表了时间,纵坐标为使用情况。清晰可见。还可以监控其他的监控项。可以自己选择。

但是这里发现一个乱码的情况。下面解决乱码的问题。

3.14 修改字体,以及图表的中文乱码问题

出现乱码问题,需要去到配置文件修改字符编码,字体。配置文件可以在真机中拷贝过去,在主机的C盘下:C:\Windows\Fonts

可以随便选择一个你喜欢的字体,文件。我选的楷体 常规

切换到路径/var/www/html/zabbix/assets/fonts/下。把这个文件拖进来。必须以小写ttf结尾。

修改字体文件:

#修改字体配置文件,前面数字是行号。
[root@Node1 fonts]#:vim /var/www/html/zabbix/include/defines.inc.php 
72:define('ZBX_GRAPH_FONT_NAME',           'simkai');
113:define('ZBX_FONT_NAME', 'simkai');

不需要重启,去浏览器网页查看。自动变成了楷体 常规字体了:

---end---

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构初阶-单链表

链表的结构非常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构: 而我们主要要熟悉的单链表与双向链表的全称分别为:不带头单向不循环链表,带头双向循环链表,当我们对这两种链表熟悉后&#x…

基于python深度学习遥感影像地物分类与目标识别、分割实践技术应用

目录 专题一、深度学习发展与机器学习 专题二、深度卷积网络基本原理 专题三、TensorFlow与Keras介绍与入门 专题四、PyTorch介绍与入门 专题五、卷积神经网络实践与遥感图像场景分类 专题六、深度学习与遥感图像检测 专题七、遥感图像检测案例 专题八、深度学习与遥感…

【教学类-68-01】20240720裙子涂色(女孩篇)

背景需求: 通义万相下载了简笔画裙子,制作成涂色卡给幼儿涂色、剪纸用。 代码展示 裙子简笔画图 6张 星火讯飞、通义万相、阿夏 2024年7月20日import os,time import shutil from docx import Document from docx.shared import Cm from PIL import Ima…

ApolloAndroid 使用笔记

由于业务需求的变化,需要使用 Graphql 作为客户端与服务端的交互查询框架,特此记录使用。 测试代码下载链接 一、导入引用以及规则示例 1、首先需要在我们需要使用的模块下面创建对应的src/main/graphql文件夹 2、将后台对应的服务生成的 xxx.graphql…

1个Xpath定位可以在Web页面查找到多个元素Selenium

1个Xpath定位可以在Web页面查找到多个元素Selenium//input[id\"transactionId\"] 打开Web页面, 点击F12可以看到压面 点击Ctrl F 可以点图如下图的输入框,输入xpath,看右侧可以找到3个对应的元素 点击Ctrl F 点击Ctrl F 点…

【C语言】逗号运算符详解 - 《不起眼的 “逗号”》

目录 C语言逗号运算符详解1. 逗号运算符的定义1.1 基本语法1.2 执行顺序 2. 逗号运算符的用法2.1 用于循环2.1.1 示例 2.2 用于表达式组合2.2.1 示例 3. 逗号运算符的应用场景3.1 宏定义3.1.1 示例 3.2 条件运算符中的应用3.2.1 示例 4. 总结5. 参考文献6. 结束语 C语言逗号运算…

通信网络机房服务器搬迁流程方案

数据中心机房搬迁是一项负责高难度的工程。整个搬迁过程充满挑战,伴随着各种风险。如何顺利的完成服务器的迁移,需要专业的数据中心服务商全程提供保障。友力科技(广州)有限公司,作为华南地区主流的数据中心服务商&…

Python代码,强化学习,深度学习

python代码编写,Python算法设计,强化学习优化,改进模型,训练模型,测试模型,可视化绘制,代编运行结果,交互多模型改进,预测模型,算法修改,Python包…

docker: No space left on device处理与迁移目录

简介:工作中当遇到Docker容器内部的磁盘空间已满。可能的原因包括日志文件过大、临时文件过多或者是Docker容器的存储卷已满,需要我们及时清理相关文件,并对docker的路径进行迁移。 历史攻略: centos:清理磁盘空间 …

三国杀十周年电脑版PC端模拟器游玩教程

三国杀十周年电脑版PC端模拟器游玩教程 《三国杀十周年》是一款以三国时代丰富的历史背景和独特的玩法手机策略游戏,在游戏中可自由选择扮演一位三国时期著名的人物,吸引了大量的历史爱好者和卡牌游戏玩家。如果大家想要轻松享受端游操作体验&#xff0…

【一刷《剑指Offer》】面试题 32:从 1 到 n 整数中 1 出现的次数

力扣对应题目链接:233. 数字 1 的个数 - 力扣(LeetCode) 牛客对应题目链接:整数中1出现的次数(从1到n整数中1出现的次数)_牛客题霸_牛客网 (nowcoder.com) 一、《剑指Offer》对应内容 二、分析题目 先随便…

Go语言之内存分配

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ Go 语言程序所管理的虚拟内存空间会被分为两部分:堆内…

牛客TOP101:单链表的排序

文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 按我们以往的排序算法来看,针对链表来说都是太不合适,因为很多都会出现指针前移后移,后移还好说,前移对于链表来说就太难了,而且大部分都是某一个…

HiDiff: 用于医学图像分割的混合扩散框架| 文献速递-基于深度学习的多模态数据分析与生存分析

Title 题目 HiDiff: Hybrid Diffusion Framework for Medical Image Segmentation HiDiff: 用于医学图像分割的混合扩散框架 01 文献速递介绍 医学图像分割是将医学图像数据转化为有意义的、空间结构化的信息,如器官和肿瘤。随着深度学习(DL&#x…

primeflex教学笔记20240720, FastAPI+Vue3+PrimeVue前后端分离开发

练习 先实现基本的页面结构&#xff1a; 代码如下&#xff1a; <template><div class"flex p-3 bg-gray-100 gap-3"><div class"w-20rem h-12rem bg-indigo-200 flex justify-content-center align-items-center text-white text-5xl">…

RESTful API设计指南:构建高效、可扩展和易用的API

文章目录 引言一、RESTful API概述1.1 什么是RESTful API1.2 RESTful API的重要性 二、RESTful API的基本原则2.1 资源导向设计2.2 HTTP方法的正确使用 三、URL设计3.1 使用名词而非动词3.2 使用复数形式表示资源集合 四、请求和响应设计4.1 HTTP状态码4.2 响应格式4.2.1 响应实…

新能源汽车空调系统的四个工作过程

汽车空调制冷系统组成 1.汽车空调制冷系统组成 以R134a为制冷剂的汽车空调制冷系统主要包括压缩机、电磁离合器、冷凝器、 散热风扇、储液于燥器、膨胀阀、蒸发器、鼓风机、制冷连接管路、高低压检测 连接接头、调节与控制装置等组成。 汽车空调的四个过程 1压缩过程 传统车…

nginx的access.log日志输出请求总数、QPS和平均带宽

适用格式 #log_format main $remote_addr - $remote_user [$time_local] "$request" # $status $body_bytes_sent "$http_referer" # "$http_user_agent" "$http_x_forwarded_for"; 形如&#…

差分进化算法原理及其MATLAB/Python代码

1.算法简介 引用自&#xff1a;Storn R, Price K. Differential evolution–a simple and efficient heuristic for global optimization over continuous spaces[J]. Journal of global optimization, 1997, 11: 341-359. 今天给大家带来的是一个非常经典的智能优化算法–差分…

buu做题(6)

目录 [GWCTF 2019]我有一个数据库 [WUSTCTF2020]朴实无华 [GWCTF 2019]我有一个数据库 什么都没有, 尝试用dirsearch扫一下目录 可以扫到一个 /phpmyadmin 可以直接进入到数据库里面 但里面没什么东西 可以看到它的版本不是最新的, 搜一下相关的漏洞 phpMyAdmin 4.8.1后台文…