zabbix部署+基础模板+自动发现集群ip注册+自定义监控脚本

zabbix部署

在线安装

登陆在有网络的环境直接yum install -y zabbix mysql 就完事了
不再阐述啦

参考官网安装文档
https://www.zabbix.com/download
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
yum clean all
yum install -y zabbix-server-mysql zabbix-web-mysql  mysql httpd

离线安装

在有网络的服务器download下来zabbix mysql的rpm包

sudo yumdownloader --resolve --destdir=/tmp/Zabbix  zabbix-server-mysql zabbix-web-mysql zabbix-agent

直接安装即可

1. 准备部署

将对应rpm离线安装包copy至新服务器,特别注意是本地yum仓库,由于要使用到必要的依赖包文件,可以考虑选择去掉部分httpd自带的离线依赖rpm包(本地yum仓库就内置这些依赖包如果有可以去掉如下lib开头的包↓)

[root@crm01-acrm-app02 zabbix173]# ls yilai/
libevent-1.4.13-1.i386.rpm  libevent-2.0.21-4.2.alios7.x86_64.rpm  libtool-ltdl-1.5.22-7.el5_4.i386.rpm  libtool-ltdl-2.4.2-20.2.alios7.x86_64.rpm

2. 安装依赖

前提先安装zabbix所需的依赖环境包(确保有本地仓库)

yum install -y gcc gcc-c++ libxml2-devel openssl-devel bzip2-devel libjpeg-turbo-devel ncurses-devel net-snmp-libs libevent libtool-ltdl libaprutil-l*
进入安装包目录执行安装:
[root@crm01-acrm-app02 zabbix4.2.3.rpm]# rpm -ivh --force --nodeps *.rpm

在这里插入图片描述

3. 配置文件

开始配置zabbix 服务端、客户端配置文件,前提先备份一份:
在这里插入图片描述
配置如下,切记注意几个关键点:
DB数据库对应的信息正确
StartDiscoverers是用于后期针对zabbix服务器自动发现设置的一个值
100表示在单个自动发现规则内只能发现100台主机
后期若自动发现批量添加主机节点无法发现主机(端口服务均正常的情况下)
可以考虑回来加大值重启zabbix_server即可,eg:192.168.2.1-100 只能发现100台

[root@crm01-acrm-app02 zabbix]# cat > zabbix_server.conf << EOF
> ListenPort=10051
> LogFile=/var/log/zabbix/zabbix_server.log
> LogFileSize=0
> PidFile=/var/run/zabbix/zabbix_server.pid
> SocketDir=/var/run/zabbix
> DBHost=192.168.248.171
> DBName=zabbix173
> DBUser=zabbix173
> DBPassword=zabbix173
> StartPollers=10
> StartIPMIPollers=10
> StartTrappers=10
> StartPingers=10
> StartDiscoverers=100
> SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
> ListenIP=192.168.248.173
> CacheSize=256M
> StartDBSyncers=40
> HistoryCacheSize=128M
> TrendCacheSize=128M
> ValueCacheSize=128M
> Timeout=30
> Timeout=4
> AlertScriptsPath=/usr/lib/zabbix/alertscripts
> ExternalScripts=/usr/lib/zabbix/externalscripts
> LogSlowQueries=10000
> StartProxyPollers=50
> StatsAllowedIP=127.0.0.1
> EOF
配置客户端文件注意配置好宿主机对应的ip:
[root@crm01-acrm-app02 plhx]# egrep -v "#|^$" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.248.173
ServerActive=192.168.248.173
Hostname=crm01-acrm-app02
Include=/etc/zabbix/zabbix_agentd.d/*.conf
针对批量加入集群监控的node,可以不添加对应的hostname,默认就是被动式的模式

4. 配置时区

接下来配置zabbix的http页面配置修改时区:

[root@crm01-acrm-app02 conf.d]# more /etc/httpd/conf.d/zabbix.conf | grep Asia/Shanghai
        php_value date.timezone Asia/Shanghai
若此时发现竟然没有zabbix.conf配置文件,那么就检查本机是否安装了zabbix-webrpm安装包,安装即可默认上传至httpd目录:
[root@crm01-acrm-app02 conf.d]# rpm -qa | grep zabbix
zabbix-server-mysql-4.2.3-2.el7.x86_64
zabbix-web-mysql-4.2.3-2.el7.noarch
zabbix-web-4.2.3-2.el7.noarch
zabbix-agent-4.2.3-2.el7.x86_64

5. 配置数据库

前提要确保有mysql数据库环境,或者其他环境,没有网络的情况就二进制安装编译mysql,有网络就yum install mysql -y解决:
在这里插入图片描述

Create initial database  # mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> quit;

6. 导入数据库表

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix
确保有mysql 客户端命令便于导入数据库表结构,若发现没有sql文件,检查是否安装了zabbix-server-mysql:

7. 启动服务

systemctl status httpd.service zabbix-server.service zabbix-agent.service
systemctl restart httpd.service zabbix-server.service zabbix-agent.service
curl http://192.168.248.173/zabbix/
successful

在这里插入图片描述

8. 修改字体

切记zabbix-server刚启动agentd是离线的状态,可以进去配置确认客户端监听ip,更改监听ip即可,由于系统字体监控图表显示异常,所以决定修改字体样式
在这里插入图片描述

ll /etc/alternatives/zabbix-web-font
/usr/share/fonts/dejavu/DejaVuSans.ttf
将自己的字体替换即可
cp /root/zabbix173/simkai.ttf /usr/share/fonts/dejavu/DejaVuSans.ttf
若没有对应的目录创建一下就好啦dejavu

在这里插入图片描述

9. 配置短信报警

添加短信报警脚本在/usr/lib/zabbix/alertscripts

cat senddx.sh 
#!/bin/bash
to=$1
subject=$2
body=$3
#此处的xxxxx就是api接口地址。
#echo $body >> /usr/lib/zabbix/alertscripts/send.log
#echo "$3" >> /usr/lib/zabbix/alertscripts/send.log
#echo $3 >> /usr/lib/zabbix/alertscripts/send.log
echo "$body" >> /usr/lib/zabbix/alertscripts/send.log
date +%F_____%T >> /usr/lib/zabbix/alertscripts/send.log

#curl 'http://jt.crm.chinapost.com.cn/push-client/CsfCrmServlet?servicecode=push_IAccmSV_batchSendSmsMessage' \
curl 'http://10.3.156.111:8080/push-client/CsfCrmServlet?servicecode=push_IAccmSV_batchSendSmsMessage' \
-H 'Content-Type: application/json' \
-d @<(cat <<EOF 
{
    "sceneCode": "GJ_JKXTGJTZ",
    "upDownFlag": 1,
    "messages":[
        {
            "messageId": 1,
            "params": [
                {
                    "paramName": "evalMatches",
                    "paramValue": "evalMatches"
                },
                {
                    "paramName": "message",
                    "paramValue": "$body"
                },
                {
                    "paramName": "title",
                    "paramValue": "$subject"
                }
            ],
            "target": [
                {
                    "id": 3828202,
                    "targetAddress": "137**********"
                }

            ]
        }
    ]
}
EOF
)

#for i in $3
#do
echo "$body" >> /usr/lib/zabbix/alertscripts/send.log
echo "$subject" >> /usr/lib/zabbix/alertscripts/send.log
date +%F_____%T >> /usr/lib/zabbix/alertscripts/send.log
#done

10. 添加报警媒介

添加报警媒介为脚本类型(自定义脚本短信接口报警)
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

在这里插入图片描述

选项默认即可,想设置大看心情即可:
在这里插入图片描述

11. 创建动作

故障{TRIGGER.STATUS},服务器:{HOST.IP}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.IP}

	告警时间:{EVENT.DATE} {EVENT.TIME}

	告警等级:{TRIGGER.SEVERITY}

	告警信息: {TRIGGER.NAME}

	告警项目:{TRIGGER.KEY1}

	问题详情:{ITEM.NAME}:{ITEM.VALUE}

	当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

	事件 ID:{EVENT.ID}

在这里插入图片描述

12. 添加报警媒介

点击右上角用户头像进入设置。开启报警媒介选择刚刚的自定义报警的媒介名称senddx:
在这里插入图片描述
切记务必要开启所属用户admin对其监控群组的监控读写权限,否则会无法读取到数据触发动作报警:
管理—用户—权限----所以群组读写权限
在这里插入图片描述

13. 配置自动发现动作

配置—动作-----名称discover—主机IP地址 等于 192.168.248.1-245,192.168.249.1-245----添加-----操作----内容默认-----操作----添加到主机群组: Linux servers-----链接到模板: Template App Zabbix Agent, Template OS Linux—添加—完成

在这里插入图片描述

14. 配置自动发现

名称 检查配置 telnet 10050端口
主要的目的就是telnet 10050 只添加拥有10050zabbix agentd客户端的机器
不添加无用机器,及时检测自动发现,若在五秒内无法发现客户端机器,
1、在第一时间要先排查,客户端的conf配置指向的server地址到底是不是自己的zabbix-server地址
2、要检查zabbix-server.log里有自己所需的一切资料,容易突发的情况就是,上面说到的discover参数设置成 100,此时的server只能发现最多100台服务器,若发现不了指定主机可将该值设置大点
StartDiscoverers=100
然后重启zabbix-server 继续观察自动发现机器是否正常是否正常加入群组新主机
在这里插入图片描述

15. 批量互信

[root@zabbix plhx]# cat plhx.sh 
#!/bin/bash
nn=0
USER=root
ip=`cat ./iplist`
for IP in $ip
do
let nn++
for PASS in `head -n $nn pwdlist|tail -1`
do
expect -c "
 spawn ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@$IP
 expect {
 \"(yes/no)\" {send \"yes\r\"; exp_continue}
 \"password:\" {send \"$PASS\r\"; exp_continue}
 }"
if [ $? -eq 0 ]
then
	echo "the host $IP::$PASS is huxin successfully" >> ./hxslist
	echo $IP:$PASS
else
	echo "the host $IP::$PASS is huxin failed" >> ./huxflist
	exit 1;
fi
done
done


注意看脚本很简单的if判断调用务必创建对应的文件
./pwdlist     针对服务器的不同密码列表 最好互信前设置同一个密码来实现互信操作,否则会进行循环遍历的尝试密码登陆,会被服务器识别到恶意破解登陆,会有系统security安全日志提醒,而且费时间最重要的是
./iplist   互信ip服务器列表,./代表与plhx.sh脚本在同级目录执行方便查找
-p 22022  针对不同的服务器端口记得手动配置一下

16. 批量安装

批量安装zabbix_agentd在互信的前提通过ssh免密登陆远程安装node,并将其agentd.conf传输过去启动客户端

> #!/bin/bash
> ip=`cat ./iplist`
> for IP in $ip
> do
> scp -P 22022 -r ./zabbix_agentd.conf ./zabbix-agent-4.2.3-2.el7.x86_64.rpm $IP:/root
> ssh -p 22022 $IP "rpm -ivh --force --nodeps /root/zabbix-agent-4.2.3-2.el7.x86_64.rpm"
> ssh -p 22022 $IP "cp -r /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.confbak"
> ssh -p 22022 $IP "systemctl restart zabbix-agent.service&&systemctl enable zabbix-agent.service&&systemctl status zabbix-agent.service"
> done
> EOF

17. Zabbix自定义监控

举例我们通过shell命令过滤nginx进程
查看nginx进程是否存活
不存活则通过配置触发器触发短信告警通知
在这里插入图片描述
开启允许客户端执行命令动作
UnsafeUserParameters=1
设置zabbix-get-key值
UserParameter=process.count

[root@zabbix plhx]# cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.228.45
ServerActive=192.168.228.45
Include=/etc/zabbix/zabbix_agentd.d/*.conf

UnsafeUserParameters=1 
#UserParameter=process.count[*],sudo ./data/nginx/nginx.sh
UserParameter=process.count,sudo ps -ef | grep nginx |grep -v 'grep' |wc -l



[root@zabbix plhx]# zabbix_get -s 192.168.228.45 -p 10050 -k "process.count"
4
[root@zabbix plhx]# ps -ef |grep nginx
nobody   11657 26891  0 Jun17 ?        00:00:04 nginx: worker process
root     20204     1  0 Jun15 ?        00:00:00 nginx: master process ./nginx
nobody   20205 20204  0 Jun15 ?        00:00:00 nginx: worker process
root     26891     1  0 May27 ?        00:00:00 nginx: master process nginx
root     31490 19940  0 16:43 pts/0    00:00:00 grep --color=auto nginx

此时就可以登录zabbix控制面板,打开
配置-----主机-----监控项----新建监控项—输入对应的上面的设定的key键值
在这里插入图片描述
接着创建触发器条件,当值为0时
也是nginx work进程不存在nginxdown掉的时候
通过短信通知及时告警到手机上,及时处理
一样的逻辑,一样的道理,简单的业务应用监控就可以通过设置参数脚本动作来进行自定义监控:
类似flink集群中的job任务状态就可以通过执行命令过滤出来通过结果0–1 来判断是否存活

UnsafeUserParameters=1
#UserParameter=process.count,sudo flink list -r | grep RUNNING | wc -l 
UserParameter=process.count,sudo /app/hdpusr/flink-1.9.1/bin/flink list -r | grep RUNNING | wc -l

在这里插入图片描述
还可以创建对应的zabbix自定义监控图形面板进行图形化展示监控:
在这里插入图片描述
到此zabbix部署–基础模板添加—自动发现添加集群ip----自定义监控脚本添加介绍完毕

**一定要做一个让自己开心的人哟~~~~~~~~~~**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值