动态 版块 发帖 消息 我的
Loading...
小绿叶技术博客
小绿叶技术博客
小绿叶技术Lv153   
linux下安装zabbix服务器shell脚本-添加主机-邮件监控报警zabbix-自动化运维     

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

 4  已被阅读了1573次  楼主 2020-07-05 11:17:49
回复列表
admin
4F
小绿叶技术Lv153   
centos7安装kong和kong-dashboard:https://www.cnblogs.com/miaoweiye/p/11950113.html
 1   2021-12-14 20:28:30  回复
admin
3F
小绿叶技术Lv153   
zabbix 监控web端口:https://www.cnblogs.com/pingfanvbn/p/10637287.html
 1   2021-12-14 20:12:24  回复

回复:linux下安装zabbix服务器shell脚本-添加主机-邮件监控报警zabbix-自动化运维

guest
登录之后更精彩~
Powered by HadSky 7.12.10
© 2015-2023 PuYueTian
您的IP:8.219.134.200,2023-10-04 00:31:02,Processed in 0.04231 second(s).
Powered by HadSky
小绿叶技术博客