Zabbix监控服务部署
1. zabbix简介
1.1 常见的监控软件
- Nagios
Nagios是一个成熟的、广泛使用的开源监控软件。它支持多种监控方式(如SNMP、NRPE和自定义监控脚本等),提供实时监控、报警通知、数据图表展示等功能。Nagios可通过插件扩展其功能。
- Zabbix
Zabbix是一个全面的、高度可配置的网络监控和管理系统。它提供了实时监控、警报通知、数据可视化、自动发现等功能,并支持多种监控方式(如被动代理、SNMP、IPMI等)。
- Prometheus
Prometheus是一个开源的系统监控和警报工具。它通过主动收集和存储时间序列数据,并提供了强大的查询和报警功能。Prometheus具有可扩展性和灵活的数据模型,适用于动态环境下的监控需求。
- Grafana
Grafana是一个开源的数据可视化工具,可与多种监控系统集成。它提供了高度定制化的仪表板和图表,可以根据需求展示监控指标和数据。Grafana支持多种数据源,如Prometheus、InfluxDB、Elasticsearch等。
- Datadog
Datadog是一种云基础设施监控和分析平台,支持监控云端和本地的IT资源。它提供实时数据收集、自动化的基础设施发现、自定义仪表板、智能警报等功能。Datadog还支持与其他工具和服务的集成。
- Splunk
Splunk是一种强大的日志分析和监控平台,能够处理和分析大量的实时和历史数据。它提供了实时搜索、可视化图表、报警通知和自定义应用程序等功能,适用于大规模的日志和事件监控。
监控指标:
- 硬件:电源、温度
- 软件:
- 系统:内存使用率、CPU使用率、磁盘使用率
- 网络:网卡流量
- 业务:进程、日志
1.2 关于zabbix
Zabbix是一款开源的网络监控和管理系统,用于监控网络设备、服务器、虚拟机、应用程序、数据库等各种IT资源的运行状态和性能。它提供了广泛的监控功能,包括实时数据收集、报警通知、可视化图表、趋势分析、容量规划等。\n\n以下是Zabbix的一些特点和功能:
- 多种监控选项:Zabbix支持多种监控方式,包括主动和被动监控、SNMP、IPMI、JMX、自定义监控脚本等,可以监控多样化的设备和应用。
- 灵活的数据收集:Zabbix能够周期性地收集各种指标数据,并可以通过主动轮询或被动代理方式获得实时数据。
- 强大的告警功能:Zabbix可以基于监控数据设置灵活的告警规则,并通过多种通知方式(如邮件、SMS、蜂鸣、脚本等)发送告警通知。
- 数据可视化和报表:Zabbix提供直观且可定制化的监控数据图表和报表,以便进行性能分析、图表比较以及容量规划等。
- 自动化和配置管理:Zabbix支持自动发现设备、应用和服务,并允许远程配置管理、自动化批量配置等。
- 安全性和权限控制:Zabbix提供基于角色的权限管理来保护监控数据和系统安全。
- 高可用性和扩展性:Zabbix采用分布式架构和高可用性设计,可以部署多个Zabbix服务器和代理,以提供更高的可靠性和性能。
1.3 zabbix主要功能
实时监控
- 通过主动轮询、被动代理以及其他监控方式,Zabbix能够实时监控网络设备、服务器、应用程序、数据库等各种IT资源的性能和状态。
数据收集和存储
- zabbix能够收集各种指标数据,如CPU利用率、内存使用、网络流量、磁盘空间等,并将这些数据存储在数据库中供后续分析和展示。
警报通知
- zabbix可以设置警报规则,一旦监控指标超过预设的阈值,即可触发警报通知,通过邮件、短信、蜂鸣等方式及时地通知管理员。
数据可视化
- zabbix提供强大的数据可视化功能,能够生成各种图表、趋势分析和报表,帮助用户更好地理解和分析监控数据。
自动发现
- zabbix能够自动发现网络设备、应用程序和服务,并实时监测新添加的设备或服务,无需手动配置。
配置管理
- zabbix允许用户管理监控主机和监控项的配置,通过集中式管理、模板化和自动化等功能,方便管理大规模的监控环境。
安全性和权限控制
- zabbix提供基于角色的访问控制,可以细粒度地控制用户的权限,以保护敏感的监控数据和系统安全。
综合报警视图
- zabbix提供集中式的报警视图,可以查看和管理所有触发的警报,帮助管理员及时处理和解决问题。
高可用性和扩展性
- zabbix支持高可用性部署,允许用户搭建分布式的监控系统,以提供更高的可靠性和扩展性。
功能强大且易于扩展的 Zabbix Agent
- 部署于被监控对象上;
- 支持 Linux 和 Windows 。
2. 部署zabbix
注意:在部署zabbix之前要提前部署好LAMP
并且,MySQL/Percona版本要8.0.30及更高版本,MariaDB要10.5.00及更高版本,PHP要7.4及更高版本
## 官方文档:
https://www.zabbix.com/documentation/6.4/en/manual/installation/install
主机名 | ip地址 | 系统版本 | 主机 |
---|---|---|---|
kiwi222 | 192.168.234.33 | CentOS8 | 服务端 |
2.1 下载zabbix包并解压
[root@kiwi222 ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.6.tar.gz
[root@kiwi222 ~]# tar -xf zabbix-6.4.6.tar.gz
[root@kiwi222 ~]# ls
anaconda-ks.cfg zabbix-6.4.6 zabbix-6.4.6.tar.gz
[root@kiwi222 ~]#
2.2 创建zabbix用户和组
[root@kiwi222 ~]# groupadd -r zabbix
[root@kiwi222 ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix
[root@kiwi222 ~]#
2.3 创建zabbix数据库用户
## 进入解压后的zabbix目录
[root@kiwi222 zabbix-6.4.6]# mysql -uroot -p1
MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> create user 'zabbix'@'localhost' identified by '1';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]>
2.4 将数据导入数据库,并将字符集utf8mb4设置为默认值。
对于Zabbix代理数据库,只有模式。应该导入SQL(没有映像)。SQL而不是data.sql)。
[root@kiwi222 zabbix-6.4.6]# cd database/mysql
[root@kiwi222 mysql]# mysql -uzabbix -p1 zabbix < schema.sql
[root@kiwi222 mysql]# mysql -uzabbix -p1 zabbix < images.sql
[root@kiwi222 mysql]# mysql -uzabbix -p1 --default-character-set=utf8mb4 zabbix < data.sql
[root@kiwi222 mysql]#
2.5 禁用log_bin_trust_function_creators
[root@kiwi222 mysql]# mysql -uroot -p1
MariaDB [(none)]> SET GLOBAL log_bin_trust_function_creators = 0;
Query OK, 0 rows affected (0.000 sec)
做好上面这些之后发现数据库里面多了zabbix数据库以及表
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zabbix |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]> show tables from zabbix;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| auditlog |
| autoreg_host |
| changelog |
| conditions |
| config |
| config_autoreg_tls |
·········································略
186 rows in set (0.001 sec)
MariaDB [(none)]>
2.6 构建Zabbix服务器、Zabbix代理或Zabbix代理需要带有GNU扩展的C99
[root@kiwi222 zabbix-6.4.6]# export CFLAGS="-std=gnu99"
[root@kiwi222 zabbix-6.4.6]# echo $CFLAGS
-std=gnu99
2.7 安装编译zabbix所需环境依赖包
[root@kiwi222 zabbix-6.4.6]# yum install -y mysql-devel net-snmp-devel libevent-devel
[root@kiwi222 zabbix-6.4.6]# yum install -y http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/OpenIPMI-devel-2.0.31-3.el8.x86_64.rpm
2.8 开始编译zabbix
[root@kiwi222 zabbix-6.4.6]# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
······························过程略
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
[root@kiwi222 zabbix-6.4.6]#
### 注:如果不需要ipv6则--enable-ipv6 这个选项可不加
2.9 开始安装zabbix
[root@kiwi222 zabbix-6.4.6]# make install
···································过程略
make[2]: Leaving directory '/root/zabbix-6.4.6'
make[1]: Leaving directory '/root/zabbix-6.4.6'
[root@kiwi222 zabbix-6.4.6]#
## 安装成功
[root@kiwi222 zabbix-6.4.6]# ls /usr/local/etc/
zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d
[root@kiwi222 zabbix-6.4.6]#
2.10 修改服务端配置文件
设置数据库信息
[root@kiwi222 ~]# vim /usr/local/etc/zabbix_server.conf
······
# Mandatory: no
# Default:
# DBPassword=
DBPassword=1 ### 追加数据库连接密码
### Option: DBSocket
# Path to MySQL socket.
2.11 启动zabbix
## 启动服务端
[root@kiwi222 ~]# zabbix_server
[root@kiwi222 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10051 0.0.0.0:*
LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 80 *:3306 *:*
## 启动客户端
[root@kiwi222 ~]# zabbix_agentd
[root@kiwi222 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10051 0.0.0.0:*
LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 80 *:3306 *:*
[root@kiwi222 ~]#
2.12 zabbix服务端web界面安装与配置
zabbix界面安装前配置
[root@kiwi222 ~]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini
[root@kiwi222 ~]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini
[root@kiwi222 ~]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini
[root@kiwi222 ~]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini
[root@kiwi222 ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@kiwi222 zabbix-6.4.6]# mkdir /usr/local/apache/htdocs/zabbix
[root@kiwi222 zabbix-6.4.6]# \cp -a ui/* /usr/local/apache/htdocs/zabbix/
[root@kiwi222 zabbix-6.4.6]#
## 设置zabbix/conf目录的权限,让zabbix有权限生成配置文件zabbix.conf.php
[root@kiwi222 zabbix-6.4.6]# chmod 777 /usr/local/apache/htdocs/zabbix/conf
[root@kiwi222 zabbix-6.4.6]# ll -d /usr/local/apache/htdocs/zabbix/conf
drwxrwxrwx. 3 1000 1000 94 Aug 22 04:10 /usr/local/apache/htdocs/zabbix/conf
[root@kiwi222 zabbix-6.4.6]#
### 更改虚拟主机
[root@kiwi222 ~]# vim /etc/httpd/httpd.conf
·················································略
<VirtualHost *:80>
DocumentRoot "/usr/local/apache/htdocs/zabbix"
ServerName zabbix
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix/$1
<Directory "/usr/local/apache/htdocs/zabbix">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
[root@kiwi222 ~]#
## 重启apache
[root@kiwi222 zabbix-6.4.6]# systemctl restart httpd
[root@kiwi222 zabbix-6.4.6]#
安装zabbix web界面
点击下一步
ok那一栏全部变成ok即可开始下一步(y有个warning可以忽略)
填完以上信息即可下一步
servername可以不填,下一步
下一步
结束
2.13 登陆zabbix
zabbix默认登录用户名和密码:
用户名 | 密码 |
---|---|
Admin | zabbix |
登陆成功
恢复zabbix/conf目录的权限为755
[root@kiwi222 htdocs]# chmod 755 /usr/local/apache/htdocs/zabbix/conf
[root@kiwi222 htdocs]# ll -d /usr/local/apache/htdocs/zabbix/conf
drwxr-xr-x. 3 1000 1000 117 Sep 22 05:06 /usr/local/apache/htdocs/zabbix/conf
[root@kiwi222 htdocs]#
3. zabbix配置文件
zabbix配置文件有两种:
- 服务器端配置文件(/usr/local/etc/zabbix_server.conf)
- 客户端配置文件(/usr/local/etc/zabbix_agentd.conf)
- zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)
服务器端配置文件zabbix_server.conf常用配置参数:
参数 | 作用 |
---|---|
LogFile | 设置服务端日志文件存放路径 |
ListenIP | 设置服务端监听IP |
ListenPort | 设置服务端监听的端口号 |
PidFile | 设置服务端进程号文件存放路径 |
DBHost | 指定zabbix的数据库服务器IP |
DBName | 指定zabbix使用的数据库库名 |
DBUser | 指定zabbix数据库登录用户 |
DBPassword | 指定zabbix数据库登录密码 |
DBPort | 指定zabbix数据库端口号 |
User | 设置zabbix以什么用户的身份运行 |
AlertScriptsPath | 设置告警脚本存放路径 |
ExternalScripts | 外部脚本存放路径 |
客户端配置文件zabbix_agentd.conf常用配置参数:
参数 | 作用 |
---|---|
Server | 指定zabbix服务器的IP或域名 |
ServerActive | 指定zabbix服务器的IP或域名 |
Hostname | 指定本机的主机名,此项必须与web界面配置项一致 |
UnsafeUserParameters | 是否启用自定义监控项,可选值为{1 | 0} |
UserParameter | 指定自定义监控脚本参数 |