zabbix
第一节:zabbix 安装
本节说明zabbix2.4在centos6.x上的安装与使用,主要参考zabbix官方安装文档:https:\/\/www.zabbix.com\/documentation\/2.4\/manual\/installation\/install_from_packages
添加yum源
# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
zabbix server安装
zabbix server需要使用关系型数据库,支持mysql,pgsql,sqlite3数据库,如果数据库不同,安装的zabbix-server也不同:
mysql
# yum install zabbix-server-mysql zabbix-web-mysql
pgsql
# yum install zabbix-server-pgsql zabbix-web-pgsql
sqlite3
# yum install zabbix-server-sqlite3 zabbix-web-sqlite3
zabbix agent安装
# yum install zabbix-agent
zabbix JavaGateway安装
yum install -y zabbix-java-gateway.x86_64
数据库初始化
可以参考官方文档:https:\/\/www.zabbix.com\/documentation\/2.4\/manual\/appendix\/install\/db_scripts
下面是mysql数据库的初始化操作:
shell> mysql -uroot -p<password> mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; mysql> quit; shell> cd /usr/share/doc/zabbix-server-mysql-2.4.0/create shell> mysql -uzabbix -p<password> zabbix < schema.sql # stop here if you are creating database for Zabbix proxy shell> mysql -uzabbix -p<password> zabbix < images.sql shell> mysql -uzabbix -p<password> zabbix < data.sql
zabbix-server配置
修改配置文件 \/etc\/zabbix\/zabbix_server.conf 中的以下几项,也即zabbix-server使用的数据库配置:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix JavaGateway=192.168.3.14 JavaGatewayPort=10052 StartJavaPollers=5
zabbix-server 开机自启
chkconfig zabbix-server on
zabbix-server 启动
service zabbix-server start
zabbix-agent 开机自启
chkconfig zabbix-agent on
zabbix-agent 启动
service zabbix-agent start
zabbix-web 配置与启动
zabbix-web是使用php语言写的管理zabbix的web服务,运行在Apache Http Server中。
修改httpd 的时区,其他保持默认即可,配置文件:\/etc\/httpd\/conf.d\/zabbix.conf
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
因为 httpd 默认使用80端口,有可能与其他的应用有冲突,修改 httpd 端口的配置文件:\/etc\/httpd\/conf\/httpd.conf
set Listen 8555
启动httpd
service httpd restart
访问zabbix-web,访问地址为
http://localhost:8555/zabbix
,默认用户名和密码为Admin/zabbix
。zabbix agent 配置与启动
修改配置文件\/etc\/zabbix\/zabbix_agentd.conf
# 配置此项,则允许该zabbix-server主动来查信息,多个server IP使用,分隔 Server=10.211.55.15 # agent主动将自己的信息推送给zabbix-server,多个server IP使用,分隔 ServerActive=10.211.55.15 # 该agent机器在zabbix中的主机名称,需保证唯一,在zabbix-web中添加机器时的Hostname必须和此项值一致,可以考虑直接将此值设置成机器IP Hostname=node0.cana
第二节:zabbix 使用
zabbix的使用主要围绕zabbix-web的使用,在使用管理员账号登录后,首页主要监控大盘的展示,显示了zabbix管理监控的各个机器的运行情况;zabbix主要配置都在Configuration目录下,Administration主要是用户方面的配置。
群组:Configuration -> Host groups
将主机和模版进行分组,方便管理
模版:Configuration -> Templates
可以将监控的项目还有触发器保存在一个模版中,这样不同的主机只需要关联此模版,就可以使用此模版中的项目和触发器了。可以对每个应用程序分别建立一个模版,这个模版里包含了对这个应用的监控项目和触发器,每个应用节点机器只需要关联此模版即可。
项目
也可以称为监控项,意思是监控这台机器的什么,比如CPU使用率、内存使用情况、进程数量等等。项目中最重要的值为Key,Key的值可以想象成一个函数,比如
proc.num[<name>,<user>,<state>,<cmdline>]
这一项,proc.num为函数名,用来获取进程的数量,中括号中的可以理解为参数,不填则为空,<name>
为进程的名字,<user>
为进程的启动用户,<state>
为进程的状态,<cmdline>
为进程的启动命令,支持正则表达式匹配。触发器
当某个监控项达到了某一个值,则触发此触发器,即告警。
主机:Configuration -> Hosts
被监控的机器,机器中的
host name
必须和该机器中zabbix-agent配置文件中的Hostname
一致。在主机的配置页面可以给该主机建立监控项与触发器,但也可以关联模版。维护:Configuration -> Maintenance
即机器的维护时间段,在一个维护中,可以配置维护持续的时间段,维护哪些机器,维护期间是否收集数据。
动作:Configuration -> Actions
即触发器被触发后的动作,简单点说就是当哪些主机出了什么问题之后做什么事,比如当服务器出现了问题之后,向指定用户组或者指定用户发送告警邮件和告警微信。
用户:Administration -> Users
zabbix用户管理,默认显示的是用户组列表,可以在右上角切换显示用户列表。Zabbix默认创建的用户有Admin和Guest两个用户,在每个用户详情中可以配置该用户使用哪些告警方式。
告警媒介:Administration -> Media types
zabbix的告警方式,可以支持邮件、短信等告警方式。也支持执行一段shell脚本来告警,脚本的默认存放路径为
/usr/lib/zabbix/alertscripts/
。邮件告警脚本
- 安装邮件发送程序
yum install mailx
- 修改邮箱配置文件\/etc\/mail.rc
set [email protected] set smtp=smtp.exmail.qq.com set [email protected] set smtp-auth-password=<password> set smtp-auth=login
- zabbix 发送邮件 shell脚本
文件:\/usr\/lib\/zabbix\/alertscripts\/sendmail.sh
#!/bin/bash to=$1 subject=$2 body=$3 body=`echo $body|tr '\r' '\n'` cat << EOF | mail -s "$subject" "$to" $body EOF
- 脚本权限
chmod +x sendmail.sh chown zabbix.zabbix sendmail.sh
第三节:Mysql监控
zabbix 提供了mysql监控的模版,但是可能会遇到agent连不上mysql的情况,下面写一下凯拿线上的配置修改。
配置文件
zabbix_agentd.conf
中增加下面一行Include=/etc/zabbix/zabbix_agentd.d/
增加文件
/etc/zabbix/.my.cnf
,配置了zabbix访问数据库的用户名和密码[mysql] user=root password=<password> [mysqladmin] user=root password=<password>
增加文件
zabbix_agentd.d/userparameter_mysql.conf
,内容如下,里面的HOME指定了.my.cnf
文件的目录,/opt/db/mysql/mysql/bin/mysql
为自定义安装的mysql命令:# For all the following commands HOME should be set to the directory that has .my.cnf file with password information. # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert]. # Key syntax is mysql.status[variable]. UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix /opt/db/mysql/mysql/bin/mysql -N | awk '{print $$2}' # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data]. # Key syntax is mysql.size[<database>,<table>,<type>]. # Database may be a database name or "all". Default is "all". # Table may be a table name or "all". Default is "all". # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both". # Database is mandatory if a table is specified. Type may be specified always. # Returns value in bytes. # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema='$1'")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name='$2'");" | HOME=/etc/zabbix /opt/db/mysql/mysql/bin/mysql -N UserParameter=mysql.ping,HOME=/etc/zabbix /opt/db/mysql/mysql/bin/mysqladmin ping | grep -c alive UserParameter=mysql.version,/opt/db/mysql/mysql/bin/mysql -V
重启zabbix-agent,并在zabbix-web中给该主机添加Templates App Mysql模版
第四节:Mysql Slave 复制延迟监控
主要参考:https:\/\/github.com\/zbal\/zabbix
在文件zabbix_agentd.d\/userparameter_mysql.conf中增加如下一行
UserParameter=mysql.slave[*],echo "show slave status \G" | HOME=/etc/zabbix /opt/db/mysql/mysql/bin/mysql | grep -E "^[ ]*$1:" | awk '{print $$2}'
在zabbix web 中新建监控mysql slave复制延迟时间的模版,其中item的key为
mysql.slave[Seconds_Behind_Master]
, triggers 的触发器表达式为{Mysql Slave Template:mysql.slave[Seconds_Behind_Master].avg(#3)}>120
第五节:新应用上线后需要配置的模板
监控进程是否存在
创建template
创建item
创建trigger
通过JMX监控JVM核心指标
- 创建host
- 连接到Generic JMX Template