设为首页 收藏本站
查看: 1454|回复: 0

[经验分享] Zabbix概念、安装以及快速入门

[复制链接]

尚未签到

发表于 2018-1-1 12:37:43 | 显示全部楼层 |阅读模式
  Zabbix是一个企业级的、开源的、分布式监控解决方案。[1]


  • Zabbix可以监控网络和服务的监控状况.
  • Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应.
  • Zabbix是零成本的. 因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的.
  Zabbix特性如下[2]:


  • 数据收集
  • 灵活的阀值定义
  • 高级告警配置
  • 实时绘图
  • 扩展的图形化显示
  • 历史数据存储
  • 配置简单
  • 模板使用
  • 网络自动发现
  • 快速的web接口
  • Zabbix API
  • 权限系统
  • 全特性、agent易扩展
  • 二进制守护进程
  • 具备应对复杂环境情况
  可以总结为如下三个特点
  1)灵活的通知机制:allows users to configure e-mail based alerts for virtually any event;
  2)数据可视化;
  3)所有报告、统计、参数配置都可通过web端完成;
  所以zabbix很适合服务器集群管理员进行功能规划(capacity planning)

1 概览


  • 架构

    • Server
    • database storage
    • web interface
    • proxy
    • agent

  • 数据流(data flow)
DSC0000.png

  其中,Zabbix Server为中心组件,用来获取agent存活状况及监控数据和统计. 所有的配置、统计、操作数据均通过Server进行存取.
  Zabbix agent部署在被监控机器上用来监控本地资源和应用(如硬盘、内存、处理器统计等)

2 术语概念

2.1 server / client / proxy
  Zabbix server的功能可以分为三部分:server、web前端和database。
  Server执行polling和trapping来采集数据,评估是否触发触发器,发送报警给用户
  agent向其报告有效数据和统计。
  database存储所有configuration, statistical and operational data。
  server和web前端都与database进行交互。
  Zabbix server以守护(daemon)进程方式运行

2.2 命令行工具
  Sender / Get

3 zabbix进程构成 [3]
默认情况下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。

4 安装zabbix
  首先安装MariaDB数据库。Linux发行版,使用repository configuration tool,选择自己合适的安装步骤。


  • 卸载mysql
  如果已经安装了mysql,需要先卸载mysql,否则安装过程中会出现冲突。


  • 本机选择10.1stable for centos7 x86_64
//添加源  
shell> cat /etc/yum.repos.d/mariaDB.repo
  
[mariadb]
  
name = MariaDB
  
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  
gpgcheck=1
  

  
shell> yum install MariaDB-server MariaDB-client mariadb
  

  
//服务管理,使用如下命令start/stop MariaDB:
  
shell> sudo systemctl start mariadb.service #直接用mariadb也行
  
shell> sudo systemctl stop mariadb.service
  
shell> sudo systemctl enable mariadb.service #开机自启动
  从10.1起,Galera Cluster(同步MariaDB数据库的多master集群的工具)默认包含在MariaDB中。
  see also Installing MariaDB with yum.

4.1 zabbix sever [4]
  安装
shell> rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm  
//for Zabbix server and web frontend with mysql database
  
shell> yum install zabbix-server-mysql zabbix-web-mysql
  
//可以将server与agent安装在同一台机器
  
shell> yum install zabbix-agent
  创建zabbix数据库以及远程用户
[user@host ~]# mysql -uroot -p  

  
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

  
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost>
  
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'172.16.%.%'>  
MariaDB [(none)]> flush privileges;
  
MariaDB [(none)]> select host,user from mysql.user;
  
+-----------------------+--------+
  
| host                  | user   |
  
+-----------------------+--------+
  
| 127.0.0.1             | root   |
  
| 172.16.%.%            | zabbix |
  
| ::1                   | root   |
  
| localhost             |        |
  
| localhost             | fsj    |
  
| localhost             | root   |
  
| localhost             | zabbix |
  
| localhost.localdomain |        |
  
+-----------------------+--------+


  • 导入初始化schema和data
shell> cd /usr/share/doc/zabbix-server-mysql-2.2.15/create  
shell> mysql -uroot -p  zabbix < schema.sql
  
shell> mysql -uroot -p  zabbix < images.sql
  
shell> mysql -uroot -p  zabbix < data.sql


  • Edit database configuration in zabbix_server.conf
shell> vi /etc/zabbix/zabbix_server.conf  
DBHost=localhost
  
DBName=zabbix
  
DBUser=zabbix
  
DBPassword=zabbix


  •   开启zabbix-server服务:systemctl start zabbix-server

  • Editing PHP configuration for Zabbix frontend

    • 修改timezone:php_value date.timezone Asia/Shanghai
    • 重启httpd服务:service httpd restart

  或者通过sed调整php配置[6]
shell> sed -i 's/^.*date.timezone =.*$/date.timezone = Asia\/Shanghai/g' /etc/php.ini  
shell> sed -i 's/^.*post_max_size =.*$/post_max_size = 16M/g' /etc/php.ini
  
shell> sed -i 's/^.*max_execution_time =.*$/max_execution_time = 300/g' /etc/php.ini
  
shell> sed -i 's/^.*max_input_time =.*$/max_input_time = 300/g' /etc/php.ini
  
shell> sed -i 's/^.* memory_limit =.*$/memory_limit = 128M/g'  /etc/php.ini
  
shell> service httpd restart


  • 配置服务开机启动
shell> chkconfig zabbix-server on  
shell> chkconfig zabbix-agent on
  
shell> chkconfig httpd on
  访问 http://your-zabbix-server-ip/zabbix
  默认username/password 是Admin/zabbix.


  • 如果出现错误:zabbix server is not running
  解决办法:设置SELinux 成为permissive模式 shell> setenforce 0


  • 如果出现防火墙相关问题,打开agent的端口
查看zabbix监听端口:  
shell> netstat -nlop | grep zabbix
  
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      23904/zabbix_server  off (0.00/0/0)
  
tcp6       0      0 :::10051                :::*                    LISTEN      23904/zabbix_server  off (0.00/0/0)
  
打开防火墙该端口:
  
shell> iptables -I INPUT -p tcp --dport 10051 -m state --state NEW,ESTABLISHED -j ACCEPT
  
shell> iptables -I OUTPUT -p tcp --sport 10051 -m state --state ESTABLISHED -j ACCEPT
  也可以批量修改其他端口:
shell> iptables-save > firewalls.txt  
shell> vim firewalls.txt
  
shell> iptables-restore <firewalls.txt
  或者直接关闭防火墙:# systemctl stop firewalld
  see also Linux防火墙配置(iptables, firewalld)

4.2 zabbix agent
shell> sudo rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm  
shell> sudo yum install zabbix-agent zabbix-sender -y
  
shell> grep -Ev '(^$|^#)' /etc/zabbix/zabbix_agentd.conf  #修改server地址
  
PidFile=/var/run/zabbix/zabbix_agentd.pid
  
LogFile=/var/log/zabbix/zabbix_agentd.log
  
LogFileSize=0
  
Server=172.16.44.5
  
Hostname=Zabbix server fsj
  
Include=/etc/zabbix/zabbix_agentd.d/
  

  
shell> sudo service zabbix-agent start
  
shell> sudo systemctl enable zabbix-agent

5 用户管理
DSC0001.jpg

DSC0002.jpg

  权限管理并不是直接设置一个user对应于一个host的什么权限,而是设置user groups对应与host groups的权限。
DSC0003.jpg

  切换到permissions选项卡
DSC0004.jpg


6 开始监控

6.1 添加Zabbix agent(局域网其他机器)以及其item
  新建host
  

  其中,最好有一个Host name项和/etc/zabbix/zabbix_agentd.conf中Hostname保持一致。
  如果不存在host与配置文件中的Hostname相同,那么运行之后log文件会报错host xxx(Hostname值) not found,但是前端host条目依然可以获取到数据。
  修改conf文件后要重启服务才能生效
  新建item
  

  其中key表示要监测的的信息。


  • 详细:https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/zabbix_agent
  • Items supported by platform
  在configuration->hosts页面可看到刚刚添加的host,如果available项为绿色Z表示一切正常。
DSC0005.png

  有可能出现如下错误

  Received empty response from Zabbix Agent at [x.x.x.x]. Assuming that agent dropped connection because of access permission

  到Monitoring -> Latest data页面查看监控到的实时数据
DSC0006.png

  点击graph可以查看cpu load的折线图。

6.2 触发器
  一个触发器包括一个定义了数据阈值的表达式。
  格式为{<server>:<key>.<function>(<parameter>)}<operator><constant>。
  
其中:


  • key: 该server定义的item
  • function: https://www.zabbix.com/documentation/2.2/manual/appendix/triggers/functions
  • parameter: 数字n表示n秒,#n表示最近n个值,n[m|h|d]表示n[分钟|小时|天]
  输入数据如果高于该阈值,触发器就会报警。

6.2.1 创建触发器

  激活触发器 shell> cat /dev/urandom | md5sum
DSC0007.jpg

DSC0008.jpg

  更多触发器示例:


  • {www.zabbix.com:system.cpu.load[all,avg1].last()}>5
  • {www.zabbix.com:system.cpu.load[all,avg1].last()}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
  • {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1
6.2.2 通知
  Administration -> Media type 设置 email(需要有email软件支持)

  新建action
DSC0009.png

  查看发送情况
DSC00010.png

  这里没有设email相关,所以发送失败

7 使用模版
  点击host,切换到templates选项卡可以关联想要的模版。
DSC00011.png

  我们也可以通过 Configuration → Templates 可以创建空模版。然后把现有的item、trigger等拷贝到该模版,方便以后批量应用。
  
DSC00012.png

References


  • https://www.zabbix.com/documentation/2.2/manual
  • http://zabbix-manual-in-chinese.readthedocs.io/en/latest/index.html
  • http://www.ttlsa.com/zabbix/zabbix-section-3-of-chapter-1/
  • https://www.zabbix.com/documentation/2.2/manual/quickstart
  • 跟着ttlsa一起学zabbix监控
  • 监控 Zabbix
  • http://zabbix.org.cn

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430510-1-1.html 上篇帖子: zabbix-agents客户端安装 下篇帖子: Zabbix自动发现之fping
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表