linux运维2017年5月 企业面试 zabbix 常见问题

Zabbix 简介

Zabbix 是一个企业级的开源分布式监控解决方案, 由一个国外的团队持续维护更新, 软件可以自由下载使用, 运作团队靠提供收费的技术支持赢利。

 

 

官方网站http://www.zabbix.com 官方文档:

Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。

 zabbix运行条件   

1.Zabbix Server需运行在 LAMP(Linux+Apache+Mysql+PHP)环境下对硬件要求低 ;                   2.Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。       3.SNMP:支持各类常见的网络设备

 

  Zabbix 功能     

1.具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、 FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强, server提供通用接口, 可以自己开发完善各类监控。

 

  优势劣势


优点:开源,无软件成本投入; Server对设备性能要求低(实际测试环境:虚拟机CentOS5,2GCPU1G内存,监控5台设备, CPU使用率基本保持在10%以下,内存剩余400M以上);支持设备多;支持分布式集中管理;开放式接口,扩展性强 缺点: 中文资料较少。


zabbix组件

    了解完zabbix特性之后,本该进入zabbix安装教程,但是我觉得在安装之前我们很有必要了解一下zabbix进程组成结构,默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。

zabbix_agentd 
客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等

zabbix_get 
zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

zabbix_sender 
zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

zabbix_server 
zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server 
备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

zabbix_proxy 
zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。

zabbix_java_gateway 
zabbix2.0之后引入的一个功能。顾名思义:Java 网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。


zabbix小结 告警与维护配置

zabbix的告警通知非常灵活,支持的通知类型有Email、Jabber、sms、script 。其在设备需要修护时,同样可以提供同nagios 一样的设备维护期间,暂停告警的功能有,而且其相对于nagios 更加灵活。本篇就针对zabbix的告警和设备维护功能进行下说明。

一、media types 告警通知

本篇以脚本通知为例进行说明

1、配置AlertScriptsPath

 # vim /etc/zabbix/zabbix_server.conf找到# AlertScriptsPath=${datadir}/zabbix/alertscripts 行,增加如下内容AlertScriptsPath=/etc/zabbix/alertscripts

配置完成后,需要重启zabbix_server服务生效,在后面media type 写入的脚本名称就会从上面的配置目录中查找并执行。

2、创建media type

步骤为:登录 zabbix web 页面------Administration--------Media types--------Create Media Type(右上角)  ,如下图:

配置完成后,save保存即可。

3、创建Action

步骤为:登录 zabbix web 页面---- Configuration ---- Actions ---- Create action , 如下图

subject为发送主题,message为发送内容(通过message内容的自定义,可以例如在告警时,将其他相关信息也进行通知,可以从侧面了解整个主机的运行情况---某次面试时面试官曾提过的需求),这两者的内容都可以很方便的进行更改。勾选了Recovery message 选项,会在监控项恢复时也会给一个恢复的提示。


condeitions 选项中设置的是触发通知的条件,默认情况下只有A、B两项 ,这里可以设置触发级别、主机组、主机、触发值、应用等 。举例说明下:

1、可以根据告警级别进行通知,如severity 级别大于等于average时,通知OPS运维人员,级别为Disater时通知部门经理或者BOSS (这需要配置两个action);

2、也可以根据时间进行定义,如只在工作时间进行告警通知;

3、如果你喜欢的话,也可以指定不同主机组通知到不同的人;

而且所有条件之间的关系可以是AND或者OR ,默认情况下都是AND,即所有条件都满足时,触发通知。

注:个别主机,如DB主机,晚上有备份任务导致晚上某段时间过载(同时又不是所有主机都这样,又不想增大触发条件的话),可以在configuation ---hosts 里的items 选项里配置通知的时间范围,那里也有 time period 配置选项(从另一方面也反映了zabbix的灵活,有宏观调控,也有微观调控,适用性很强) 。不过要尽可能的都在actions 里进行配置,因为这一般查看具体条件都是在这里 。

下图是action的Operations部分,该项是必填项:

Operation details 是一个比较强的配置项,这里主要有三个知识点---Escalations、remote command 和 event acknowledged,其中Escalations、remote command比较重要 。

operation details 的 step部分主要和escalations 相关,在监控场景中,如果你一天收到100+的短信告警,真有一天“狼”真来了估计你也不会注意到。有了escalations功能,可以实现如下配置(需配置多条operation):

1、在单位时间内(step duration)发送的总的通知次数(to - from +1  次),并通知到相应的组或人;

2、假如条件1中设置的是1800秒内发送1-5 次给OPS运维人员,结果运维人员在该时间段未能处理;我们就可以再增加一个Operations,指定from 5 to 10 (第5到10条告警)通知给 运维经理 ;我们还可以再增加,第11-15条给BOSS ,第16-20条告警时执行一个远程命令。

escalations部分,可以参看官方文档

第二个知识点就是Operation type部分,类型可以是send message进行通知,也可以是remote command :

remote command 可以支持的操作有IPMI、Custom script、ssh、telnet、Global script (其中前两者只能在zabbix server 或 zabbix proxy上操作),该功能是相当牛B的。如,检测到一个tomcat 服务404,我们就可以利用该功能重启tomcat 服务 。

remote command部分可以查看官方页面

第三个功能主要是为有值班人员或上班时间准备的一个功能,当设置这个条件时,如果一个告警的状态被设置为ACK ,则本次告警的后续通知就会停止 。

在一线运维人员接到告警信息时,在zabbix 的首页上,移到相应告警提示的部分,选择主机的ACK 部分 ,点选 NO ,会跳出一个message的窗口,在message里输入相关信息 ,如:误报、因什么什么原因在调试、已通知到相关责任人等 ,并点击Acknowledge 提交,此时的ACK 状态会变成YES 。本次告警也将停止不再进行。直到本次告警解决,下次再次出现同样告警时,该项又会重新变成ACK 。

Acknowledge部分,可以参看官文页面

二、maintenance 维护

在线场景中,经常会遇到这样的情况:在线产品需要进行升级或其他操作,此时又不想将监控系统的完整告警功能进行全部关闭,只临时关闭在线升级主机的告警。这就可以使用zabbix的maintenance功能。具体配置方式如下:

创建maintenance的步骤为:登录 zabbix web 页面---- Configuration-----Maintenance ----- create maintenance period。

第一选项卡配置的是任务名和一个大范围的时间值,其指定了维护所在的磊的时候段在什么范围。maintenance type 指定在维护期间是否仍进行数据搜集。

periods指定的时间段具体的维护时间段,和maintenace中的范围为包含关系。而period type指定了执行的类型,其类型有one time only 一次执行,也有按日、星期或月定期执行 ,如果是后三种方式,date项会变成具体的间隔、开始时间 。无论是何种类型,都有maintenance period length型 ,其指定了具体每次维护的持续时间,如2小时。

hosts & groups 项太多内容,就是选择某组主机或某个主机在维护期间不进行告警通知。


 

安装Zabbix过程中出现的问题集:

zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

故障一:
  2637:20151009:050431.719 [Z3001] connection to database ‘zabbix‘ failed: [1045] Access denied for user ‘zabbix‘@‘localhost‘ (using password: YES)
  2637:20151009:050431.719 database is down: reconnecting in 10 seconds
权限问题,执行下面的SQL语句.
MariaDB [(none)]>  grant all privileges on zabbix.* to [email protected] identified by ‘zabbix‘;
Query OK, 0 rows affected (0.00 sec)

故障二:
PHP time zone    unknown         Fail

php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    php_value date.timezone Asia/Shanghai #修改成正确的时区.
[[email protected] zabbix]# service httpd restart

故障三:
zabbix server is not running the information displayed may not be current
selinux 问题
[[email protected] create]# getenforce 
Enforcing
[[email protected] create]# setenforce 0
[[email protected] create]# getenforce  
Permissive
或者
[[email protected] create]# vim /etc/selinux/config

type=AVC msg=audit(1444450162.226:7610): avc:  denied  { name_connect } for  pid=31941 comm="httpd" dest=10051 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:zabbix_port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1444450162.226:7610): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=7f95a9345270 a2=10 a3=0 items=0 ppid=31936 pid=31941 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1444450171.586:7611): avc:  denied  { name_connect } for  pid=32146 comm="httpd" dest=10051 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:zabbix_port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1444450171.586:7611): arch=c000003e syscall=42 success=no exit=-13 a0=b a1=7f95a934dbe0 a2=10 a3=3 items=0 ppid=31936 pid=32146 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1444450172.228:7612): avc:  denied  { name_connect } for  pid=32146 comm="httpd" dest=10051 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:zabbix_port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1444450172.228:7612): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=7f95a9354a50 a2=10 a3=0 items=0 ppid=31936 pid=32146 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=MAC_STATUS msg=audit(1444450178.657:7613): enforcing=0 old_enforcing=1 auid=0 ses=969

1、web页面无法显示:

原因一:检查系统是否安装apache,以便解析html

原因二:php没有完全安装好

原因三:apache没有提供对php的支持

原因四:apache的配置文件中DocumentRoot的参数值没有改成zabbix的路径,zabbix默认的路径    是/var/www/html/下

解决方案一:安装apache

tar zxvf httpd-2.2.23.tar.gz

cd httpd-2.2.23

./configure --prefix=/usr/local/apache

make && make install

若安装过程中出现错误, 则在编译时入加 --with-included-apr 参数。

解决方案二:完整安装php

安装php时首先要检查系统是否安装了支持zabbix的依赖包,特别GD库的安装,如果gd库没安装会 导致zabbix安装过程出现问题。

<1>安装freetype,libpng,jpeg以便于让php支持GD库(WeatherMap插件必须要较新的GD库支持)

tar -zxvf libpng-1.2.18.tar.gz

./configure --prefix=/usr/local/libpng

make && make install

tar -zxvf freetype-2.3.5.tar.gz

./configure --prefix=/usr/local/freetype

make &&make install

tar -zxvf jpegsrc.v7.tar.gz

mkdir /usr/local/libjpeg

mkdir /usr/local/libjpeg/bin

mkdir /usr/local/libjpeg/lib

mkdir /usr/local/libjpeg/man

mkdir /usr/local/libjpeg/man/man1

./configure --prefix=/usr/local/libjpeg/ --enable-shared --enable-static

make && make install

tar -zxvf gd-2.0.28.tar.gz

./configure --prefix=/usr/local/libgd --with-png --with-freetype=/usr/local/freetype/ --with- jpeg=/usr/local/libjpeg/

make && make install

安装完成后,对gd库进行配置:

vi /etc/ld.so.conf

/usr/local/freetype/lib

/usr/local/libjpeg/lib

/usr/local/libgd/lib

ldconfig   --------执行命令,使用动态装入器装载找到的共享库

<2>安装PHP

cd php-5.6.0

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with- MySQL=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-bcmath --enable- mbstring --enable-sockets --with-gd --with- gettext --with-freetype-dir=/usr/local/freetype/ --with-jpeg- dir=/usr/local/libjpeg/

make clean

make && make install

安装完后将tar包中的php.ini-development或php.ini-production复制到到/usr/local/php/lib下,并更名为php.ini


-with-apxs2=/usr/local/apache/bin/apxs


支持apache


--with-mysql=/usr/local/mysql/


支持mysql


--with-mysqli=/usr/local/mysql/bin/mysql_config


优化支持mysqli


--enable-bcmath


打开图片大小调整


--enable-mbstring


多字节,字符串的支持


--enable-sockets


打开sockets 支持


--with-gd


打开gd库的支持


--with-gettext


打开gnu的gettext 支持,编码库用到


--with-freetype-dir=/usr/local/freetype/


打开对freetype字体库的支持


--with-jpeg-dir=/usr/local/libjpeg/


打开对jpeg图片的支持

解决方案三:apache没有提供对php的支持

打开apache的配置文档/usr/local/apache/conf/httpd.conf,修改其中参数

模块中修改为

DirectoryIndex index.html index.php

模块中添加

AddType application/x-httpd-php .php .php3 .php4

修改完成后需重新启动apache

2、访问目录http://ip/zabbix会显示:

Forbidden

You don‘t have permission to access /test/ on this server.

解决方案:

在apache的配置文档中找到,其中定义了Deny from all,可以将其注释,就不会封网段

3、zabbix在安装过程中出现无法找到sock文件的问题

解决方案:

将mysql的socket.sock文件软链接到zabbix的路径

4、登录进zabbix页面中,页面显示如下错误:

ini_set(): Use of mbstring.internal_encoding is deprecated [dashboard.php:21 → require_once() →

ZBase->run() → ZBase>initLocales() → init_mbstrings() →

ini_set() in /var/www/html/zabbix/include/locales.inc.php:25]

解决方案:

将路径中/var/www/html/zabbix/include/locales.inc.php的第25行数据注释掉,页面不会显示错误

时间: 2024-10-26 04:13:37

linux运维2017年5月 企业面试 zabbix 常见问题的相关文章

Linux运维必会的MySQL企业面试题大全 推荐

Linux运维必会的MySQL企业面试题大全 推荐 (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld startservice mysqld startsystemctl  start mysqld 2.检测端口是否运行 lsof -i :3306netstat -lntup |grep 3306 3.为MySQL设置密码或者修改密码 设置密码 mysql -uroot -ppassword -e "set passowrd for root = passow

Linux运维必会的mysql企业面试题大全

(1)基础笔试命令考察 1.开启MySQL服务/etc/init.d/mysqld startservice mysqld startsystemctl start mysqld 2.检测端口是否运行lsof -i :3306netstat -lntup |grep 3306 3.为MySQL设置密码或者修改密码设置密码mysql -uroot -ppassword -e "set passowrd for root = passowrd('passowrd')"mysqladmin

10K入职linux运维岗位的小伙伴感谢信及面试经历分享

尊敬的老男孩老师和同学们: 您们好! 首先:老师,请您原谅我的不辞而别,由于新公司项目周期比较紧,我不得不尽快投入生产工作,很遗憾,运维班的期末架构考试未能按时完成,就进入工作了,我会克服一切困难完成期末架构,因为有了期中集群架构的分享,我尝到了甜头,对知识体系和技术实践都有了很深的理解. (老男孩补充:运维班政策,不完成期末架构.述职讲解,禁止学生就业工作.) 其次:我想谈谈我的学习感受: 时间转瞬即逝,我已经在老男孩教育学习了四个多月了,在这段学习的时间里,我过的非常充实.非常快乐,既学到了

老男孩:Linux运维人员在企业里月薪多少才不落后?

有一段没写文章了,最近一直在专注于老男孩教育的战略规划以及写书.这两天有老男孩毕业班学员微信给我留言,和我聊起来2017年Linux运维行业的变化,企业就业门槛的提高,同时建议老男孩教育开A.B班,提升更大的学员就业竞争力,于是有了这篇文章,该同学发的内容如下: 事实上,这几年来老男孩教育如履薄冰,时时刻刻都在想着教学课程如何保持领先,教学质量如何提高,就业薪水如何提高.特别是从2016年以来,Linux高薪运维班从之前增加的Git.Gitlab.Openstack.Docker.阿里云等核心课

学好Linux运维决心书

决心书 我叫刁思杰.经过在老男孩教育Linux运维班五个月学习后.我一定要达到的薪水目标是7\8K. 为达到此目标我将采取如下几个行动方案: 1.    上课跟着老师的思路走.抓住点. 2.    做好每天的预习与复习. 3.    做到上学如上班.上课如上岗. 达到目标奖励:无为自己做的事.无需奖励 达不到目标惩罚:我并不认为我做不到.

&nbsp; 我学习Linux运维的决心

我叫王永盛,经过在老男孩教育linux运维班5个月学习后,我一定要达到的薪水目标是10k,为了达到目标我将采取如下几大行动方案: 1,在课堂上积极听讲,积极回答问题, 2,每天学习时间必须达到十二小时以上 3做到课前预习,课后总结复习, 4,每天严格按照老师的要求  做到必须该做的 5,无论因为任何事情,都不能迟到早退或者旷课 6,抛弃任何娱乐时间,努力提高自己的学识,提高自己的素质思想 7,五个月内自己的生活就是充斥着学习,提高自己的知识. 8,积极跟同学们相互学习,沟通       五个月后

linux运维之路

Linux入门必备内容 成为一个优秀的linux运维人员必要条件 如何能高标准的掌握linux运维实战技术 计算机硬件组成.工作原理 CPU.内存.磁盘.raid卡生产工作标准详解 企业生产主流品牌服务器及型号内部拆卸讲解 操作系统cache与buffer的原理及硬件设计哲学 结合企业生产实战运维场景如何利用硬件优化 操作系统.Unix及Linux介绍 linux操作系统种类及运维人员选择建议 CentOS Linux原理深入.安装 Linux入门知识进阶 远程连接工具原理及使用 编辑工具 比较

Linux运维学习-2——2016年7月21日

格式说明: 操作 概念 命令 说明及举例 二 internet 因特网ethernet 以太网ctrl+alt+F1 图形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 关机 reboot 重启 chvt 1-6 切换终端 init 3 关闭图形界面 init 5 打开图形界面 cp 复制 pwd 显示当前目录 lsblk 列出硬盘信息 id -u mg 查看用户ID,root为9,其他为普通用户,不加

老男孩Linux运维高薪指南系列公开课【51CTO学院】3月开始上映

运维干货在线讲课免费分享   http://ke.qq.com/course/115897 <老男孩从大学生到普通运维屌丝一枚再到Linux运维专家,最后到身价千万的发展之路 >   主讲人:   老男孩          上课时间:   3月9日晚8点30--10点  成功必有方法,失败必有原因! 如今老男孩老师愿意从自身曲折发展之路讲起,从学生到运维屌丝,再到运维专家,最后发展成为老男孩教育创始人,成为身价千万的运维行业佼佼者发展之路,以成功发展的事实为大家讲解IT人员成长过程中,该选择的