基于 Zabbix 实现对日志的收集、监控、报警、触发脚本
简介
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix 由2部分构成,zabbix server 与可选组件 zabbix agent。
zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在 Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X 等平台上。
必要环境
这里用 CentOS-7
数据库,这里使用 MySQL
webserver,这里使用 nginx
时间
安装
rpm -ivh zip* unzip* htop* ntp* vim*
时间
Time
# 查看当前系统时间
date
# 查看当前时区
timedatectl status
# 修改时区(立即生效)
timedatectl set-timezone Asia/Shanghai
# 查看硬件时间
hwclock --show
# 同步系统时间和硬件时间(系统时间为标准,重启init6/reboot生效)
hwclock --hctosys
reboot
# 本地时间写入硬件时间(立即生效)
timedatectl set-local-rtc 1
安装、配置 ntp
# 安装 ntp 服务
yum install ntp -y
# 启动 ntp 服务
systemctl start ntpd
# 配置开机启动 ntp
systemctl enable ntpd
# 查看状态
systemctl status ntpd
转移安装包至软件仓库
find /var/cache/yum/ -type f -name "*.rpm" | xargs cp -t /var/Repository/Repository_rpm
安装 nginx
# 加入 nginx 源
yum install epel-release -y
# 安装 nginx
yum install nginx -y
# 配置 nginx 开机启动
systemctl enable nginx
# 启动 nginx 服务
systemctl start nginx
# 查看 nginx 服务是否启动成功
ps -ef | grep nginx
安装 MySQL
# 安装 yum repo 文件并更新 yum 缓存
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 配置禁用 mysql5.7 的仓库,启用 mysql8.0 的仓库
yum install yum-utils -y
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql80-community
# 下载 MySQL-8 源
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
# 检查是否正确启用了仓库
yum repolist enabled | grep mysql
# 安装
yum install mysql-community-server
# 启动 MySQL 服务
systemctl start mysqld
# 配置开机启动
systemctl enable mysqld
# 查看 MySQL 密码
grep 'temporary password' /var/log/mysqld.log
# 输入密码
mysql -uroot -p
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'UUUUXXXX';
exit
# 启动 MySQL 服务
systemctl restart mysqld
# 查看
show databases;
# 创建数据库
create database mydatabase;
# 删除数据库
drop database mydatabase;
# 打开、使用数据库
use mydatabase;
# 查看数据库表结构
desc student;
# 查询表中的记录
select id,name,sex,degree from student;
# 创建初始数据库
mysql -uroot -p
# 创建数据库
create database zabbix character set utf8 collate utf8_bin;
# 给来自 loclhost 的用户 zabbix 分配可对数据库 zabbix 所有表进行所有操作的权限,并且设定密码为 password
# MySQl-5.7
grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
# MySQl-8
create user 'zabbix'@'localhost' identified by 'password';
grant all privileges on zabbix.* to 'zabbix'@'localhost';
# 刷新
flush privileges;
quit;
# 收回某种权限的写法是:
revoke select on *.* from 'zabbix'@’localhost’;
配置防火墙
# 查看防火墙【服务】状态
systemctl status firewalld
# 查看防火墙【运行】状态
firewall-cmd --state
# 开启
service firewalld start
# 重启
service firewalld restart
# 临时关闭
service firewalld stop
# 永久关闭
systemctl disable firewalld.service
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8080-8085/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
# 查看防火墙的开放的端口
firewall-cmd --permanent --list-ports
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
配置 SELinux
# 临时关闭 SELinux
setenforce 0
# 临时打开 SELinux
setenforce 1
# 查看 SELinux 状态
getenforce
# 开机关闭 SELinux
# 编辑 /etc/selinux/config 文件,将 SELinux 的值设置为 disabled。
vi /etc/selinux/config
SELINUX=disabled
安装 Zabbix 源
清华大学源:https://mirror.tuna.tsinghua.edu.cn/zabbix/
rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
安装 Zabbix server,Web 前端,agent
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent zabbix-get zabbix-web zabbix-sender
========================================================================================================================================
Package 架构 版本 源 大小
========================================================================================================================================
正在安装:
zabbix-agent x86_64 4.4.8-1.el7 zabbix 433 k
zabbix-nginx-conf noarch 4.4.8-1.el7 zabbix 230 k
zabbix-server-mysql x86_64 4.4.8-1.el7 zabbix 2.5 M
zabbix-web-mysql noarch 4.4.8-1.el7 zabbix 11 k
为依赖而安装:
OpenIPMI x86_64 2.0.27-1.el7 base 243 k
OpenIPMI-libs x86_64 2.0.27-1.el7 base 523 k
OpenIPMI-modalias x86_64 2.0.27-1.el7 base 16 k
apr x86_64 1.4.8-5.el7 base 103 k
apr-util x86_64 1.5.2-6.el7 base 92 k
fping x86_64 3.10-4.el7 epel 46 k
httpd x86_64 2.4.6-93.el7.centos base 2.7 M
httpd-tools x86_64 2.4.6-93.el7.centos base 92 k
libevent x86_64 2.0.21-4.el7 base 214 k
libzip x86_64 0.10.1-8.el7 base 48 k
mailcap noarch 2.1.41-2.el7 base 31 k
net-snmp-libs x86_64 1:5.7.2-48.el7_8 updates 751 k
php x86_64 5.4.16-48.el7 base 1.4 M
php-bcmath x86_64 5.4.16-48.el7 base 58 k
php-cli x86_64 5.4.16-48.el7 base 2.7 M
php-common x86_64 5.4.16-48.el7 base 565 k
php-fpm x86_64 5.4.16-48.el7 base 1.4 M
php-gd x86_64 5.4.16-48.el7 base 128 k
php-ldap x86_64 5.4.16-48.el7 base 53 k
php-mbstring x86_64 5.4.16-48.el7 base 506 k
php-mysql x86_64 5.4.16-48.el7 base 102 k
php-pdo x86_64 5.4.16-48.el7 base 99 k
php-xml x86_64 5.4.16-48.el7 base 126 k
t1lib x86_64 5.1.2-14.el7 base 166 k
unixODBC x86_64 2.3.1-14.el7 base 413 k
zabbix-web noarch 4.4.8-1.el7 zabbix 2.9 M
配置数据库
# 导入初始架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uroot -p zabbix
配置
Zabbix 后端
# 为 Zabbix server 配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=password
# 为 Zabbix 前端配置 PHP
# 1
vim /etc/nginx/conf.d/zabbix.conf
# listen 80;
# server_name example.com;
# 2
vim /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
# 3
vim /etc/php.ini
878
date.timezone = Asia/Shanghai
启动 Zabbix server 和 agent 进程
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
journalctl -xe
#
# 错误
#
Cannot connect to the database.
Error connecting to database: Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
#
#
#
# 修改加密规则
ALTER USER zabbix@localhost IDENTIFIED WITH mysql_native_password BY 'password';
# 刷新
flush privileges;
配置 Zabbix 前端
浏览器
账号:Admin
密码:zabbix