安装zabbix-server
添加zabbix存储库
1 | rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm |
安装zabbix-server zabbix-web
1 | yum install zabbix-server-mysql |
安装MySQL5.7数据库
卸载mariadb包
1 | rpm -qa |grep mariadb #查看当前安装的mariadb的包 |
下载并解压MySQL源码包
1 | wget https://dev.mysql.com/get/archives/mysql-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz #从官网下载源码包 |
创建MySQL用户并对MySQL文件进行授权
1 | groupadd mysql --创建mysql用户组 |
创建MySQL配置文件
1 | cat >>/etc/my.cnf <<EOF #写入配置文件 |
初始化数据库
1 | touch /var/log/mysqld.log #创建日志文件并授权 |
查看初始化密码
1 | cat /var/log/mysqld.log|grep root@localhost |
执行如下操作开启MySQL服务,并设置相应权限
1 | mkdir /var/run/mysqld |
修改MySQL密码
vim /etc/my.cnf #修改配置文件1
2
3
4
5
6
7
8skip-grant-tables #跳过密码认证
default_password_lifetime=360 #修改密码超时时间
不然修改密码之后密码会过期,会提示让你重新设置密码
You must reset your password using ALTER USER statement before executing this statement.
/usr/local/mysql/bin/mysql -uroot -p #登录MySQL
use mysql #切换MySql数据库
update mysql.user set authentication_string =password('root'), host = '%' where user = 'root'; #修改MySQL密码
flush privileges;
将MySQL加入环境变量
1 | echo 'PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile #将MySQL二进制文件加入环境变量 |
进入数据库并创建zabbix数据库以及创建授权用户
1 | mysql> create database zabbix character set utf8 collate utf8_bin; |
编辑zabbix-server配置文件
修改以下参数为创建数据库时的信息,并重启zabbix-server
vim /etc/zabbix/zabbix_server.conf1
2
3
4
5
6DBName=zabbix
DBHost=192.168.179.132
DBUser=zabbix
DBPassword=zabbix
systemctl enable zabbix-server
systemctl start zabbix-server
启动的时候启动失败,查看系统日志,查找关键词1
usr/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
原来是缺少一个文件,yum安装解决yum -y install mysql-libs
将初始数据导入MySQL中
1 | zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix |
安装Nginx
关掉防火墙和selinux
1 | systemctl stop firewalld |
安装依赖
1 | yum -y install wget vim lsof lrzsz pcre-devel zlib-devel make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel libmcrypt libmcrypt-devel mcrypt mhash net-snmp-devel |
配置Nginx的yum仓库
1 | cat >>/etc/yum.repos.d/nginx.repo <<EOF |
启动Nginx
1 | nginx -t 测试配置是否有错 |
安装PHP
添加PHP用户
useradd -s /sbin/nologin php-fpm
安装PHP依赖库
1 | yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers |
编译安装php
1 | wget http://mirrors.sohu.com/php/php-7.2.6.tar.gz |
更改PHP配置文件
1 | sed -i 's/post_max_size = 8M/post_max_size = 32M/g' /usr/local/php/etc/php.ini |
启动php-fpm
1 | cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf |
vim phpinfo.php1
2
3<?php
phpinfo();
?>
测试是否能连接nginx,这里出现一个错误,访问动态页面一直显示文件没有发现,修改nginx配置文件的PHP脚本路径变量和修改文件权限后一直没有用,后来我将路径的变量去掉,添加网站真实路径后解决
安装zabbix-agent
1 | yum install zabbix-agent |
安装zabbix-web
将zabbix的php源文件拷贝到网站目录上
1 | cp -r /usr/share/zabbix/.* /usr/share/nginx/html/ |
修改nginx配置
egrep -v ‘(^.*#|^$)’ /etc/nginx/conf.d/default.conf1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18server {
listen 80;
server_name 192.168.179.132;
access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 404 /404.html;
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
重启nginx访问会报这个错
百度之后得知是权限不足引起的,运行一下命令可以解决,这里一定要777,不然到时候安装完成不能创建配置文件1
chmod -R 777 /etc/zabbix/web
在访问浏览器的时候不出图,请教我学长之后得出是因为nginx上配置了图片缓存,去掉缓存解决
访问192.168.179.132/index.php安装zabbix-web
安装完成可能会遇到连接不上zabbix-server的错误,查看zabbix-server日志如下,这个解决方法有两种,第一种就是创建一个mysql.sock然后重启mysql服务器1
2mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
第二种就是编辑zabbix_server.conf文件,将DBSocket修改为自己数据库的mysql.sock,然后重启 zabbix_server
监控zabbix 本机的CPU idle
监控CPU idle
基本就是图形界面,创建监控项之前先测试一下key值是否可用,当然需要安装zabbix_get工具,使用yum install zabbix-get来安装1
zabbix_get -s 192.168.179.132 -k system.cpu.util[all,idle,avg1]
自建模板监控磁盘IO
监控磁盘IO利用的工具是iostat
yum install -y sysstat
首先zabbix-agent端要开启允许脚本收集监控数据
编辑zabbix-agent的配置文件
vim /etc/zabbix/zabbix_agentd.d/userparameter.conf1
UserParameter=disk.status[*],/usr/local/zabbix/scripts/disk-status.sh $1
编写收集脚本
vim /usr/local/zabbix/scripts/disk-status.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
if [ $# -ne 1 ];then
echo "Follow the script name with an argument"
fi
case $1 in
rrqm)
iostat -dxk 1 1|grep -w sda |awk '{print $2}'
;;
wrqm)
iostat -dxk 1 1|grep -w sda |awk '{print $3}'
;;
rps)
iostat -dxk 1 1|grep -w sda|awk '{print $4}'
;;
wps)
iostat -dxk 1 1|grep -w sda |awk '{print $5}'
;;
rKBps)
iostat -dxk 1 1|grep -w sda |awk '{print $6}'
;;
wKBps)
iostat -dxk 1 1|grep -w sda |awk '{print $7}'
;;
avgrq-sz)
iostat -dxk 1 1|grep -w sda |awk '{print $8}'
;;
avgqu-sz)
iostat -dxk 1 1|grep -w sda |awk '{print $9}'
;;
await)
iostat -dxk 1 1|grep -w sda|awk '{print $10}'
;;
svctm)
iostat -dxk 1 1|grep -w sda |awk '{print $13}'
;;
util)
iostat -dxk 1 1|grep -w sda |awk '{print $14}'
;;
*)
echo -e "\e[033mUsage: sh $0 [rrqm|wrqm|rps|wps|rKBps|wKBps|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"
esac
touch +x /usr/local/zabbix/scripts/disk-status.sh #给脚本添加执行权限
打开zabbix-web,创建模板
浏览器打开192.168.179.132/index.php
依次点击配置——>模板——>创建模板
添加模板名称以及群组,最后点击添加
创建应用集
在创建的模板上点击创建应用集,名字最好与磁盘io相关
创建监控项
这里所有的数据类型都是浮点数
创建图形
这需要为每一个监控项都创建图形
为需要监控的主机链接模板
点击需要监控的主机,然后单击模板,为主机添加模板链接
解决图形名字乱码问题
可以看到我收集到的图形是乱码的
首先查看zabbix字体目录,它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,
vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH
而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont.ttf
我们可以从Windows系统中选择一个中文字体然后放到zabbix的字体目录下
Windows字体目录位于C:\Windows\Fonts下,找到仿宋常规字体将他拷入zabbix字体目录下
然后修改PHP文件,将字体文件修改为simsong
安装elastic6.1
下载源码包并解压,修改es配置
1 | yum install java #elastic需要安装Java依赖 |
vim /root/elasticsearch-6.1.4/config/elasticsearch.yml #主要修改es的一些配置信息
启动过程出现的报错1
[WARN ][o.e.b.BootstrapChecks ] [PWm-Blt] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决办法:
vim /etc/security/limits.conf1
2
3
4* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
1 | [WARN ][o.e.b.BootstrapChecks ] [PWm-Blt] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] |
解决办法:
vim /etc/sysctl.confvm.max_map_count=655360
修改完成执行命令:
sysctl -p
cd elasticsearch-6.1.4/bin
这里不能使用root用户运行elastic,可以自己新建一个普通用户,还要把目录授予普通用户权限
./elasticsearch
然后我们可以打开浏览器输入192.168.179.133:9200可以查看es的状态,或者可以装一个head插件
安装head插件
安装node.js
这里我采用的源码安装,其实二进制安装是比较简单的,但我执行到最后node的二进制文件无法执行,因此只能源码安装,时间有点长,打了两局王者荣耀才装完1
2
3
4
5
6yum groupinstall "Development Tools" #安装编译必要的工具
wget https://nodejs.org/dist/v8.11.4/node-v8.11.4.tar.gz #下载node的源码包
tar -zxvf node-v8.11.4.tar.gz #解压源码包
cd node-v8.11.4
./configure && make && make install #执行编译安装
echo $? #查看执行结果,输出0表示安装成功
node.js默认安装路径在/usr/local/bin/目录下
安装grunt
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动npm install -g grunt-cli
下载并安装head插件
1 | git clone git://github.com/mobz/elasticsearch-head.git #克隆head插件仓库 |
修改elasticsearch的配置
vim /elasticsearch/elasticsearch-6.4.0/config/elasticsearch.yml1
2http.cors.enabled: true # elasticsearch中启用CORS
http.cors.allow-origin: "*" # 允许访问的IP地址段,* 为所有IP都可以访问
启用head插件并在浏览器上打开
npm run start #启动head插件
在浏览器输入http://192.168.179.133:9100/ 即可使用head插件
使用es存储zabbix的历史数据
修改/etc/zabbix/zabbix_server.conf
添加如下内容1
2
3HistoryStorageURL=192.168.179.133:9200
HistoryStorageTypes=str,text,log,uint,dbl
HistoryStorageDateIndex=1
修改/etc/zabbix/web/zabbix.conf.php
添加如下内容1
2
3
4global $DB, $HISTORY;
$HISTORY['url'] = 'http://192.168.179.133:9200';
// Value types stored in Elasticsearch.
$HISTORY['types'] = ['str', 'text', 'log','uint','dbl'];
修改完成后重启zabbix,并查看zabbix是否有数据
systemctl restart zabbix-server
至此,es收集zabbix历史数据完成