1.手动安装,2.脚本自动安装
1.手动安装
yum install -y ntpdate # 安装时间工具
timedatectl set-timezone Asia/Shanghai
# 设置时区:亚洲/上海
systemctl restart ntpdate # 重新启动ntp
systemctl enable ntpdate # 添加开机启动; system [ˈsɪstəm] 系统; enable [ɛˈnebəl] 启动;
cat /etc/redhat-release # 查看系统版本
yum install -y wget # 下载工具
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# -U upgrade [ʌpˈɡreɪd] 改进
# -v verbose [vəːˈbəʊs] 沉长的;provide more detailed output [prəˈvʌɪd] [mɔr] [ˈdiːteɪld] [ˈaʊtpʊt] 提供更详细的输出
# -h hash [haʃ] 在...什么(打撒,混杂);print hash marks as package installs [mɑːks]标记 [ˈpakɪdʒ] [ɪnˈstɔːl]安装包 ;在软件包安装时打印散列标记
wget -rndp /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O 下载文件到指定目录;此处是替换原有文件
systemctl stop firewalld # 关闭防火墙 firewall [ˈfaɪrwɑl]
setenforce 0 # 临时关闭selinux;永久关闭:sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config ; reboot
yum -y install httpd mariadb mariadb-server php php-mysql php-bcmath php-mbstring zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 安装mariadb 等软件
sed -i s/index.html/index.php/g /etc/httpd/conf/httpd.conf
# 修改默认访问文件; find / -name "httpd.conf" | grep "etc" # 查找 etc目录下的这个文件
# httpd.conf 修改 index 添加运用:x-httpd-php .php 去过滤grep Add
cat -n `find / -name "httpd.conf" | grep etc` | grep "AddType application"
# cat -n 查看文件显示行号;`find / -name "httpd.conf" | grep etc` 反单引号是执行结果为一个整体变量;find 查找文件路径
# grep 查找
sed -i "272 a\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# 添加运用的位置 ; a\ 是在指定272行下面插入字符
# 由上个查看行号有四行,任意位置可以添加,我这里是272行
cat -n /etc/php.ini | grep "date.timezone" # 查看时间区域行号;我这里是878行
sed -i "878 a\date.timezone = Asia/Shanghai" /etc/php.ini
systemctl start mariadb # 重启mariadb数据库
systemctl enable mariadb # enable [ɛˈnebəl] 启动;开机启动
mysql # 默认没有密码,直接mysql 进入数据库;设置密码后需要 mysql -uroot -p密码 进入数据库
set password = password('eisccn') ; # 设置密码
create database zabbix character set utf8 collate utf8_bin;
# create [kriˈet] 创建 ;database [ˈdædəˌbeɪs] 数据库;character [ˈkɛrɪktər] 字符,设置字符类型,collate [kəˈlet] 核对字符
# 登陆数据库,创建库编码为utf8
grant all on zabbix.* to 'zabbix'@'localhost' identified by '123'
# grant [grænt] 授权;all 所有,on 在...上; 授予zabbix账户在 localhost [ləʊkæl'həʊst] 本机的所有权限; identified [aɪ'dentɪfaɪd] 识别(设置密码)
# identified [aɪ'dentɪfaɪd] 标识;by 由 123密码:设置zabbix 的 DBPassword
# 123 是密码,需要单引号,数据库账户和本机需要
find / -name "create.sql.gz" # 查找数据库文件路径
zcat /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz | mysql -uzabbix -p123 zabbix
# 将查到的文件导入数据库账户 zabbix 下的库名zabbix下
cat -n /etc/zabbix/zabbix_server.conf | grep DBPassword
# 查看到是124行
sed -i "$NRuser a\DBPassword=123" /etc/zabbix/zabbix_server.conf
# 配置密码
/usr/bin/systemctl restart httpd zabbix-server zabbix-agent
/usr/bin/systemctl enable httpd zabbix-server zabbix-agent
# enable [ɛˈnebəl] 启动; 开机启动
#################################添加主机####################################
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum list # 更新yum
yum -y install zabbix-agent
read -p "请输入Zabbix-serve的ip地址:" server_IP
sed -i s/127.0.0.1/$server_IP/g /etc/zabbix/zabbix_agentd.conf
/bin/systemctl restart zabbix-agent.service
网页操作:
ZABBIX 顶部导航栏 ---> 配置 --- 主机群组 --- 创建主机群组 --- 定义名称:ceshi --- 点击添加
ZABBIX 顶部导航栏 ---> 配置 --- 主机 --- 创建主机 ---
主机名称:zabbix_ceshi
群组: 选择刚创建的 ceshi
agent代理程序的接口: 被监控的主机IP地址, 端口10050 保存
ZABBIX 顶部导航栏 ---> 配置 --- 主机 --- 模版 --- 选择模板 Template OS Linux by Zabbix agent --- 更新
ps aux | grep zabbix # 查看服务是否启动
yum install -y telnet # 端口测试工具
telnet x.x.x.x 10050 # 测试端口是否联通
再到首页查看状态
##########################################邮件报警ping监控###################################################
systemctl stop firewalld # 关闭防火墙
yum install fping -y # 在server和proxy端均安装fping
FpingLocation=/usr/sbin/fping # 在server和proxy端的配置文件里面打开注释
telnet hc1.ssh.gs 10050 # ping 端口
ZABBIX 顶部导航栏 ---> 配置 --- 主机群组 --- 点击刚刚创建的用户组里的用户zabbix_cesshi --- 监控项 --- 创建监控项
名称:ping test
类型:简单检查
键值:icmpping[43.225.156.172,2,1000,68,3000]
主机接口:默认
信息类型:数字
更新间隔:30s
自定义时间间隔:类型:灵活 间隔:50s 期间:默认
历史数据保留时长:90d
储存时间 :365d
查看值:不变
应用集:无
保存
ZABBIX 顶部导航栏 ---> 配置 --- 主机群组 --- 点击刚刚创建的用户组里的用户zabbix_cesshi --- 监控项 --- 触发器 --- 创建触发器
名称:fping
严重性:警告
表达式:选择 ping test
保存
ZABBIX 顶部导航栏 ---> 配置 --- 主机群组 --- 点击刚刚创建的用户组里的用户zabbix_cesshi --- 图形 --- 创建图形
名称:fping
监控项 --- 添加 --- ping test
添加保存
##########################################实现邮件报警功能 server 端口配置###################################################
yum install mailx -y # 安装linux邮件工具,在控制节点:server 端进行操作; agent 是被监控端
vi /etc/mail.rc
set bsdcompat
set sendcharsets=iso-8859-1,utf-8
set from=xitong-mail@eisc.cn
set smtp=smtp://smtp.exmail.qq.com
set smtp-auth-user=xitong-mail@eisc.cn
set smtp-auth-password=xxxxxx
set smtp-auth=login
# 编辑邮件登陆配置信息
echo "这是一封测试邮件" | mail -s "zabbix" xxx@eisc.cn
# 测试邮件发送是否正常
mkdir -p /data/zabbix_server/data/alertscripts # 创建发邮件发警的脚本所在目录
zabbix=`find / -name "zabbix_server.conf"` # 查找zabbix配置文件目录,将结果赋值给zabbix变量
cat -n $zabbix | grep "AlertScriptsPath" # 查看需要更改的位置
sed -i "517 s/AlertScriptsPath.*/AlertScriptsPath=\/data\/zabbix_server\/data\/alertscripts/g" $zabbix
# 517 指定517行的内容进行修改
# sed 修改, 将AlertScriptsPath.* 后面的所有内容修改为:AlertScriptsPath=/data/zabbix_server/data/alertscripts 特殊符号 /,用转译 \
systemctl restart zabbix-server.service # 重启服务
vi /data/zabbix_server/data/alertscripts/mailx.sh # 编写发邮件脚本
#!/bin/bash
#echo "$3" | mail -s "$2" "$1"
FILE=/tmp/mailtmp${RANDOM}.txt
touch $FILE
echo "$3" >$FILE
dos2unix -k $FILE
mailx -v -s "$2" "$1" < $FILE
rm -rf $FILE
chmod +x /data/zabbix_server/data/alertscripts/mailx.sh
chown zabbix:zabbix /data/zabbix_server/data/alertscripts/mailx.sh
# 脚本增加执行权限
sudo -u zabbix /data/zabbix_server/data/alertscripts/mailx.sh xxx@eisc.cn "zabbix alert" "/etc/passwd is changed"
# 测试一封邮件
# zabbix页面配置web
ZABBIX 顶部导航栏 ---> 管理 ---> 报警媒介类型 ---> 创建媒体类型 --->
名称:agent 报警器
类型:脚本
脚本名称:mailx.sh
脚本参数(增加三个):
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
# 创建用户 email
导航栏 --- 管理 --- 用户 --- 右上角创建用户 ---
别名:email
选择群组: Zabbix administrators
密码:aaaassss
保存
# 创建用户组
导航栏 --- 管理 --- 用户群组 --- 右上角创建用户群组
组名:emailgroup
用户(点击选择):email
再点击二级栏目的权限为读写
保存
# 配置用户报警媒介:
导航栏 --- 管理 --- 报警媒介类型 --- 创建媒体类型 --- 类型选择脚本
名称:Email脚本
类型:脚本
脚本名称:mail.sh
# 点击添加,保存
# alert [əˈlərt] 报警 ; to send [sɛnd tu] 发送到 ; message [ˈmɛsɪdʒ] 消息
#用户配置
ZABBIX 顶部导航栏 ---> 管理 ---> 用户 ---> Admin ---> 报警媒介 ---> 添加 --->
类型:agent 报警器
接受人: xxx@eisc.cn
启用时间默认
如果存在严重性则使用:全选
勾选已启用
点击添加
# 配置动作
ZABBIX 顶部导航栏 ---> 配置 ---> 动作 ---> 创建动作
名称: tcping
新的触发条件: 主机 等于 test_centos
选择后,再点击已启用上面的【添加】
再点击【操作】
暂停操作以制止问题
操作【新的】
发送到用户群组:【添加】【emailgroup】 【zabbix administrator】
发送到用户: 【admin】 【email】
点击蓝色【添加】上面的【添加】
再点击【恢复操作】
操作【新的】
发送到用户群组:【添加】【emailgroup】 【zabbix administrator】
发送到用户: 【admin】 【email】
点击蓝色【添加】上面的【添加】
再点击下已启用下面的【添加】 总添加完成
ZABBIX 顶部导航栏 ---> 管理 --- 用户 --- Admin --- 报警媒介 --- 添加 : 填写收件人:xxx@eisc.cn
2.脚本安装
#!/bin/bash
###################check network###################
echo '正在检测网络是否和zabbix官方通畅......'
ping -c 2 www.zabbix.com > /dev/null # 将ping -c 2 拼两次的消息结果重定向到空洞/dev/null,清除消息记录
if [ $? != 0 ];then # $? 是上一个程序执行是否成功的标志,如果执行成功则$? 为0,否则 不为0
echo "请检查网络!"
exit # 运行到此情况(网络异常ping不通);就全局退出脚本 [ˈɛgzɪt] exit 出口
else
echo "网络正常!" # 正常情况不仅仅打印一句话,然后继续往下执行
fi
###################set yum#################################
yum install -y ntpdate
ntpdate -u cn.pool.ntp.org
timedatectl set-timezone Asia/Shanghai #
systemctl start ntpd # start [stɑrt] 开始;开始执行
systemctl enable ntpd # enable [ɛˈnebəl] 启动;加入开启启动
#时间矫正
rm -rf /var/run/yum.pid # yum.pid 作用:防止启动多个进程副本;此处不需要
yum -y install wget
system=`cat /etc/redhat-release | awk -F "." '{print $1}'`
# release [riˈlis] 发布; system [ˈsɪstəm] 系统
# 查看系统版本,awk字段处理以点为分隔符:打印第一列;将结果赋值给变量 system
if [ "$system" == 'CentOS Linux release 7' ];then
# if 判断变量 字符串绝对等于 指定字符串,then 然后执行
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# U更新,升级rpm ;v表示显示安装过程,h表示显示进度
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O 下载文件到指定目录;此处是替换原有文件
systemctl stop firewalld # 关闭防火墙 firewall [ˈfaɪrwɑl]
setenforce 0 # 临时关闭selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
#永久关闭selinux ; disabled [dɪˈsebəld] 废除; config [kən'fɪg] 配置,设置
elif [ "$system" == 'CentOS release 6' ];then
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# base [bes] 基地;mirror [ˈmirəz] 镜像,镜子
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
service iptables stop
setenforce 0 # 临时关闭selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
#永久关闭selinux ; disabled [dɪˈsebəld] 废除; config [kən'fɪg] 配置,设置
fi
##################install###############################
eth=`ip a| grep "BROADCAST" | awk -F ":" 'NR==1{print $2}' | sed "s/ //g"` ; echo "网卡名为:"$eth ;
# 命令 ip a 查看网卡 过滤;broadcast [ˈbrɔːdkɑːst] >广播;字段的行
# awk -F ":" 以冒号为分隔符 ; 选择第一行,第二列,sed删除空格
# 符号 ; 分号表示第一条命令结束,第二条开始
ethCatalog=$(find / -name "*$eth" | grep "/etc/" | sed "s/ //g" ) ; echo "网卡路径为: " $ethCatalog
# catalog [ˈkætəlɔg] 目录
# find 查找网卡名称的路径,grep 过滤/etc 目录下网卡名称。sed删除空格
ip=$(cat $ethCatalog | grep IPADDR | awk -F "=" 'NR==1{print $2}' | sed "s/ //g") ; echo "IP地址为: " $ip
# 查看网卡文件,过滤IPADDR的行,awk -F"=" 分隔符是冒号,打印第一行第二列
sleep 5 # 等待5秒钟;sleep [slip] 睡眠
server(){
yum -y install httpd mariadb mariadb-server php php-mysql php-bcmath php-mbstring
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 安装mariadb 等软件
sed -i s/index.html/index.php/g /etc/httpd/conf/httpd.conf
# 修改默认访问文件
#######################修改配置文件##################
# sed -i "N;286i\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# sed -i "N;880i\date.timezone = Asia/Shanghai" /etc/php.ini
NRhttpd=$(cat -n /etc/httpd/conf/httpd.conf | grep "AddType application/x-gzip .gz .tgz" | awk -F" " '{print $1}' | sed "s/ //g")
# add type [æd] [taɪp] 添加类型; application [ˌæpləˈkeʃən] 运用;
# cat -n 查看文件内容并显示行号
# grep 匹配字符串所在行的整行内容
# awk -F" " 字段处理指定分隔符为空格,打印第一列;删除空格
echo "根据字符串查找的文本中的行号:"$NR
sed -i "/AddType application\/x-httpd-php .php/d" /etc/httpd/conf/httpd.conf
# 在写入前,先删除将要插入的字符串,保证不会重复插入
sed -i "$NRhttpd a\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# $NR a\ 根据查找到行号,的下一行插入字符串
# i\ 是上一行插入字符串
NRdate=`cat -n /etc/php.ini | grep ";date.timezone =" | awk -F" " '{print $1}' | sed "s/ //g"` ; echo $NRdate
sed -i "/Asia\/Shanghai/d" /etc/php.ini
sed -i "$NRdate a\date.timezone = Asia/Shanghai" /etc/php.ini
# 其中符号 ; 表示注释符号。
####################################################
/usr/bin/systemctl start mariadb # 重启mariadb数据库
/usr/bin/systemctl enable mariadb # enable [ɛˈnebəl] 启动;开机启动
mysql -e "set password = password('WWWeisccn111@#')"
# 进入数据库设置密码
mysql -uroot -pWWWeisccn111@# -e "create database zabbix character set utf8 collate utf8_bin;"
# create [kriˈet] 创建 ;database [ˈdædəˌbeɪs] 数据库;character [ˈkɛrɪktər] 字符,设置字符类型,collate [kəˈlet] 核对字符
# 登陆数据库,创建库编码为utf8
mysql -uroot -pWWWeisccn111@# -e "grant all on zabbix.* to 'zabbix'@'localhost' identified by '123'"
# grant [grænt] 授权;all 所有,on 在...上; 授予zabbix账户在 localhost [ləʊkæl'həʊst] 本机的所有权限; identified [aɪ'dentɪfaɪd] 识别(设置密码)
# identified [aɪ'dentɪfaɪd] 标识;by 由 123密码:设置zabbix 的 DBPassword
# 123 是密码,需要单引号,数据库账户和本机需要
# 此处已经修改bugfind查看数据库文件
createmysql=$(find / -name "create.sql.gz") ;
echo "$createmysql
数据库文件导入中,请耐心等待!"
# 查找文件路径并打印
/usr/bin/zcat $createmysql | mysql -uzabbix -p123 zabbix
# 导入数据库,登陆数据,用户名zabbix 密码123,并且进入数据库zabbix
# zcat 查看压缩包的文件,管道到登陆数据库里面去执行
# sed -i "N;110i\DBPassword=123" /etc/zabbix/zabbix_server.conf # 配置zabbix密码
NRuser=`cat -n /etc/zabbix/zabbix_server.conf | grep "DBUser=zabbix" |awk '{print $1}' | sed "s/ //g"` ; echo $NRuser
sed -i "/DBPassword=123/d" /etc/zabbix/zabbix_server.conf
sed -i "$NRuser a\DBPassword=123" /etc/zabbix/zabbix_server.conf
/usr/bin/systemctl restart httpd zabbix-server zabbix-agent
/usr/bin/systemctl enable httpd zabbix-server zabbix-agent
# enable [ɛˈnebəl] 启动; 开机启动
echo "请用浏览器访问:http://$ip/zabbix
安装配置:
数据库名:zabbix
数据库用户:zabbix
密码:123
登陆账户/密码:Admin/zabbix"
}
agent(){
yum -y install zabbix-agent
read -p "请输入Zabbix-serve的ip地址:" server_IP
sed -i s/127.0.0.1/$server_IP/g /etc/zabbix/zabbix_agentd.conf
/bin/systemctl restart zabbix-agent.service
}
##################install menu###########################
MYDATE=`date +%d/%m/%y` # 定义一个时间变量:格式化字符为:十进制日期,月份,年份抹除100
THIS_HOST=`hostname -s`
USER=`whoami`
while :
do
tput clear
echo "
# cat 与echo 相似,这里打印显示一段话;由 aMAYDAY 开始,也由它来结束;
---------------------------------------------------------
User:$USER Host:$THIS_HOST Date:$MYDATE
# cat 这里直接打印字符串和变量的值
---------------------------------------------------------
1:安装 zabbix-server和zabbix-agent
2:只安装 zabbix-agent
H:帮助
Q:退出
---------------------------------------------------------
" # 结束打印标记
echo -e -n "\tYour Choice [1,2,Q]>" # -e 开启特殊字符转换 \t上一行换行;-n 它的下一行不换行打印;
read CHOICE # 紧接着上一行的打印字符串,接着让用户输入信息,将输入信息写入变量 $CHOICE
case $CHOICE in # 判断变量是一下情形
1) server # 为 1 执行 server 函数
;;
2) agent
;;
3) who
;;
H|h) # 输入为 H 则打印一段话
echo "
Zabbix-server是服务端,Zabbix-agent是客户端!
" # 打印结束,MAYDAY 他为开始,也以他为结束
;;
Q|q) exit 0 # 输入Q 退出
;;
*) echo -e "\t\007 输入有有误!" # 其他所有情况,提示
;;
esac # case 判断结束
echo -e -n "\t按任意键返回菜单!"
read DUMMY
done
# 脚本执行: yum install -y wget ; rm -rf zabbix.sh ; wget eisc.cn/file/shell/zabbix.sh ; chmod 755 zabbix.sh ; source zabbix.sh