一、Zabbix的介绍
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员
快速定位/解决存在的各种问题,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上。
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
Zabbix主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
-服务监控
我个人用zabbix来做监控的主要原因是对比起其它两款开源软件cacit和nagios它具备了他们两款工具的优点。Cacti的优秀性主要在于对数据进行采样并绘制出直观的图片显示服务器的运行信息,对于服务器的报警功能支持不是很好(绘图室基于php开发的),而nagios则是更关注我们对服务器阈值的定义,对状态切换更敏感,报警功能强大。而zabbix则是结合和两者的优点。
二、基础知识讲解
1、zabbix工作的原理
Zabbix支持四种工作方式分别是
Snmp 、 zabbix(server/agent)、JMX、IPMI(基于硬件提供的专用接口)
Snmp 协议介绍
Agent:代理在UDP的161端口接收NMS的读写请求消息,agent:161,被监控端
Manger:管理站在UDP的162端口接收代理的事件通告消息 ,NMS:162,监控端
Zabbix 是基于zabbix协议工作的,其底层是依赖于snmp的工作方式来工作的,它的模型是
Server/agent 方式
Service : 10051 :由三部分组成(zabbix-web gui【依赖lamp平台、配置接口、展示数据】、zabbix-server【周期性去agent端采集数据】、service database【负责存储数据】)
Agent: 10050:收集本机数据、暂时存储、监听等待server端来采集数据
部署应用场景
2、zabbix一次监控的全过程原理图
定义监控主机,主机添加到主机组,定义item(监控主机的监控项,【监控资源】),graphs绘图【不是必须、套用用模板就不用】,teiggers:定义触发器,action:定义触发器触发后要执行的动作,比如服务重启,发邮件给管理员,动作升级,发邮件给部门主管
3、一次全监控的工作流程
数据采集、数据存储、数据展示、服务报警与升级
三、实验安装zabbix并监控服务器服务
node1 centos6.5 172.16.11.143 zabbix(agent)
node2 centos6.5 172.16.11.144 zabbix(server、agent)
实验前注意同步各主机的时间以免导致zabbix绘出图片时间跟现实时间不一致、注意主机名的定义
Node2
1、安装zabbix服务端、客户端、mysql-server、lamp #需要下载的软件
下载地方:
http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/
zabbix-release-2.4-1.el6.noarch.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm
zabbix-2.4.0-1.el6.x86_64.rpm zabbix-server-2.4.0-1.el6.x86_64.rpm
zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm
zabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-server-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-java-gateway-2.4.0-1.el6.x86_64.rpm zabbix-web-2.4.0-1.el6.noarch.rpm
zabbix-proxy-2.4.0-1.el6.x86_64.rpm zabbix-web-japanese-2.4.0-1.el6.noarch.rpm
zabbix-proxy-mysql-2.4.0-1.el6.x86_64.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
zabbix-proxy-pgsql-2.4.0-1.el6.x86_64.rpm zabbix-web-pgsql-2.4.0-1.el6.noarch.rpm
zabbix-proxy-sqlite3-2.4.0-1.el6.x86_64.rpm
软件安装
yum install zabbix-server-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm zabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-2.4.0-1.el6.x86_64.rpm zabbix-web-2.4.0-1.el6.noarch.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm
配置好yum源避免依赖关系
2、授权用户可以来存储数据
MariaDB [(none)]> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix.* to ‘zbxuser‘@‘172.16.%.%‘ identified by ‘1234‘;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all on zabbix.* to ‘zbxuser‘@‘node1.org.com‘ identified by ‘1234‘;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)
MariaDB [mysql]> select User,Password,Host from user;
+---------+-------------------------------------------+---------------+
| User | Password | Host |
+---------+-------------------------------------------+---------------+
| root | *A4B6157319038724E3560894F7F932C8886EBFCF | localhost |
| root | *A4B6157319038724E3560894F7F932C8886EBFCF | 127.0.0.1 |
| zbxuser | *A4B6157319038724E3560894F7F932C8886EBFCF | 172.16.%.% |
| zbxuser | *A4B6157319038724E3560894F7F932C8886EBFCF | node1.org.com |
| zbxuser | *24E65C3D3577DA6C2A596788CEAA02923A74B75D | localhost |
+---------+-------------------------------------------+---------------+
3、导入zabbix内置数据库
[root@localhost create]# mysql -u root -h 127.0.0.1 -p zabbix < images.sql
[root@localhost create]# mysql -u root -h 127.0.0.1 -p zabbix < images.sql
[root@localhost create]# mysql -u root -h 127.0.0.1 -p zabbix < data.sql
[root@localhost create]# mysql -u zbxuser -h 172.16.11.144 -p #测试登录
4、修改服务端配置文件注意和授权用户保持一致
vim /etc/zabbix/zabbix_server.conf
service httpd restart
DBHost=172.16.11.144
DBName=zabbix
DBUser=zbxuser
DBPassword=1234
DBSocket=/tmp/mysql.sock
Service zabbix-service restart
5、Zabbix监控本机自身配置
vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1,172.16.11.144
ServerActive=127.0.0.1,172.16.11.144
Hostname=node1.org.com
LogRemoteCommands=1 #允许服务端对客户端执行命令
Service zabbix-agent restart
前提是安装了lamp 并启动
安装zabbix-web
配置php时区
vim /etc/php.ini
date.timezone = Asia/Chongqing
Service httpd restart
6、安装zabbix web gui 配置zabbix监控主机服务
http://172.16.11.144/zabbix/setup.php
输入默认账户admin、和默认密码zabbix点击下一步
时区的设置、确保所有都ok不然要解决再点击下一步
配置数据存储连接数据库
端口设置及配置信息显示
安装完成
登录配置监控服务
zabbix 安装的默认账户和密码是
admin
zabbix
登录后注意改管理员密码
8、agent客户端(被监控端)安装软件
Node1
yum install zabbix-2.4.0-1.el6.x86_64.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm
监控客户端配置文件修改
vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.11.144
ServerActive=172.16.11.144
Hostname=node2.org.com
service zabbix-agent restart
四、监控服务的配置
1、item的定义
2、图片的定义
3、触发器的定义
4、添加用户并设置用户权限、否则无法报警、在此处我们也可以修改默认管理员账户密码、和添加新账户让它只有监控主机服务的权限不具有修改监控配的权限
5、添加报警发送方式,发邮件、有三种方式email、sms、script、jabber
6、四种报警方式选择
7、action的定义触发事件发邮件给谁
定义发邮件的级别
8、定义报警升级
9、图片设置展示
五、对key的理解
1、Key的主要应用是在定义item时,数据存储的设置,如果会自动增长的要改成
Delta(speed per second):每秒数率(value - prev_value)/(time - prev_time)
其它的则是AS is :不做任何处理
2、举例解释
Node2
MariaDB [zabbix]> select * from items\G
MariaDB [zabbix]> select key_,type from items;
zabbix_get -h 获取帮助
Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
[root@localhost ~]# zabbix_get -s 172.16.11.144 -k "net.if.out[eth0]"
44660716
[root@localhost ~]# zabbix_get -s 172.16.11.144 -k "net.if.in[eth0]"
44660724
[root@localhost ~]# zabbix_get -s 172.16.11.144 -k "system.cpu.int"
10660724
AS is :不做任何处理
Delta(speed per second):每秒数率(value - prev_value)/(time - prev_time)
Delta (simple change): (value - prev_value)
触发器 {<server>:<key>.<function>(<parameter>)}<operator><constant>
3、解决绘图的时间与主机时间不同步的方法,在没有配置ntp服务器时,这里主要是为了试验,就不管啦,要想命令成功,要设置node1密钥认证node2
[root@localhost ~]# ssh 172.16.11.143 "date -s ‘20141008 15:24:30‘";date -s ‘20141008 15:24:30‘
Wed Oct 8 15:24:30 CST 2014
Wed Oct 8 15:24:30 CST 2014
解决时间不同步的机制
4、采样时间设置应该注意的事项
-数据保存时长 可以自己设定 #超过保存时长【heas】keep自动清理
-保留历史趋势数据:每小时的最大值、最小值、平均值、 [保存时间较数据时长较长]
-采样时长
-监控时长定义
node2
yum install hping3
hping3 172.16.11.144 --faster
5、自定义监控网页并设置action服务端可以远程重启agent的httpd服务
-添加item net.tcp.service[service,<ip>,<port>]
-triggers {172.16.11.143:net.tcp.service[http,172.16.11.143,80].last(0)}=0
-graphs 设置为线条图 0 1
-action 注意要添加目标主机执行重启
###############################################################################
开启配置文件中的命令 vim /etc/zabbix/zabbix_agentd.conf # EnableRemoteCommands=1
此处经过验证zabbix用户去远程执行重启服务失败,配置没错,权限也有,但是就是实现不小,猜测可能是认证机制配置有错误,最后只好设置root用户去远程连接ssh执行重启httpd的任务,实验成功。
不行的话我们可以执行ssh 用root身份去重启服务
允许执行sudo命令 visudo #zabbix ALL=(ALL) NOPASSWD: /etc/rc.d/init.d/httpd restart
su - zabbix -c "/etc/rc.d/init.d/httpd restart" #测试权限不行,为系统用户
tail /etc/passwd #查看原因shell为/sbin/nologin
zabbix:x:494:491:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
tail /etc/shadow
zabbix:!!:16349::::::
[root@node1 ~]# chsh zabbix #修改shell
Changing shell for zabbix.
New shell [/sbin/nologin]: /bin/bash
Shell changed.
su -zabbix
sudo -l#有权限,但是还是不行
6、自定义报警脚本:
zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
报警脚本的特点:
接受三个参数:
$1: 指定的用户的“Media"中的"send to"所指向的位置;
$2: 为指定的action中的“default subject”;
$3: 为指定的action中的“default message”;
短信报警:通过报警脚本实现
7、自定义宏:宏就是变量,可以方便用户自定义item、模板、tigger
宏:自动替换的文本模式
内置宏:{MACRO_NAME}
自定义宏:{$MACRO_NAME}
全局: adminitration --> general --> macros
模板: configration --> templates --> macros
主机: configration --> hosts --> macros
范围越小,优先级越高;
触发器宏的定义
模板宏的定义
8、trapper 监控机制测试agent端和server端的连通性
agent:zabbix-sender发送数据
注意
1、主机名
create host ---name
2、通过crontab周期性地通过zabbix-sender 发送数据给服务端
3、创建item时,item type 为zabbix-trapper:key可以任意命名,但使用zabbix-sender发送数据时,使用key要与此处保持一致
9、利用SNMP 协议来监控的简单介绍
yum install net-snmp
vim /etc/snmp/snmpd.conf
com2sec notConfigUser default public
可以修改认证方式
com2sec localhost 172.16.0.0/16 local_public
com2sec localhost 127.0.0.1 public
group localGroup v2c localhost
view all included .1.3.6.1.2
access localGroup "" any noauth exact prefix all none none
service snmpd restart
ss -tunl 161 #udp协议
snmpwalk -v 2c -c publick 127.0.0.1 #获取MIB树
六、监控nginx的请求连接状态
1、安装nginx 状态页配置
Vim /etc/nginx/conf.d/default.conf
location /status {
stub_status on;
access_log off;
}
2、状态页面各项数据的意义:
active connections – 当前 Nginx 正处理的活动连接数。
serveraccepts handled requests — 总共处理了 4 个连接 , 成功创建 4次握手 (证明中间没有失败的 ), 总共处理了 2个请求
reading — nginx 读取到客户端的 Header 信息数。
writing — nginx 返回给客户端的 Header 信息数。
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
3、服务端测试并做处理
Node2
curl -s http://172.16.11.143/status | awk ‘/^Active/{print $NF}‘
Node1
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx.active[*],curl -s http://$1:$2/status | awk ‘/^Active/{print $$NF}‘
Service zabbix-agent restart
Node2 #测试修改
添加主机
自定义主机宏
自定义item
自定义图片
绘图成功
七、zabbix监控开启自动发现功能
主要功能就是自动发现主机、自动添加主机、自动套用模板、自动工作并绘图、注意开启这个功能的前提是1、它会耗费主机性能2、必须定义配置文件修改允许发现。
1、定义发现规则
2、定义发现后的action
3、指定去在那个范围内发现
4、定义发现主机后的动作、自动添加、自动套用模板
5、实验查看是否自动添加、然后查看是否绘图等等
另外zabbix还支持自动注册、只要主机上线就自动添加主机、对主机进行监控、主要是要配置服务配置文件、指定serviceactive、定义action就可以自动注册
自动注册功能,要选这项,其它和自动发现一样
原文地址:http://1983939925.blog.51cto.com/8400375/1562374