一、运维监控Zabbix部署
1. 简介
Zabbix是一个 "企业级分布式开源监控解决方案" 。
Zabbix软件能够 "监控" 众多网络参数和服务器的健康度、完整性。Zabbix使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix基于存储的数据提供出色的报表和数据可视化功能。这些功能使得Zabbix成为容量规划的理想选择。
2. 安装
2.1 安装ZabbixServer需要先安装好`Mysql`数据库
bash
# 1. 安装Mysql yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
# 2. 跳过GPG检查安装MySQL
yum -y install mysql-community-server --nogpgcheck
# 3. 启动MySQL服务
systemctl start mysqld
systemctl enable mysqld
# 4. 检查服务状态
systemctl status mysqld
# 5. 获取初始密码
grep 'temporary password' /var/log/mysqld.log
# 修改root用户密码
mysql -u root -p -h localhost
Enter password: #I_pberg(i3Tl
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root!123';
2.2 安装Zabbix Server 和 Zabbix Agent
bash
# 安装适用于CentOS 8的Zabbix 6.0 LTS仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
# 清理缓存
yum clean all
# 安装Zabbix组件
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
问题&解决:
bash
#1. PID 文件权限问题
# zabbix-server.service: Can't open PID file /run/zabbix/zabbix_server.pid
# 创建 PID 目录并设置权限
mkdir -p /var/run/zabbix
chown zabbix:zabbix /var/run/zabbix
chmod 755 /var/run/zabbix
# 在配置文件中添加
echo "PidFile=/var/run/zabbix/zabbix_server.pid" >> /etc/zabbix/zabbix_server.conf
#2. Zabbix Server 日志配置缺失
# ERROR: "LogType" "file" parameter requires "LogFile" parameter to be set
# 添加日志配置到 zabbix_server.conf
echo "LogType=file" >> /etc/zabbix/zabbix_server.conf
echo "LogFile=/var/log/zabbix/zabbix_server.log" >> /etc/zabbix/zabbix_server.conf
echo "LogFileSize=0" >> /etc/zabbix/zabbix_server.conf
# 创建日志目录
mkdir -p /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
2.3 初始化MySQL数据库
bash
# 登录Mysql 数据库
mysql -uroot -pRoot!123
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Zabbix!123';
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'Zabbix!123';
mysql> CTRL+D
测试在Zabbix Server服务器上能否远程登录Mysql,如果可以登录继续向下走。
bash
# 导入初始数据库结构
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# 输入密码:Zabbix!123
问题&解决:
bash
#1. 数据库用户创建语法错误,在 MySQL 5.7 及更高版本中,创建用户和授权的语法已经分开
-- MySQL 5.7+ 正确语法
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix!123';
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'zabbix';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%';
FLUSH PRIVILEGES;
#2. 分布执行测试
# 第一步:解压 SQL 文件
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz > /tmp/zabbix_setup.sql
# 第二步:导入数据库(会提示输入密码)
mysql -uzabbix -p zabbix < /tmp/zabbix_setup.sql
# 输入密码:Zabbix!123
#3.数据库users 表是空,初始数据没有导入
# 查找包含初始数据的文件
find /usr/share -name "*.sql.gz" | grep zabbix | grep -v create
# 重新导入完整的数据库
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p'Zabbix!123' zabbix
# 检查 users 表是否有数据了
mysql -uzabbix -p'Zabbix!123' -e "USE zabbix; SELECT COUNT(*) FROM users;"
# 检查其他重要表
mysql -uzabbix -p'Zabbix!123' -e "USE zabbix; SELECT COUNT(*) FROM hosts;"
2.4 为Zabbix Server配置数据库
bash
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix!123
问题&解决:
bash
[root@node1 ~]# /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf -f
zabbix_server
[2810781]: ERROR: "LogType" "file" parameter requires "LogFile" parameter to be set
#1. 编辑 Zabbix Server 配置文件
vi /etc/zabbix/zabbix_server.conf
#文末添加
LogType=file
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
# 创建日志目录
mkdir -p /var/log/zabbix
# 设置正确的权限
chown zabbix:zabbix /var/log/zabbix
chmod 755 /var/log/zabbix
# 检查目录权限
ls -la /var/log/zabbix
2.5 配置Zabbix的PHP前端
bash
#修改 /etc/httpd/conf.d/zabbix.conf
# 取消注释并设置:
php_value date.timezone Asia/Shanghai
systemctl restart zabbix-server zabbix-agent httpd # 启动、重启
systemctl enable zabbix-server zabbix-agent httpd # 开机自启
问题&解决:
bash
#1. 修改 /etc/php.ini
sed -i 's/^post_max_size = .*/post_max_size = 16M/' /etc/php.ini
sed -i 's/^max_execution_time = .*/max_execution_time = 300/' /etc/php.ini
sed -i 's/^max_input_time = .*/max_input_time = 300/' /etc/php.ini
# 验证修改
grep -E "^(post_max_size|max_execution_time|max_input_time)" /etc/php.ini
#2. 如果使用 PHP-FPM,检查其配置
systemctl status php-fpm 2>/dev/null && echo "PHP-FPM is running"
#3. 如果有 PHP-FPM,也需要重启
systemctl restart php-fpm 2>/dev/null
#4. 可选,httpd 和 nginx 端口冲突
systemctl stop nginx
systemctl disable nginx
2.6 配置zabbix 前端(WEB UI)
打开浏览器:http://node1/zabbix
bash
#1.Zabbix Web 界面无法自动创建配置文件
#无法创建配置文件 "/etc/zabbix/web/zabbix.conf.php"
mkdir -p /etc/zabbix/web
chown apache:apache /etc/zabbix/web
chmod 755 /etc/zabbix/web
cat > /etc/zabbix/web/zabbix.conf.php << 'EOF'
<?php
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'Zabbix!123';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
EOF
chown apache:apache /etc/zabbix/web/zabbix.conf.php
chmod 644 /etc/zabbix/web/zabbix.conf.php



初始账户密码Admin/zabbix ,登录


二、运维监控Grafana部署
Grafana支持常见的绝大多数操作系统,如windowsmac1inux同时也支持部署在docker中。
对windows mac系统或docker部署有兴趣的同学,请参考:https://grafana.com/grafana/download
1. 安装Grafana
bash
# 创建grafana的yum源文件
sudo vim /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
#保存退出后,安装grafana
yum install grafana -y
1.1 问题&解决:
- 网络下载速度慢
bash
# 删除原有配置
sudo rm -f /etc/yum.repos.d/grafana.repo
# 使用清华镜像源
sudo tee /etc/yum.repos.d/grafana.repo << 'EOF'
[grafana]
name=grafana
baseurl=https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/
repo_gpgcheck=0
enabled=1
gpgcheck=0
EOF
# 清理缓存重新安装
sudo yum clean all
sudo yum install grafana -y
- GPG密钥验证失败

bash
# 解决方案1:跳过GPG检查安装
sudo yum install grafana --nogpgcheck -y
# 解决方案2:修改repo文件禁用GPG
sudo tee /etc/yum.repos.d/grafana.repo << 'EOF'
[grafana]
name=grafana
baseurl=https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/
repo_gpgcheck=0
enabled=1
gpgcheck=0
EOF
- 服务未找到:Failed to start grafana-server.service: Unit grafana-server.service not found.
bash
# 检查是否安装成功
rpm -qa | grep grafana
# 检查服务文件
ls -la /usr/lib/systemd/system/grafana-server.service
# 如果未安装,重新安装
sudo yum install grafana --nogpgcheck -y
2. 配置MySQL数据库
bash
# 登录MySQL(根据您的MySQL安装方式调整)
mysql -u root -p
# 在MySQL中执行
CREATE DATABASE grafana CHARACTER SET utf8 COLLATE utf8_general_ci;
exit
2.1 问题&解决:
MySQL连接被拒绝 (Error 1045): MySQL 8.0+ 默认使用 caching_sha2_password 认证插件,与Grafana不兼容
bash
# 修改认证插件为mysql_native_password
mysql -u root -p << 'EOF'
ALTER USER 'grafana'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Grafana1123';
FLUSH PRIVILEGES;
SELECT user, host, plugin FROM mysql.user WHERE user = 'grafana';
EOF
3. 配置grafana
bash
sudo vim /etc/grafana/grafana.ini
[database]
# 数据库类型
type = mysql
# 数据库连接信息
host = 127.0.0.1:3306
name = grafana
user = root
password = Grafana!123
# 使用TLS连接(根据实际情况调整)
ssl_mode = disable
# 其他保持默认或根据需要调整
max_idle_conn = 2
max_open_conn = 0
conn_max_lifetime = 14400
4. 启动Grafana服务
bash
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动grafana服务
sudo systemctl start grafana-server
# 设置开机自启
sudo systemctl enable grafana-server
# 检查服务状态
sudo systemctl status grafana-server
5. 访问Grafana
打开浏览器访问:http://node1:3000 默认账户密码:admin/admin

