监控平台Zabbix介绍与部署

一、Zabbix介绍

1.为什么要监控

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

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

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

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

2.需要监控什么

监控一切需要监控的资源,包括:服务器、网络设备、业务应用、云服务等。

分类 实例内容
硬件监控 通过远程控制卡: DeLL的iDRAC,HP的ILO和IBM的IMM等 使用IPMI来完成物理设备的监控工作。通常必须要监控包括温度、硬盘故障等 路由器,交换机(端口,光衰,日志),打印机等
系统监控 cpu,内存,硬盘使用率,硬盘IO,系统负载,进程数
服务监控 nginx,apache,php-fpm,mysql.memcache,redis ,tomcat,JVM,TCP连接数
性能监控 网站性能,服务器性能,数据库性能,存储性能
日志监控 系统会产生系统日志,应用程序会有应用的访问日志、错误日志,服务有运行日志等, 可以使用ELK来进行日志监控
安全监控 用户登录数,passwd文件变化,本地所有文件改动 Nginx+Lua编写一个WAF通过kibana可以图形化的展示不同的攻击类型的统计。
网络监控 IP,端口,URL,DB,ping包,IDC带宽网络流量,网络流出速率,网络入流量, 网络出流量,网络使用率,SMTP.POP3

3.常见的监控工具

开源监控软件:cacti、nagios、zabbix、smokeping、open-falcon、nightingale等。

4.Zabbix功能

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

Zabbix是一个高度成熟完善的网络监控解决方案,包含了多种功能,如下图所示:

数据收集

  • 历史数据,即记录每个监控项采集到的每个监控值

  • 趋势数据,主要保留某个监控项一个小时内历史数据的最大值、最小值和平
    均值以及该监控项一个小时内所采集到的数据个数

  • 可用性和性能检查;

  • 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;

  • 自定义检查;

  • 按照自定义的时间间隔采集需要的数据;

  • 通过 Server/Proxy 和 Agents 来执行数据采集。

高度可配置化的告警

  • 可以根据递增计划、接收者、媒介类型自定义发送告警通知;

  • 使用宏变量可以使告警通知变得更加高效有用;

  • 自动操作包含远程执行命令。

实时图形

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

Web监控功能

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

快捷的Web界面

  • 基于 PHP 的 Web 前端;

  • 可以从任何地方访问;

  • 您可以定制自己的操作方式;

  • 您可以通过审计日志来查看你的操作

5.Zabbix架构

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

SERVER

  • Zabbix server 是 Zabbix 软件的核心组件

  • Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。

  • Zabbix server也是存储所有配置信息、统计信息和操作信息的核心存储库。

  • Zabbix server也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。

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

数据库

  • 所有配置信息以及 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,zabbix agent2是用go语言开发的,支持更高并发。

PROXY

  • Zabbix Proxy 可以代替 Zabbix Server 采集性能和可用性数据

  • Zabbix Proxy 在 Zabbix 的部署是可选部分

  • Zabbix Proxy 的部署可以很好的分担单个Zabbix server的负载

Java 网关

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

5.Zabbix端口号

  • 客户端 zabbix agent 默认使用 10050 端口

部署在被监控的主机上,采集监控指标数据,并发送给zabbix server(数据采集支持主动模式和被动模式)

  • 服务端 zabbix server 默认使用 10051 端口

zabbix服务端进程,用于配置和管理zabbix应用程序,也是监控系统的告警中心(需要配置监控项告警触发阈值和发送告警)

  • 插件 java 默认使用 10052 端口

二、部署安排Zabbix

1.部署服务端zabbix-server

编译安装 Zabbix 4.0版本

1.1解决依赖关系

点击查看代码
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 

1.2建立管理用户

点击查看代码
[root@node7 ~]# groupadd zabbix           //添加组
[root@node7 ~]# useradd -g zabbix zabbix  //添加用户 -g指定组

1.3解压包

点击查看代码
[root@node7 ~]# cd /data/  //切换到data目录下,上传安装包
[root@node7 data]# ls
zabbix-4.0.30.tar.gz
[root@node7 data]# tar xf zabbix-4.0.30.tar.gz  //解压
[root@node7 data]# ls
zabbix-4.0.30  zabbix-4.0.30.tar.gz

1.4编译安装

点击查看代码
[root@node7 data]# cd zabbix-4.0.30/
[root@node7 zabbix-4.0.30]# ./configure --help  //查看帮助
[root@node7 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@node7 zabbix-4.0.30]# make 
[root@node7 zabbix-4.0.30]# make install

1.5安装数据库

数据库可以安装在本地也可以分离

点击查看代码
[root@node7 zabbix-4.0.30]# yum install mariadb-server.x86_64  -y
[root@node7 zabbix-4.0.30]# systemctl start mariadb
[root@node7 zabbix-4.0.30]# mysql_secure_installation    //安全加固脚本
//输入当前密码 
//修改root密码
//移除匿名用户 
//不让root远程登陆
//移除测试数据库
//刷新

[root@node7 zabbix-4.0.30]# mysql -uroot -p123  //登录数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
//创建一个名为 zabbix 的数据库,使用UTF-8字符集和utf8_bin校对规则
MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix';
//在本地(即当前主机)创建一个名为 zabbix 的用户,并指定密码为 zabbix 
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
//授予用户 zabbix 对"zabbix"数据库的所有权限
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
//设置全局系统变量的值为1,表示信任二进制日志中的函数创建者
MariaDB [(none)]> quit;

1.6导入zabbix数据库文件

点击查看代码
[root@node7 zabbix-4.0.30]# cd /data/zabbix-4.0.30/database/mysql
[root@node7 mysql]# ls
data.sql  images.sql  Makefile  Makefile.am  Makefile.in  schema.sql
[root@node7 mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql  //-u用户  -p密码  数据库
[root@node7 mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@node7 mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
//注意!必须最后导入 data.sql

1.7安装web apapche

点击查看代码
[root@node7 mysql]# yum install httpd -y
[root@node7 mysql]# systemctl start httpd
[root@node7 mysql]# systemctl status httpd

[root@node7 mysql]# cp -a  /data/zabbix-4.0.30/frontends/php/  /var/www/html/zabbix/
//将前端页面拷贝过去

1.9升级php版本

如果在centos7上装zabbix 5.0版本 ,php版本要7.2以上

打开浏览器访问 192.168.100.11/zabbix

修改php软件的配置:

点击查看代码
[root@node7 mysql]# yum  install php-gettext php-xml php-net-socket php-gd php-mysql  -y
[root@node7 mysql]# vim /etc/php.ini
 384 max_execution_time = 300
//定义了PHP脚本执行的最大时间(以秒为单位)。如果脚本在这个时间内没有执行完毕,就会被中断
 394 max_input_time = 600
//定义了PHP脚本接受输入数据的最大时间(以秒为单位)。如果输入操作在这个时间内没有完成,就会被中断
 672 post_max_size = 16M
//定义了HTTP POST数据的最大大小。它限制了通过POST方式发送到服务器的数据量,单位是字节(B)
 878 date.timezone = Asia/Shanghai
//定义服务器使用的时区为 亚洲/上海

[root@node7 mysql]# systemctl  restart  httpd  //重启服务

修改配置后刷新zabbix页面,皆显示ok

下载文件后,将其保存至指定路径

点击查看代码
[root@node7 data]# cp -a zabbix.conf.php   /var/www/html/zabbix/conf/

复制号配置文件后,直接刷新页面

1.10准备service文件

点击查看代码
[root@node7 conf]# pkill zabbix_server   //先停止 zabbix-server

[root@node7 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

[Install]
WantedBy=multi-user.target

[root@node7 conf]# chown -R zabbix:zabbix  /apps/zabbix_server/
[root@node7 conf]# systemctl daemon-reload
[root@node7 conf]# systemctl start zabbix-server.service
[root@node7 conf]# systemctl status zabbix-server.service
[root@node7 conf]# systemctl enable zabbix-server   //开机自启

1.11修改中文

可以修改为中文界面

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

去win主机的C盘C:\Windows\Fonts

点击查看代码
[root@node7 ~]# cd /var/www/html/zabbix/assets/fonts   //上传楷体字体文件到该目录下
[root@node7 fonts]# ls
DejaVuSans.ttf  SIMKAI.ttf

[root@node7 fonts]# vim /var/www/html/zabbix/include/defines.inc.php
  72 define('ZBX_GRAPH_FONT_NAME',           'SIMKAI'); // font file name
 113 define('ZBX_FONT_NAME', 'SIMKAI');

2.部署客户端zabbix-agent

2.1安装依赖环境

点击查看代码
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

2.2解压安装包 编译

点击查看代码
[root@node6 ~]#  cd /opt
[root@node6 opt]#  tar xf zabbix-4.0.30.tar.gz  //解压
[root@node6 opt]#  ls
rh  zabbix-4.0.30  zabbix-4.0.30.tar.gz
[root@node6 opt]#  cd zabbix-4.0.30/
[root@node6 zabbix-4.0.30]#  ./configure --prefix=/apps/zabbix --enable-agent
[root@node6 zabbix-4.0.30]#  make -j2 && make install

2.3准备service文件

点击查看代码
[root@node6 zabbix-4.0.30]#  useradd zabbix -s /sbin/nologin

[root@node6 zabbix-4.0.30]#  vim /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix/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/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target

[root@node6 zabbix-4.0.30]#  systemctl daemon-reload
[root@node6 zabbix-4.0.30]#  systemctl start  zabbix-agent.service
[root@node6 zabbix-4.0.30]#  systemctl status  zabbix-agent.service

2.4修改配置文件

点击查看代码
[root@node6 zabbix-4.0.30]#  cd /apps/zabbix/
[root@node6 zabbix]#  tree
.
├── bin
│   ├── zabbix_get
│   └── zabbix_sender
├── etc
│   ├── zabbix_agentd.conf
│   └── zabbix_agentd.conf.d
├── lib
│   └── modules
├── sbin
│   └── zabbix_agentd
└── share
    └── man
        ├── man1
        │   ├── zabbix_get.1
        │   └── zabbix_sender.1
        └── man8
            └── zabbix_agentd.8

10 directories, 7 files
[root@node6 zabbix]#  cd etc/
[root@node6 etc]#  ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@node6 etc]#  cp -a zabbix_agentd.conf zabbix_agentd.conf.bak //备份


[root@node6 etc]#  vim zabbix_agentd.conf
 94 Server=192.168.204.70    //指向当前zabbix server
119 StartAgents=3            //启动3个进程收集数据
146 Hostname=192.168.204.60  //指定名称,一般使用IP地址,等会手动添加主机会用到
[root@node6 etc]#  systemctl restart zabbix-agent.service
[root@node6 etc]#  systemctl status zabbix-agent.service

3.将客户端加入服务端的监控主机中

3.1在zabbix web管理界面添加被监控主机

3.2添加模板,添加模板是不会监控的

3.3添加模板后过段时间ZBX就会被点亮变绿

3.4可以查看检测情况

3.5使用get命令获取数据

  • -s 指明主机

  • -p 指明端口

  • -k 指明监控项

点击查看代码
//在server服务端执行 get 命令

[root@node7 data]# /apps/zabbix_server/bin/zabbix_get -s 192.168.204.60 -p 10050 -k "agent.ping"
1
[root@node7 data]# /apps/zabbix_server/bin/zabbix_get -s 192.168.204.60 -p 10050 -k "agent.version"
4.0.30
[root@node7 data]# /apps/zabbix_server/bin/zabbix_get -s 192.168.204.60 -p 10050 -k "vm.memory.size"
8185933824
//如果能获得值,代表两者之间是通的

posted @   leikj  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示