目 录
一、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 ServerCopyright (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 ServerLoaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)Active: active (running) since 五 2024-07-19 23:24:04 CST; 7s agoProcess: 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---