文章目录
Zabbix 介绍
概述
Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。
Zabbix 的用户
Zabbix的使用者包括不同行业,不同规模的企业,遍布全球,他们都选择Zabbix作为最主要的监控平台。
Zabbix监控概述
官网:https://www.zabbix.com
zabbix适用于任何IT基础架构、 服务、应用程序和资源的解决方案
数据采集:周期性时序数据
- 主机/对象:服务器、路由器、交换机、存储、防火墙、 IP、 PORT、 URL、自定义监控对象…
- 采集目标:监控项,指标数据(metrics data)
数据存储:
- 存储系统:
- SQL: MySQL/MariaDB(Zabbix)
- NoSQL: Redis(Open-falcon)
- rrd: Round Robin Database(Cacti)
- 数据:
- 历史数据: 每个监控项采集到的每个监控值
- 趋势数据: 趋势表里主要保留某个监控项一个小时内历史数据的最大值、最小值和平均值以及该监控项一个小时内所采集到的数据个数。
- 阈值: severity,可按照等级实现层级报警
- 告警: email, 短信, 微信,语音,故障自治愈
四大核心任务:
- 采集: zabbix-server, zabbix-proxy,zabbix-agent
- Agentless: SNMP,Telnet,ssh, IPMI, JMX,
- Agent: zabbix agent
- 存储: zabbix database
- 展示: zabbix web
- graph -> screen -> slideshow(将多个screen以幻灯片的方式进行轮流展示)
- 告警:
- host (host groups) <- templates
- host -> items -> triggers -> action (条件-conditions, 操作-operations)
zabbix架构
Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。
Server
Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库
所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
Web 界面
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
Proxy
Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
Agent
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
数据流
另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
安装部署zabbix
安装数据库
-
安装数据库:
过程略 -
更改配置文件
max_connections=10000
my.cnf配置文件更改最大链接数
- 准备数据库:
# mysql
mysql> create database zabbix_server character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix_server.* to zabbix@"192.168.99.%" identified by '123456';
Query OK, 0 rows affected (0.00 sec)
Ubuntu 安装zabbix
编译安装zabbix
- 安装依赖包:
apt-get install apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-mod-php7.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml php7.2-bcmath php7.2-cli php7.2-common php7.2-gd php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev openjdk-8-jdk curl libcurl4-openssl-dev php-gettext php-xml php-net-socket php-gd
- 下载zabbix源码包
下载地址:https://www.zabbix.com/download_sources
tar -zxvf zabbix-4.0.12.tar.gz
解压文档名看你下载的版本
- 创建用户账户
useradd zabbix
- 编译安装:
cd zabbix-4.0.12
./configure --prefix=/usr/local/zabbix \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--enable-java
make && make install
安装proxy时,–enable-proxy
单独安装agent:./configure --enable-agent
- 数据库初始化
需要先安装mysql客户端
apt install mysql-client
# cd ./database/mysql/
# ls
data.sql images.sql Makefile Makefile.am Makefile.in schema.sql
cd ./database/mysql/
mysql -uzabbix -p123456 -h192.168.99.21 zabbix_server < schema.sql
mysql -uzabbix -p123456 -h192.168.99.21 zabbix_server < images.sql
mysql -uzabbix -p123456 -h192.168.99.21 zabbix_server < data.sql
database/mysql/目录相对于zabbix解压后的包的目录
3个sql导入的时候要按顺序
- 启动apache2:
systemctl restart apache2
systemctl enable apache2
- 编辑zabbix_server.con配置文件
mkdir /var/log/zabbix
chown -R zabbix.zabbix /var/log/zabbix
vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=192.168.99.21
DBName=zabbix_server
DBUser=zabbix
DBPassword=123456
DBPort=3306
Timeout=30
LogSlowQueries=3000
- Zabbix Server systemd启动脚本
ln -s /usr/local/zabbix/sbin/zabbix_server /usr/sbin/
vim /lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server (MySQL/MariaDB)
Documentation=man:zabbix_server
After=network.target mysql.service
[Service]
Type=simple
User=zabbix
Group=zabbix
ExecStart=/usr/sbin/zabbix_server --foreground
ExecReload=/usr/sbin/zabbix_server -R config_cache_reload
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
启动
systemctl daemon-reload
systemctl start zabbix-server
systemctl enable zabbix-server
- Zabbix Agent systemd启动脚本
ln -s /usr/local/zabbix/sbin/zabbix_agentd /usr/sbin/
vim /lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
Documentation=man:zabbix_agentd
After=network.target
[Service]
Type=simple
User=zabbix
Group=zabbix
ExecStart=/usr/sbin/zabbix_agentd --foreground
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
启动
systemctl daemon-reload
systemctl start zabbix-agent
systemctl enable zabbix-agent
- 配置web界面
mkdir /var/www/html/zabbix
cp -a zabbix-4.0.12/frontends/php/* /var/www/html/zabbix
- 找到相应的项,做如下更改
vim /etc/php/7.2/apache2/php.ini
...
post_max_size = 16M
...
max_execution_time = 300
...
max_input_time = 300
...
date.timezone = Asia/Shanghai
...
date.timezone 可能为注释项
- 重启apache2:
systemctl restart apache2
-
访问zabbix
http://192.168.99.21/zabbix/setup.php
-
开始安装,Next step
-
填写你的数据库
-
添加zabbix服务端(在本机上)
-
确认配置后开始安装
-
点链接下载php配置文件,放到
/var/www/html/zabbix/conf/zabbix.conf.php
-
刷新页面,Finish
-
进入登录界面
默认帐号Admin,密码zabbix
设置中文
- 安装中文包
apt install language-pack-zh*
- 配置相关环境变量
echo 'LANG="zh_CN.UTF-8"' >> /etc/environment
echo 'LANGUAGE="zh_CN:zh:en_US:en"' >> /etc/environment
- 重新设置本地的配置
dpkg-reconfigure locales
空格选中,回车
再选择 zh_CN.UTF-8
- 重启apache2
systemctl restart apache2
- 修改apache2的字体
# vim /var/www/html/zabbix/include/defines.inc.php
70 graphfont 改为 simkai
111 graphfont 改为 simkai
- 提取主机上的字体
-
将字体放在
/var/www/html/zabbix/assets/fonts/
下 -
网页更改为中文
apt安装 zabbix
https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/
- 配置源
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb
dpkg -i zabbix-release_4.0-2+bionic_all.deb
apt update
- 安装zabbix
安装zabbix server 并使用 MySQL 数据库:
apt install zabbix-server-mysql
安装 Zabbix proxy 并使用 MySQL 数据库:
apt install zabbix-proxy-mysql
安装 Zabbix 前端:
apt install zabbix-frontend-php
- 编辑zabbix_server.con配置文件
mkdir /var/log/zabbix
chown -R zabbix.zabbix /var/log/zabbix
vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=192.168.99.21
DBName=zabbix_server
DBUser=zabbix
DBPassword=123456
DBPort=3306
Timeout=30
LogSlowQueries=3000
- 启动zabbix
systemctl start zabbix-server
systemctl enable zabbix-server
- 导入数据
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p123456 -h192.168.99.21 zabbix_server
-
访问web
http://192.168.99.22/zabbix/setup.php
-
上图有个Fail,需要修改配置文件
vim /etc/php/7.2/apache2/php.ini
date.timezone = Asia/Shanghai
- 重启apache2
systemctl restart apache2
-
刷新网页
-
设置数据库
-
名字随意
-
确认配置
-
完成
-
登录
-
如果遇到这个zabbix server is running=No
-
重启下zabbix server
systemctl restart zabbix-server
设置中文
- 安装中文包
apt install language-pack-zh*
- 配置相关环境变量
echo 'LANG="zh_CN.UTF-8"' >> /etc/environment
echo 'LANGUAGE="zh_CN:zh:en_US:en"' >> /etc/environment
- 重新设置本地的配置
dpkg-reconfigure locales
空格选中,回车
再选择 zh_CN.UTF-8
- 重启apache2
systemctl restart apache2
- 修改apache2的字体
# vim /usr/share/zabbix/include/defines.inc.php
70 graphfont 改为 simkai
111 graphfont 改为 simkai
-
提取主机上的字体
-
将字体放在 /usr/share/zabbix/assets/fonts/ 下
-
网页更改为中文
apt安装 Zabbix agent
apt install zabbix-agent
- 配置文件
vi /etc/zabbix/zabbix_agentd.conf
...
Server=192.168.99.21
...
ServerActive=192.168.99.21
...
Hostname=192.168.99.110
CentOS 7 安装 zabbix
yum安装 zabbix
- 添加 Zabbix 软件仓库
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
- Zabbix 前端web界面需要额外的基础安装包
yum-config-manager --enable rhel-7-server-optional-rpms
- 安装 Server/proxy/web前端
安装 Zabbix server(适用于 RHEL7,在 RHEL 6 上弃用)并使用 MySQL 数据库:
yum install zabbix-server-mysql
安装 Zabbix proxy 并使用 MySQL 数据库:
yum install zabbix-proxy-mysql
安装 Zabbix 前端(适用于 RHEL 7,在 RHEL 6 上弃用)并使用 MySQL 数据库:
yum install zabbix-web-mysql
- 导入数据
使用 MySQL 来导入 Zabbix server 的初始数据库 schema 和数据,
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
对于 Zabbix proxy,导入初始的数据库 schema:
zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p zabbix
- 编辑 zabbix_server.conf 或 zabbix_proxy.conf 文件以使用已创建的数据库
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>
- 启动 Zabbix server 进程
CentOS 7
systemctl start zabbix-server
systemctl enable zabbix-server
- Zabbix 前端配置
vi /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
yum安装 zabbix Agent
- 添加 Zabbix 软件仓库
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
- yum安装agent
yum install zabbix-agent
- 配置agent
# vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.99.21
StartAgents=3
ServerActive=192.168.99.21
Hostname=192.168.99.110
Include=/etc/zabbix/zabbix_agentd.d/*.conf
- 启动
systemctl start zabbix-agent
systemctl enable zabbix-agent