sql server查看某用户最近一次使用时间_记一次zabbix监控的使用

b835f37566f351ac379a0d6406d4216b.png

一.背景

工作中有几个应用,分别使用十几台机器,然后这些机器或者机器上的进程偶尔会down掉,从而影响使用,而公司自带的监控体量比较大,用起来没办法作到定制而且加载的时候还比较慢,在此条件下,我选择使用zabbix来做一次简单的定制化监控

感觉zabbix使用起来不难,在网上找一下技术博客,然后就阔以进行安装使用了,真正需要考虑的是阈值的设置以及zabbix目前已有的功能是否能满足当前业务的需求(本人比较懒,不是必须的情况下不想自己写脚本)


二、zabbix使用环境以及zabbix安装

服务器

这里简单的写下(ps:不是实际上的服务器域名):

http://zabbix-server.com:zabbix服务器

zabbix-agent01.com: agent端1

zabbix-agent02.com: agent端2

安装

1.安装php

安装下载源

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装PHP7(php版本低可能造成其他问题)

yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64
yum install php70w-devel

当执行php -v 不报错时,即为php安装成功

2.安装zabbix

安装zabbix源

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

下载zabbix-server包

yum -y install zabbix-server-mysql zabbix-web-mysql

ps:当出现问题的时候google下,我在批量安装的时候也出现各种各样的错误,比方说rpm-db出问题、yum无法使用、zabbix源出问题等,google上都有对应的处理结果的

3.安装mariadb(mysql)

 yum install -y mariadb-server

为root用户设置密码

#mysql
>set password for 'root'@'localhost' = password('root');

创建zabbix数据库并导入zabbix的一些表(用户是zabbix,密码是Pass123!)

>create database zabbix charset 'utf8';
>grant all privileges on zabbix.* to zabbix@localhost identified by 'Pass123!'; 
>flush privileges;

导入表结构

#cd /usr/share/doc/zabbix-server-mysql-3.4.15/
#zcat create.sql.gz | mysql -uzabbix -pPass123! -D zabbix 

ps:在实际应用中,sql所在的目录和你安装的zabbix版本有关系,勿直接复制使用以上命令

查看是否导入成功

mysql> show tables from zabbix;
mysql>select count(*) tables,table_schema from information_schema.tables where table_schema ="zabbix";

3a204896386afc8e3f07989166c86408.png

4.安装apache(也可以使用nginx)

安装

yum install -y httpd

编辑Zabbix前端的PHP配置

#vim  /etc/httpd/conf.d/zabbix.conf 
添加php_value date.timezone Asia/Shanghai , 如下图所示

b118bd078df8e367de60279145310131.png

启动apache服务

service httpd start 

5.修改zabbix配置文件并启动zabbix服务

修改zabbix_server.conf配置文件

[root@zabbix ~]#vim  /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix                 (用户名)
DBPassword=Pass123!           (密码)
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts  //zabbix默认脚本的执行目录
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

ps:需要注意的是DBHost、DBName、DBUser、DBPassword,我是用的另外一台服务器单独作为DB,所以这里DBHost填写的该服务器的地址,如果是都在一台机器上,直接按照上面写localhost即可

给/etc/zabbix/zabbix_server.conf文件授权,因为执行的时候是用zabbix用户执行的

#chmod -R 755 /etc/zabbix/zabbix_server.conf

启动Zabbix Server服务

#service zabbix-server start

执行到这里,zabbix服务端就已经设置好了.访问,ip/zabbix/ 即可,出现如下所示表示安装成功,然后在点击Next的时候,可能会出现文件无法创建的问题,自己在对应目录手动创建下,然后给775权限即可.默认账号密码是:admin:zabbix

f881f590a37b1c8ca55b215aa88ed106.png

三、zabbix-agent安装

光有服务端没用,我们还需要在要监控的服务器上安装zabbix-agent客户端,然后配置才行

1.安装zabbix下载源(7)

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

安装zabbix下载源(6)

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm

2.下载zabbix-agent

yum -y install zabbix-agent

af88fc5a08579cf84403ca6249344728.png

就将/etc/yum.repo.d/zabbix.repo中的源都从6换成7,参考该解决办法

3.修改zabbix客户端的配置文件( /etc/zabbix/zabbix_agentd.conf )

7f281ae3cd775f9caa66fd807b10fbdd.png

server 以及severActive填写 http://zabbix-server.com(zabbix服务端的ip,这里以域名代替),HostnameItem填写http://zabbix-agent01.com/zabbix-agent02.com (填写服务器的域名)即可.

4.给配置文件授权并开启zabbix-agent服务

# chmod 775 /etc/zabbix/zabbix_agentd.conf //授权
# service zabbix-agent start //开启zabbix-agent服务

四、zabbix设置监控

上面的设置都比较简单,在网上找篇技术博客就能上手了.

下面说下实际的需求:

1.每个应用都有几台服务器,然后每个应用上的服务都是一样的,监控一样的内容,然后达到了阈值后就钉钉报警

2.监控进程、监控服务器上的日志

3.其中一个应用需要通过执行某个脚本,通过判断脚本的执行结果来判断是否报警

4.当报警内容没解决的时候,工作时间想每20min重复报警一次,非工作时间不想重复报警(因为非工作时间本来就没人看)

...................................

解决方案:

FOR 1:

1.在每台主机上安装zabbix-agent客户端,具体怎么安装见上面的教程

2.在zabbix的web端页面中建几个主机分组:应用A、应用B、应用C...

3.添加主机,将zabbix-agent客户端都添加到zabbix服务端中,并根据应用的不同划分到不同的分组(之后在设置action的时候会用到)

4.根据每个应用的实际需求来新增模板(模板适合有多个机器都需要一样的环境),然后在模板中选择机器,选择好了以后,模板会应用到你选择的机器中

FOR 2:

1.监控进程使用的键值对是proc.num[,root,all,xx],第一个参数建议不填写,第二个参数是进程的启动用户(貌似只是简单的根据grep 用户筛选),第三个参数是进程的状态,第四个参数会根据值进行筛选(支持正则表达式比方说(a|b).*master).

2.监控服务器上的日志需要使用zabbix客户端(主动式),需要用到log表达式,这个我还在测试中

FOR 3:

需要自定义监控来实现该功能,在zabbix-agent端设置定义好的键值对,然后在zabbix服务端进行引用即可,具体的可百度或google,不难,这里只是提供思路

FOR 4:

实现时的第一反映是写脚本来实现该功能,然后实现起来也比较麻烦,当实现完成了以后,突然发现Action部分可以根据时间段来进行设置(大概我最开始的时候眼瞎了)。实现该功能可以考虑针对主机群组里面的监控项设置两个Action,一个是工作日每20min报警一次,一个是非工作日只报警一次.

................................


五、FAQ

Q:脚本一直无法被触发,已在zabbix服务端测试脚本可以使用

A:该问题一般是权限问题导致的:

1.检查脚本文件的权限,看zabbix用户是否可以执行

2.检查用户的权限,报警会通过某个用户发消息,检查该用户的权限(无特殊要求可将该用户设置为管理员权限)

Q:当一个监控项已经触发报警时,我停掉了该主机的该项监控项,但是报警依旧还是继续....

A:还在排查中,有同学遇到过的话帮忙解答下

Q:当报警没解决时,到了非工作时间段,还是一直发报警信息

A:目前认为触发action的时间筛选是根据触发报警的时间,而不是根据当前时间

Q:监控的服务器出于未知原因导致当监控的进程down掉后,zabbix-agent进程也会down掉,从而造成无法有效的监控,报警信息只是zabbix-agent down掉了

A:在该服务器上写了一个一分钟执行一次的crontab表达式,当监控到zabbix-agent down的时候,重启zabbi-agent服务....

一些使用中的小坑:

1:zabbix模板中去掉某个主机后,该模板的监控项和触发器依然还会留在那个主机上,但是不再是挂在模板下了,而是单独的存在了....(会造成一直报警)【解决:从模板中点击取消链接并清理.....】

d2b687ef59cf9bfba81f485dc8ec92ad.png

2.当action触发后,再修改action,zabbix还是依然使用的老的action(不明所以...)

3.zabbix执行脚本的超时时间需要自己设置,不然很容易报超时的问题(在动作日志中看),但是实际上脚本还是执行成功了.


六、其他

之后会陆续补充上一些实际应用中的需求...

思考:

1.需要监控jenkins上执行的任务,然后进行报警,jenkins已有的邮件服务不如钉钉报警(钉钉工作时一直都是开的)

2.针对进程做一些服务自愈的过程,比方说执行重启脚本或者清理脚本等...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值