zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
SNMP:简单网络管理协议,zabbix用它监控网络设备,防火墙或交换机
zabbix agent:监控centos6 centos7 windows 应用软件
fping:监控节点的存活状态
角色介绍:
zabbix-server:通过各种介质,监控 设备、系统、软件
zabbix-mysql:保存zabbix-server收集过来的被监控端的监控数据
zabbix-proxy:在机房内部,实现分布式监控的
zabbix-agent:被监控端
一些东西的下载地点:
阿里云的镜像:https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/
找到这个包下载下来。
这个包也就是把zabbix所用到的yum仓库以及认证信息。
或者也可以去官网下载:http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/
直接下载的连接:http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
注意:测试时间至2020年2月17日,这个下载的源有些问题可能会下不下来包,所以还是推荐在官网下载。并且推荐版本是4.4,配置方法基本一致用下边的就可以了。4.0也有有中文手册。下边就是官网地址了
https://www.zabbix.com/cn/download?zabbix=4.4&os_distribution=centos&os_version=7&db=mysql&ws=apache
部署zabbix:
配置思路:
要有lamp模式
做这个一定要关闭防火墙
和 selinux
并且有lamp
架构
【1】
一台机器做zabbix-mysql,部署安装mysql。
1、再安装zabbix-server-mysql软件。
2、安装上边的yum仓库包。
3、编写配置文件。
4、根据样例文件导入和创建数据库。
【2】
一台机器做zabbix-server
1、安装一大堆包
2、安装zabbix-server
3、配置。
4、启动服务
【3】
一台机器做被监控的
安装zabbix-sender zabbix-agent
zabbix-mysql 具体操作:
安装之前一定要关闭防火墙和selinux。
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
把zabbix-release-3.4-2.el7.noarch.rpm文件拷贝到服务器中。
[root@localhost ~]# ls
anaconda-ks.cfg zabbix-release-3.4-2.el7.noarch.rpm
[root@localhost ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
rpm安装。
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo.gz CentOS-Sources.repo.gz zabbix.repo
CentOS-Base.repo.gz CentOS-fasttrack.repo.gz CentOS-Vault.repo.gz
CentOS-CR.repo.gz CentOS-Media.repo.gz mnt_cdrom-CentOS7-iso.repo
然后查看yum仓库发现有了这个zabbix.repo文件
[root@localhost ~]# yum install mariadb mariadb-server -y
安装mysql,mariadb也是mysql的一个版本嘛,比较简单所以就用这个了。
安装zabbix-server-mysql
[root@localhost ~]# yum install zabbix-server-mysql -y
因为之前安装了那个yum仓库的repo文件,这里用yum install zabbix,才能找到依赖等信息。
编写配置文件:
[root@localhost ~]# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
直接将样例文件覆盖my.cnf配置文件。
cp: overwrite ‘/etc/my.cnf’? y
修改配置文件。
server-id = 67 //唯一表示,最好用IP最后一位
log_slave_updates //主从复制自动刷新二进制日志
binlog-ignore-db=mysql //主从复制忽略mysql库
datadir=/data/mysql //单独设置一个目录存放数据
[root@localhost ~]# mkdir /data/mysql -p
[root@localhost ~]# chown -R mysql:mysql /data/mysql/
创建用户自然要分配权限,因为mysql要用到mysql用户。
然后启动服务。
[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
直接mysql进入。
m/mariadb.service.
[root@localhost ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.64-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)]>
创建zabbix访问数据库用的用户,和zabbix的数据库。
MariaDB [(none)]> create database zabbix;
MariaDB [(none)]> grant all on zabbix.* to zabbix@'172.16.%' identified by '000000';
MariaDB [(none)]> flush privileges;
查看安装的文件:
[root@localhost ~]# rpm -ql zabbix-server-mysql
/usr/share/doc/zabbix-server-mysql-3.4.15/README
/usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz
别的还有一大堆,就看这个就好了,这个是SQL脚本。
解压缩导入并查看。
[root@localhost zabbix-server-mysql-3.4.15]# gunzip create.sql.gz
[root@localhost zabbix-server-mysql-3.4.15]# mysql zabbix < create.sql
MariaDB [zabbix]> show tables;
| widget_field |
+----------------------------+
140 rows in set (0.01 sec)
MariaDB [zabbix]>
看到一大堆表就可以了。
安装zabbix-server
另一台机器
[root@localhost ~]# yum install -y httpd php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash libjpeg*
修改配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
[root@localhost ~]# vim /etc/php.ini
384 max_execution_time = 300
//应用程序的最大执行时间,秒
394 max_input_time = 300
//接收数据的最大超时时间,秒
672 post_max_size = 16M
//接收数据的最大值
878 date.timezone = Asia/Shanghai
//时区
启动服务:
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-java-gateway zabbix-get -y
安装软件
[root@localhost ~]# mkdir /usr/share/fonts/simkai -p
[root@localhost ~]# cd /usr/share/fonts/simkai/
[root@localhost simkai]# rz
[root@localhost simkai]# ls
simkai.ttf
把windows的字体文件复制进去
C:\Windows\Fonts
[root@localhost simkai]# cd /usr/share/zabbix/include/
[root@localhost include]# vim defines.inc.php
define('ZBX_FONTPATH', '/usr/share/fonts/simkai'); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
字体的路径和文件名。
[root@localhost include]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=50
TIMEOUT=3
[root@localhost zabbix]# vim /etc/zabbix/zabbix_server.conf
DBHost=172.16.12.67 //数据库的地址
DBName=zabbix //数据库的名字,默认
DBUser=zabbix //访问数据库的用户
DBPassword=000000 //访问数据库的密码
DBSocket=/var/lib/mysql/mysql.sock //数据库的套接字文件
DBPort=3306 //数据库端口
连接mysql
JavaGateway=localhost //监控java的地址
JavaGatewayPort=10052 //监控的端口
StartJavaPollers=50 //监控的连接数
连接java-gateway
[root@localhost zabbix]# systemctl restart zabbix-java-gateway
[root@localhost zabbix]# systemctl enable zabbix-java-gateway
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-java-gateway.service to /usr/lib/systemd/system/zabbix-java-gateway.service.
[root@localhost zabbix]# systemctl restart zabbix-server
[root@localhost zabbix]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@localhost zabbix]# netstat -antlup | grep 1005
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 3095/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 3095/zabbix_server
tcp6 0 0 :::10052 :::* LISTEN 2816/java
如果这里发现只有java的端口那么多半是数据库连接的问题导致zabbix-server没起来。
浏览器访问:http://172.16.12.68/zabbix/
配置zabbix
如果都是ok的直接下一步
填写zabbix-sever-mysql的信息。
确认信息。
然后就进入了,可以点击右上角设置改成中文。
这就是zabbix的设置完成。
登录页密码如下。
用户:Admin
密码:zabbix
部署zabbix-agent
又来一台机器,被监控机器
依旧是先安装zabbix的yum仓库
[root@localhost ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
安装被监控软件
[root@localhost ~]# yum install zabbix-sender zabbix-agent -y
修改配置文件
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=172.16.12.68
138 ServerActive=172.16.12.68:10051
149 Hostname=172.16.12.69
启动服务
[root@localhost ~]# systemctl restart zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
进入zabbix的web页面设置。
添加被监控的主机。
主机名是agent中设置的hostname。可见名是自己设定的,最好要一目了然的知道这台主机的功能。
后边的IP是主机的IP。
点击模板添加要监控的信息。
然后添加主机。
这个地方就能看到监控取到的数据了。
一些要点:
帮助文档:http://www.zabbix.com/documentation/3.4/zh/manual/api/reference/alert/get
agent和server之间,数据的传递方式:
-
主动式
agent主动将数据传输给server。
应用场景:
服务器直连公网。 -
被动式
agent等待server连接,将自己的数据收集到server。
监控项
监控项是从主机收集的数据信息。配置主机后,你需要添加一些监控项以开始获取实际数据。
键值:
kernel.maxproc 类似于这种东西,就是通过这个一个一个的键值,从被监控主机中获取相应的信息。
每个监控项要有一个键值。
模板:
模板是可以方便地应用于多个主机的一组实体。
实体可以使监控项触发器图形等等。最简单的理解就是多个监控项凑到一起,一个主机引用了这个模板就相当于添加了这一堆监控项。
自定义模板
模板是可以自定义的,官方提供的标准模板内容太多,这回使zabbix-server-mysql的IO很大,可以选择自己需要查看的监控项自定义模板,大大降低了zabbix-server-mysql的IO。
监控mysql:
直接添加的MySQL监控项并不可用,这是因为mysql有特殊的选项。
yum install -y mariadb 5.5
默认没有root@localhost密码
mysql5.7 bin
PATH变量里没有mysql命令的路径
有root@localhost密码
mysql5.7 rpm
都有初始的root@localhost密码
mysql的版本不同所有的项也不同,所以zabbix的设置也有区别。
如果mysql有密码那么也要让zabbix知道mysql 的密码才能监控啊。
[root@zagent-mysql /etc/zabbix/zabbix_agentd.d]# vim userparameter_mysql.conf
该下边这两个就可以了,就是添加mysql 的密码和环境
自定义键值
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix /usr/local/mysql/bin/mysql -u root -p密码 -N 2> /dev/null | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix /usr/local/mysql/bin/mysql -u root -p密码 -N 2> /dev/null'
然后重启服务
[root@zagent-mysql ~]# systemctl restart zabbix-agent
就发现mysql的那些变成可用的了。