测试结束后才想起来的步骤记录,因为是从history扣下来的,可能有漏的或者写错的地方
环境: centos7 + nginx1.18 + php7.2 + zabbix5 + mysql5.7
# mkdir DIR 创建项目文件夹,主要根据自己的项目需求所设置
mkdir -p /data/webroot/zabbix/
mkdir -p /data/logs/zabbix/
useradd -M zabbix
# 安装基础工具包
yum install -y less vim lrzsz bash-completion yum unzip zip pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
# Install Nginx (yum install nginx -y)
tar -zxvf nginx-1.18.0.tar.gz
cd /nginx-1.18.0/ && ./configure --prefix=/data/nginx && make && make install
ln -s /data/nginx/sbin/nginx /usr/bin/
# Install php72
# 我是提前在网速快的机器提前下载下来的然后在yum install ./php72/*
# yum install --downloadonly --downloaddir=/php72/ php72w php72w-mysqlnd php72w-gd php72w-xmlrpc php72w-bcmath php72w-xml php72w-pdo php72w-mbstring php72w-gd php72w-fpm php72w-devel
yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php72w php72w-mysqlnd php72w-gd php72w-xmlrpc php72w-bcmath php72w-xml php72w-pdo php72w-mbstring php72w-gd php72w-fpm php72w-devel -y
# 配置文件
cat << EOF > /etc/nginx/conf.d/zabbix.conf
server {
listen 8888;
root /data/zabbix/webroot/zabbix/;
location / {
index index.php index.html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
EOF
systemctl start php-fpm
# index.php 测试 <?php phpinfo() ?>
####################################################################################
# Install zabbix5.0.5
yum install -y mysql-devel fping net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel libevent-devel.x86_64 libcurl-devel
tar -zxvf zabbix5.0.5.tar.gz
# 配置zabbix数据库(mysql可以用下面的docker版装;或者云数据库)
yum install mysql-server mysql -y
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix_Test2020';
flush privileges;
cd zabbix-5.0.5/database/mysql/
mysql -uzabbix -pzabbix_Test2020 zabbix < schema.sql
mysql -uzabbix -pzabbix_Test2020 zabbix < images.sql
mysql -uzabbix -pzabbix_Test2020 zabbix < data.sql
cd /zabbix-5.0.5 && ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 && make install
cp misc/init.d/tru64/zabbix_* /etc/init.d/
sed -i "s#DAEMON=.*#DAEMON=/usr/local/zabbix/sbin/zabbix_agentd#g" /etc/init.d/zabbix_agentd
sed -i "s#DAEMON=.*#DAEMON=/usr/local/zabbix/sbin/zabbix_server#g" /etc/init.d/zabbix_server
chmod o+x /etc/init.d/zabbix_*
cp -r zabbix-5.0.5/ui /data/zabbix/webroot/zabbix
# win + R -> fonts -> 拷贝想要的字体
cp ~/MSYH.TTF /data/zabbix/webroot/zabbix/assets/fonts/msyh.ttf
# 查fonts
vim /data/zabbix/webroot/zabbix/include/defines.inc.php
cd /data/webroot/zabbix/conf/ && cp zabbix.conf.php.example zabbix.conf.php
cat << EOF > /usr/local/zabbix/etc/zabbix_server.conf
User=zabbix
ListenPort=10051
ListenIP=0.0.0.0
AllowRoot=0
LogFile=/data/zabbix/logs/zabbix_server.log
LogType=file
LogFileSize=0
DebugLevel=3
StartTrappers=5
Timeout=15
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix_Test2020
DBPort=3306
StartAlerters=10
AlertScriptsPath=/data/zabbix/alertscripts
EOF
cat << EOF > /usr/local/zabbix/etc/zabbix_agentd.conf
User=zabbix
AllowRoot=0
Server=192.168.10.101
StartAgents=1
ServerActive=192.168.10.101
Hostname=192.168.10.102
LogType=file
LogFileSize=0
LogFile=/data/zabbix/logs/zabbix_agentd.log
Timeout=30
EOF
sed -i '/post_max_size/s/8/16/g;/max_execution_time/s/30/300/g;/max_input_time/s/60/300/g;s/\;date.timezone.* /date.timezone \=PRC/g;s/\;always_populate_raw_post_data/always_populate_raw_post_data/g' /etc/php.ini
systemctl restart php-fpm
# Clean ALL 清理垃圾包
rm -rf nginx-1.18.0 && yum clean all
chown -R zabbix.zabbix /data/zabbix/
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start
# docker 版mysql
# 安装docker服务
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce-18.09.9-3.el7 -y
systemctl restart docker
cat << EOF > /etc/docker/dameon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
systemctl restart docker
# 部署mysql服务(如果使用本地,且本地没有则部署)
rpm -qa | grep mysql- >> /dev/null
if [ $? -ne 0 ];
then
mkdir -p /data/mysql/config
cat << EOF > /data/mysql/config/my.cnf
[mysqld]
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
datadir=/var/lib/mysql
symbolic-links=0
lower_case_table_names=1
[client]
default-character-set=utf8mb4
EOF
docker run -p 3306:3306 --name mysql-server \
--restart always \
--privileged=true \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_Test2020" \
-e MYSQL_ROOT_PASSWORD="zabbix_Test2020" \
-v /data/mysql/config:/etc/mysql \
-v /data/mysql/data:/var/lib/mysql \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
fi
# 告警信息参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
美化邮件告警样式
<!-- 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! -->
<table border="1" bordercolor="black" cellspacing="0px" cellpadding="4px">
<tr >
<td>告警主机</td>
<td bgcolor="#FF3333">{HOSTNAME1}</td>
</tr>
<tr>
<td>告警时间</td>
<td>{EVENT.DATE} {EVENT.TIME}</td>
</tr>
<tr>
<td>告警等级</td>
<td>{TRIGGER.SEVERITY}</td>
</tr>
<tr>
<td>告警信息</td>
<td>{TRIGGER.NAME}</td>
</tr>
<tr>
<td>告警项目</td>
<td>{TRIGGER.KEY1}</td>
</tr>
<tr >
<td>问题详情</td>
<td bgcolor="#FF3333">{EVENT.OPDATA}</td>
</tr>
<tr>
<td>事件ID</td>
<td>{EVENT.ID}</td>
</tr>
</table>
<!-- 恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复! -->
<table border="1" bordercolor="black" cellspacing="0px" cellpadding="4px">
<tr >
<td>告警主机</td>
<td bgcolor="#6f3">{HOSTNAME1}</td>
</tr>
<tr>
<td>告警时间</td>
<td>{EVENT.DATE} {EVENT.TIME}</td>
</tr>
<tr>
<td>告警等级</td>
<td>{TRIGGER.SEVERITY}</td>
</tr>
<tr>
<td>告警信息</td>
<td>{TRIGGER.NAME}</td>
</tr>
<tr>
<td>告警项目</td>
<td>{TRIGGER.KEY1}</td>
</tr>
<tr >
<td>问题详情</td>
<td bgcolor="#6f3">{EVENT.OPDATA}</td>
</tr>
<tr>
<td>事件ID</td>
<td>{EVENT.ID}</td>
</tr>
</table>
数据库空间计算公式(来自:https://blog.51cto.com/732233048/1640170)
zabbix配置:固定大小,一般<10MB 历史数据:天数*(监控项总数/刷新频率)24小时3600秒50字节
趋势数据:天数(监控项总数/3600)24小时3600秒128字节
事件数据:天数事件个数(大概值)24小时3600秒*130字节