zabbix 网络发现
网络发现有什么用?比如小军有 100台服务器,不想一台台主机去添加,这时就可以使用网络发现功能自动添加了,前提条件是所有服务器都已经安装了 agent或 snmp, Server端就可以扫描配置好的 ip段,自动添加 host,自动给 host link 模板、自动添加到主机组里等。网络发现功能让我们能更快速的部署 zabbix、简化 zabbix管理,并且在经常变动的环境里面也不需要花太多的精力。
zabbix 网络发现基于如下信息
ip范围
可用的外部服务( FTP,SSH,WEB,POP3,IMAP,TCP)
来自 zabbixagent的信息
来自 snmp agent的信息
网络发现由两个阶段组成: discovery和 actions
( 1) discovery
zabbix 定期扫描网络发现规则中的 ip范围,每个规则中定义了一组需要检测的服务,在这些 ip范围内一一扫描,每次检测到 service和 host,都会生成一个 discovery事件,事件如下:
时间 条件 serviceup zabbix 检测到可用服务 servicedown zabbix 无法检测到 service hostup 某个 ip 上至少有一个服务是 up 状态 hostdown 所有服务都无响应 servicediscovered 一个服务首次被发现或者在维护后从新归队 servicelost 服务在 up 之后又丢失了 hostdiscovered 一个 host 首次被发现或者在维护后从新归队 hostlost 一个 host 在 up 之后又丢失了
( 2) Actions
zabbix所有 action都是基于发现事件,例如:
发送通知
添加 /移除主机
启用 /禁用主机
添加主机到组
从组中移除主机
主机 link模板 /unlink模板
执行远程脚本命令
创建主机主机名的定义
discovery 发现主机事件产生之后,将会执行 action添加主机等操作。首先 server端通过 ip番解析主机名(如果失败了,不会重新尝试),如果解析成功了,那么 zabbix将会使用这个主机名,否则直接使用 ip地址。如果主机名同名呢?比如都叫 ngx-server,那么第一台主机名会定义为 ngx-server,第二台为 ngx-server_2,第三台为 ngx-server_3,以此类推。
创建主机主机接口的添加
主机接口添加规则如下:
服务检测 -例如成功检测到一个 SNMP服务,那么创建 snmp接口
如果主机同时对 agent和 snmp请求作出响应,那么会同时创建这两种接口
通过哪个接口发现主机,哪个接口就作为默认接口,其余作为附加接口
如果一开始只响应 agent的检测,那么它只会创建 agent接口。如果后面响应了 snmp检测,那么它又会增加 snmp接口
( 3)配置案例
先配置一个 discovery rules , Configuration -> Discovery-> creatediscovery rule
然后再添加对应的 action,Configuration -> Actions (右上角的 Event source 选择 Discovery)-> create action
除了添加主机,还可以 link Template等操作
zabbix 自动注册
网络发现是好用,但它要不断的扫描特定网段,所产生的流量,耗费的资源也是很大的。自动注册可以解决这个问题, server不用再扫描特定网段,只需设置好规则,等待特定网段的主机自动向 server注册即可。
配置过程:
( 1)定义 agent端,编辑 /etc/zabbix/zabbix-agent.conf
serverActive=192.168.61.154主动模式服务器地址设置
Server=192.168.61.154被动模式服务器地址设置
Hostname=a4.com主机名
ListenIP=192.168.61.140设置为本机某特定 IP;
ListenPort=默认即可
HostMetadata=a4.com 唯一标识一个主机
HostMetadataItem=itemkey,
一般使用 system.uname。在客户端用一个 itemkey 获得一个数据 ,发送给服务器端注册,一般就用 system.uname获得主机名
( 2) server端配置
Configuration -> Actions (右上角的 Eventsource 选择 Auto registration) -> create action
其余设置和网络发现的 action设置一样
zabbix LLD: Low Level Discovery
( 1)客户端配置
编写获取需要的数据的脚本放 /etc/zabbix-agent.d/scripts下(该路径为自定义)
自定义参数文件到 /etc/zabbix/zabbix_agentd.conf.d/ ,调用上面的脚本
( 2)服务器端配置
新建模板 template-> (该模板下)新建应用 application(这个可以不建,主要用于把下面的 item分类) -> (该应用下)添加 item prototype (用于为发现的项目自动添加需要的监控项目, key里使用定义好的变量名,方便对应多种不同的名字) -> 创建 trigger(关联刚才定义的 trigger) ,还可以继续添加 graph图形
zabbix proxy 与 node
当 server与 agent在不同的机房,并且有大量主机的时候,在各机房配置一个 proxy是最好的选择。因为不用 proxy直接配置各主机直接访问异地机房 server的话,需要开发多条防火墙规则,也带来了安全隐患,配置了 proxy的话,只需要开放一台 proxy主机即可。
node 与 proxy的区别:
node是一个完整的节点,可以完全独立配置各 item、 action等和运行,自身有数据库保留收到到的 agent数据。 proxy只是负责收集 agent的数据发送给 server端,并且不保留数据
一般千台以下的机器,配置 proxy即可,使用方便。
下面简单介绍 proxy的安装与配置
( 1) zabbix proxy的安装(需要先配置 epel源)
yum -y zabbix-proxy
zabbix-proxy-mysql
zabbix-agent (一般 proxy也是要被服务器端监控的,所以也会安装 agent)
zabbix-sender
zabbix
( 2)创建 mysql数据库( mysql的安装请参考站内文章)
createdatabase zabbix_proxy character set utf8;
grantall on zabbix_proxy.* to zbxuser@'172.16.%.%' identified by 'zbxpass';
flushprivileges;
( 3)导入数据
mysqlzabbix_proxy < /usr/share/doc/zabbix-proxy-mysql-2.4.5/create/schema.sql
( rpm -qlzabbix-proxy-mysql可找到这个 sql位置)
( 4)配置 zabbix-proxy
vim/etc/zabbix/zabbix_proxy.conf
server=172.16.100.6指明服务器地址
Hostname=proxy1
DBHost=172.16.100.7本机
DBName=zabbix_proxy
DBUser=zbxuser
DBPassword=zbxpass
HeartbeatFrequency=60 每隔 60秒探测一下服务器的活动状态
ConfigFrequency=3600 每隔 3600秒到服务器端拉取相关配置
DataSenderFrequency=1 每隔 1秒就发送一次数据到服务器端,发送数据后会自动删除的,所以本地保存数据量很少
( 5)启动服务
servicezabbix-proxy start
ss-tnl 查看服务是否正常运行
( 6)服务器端的配置
administrator-> proxies -> create proxy
proxymode 的选择, Active 为主动拉取配置, Passive 为服务器端把配置推送过去
创建好之后,以后新创建 Host页面 Monitoredby proxy 里就可以选择刚才的 proxy了
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com