1、 搭建zabbix服务,实现监控linux和windows的内存,cpu,磁盘,网络等基础指标

官方yum源:

[epel]
name=zabbix epel
baseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/
gpgcheck=0

安装zabbix:
]# yum list all |grep zabbix

]# yum info zabbix-agent 被监控主机安装的程序包
其中:
zabbix-web-mysql 为链接mysql的组件;
zabbix-sender 对于agent端使用的测试工具手动发送数据给服务端;
zabbix-get 对于服务器端用到的工具手动到agent端获取数据;

解决zabbix的依赖软件:
]# yum -y install mariadb-server
如果是centos6要安装mysql-server程序包;

]# systemctl start mariadb.service
]# ss -tnl 查看数据库的3306端口是否监听;
]# vim /etc/my.cnf
添加:
skip_name_resolve=on 禁止数据库反解主机名
innodb_file_per_table=on 开启独立表空间
其中:
socket=/var/lib/mysql/mysql.sock 此路径在zabbix配置文件中会用到;

]# systemctl restart mariadb.service
]# mysql
创建数据库,并授权用户;
> CREATE DATABASE zabbix CHARSET 'utf8';
> GRANT ALL ON zabbix.* TO zbxuser@'127.0.0.1' IDENTIFIED BY 'zbxpass';
> GRANT ALL ON zabbix.* TO zbxuser@'172.18.11.%' IDENTIFIED BY 'zbxpass';
> FLUSH PRIVILEGES;

安装zabbix server和web、php等;
]# yum -y install zabbix-server-mysql zabbix-web zabbix-agent zabbix-web-mysql zabbix-sender zabbix-get

]# ls /usr/lib/systemd/system|grep zabbix
zabbix-agent.service
zabbix-server.service
]# rpm -qf /usr/lib/systemd/system/zabbix-server.service 
]# rpm -qf /etc/zabbix/zabbix_server.conf
均可查出zabbix server是由哪个程序包生成的;

初始化zabbix的数据库,有专用的zabbix脚本实现;
zabbix的2.0与3.0不一样,2.0有三个sql脚本而且要安装特定的固定顺序依次执行;3.0只有一个sql脚本create.sql,需要把脚本导入到mysql数据库中;
]# rpm -ql zabbix-server-mysql
其中:/usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
压缩存放;

]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/
]# gzip -d create.sql.gz
]# mysql -h127.0.0.1 -uzbxuser -p zabbix < create.sql
导入zabbix库中;

登录数据库验证导入是否成功:
]# mysql
> use zabbix
> SHOW TABLES;
MariaDB [zabbix]> show tables;

]# cd /etc/zabbix/
]# cp /etc/zabbix/zabbix_server.conf{,.bak}
]# vim /etc/zabbix/zabbix_server.conf
其中:
在GENERAL PARAMETERS段:

ListenPort=10051

SourceIP= 执行监控操作时,zabbix server有多个ip时,指定使用的IP,因为客户端在执行监控时要验证服务端ip的,基于ip授权;

日志设置
日志类型有三种方式:
system- syslog 写入系统日志;
file- file specified with LogFile parameter 自定义单独使用日志文件;
console - standard output 日志发往控制台,调试才使用;
LogType=file 日志类型
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0 设置日志文件大小,超过后自动滚动;0表示不滚动;
PidFile=/var/run/zabbix/zabbix_server.pid 服务端pid文件的路径;

DBHost=127.0.0.1 数据库服务器地址;如果不在当前主机此项是必须改的;
DBName=zabbix 数据库名
DBUser=zbxuser 数据库登录用户
DBPassword=zbxpass 数据库登录密码
DBSocket=/var/lib/mysql/mysql.sock 因为mysql数据库在本地,所以,此项为本土通信使用;

]# systemctl start zabbix-server.service 启动报错

注意:centos7.1中trousers程序包版本不支持zabbix,所以只有centos7.2以上版本才支持,因此,需升级trousers版本到trousers-0.3.13-1.el7.x86_64.rpm

]# rpm -U --nodigest trousers-0.3.13-1.el7.x86_64.rpm 不验证升级安装程序包;

]# systemctl start zabbix-server.service 再启动成功;

]# rpm -q php-mysql 确保安装php-mysql程序包;因为zabbix依赖php;
]# yum -y install php-mysql httpd

还要指明zabbix的时区,即配置php的时区指定;两种方式修改php时区,一个是全局php.ini,一个是zabbix在php中自己的配置文件/etc/httpd/conf.d/zabbix.conf;

]# vim /etc/httpd/conf.d/zabbix.conf
其中:
Alias /zabbix /usr/share/zabbix 路径别名,所有的zabbix页面文件是在/usr/share/zabbix文件中;
仅修改:
php_value date.timezone Asia/Shanghai
其它都是定义授权项的无需修改;

]# systemctl start httpd.service
]# ss -tnl 查看80端口是否启动;

zabbix安装:
依赖关系:
[root@localhost ~]# yum -y install httpd mariadb mariadb-server php php-mysql php-mbstring php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash php-fpm
[root@localhost ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get
[root@localhost ~]# yum -y install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml

安装zabbix DB:

# yum install mariadb-server
# systemctl start mariadb.service
mysql > CREATE DATABASE zabbix CHARSET 'utf8';
mysql > GRANT ALL ON ZABBIX.* TO zbxuser@'172.18.11.%' IDENTIFIED BY 'zbxpass';

安装服务端:
# yum installzabbix-server-mysql zabbix-get

安装web GUI:
# yum zabbix-web zabbix-web-mysql

安装agent端:
# yum install zabbix-agent zabbix-sender

zabbix server数据库初始化:
2.x:三个sql脚本;
3.x:一个sql脚本:
create.sql手动解压展开

# mysql -h127.0.0.1 -uzbxuser -p zabbix < create.sql

启动zabbix-server进程:

/usr/lib/systemd/system/zabbix-server.service

配置文件:/etc/zabbix/zabbix_server.conf
必须要要改:数据库主机地址、密码,库名、
指令有四类:
############ GENERAL PARAMETERS #################
##### Passive checks related 客户端被动的相关配置,服务端主动
##### Active checks related 客户端主动的相关配置,服务端被动
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS ####### 用户自定义的监控参数
####### LOADABLE MODULES ####### 
####### TLS-RELATED PARAMETERS #######

通用参数:
ListenPort=10051 无需修改,默认;
SourceIP= 
LogType=file 
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid

DBHost=localhost
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass

启动服务:systemctl start zabbix-server.service

注意:centos7.0和7.1需要升级trousers程序包版本;

配置zabbix-web
配置php的时区指定:
(1)php.ini全局配置 date.timezone = Asia/Shanghai
(2)/etc/httpd/conf.d/zabbix.conf

访问URL:http://server/zabbix
安装后配置文件:/etc/zabbix/web/zabbix.conf.php

登录:账户/密码
admin/zabbix

在zabbix上面添加node02主机

1、在"配置"中找见"主机",在右上角点"添加主机"
2、在"主机"中添加node02的ip地址
3、在"模板"中找到适用于linux主机的模板
4、点击添加,等待几分钟,待"可用性的ZBX"显示绿色的时候就说明添加成功
5、在"监测中"的"图形"即可查看相关参数

搭建zabbix服务,监控nginx status

[root@node02 ~]# yum install -y nginx-1.10.0-1.el7.ngx.x86_64.rpm
[root@node02 ~]# vim /etc/nginx/conf.d/default.conf (在server的配置段中添加)
location /ngxstatus {
        stub_status;
    }
[root@node02 ~]# systemctl start nginx
3、在node02的zabbix-agent的配置文件中添加自定义监控
[root@node02 ~]# vim /etc/zabbix/zabbix_agentd.conf
 UserParameter=nginx.status[*],/usr/bin/ngxstatus.sh $1 (第296行附近)
4、在node02上面自定义监控项
[root@node02 ~]#  vim /usr/bin/ngxstatus.sh
#!/bin/bash
#
host='127.0.0.1'
port='80'
statusurl='/ngxstatus'
active() {
        curl -s http://${host}:${port}${statusurl}|awk '/^Active/{print $3}'
}
accepts() {
        curl -s http://${host}:${port}${statusurl}|awk 'NR==3{print $1}'
}
handled() {
        curl -s http://${host}:${port}${statusurl}|awk 'NR==3{print $2}'
}
requests() {
        curl -s http://${host}:${port}${statusurl}|awk 'NR==3{print $3}'
}
reading() {
        curl -s http://${host}:${port}${statusurl}|awk 'NR==4{print $2}'
}
writing() {
        curl -s http://${host}:${port}${statusurl}|awk 'NR==4{print $4}'
}
waiting() {
        curl -s http://${host}:${port}${statusurl}|awk 'NR==4{print $6}'
}

$1

### 5、在zabbix-server上添加node02主机的自定义监控项
1、在node02的监控项中创建监控项
2、根据自己定义的键值创建监控项
 ####  如nginx.status[accepts] 、nginx.status[waiting] 

 3、在图形里面点击创建图形
4、稍等片刻,在监控中的图形可查看到信息
### 缺点:因为zabbix服务端连续对nginx发送请求,因此nginx-status页面统计信息会有变差