重点一 |
在企业网络运维过程中,管理员必须随时关注各服务器和网络的运行状况,以便及时发现问题,尽可能减少故障的发生。当网络中的设备,服务器等数量较多时,为了更加方便,快捷的获得监控信息,通常会借助于一些集中监测软件。 想要实时的了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的途径。就目前而言,有服务器的地方就少不了监控系统,现有的监控系统软件很多,但是zabbix可灵活的监控服务器资源,并且集cacti与nagios两者的优点于一身且功能更强大,实现企业级分布式监控,所以在市场应用更广。 Zabbix是一个基于web界面的企业级开源监控套件,由C语言编写而成的底层架构(server端和agent端),由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。世界上很多大小不同的组织机构都依赖与zabbix作为自己的一个主要的监控平台,尤其是现在很多互联网企业都在使用它。提供分布式系统监控与网络监控功能,具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表,图表的绘制等功能。检测的对象可以是linux或windows服务器,也可以是路由器,交换机等网络设备,通过SNMP(Simple network protocol 简单网络管理协议),zabbix agent,ping,端口监视等方法提供对远程网络服务器等监控,数据收集等功能,并提供通知机制使系统管理员可以快速定位,解决系统中存在的各种问题,目前,zabbix最新版本为zabbix5.0,官方网址是Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。 被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据 Server端:通过收集SNMP和agent发送的数据,写入MySQL数据库,再通过php+apache在web前端展示。 2. Zabbix运行条件: Server: Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低 Agent: 目前已有的agent基本支持市面常见的OS,包含Linux、HP(Unix)、Oracle(Solaris)、windows等 SNMP: 支持各类常见的网络设备 3. Zabbix功能 具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP/HTTP等通用协议监控、多种告警方式、详细的报表图表绘制)、支持自动发现网络设备和服务器,支持分布式,能集中展示、管理分布式的监控点,扩展性强,server提供通用接口,可以自己开发完善各类监控。 |
重点二 | 1. 优劣势 优点: 开源,无软件成本投入; Server对设备性能要求低(实际测试环境:虚拟机Redhat EL AS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上); 支持设备多; 支持分布式集中管理; 开放式接口,扩展性强; 当监控的item比较多服务器队列比较大时可以采用被对状态,被监控客户端主动从server端去下载需要监控的item然后取数据上传到server端。这种方式对服务器的负载比较小。 缺点: 无厂家支持,出现问题解决比较麻烦 需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。 |
重点三 | 1.zabbix的监控原理:
组件说明: 1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行; 2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据; 3)web interface:zabbix的GUI接口; 4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力; 5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端; 监控流程: agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式: 主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy 被动:server向agent请求获取监控项的数据,agent返回数据。 客户端守护进程: 此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。 zabbix_get zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。 zabbix_sender zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。 zabbix_server zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server 备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。 zabbix_proxy zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。 zabbix_java_gateway zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。 |
重点四 | 扩展:zabbix的监控架构 在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。 1、server-client架构 也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。 2、server-proxy-client架构 其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控。 3、master-node-client架构 该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。 |
重点五 | Grafana简介: Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。以InfluxDB(由go语言编写,是一个开源,分布式,时间序列,事件,可度量和无外部依赖的数据库)作为底层数据库; Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。 |
Zabbix特点
Zabbix是一个高度集成的网络监控解决方案,具备如表所示的特点:
特点 | 说明 |
数据采集 | 可用性和性能检查 支持SNMP(trapping或polling),IPMI,JMX,VMware的监控 自定义检测 按照自定义时间间隔收集所需数据 通过server/proxy和agent来执行监控 |
灵活的阈值定义 | 可以定义非常灵活的问题阈值,称为触发器(triggers),从后端数据库调用数值 |
高度可配置的告警 | 可以自定义警告升级(escalation),接受者及告警方式 告警信息可以配置并允许使用宏(macro)变量 通过远程命令实行自动化动作(action) |
实时绘图 | 通过内置的绘图方法实现监控数据实时绘图 |
Web监控能力 | Zabbix可以模拟鼠标单击网站并检查其功能性和响应时间 |
广泛的可视化选项 | 能够创建自定义图表,可以组合多个项到一个单一的视图中网络拓扑 自定义屏幕和侧边栏作为仪表盘(dashboard)样式显示报告 监视资源的高级视图(商业) |
历史数据存储 | 用数据库来存储数据 配置历史 内置的管理程序 |
容易配置 | 添加监控设备作为主机 一旦在数据库中,主机即可被监控 将模版应用到监控监控设备 |
使用模版 | 模版中的可以组监控 模版中可以继承其他模版 |
网络发现 | 网络设备的自动发现 代理(agent)自动注册 自动发现文件系统,网络接口,SNMP OID |
快速的web接口 | Web前端采用php编写 按照自定义的方式单击审计日志 |
Zabbix API | Zabbix API 提供可编程接口面向Zabbix大规模操作,方便第三方软件集成 安全的用户认证 |
权限系统 | 某些用户可以受限于某些试图 |
功能齐全且易于扩展的代理(agent) | 部署在监控目标上 Linux和windows上都可以部署 用C语言写的,高性能且内存占用小 |
二进制守护进程 | 易移植 通过使用zabbix proxy可以轻松进行远程监控 |
配置
环境:一台主机 192.168.1.128 主机名 server.zabbix.com
关闭防火墙规则
能够通外网
[root@bogon ~]# hostname server.zabbix.com
[root@bogon ~]# bash
[root@server ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@server ~]# cat /etc/hostname
server.zabbix.com
配置阿里源
[root@server yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
--2023-07-18 19:10:24-- http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 150.139.156.186, 182.201.241.60, 182.201.241.64, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|150.139.156.186|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “Centos-7.repo”100%[=============================================================>] 2,523 --.-K/s 用时 0.01s
2023-07-18 19:10:24 (238 KB/s) - 已保存 “Centos-7.repo” [2523/2523])
部署环境 提供zabbix访问页面
[root@server yum.repos.d]# yum install -y httpd mariadb-server mariadb mariadb-devel php php-mbstring php-mysql php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel ntpdate curl-devel
启动服务并设置开机启动
[root@server ~]# systemctl start mariadb
[root@server ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
准备Java环境
[root@bogon ~]# tar xf jdk-8u91-linux-x64.tar.gz
[root@bogon ~]# mv jdk
jdk1.8.0_91/ jdk-8u91-linux-x64.tar.gz
[root@bogon ~]# mv jdk1.8.0_91/ /usr/local/java
[root@bogon ~]# tail -2 /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
[root@bogon ~]# source /etc/profile
[root@bogon ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
[root@bogon ~]# javac -version
javac 1.8.0_91
[root@bogon ~]# which java
/usr/local/java/bin/java
安装zabbix
[root@server ~]# tar xf zabbix-3.4.11.tar.gz
[root@server ~]# mv zabbix-3.4.11 /usr/src
[root@server ~]# cd /usr/src/zabbix-3.4.11/
[root@server zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java && make -j2 && make install
--prefix=/usr/local/zabbix 指定安装位置 --enable-server --enable-agent 启用zabbix和agent
amriadb数据库授权
[root@server ~]# mysql -u root -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
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)]> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix.* to zabbix@'192.168.1.104' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> fiush privileges;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'fiush privileges' at line 1
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@server ~]# cd /usr/src/zabbix-3.4.11/
导入zabbix需要的数据
[root@server zabbix-3.4.11]# mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql
[root@server zabbix-3.4.11]# mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql
[root@server zabbix-3.4.11]# mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql
登陆查看
[root@server zabbix-3.4.11]# mysql -u root -p123123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
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)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
| application_template |
| applications |
| auditlog |
| auditlog_details |
...........................
创建zabbix程序用户并授权防止报错
[root@server zabbix-3.4.11]# cd /usr/local/
[root@server local]# cd zabbix/[root@server zabbix]# mkdir logs
[root@server zabbix]# chown -R zabbix:zabbix ../zabbix[root@server zabbix]# cp -p etc/zabbix_server.conf{,.bak}
[root@server zabbix]# cp -p etc/zabbix_agentd.conf{,.bak}
[root@server zabbix]# cd /usr/local/zabbix/etc
[root@server etc]# vim zabbix_server.conf
38 LogFile=/usr/local/zabbix/logs/zabbix_server.log
68 PidFile=/tmp/zabbix_server.pid
85 DBHost=192.168.1.128
95 DBName=zabbix
111 DBUser=zabbix
119 DBPassword=zabbix
126 DBSocket=/var/lib/mysql/mysql.sock
127 Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log #指定zabbix日志位置
PidFile=/tmp/zabbix_server.pid #指定zabbix pid文件位置
DBHost=192.168.200.111 #指定数据库主机
DBName=zabbix #指定数据库名为zabbix
DBUser=zabbix #指定用户为zabbix
DBPassword=zabbix #指定密码为zabbix
DBSocket=/var/lib/mysql/mysql.sock #指定mariadb数据库的sock文件
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
[root@server etc]# vim zabbix_agentd.conf 68 PidFile=/tmp/zabbix_server.pid
30 LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
31 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
93 Server=127.0.0.1,192.168.1.128
134 ServerActive=192.168.1.128
145 Hostname=Zabbix server
[root@server etc]# ln -s /usr/local/zabbix/sbin/* /usr/local/bin
[root@server etc]# zabbix_server
[root@server etc]# zabbix_agentd
配置php和apache
[root@server etc]# mv /usr/src/zabbix-3.4.11/frontends/php/ /var/www/html/zabbix
[root@server etc]# chown -R apache:apache /var/www/html/zabbix/
[root@server etc]# vim /etc/php.ini
878 date.timezone = Asia/Shanghai ##时区
384 max_execution_time = 300 ##单位秒,通过POST、GET以及PUT方式接收数据时间进行限制
394 max_input_time = 300 ##php程序上传文件解析数据时的时间限制
672 post_max_size = 32M ##POST 方式请求数据所允许的最大大小
405 memory_limit = 128M ##设置php程序的内存限制
854 extension=bcmath.so ##加载zabbix程序需要加载的扩展模块bcmath.so手动添加
[root@server etc]# systemctl restart httpd
[root@server etc]# netstat -anpt |egrep ':10050|:10051|:80'
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 15209/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 15147/zabbix_server
tcp 0 0 192.168.1.128:10051 192.168.1.128:41986 TIME_WAIT -
tcp6 0 0 :::10050 :::* LISTEN 15209/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 15147/zabbix_server
tcp6 0 0 :::80 :::* LISTEN 15252/httpd
web安装zabbix
1.
2.
3.
4.
5.
6.
7.
8.
页面优化
9.
10.
完成后F5载页面就会中文显示
11.
12.
密码修改
13.解决中文乱码
[root@server etc]# cd /var/www/html/zabbix/fonts/
[root@server fonts]# ls
DejaVuSans.ttf
改名备份
[root@server fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@server fonts]# ll
总用量 740
-rw-r--r--. 1 apache apache 756072 6月 25 2018 DejaVuSans.ttf.bak
找好的中文包
[root@server fonts]# mv /root/simkai.ttf .
[root@server fonts]# ll
总用量 4780
-rw-r--r--. 1 apache apache 756072 6月 25 2018 DejaVuSans.ttf.bak
-rwxr--r--. 1 root root 4135804 7月 18 20:32 simkai.ttf
[root@server fonts]# mv simkai.ttf DejaVuSans.ttf
[root@server fonts]# ls
DejaVuSans.ttf DejaVuSans.ttf.bak
[root@server fonts]# chown -R apache:apache *
[root@server fonts]# ll
总用量 4780
-rwxr--r--. 1 apache apache 4135804 7月 18 20:32 DejaVuSans.ttf
-rw-r--r--. 1 apache apache 756072 6月 25 2018 DejaVuSans.ttf.bak
14.查看
15.监控直接
16.
17.
18.
19.
20.
21.
OK拜拜