目录
1 Zabbix 简介
2 Zabbix 服务安装部署及监控配置
3 配置监控进程主机
4 解决 zabbix 中文乱码
5 文件系统可用空间小于 20G 自动告警
6 使用 Grafana 展示 zabbix 监控图表
############################# 开始部署 ############################
1 zabbix 简介
1.1 zbabix 简介
官方网站:http://www.zabbix.com/
企业级监控解决方案
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。
Zabbix 主要特点
安装不配置简单,学习成本低 支持多诧言(包括中文) 免费开源 自劢发现服务器不网络设备分布式监视以及 WEB 集中管理功能 可以无 agent 监视 用户安全认证和柔软的授权方式 通过 WEB 界面设置戒查看监视结果 email 等通知功能
Zabbix 主要功能
监控 CPU 负载、内存使用、磁盘使用、网络状态、端口监视、日志监视、插件开发自定义
1.2 Zabbix 运行机制
Zabbix Server 和 Zabbix agent
Zabbix Server 可以通过 SNMP,Zabbix agent,Ping,端口监视等你方法提供对进程服务器/网络状态的 监视,数据收集功能,可以在运行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD, OX X,Windows 多 平台。
Zabbix Agent 安装在需要被监控的目标服务器上,主要完成对硬件信息不操作系统有关的内存, CPU 等你 信息收集。
Zabbix Server 可以单独监视进程服务器的服务状态,同时也可以不 Zabbix Agent 结合。可以轮询 Zabbix Agent 主劢接收监视数据(trapping 传递 方式),同时还可以被劢接收 Zabbix Agent 发送的数据。
Zabbix 运行过程图
Zabbix 支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理 Zabbix,通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置!Agent 监控端口 10050
服务端安装 Zabbix Server 和 Zabbix Agent 两个服务,客户端只安装 Zabbix Agent 一个服务,监控原理 就是 Zabbix Agent 服务将从系统中获取的相关数据传送给 Zabbix Server,然后 Zabbix Server 服务将数据分析之后以 PHP 页面展示出来!
2 Zabbix 服务安装部署及监控配置
2.1 安装LNMP 环境
2.2 方法一 Zabbix 官网安装 :
https://www.zabbix.com/cn/download?zabbix=4.4&os_distribution=centos&os_version=7&db=mysql&ws=nginx
2.3 方法二 自己部署 LNMP 平台
安装MySQL5.7 数据库
MySQL 官网下载: https://downloads.mysql.com/archives/community/
选着版本,下载本地再上传至服务器,我这下载的是
mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar.gz
~]# mkdir mysql
~]# cd mysql
mysql]# rz
mysql]# tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar.gz
mysql]# ll
mysql]# yum -y install mysql-community-*.rpm
mysql]# systemctl start mysqld
mysql]# systemctl enable mysqld
mysql]# netstat -ntulp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 18427/mysqld
mysql]# grep password /var/log/mysqld.log ## 查找数据库初始密码
2020-05-07T08:07:03.706853Z 1 [Note] A temporary password is generated for root@localhost: ahU82+fwz:0Y
mysql]# mysql -u root -p
Enter password: ##输入初始密码登录数据库
mysql> alter user "root"@"localhost" identified by "poweroff"; ##设置新密码
mysql> exit;
mysql]# mysql -u root -p
Enter password: ##输入新密码登录数据库
mysql> create database zabbix character set utf8 collate utf8_bin; ##创建zabbix库
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; ## 添加 zabbix 库授权用户
mysql> quit;
安装Nginx
mysql]# cat /etc/yum.repos.d/nginx.repo ##配置nginx yum源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
mysql]# yum makecache ##刷新缓存
mysql]# yum -y install nginx ##安装nginx
mysql]# nginx -t
mysql]# systemctl start nginx
mysql]# netstat -ntulp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 90777/nginx: master
注:
1、 Nginx 官网: http://nginx.org/en/download.html
2、nginx源的nginx官网源,yum 安装时默认使用最新版本,不想使用最新版本也可以去nginx 官网下载源码包安装, 以下是nginx 源码安装模块
--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
安装PHP
PHP 官网下载:https://www.php.net/downloads
选着版本,下载本地再上传至服务器,我这下载的是 php-7.2.30.tar.gz
~]# mkdir php
~]# cd php
php]# rz
php]# tar -xf php-7.2.30.tar.gz
php]# ls
php]# cd php-7.2.30
php-7.2.30]# 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 libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel MySQL pcre-devel curl-devel libxslt-devel ##安装php 依赖包
php-7.2.30]# ./configure --prefix=/usr/local/php7.2 --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-calendar --with-bz2 --with-jpeg-dir --with-freetype-dir
php-7.2.30]# make
php-7.2.30]# make install
php-7.2.30]# cp php.ini-production /usr/local/php7.2/etc/php.ini
etc]# cd /usr/local/php7.2/etc/
etc]# cp php-fpm.conf.default php-fpm.conf
php-fpm.d]# cd php-fpm.d/
php-fpm.d]# cp www.conf.default www.conf
注: 这里都是相对路径
创建PHP 启动脚本
php-fpm.d]# cp /opt/php-7.2.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
php-fpm.d]# chmod 755 /etc/init.d/php-fpm
启动PHP
php-fpm.d]# /etc/init.d/php-fpm start
检验
php-fpm.d]# netstat -ntulp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 15391/php-fpm: mast
2.4、安装zabbix4.4 版本
~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm ## 安装zabbix 官网 yum 源
~]# yum -y install epel-release
~]# yum makecache
~]# yum -y install zabbix-server-mysql
~]# yum -y install zabbix-agent
~]# yum -y install zabbix-web-mysq
注:这里有时会安装失败,与网络有关,多安装几次
导入初始架构和数据,系统将提示输入新创建的密码。
~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Zabbix server配置数据库
~]# vim /etc/zabbix/zabbix_server.conf
DBPassword=password ##数据库链接密码
Zabbix前端配置PHP
~]# mv /etc/nginx/conf.d/default.conf{,.bak}
~]# cat /etc/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name www.zabbix.od.com.od; ##这里域名是我虚拟机内网的域名,需要修改windows 的hosts 文件,解析域名
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
~]# cat /usr/local/php7.2/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
listen = /run/php-fpm/zabbix.sock
listen.owner = nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
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[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai ## 设置时区
重启PHP 、Nginx
~]# /etc/init.d/php-fpm7.2 restart
~]# nginx -t
~]# systemctl restart nginx
启动zabbix
~]# systemctl start zabbix-server zabbix-agent
~]# systemctl enable zabbix-server zabbix-agent
2.5、配置 zabbix-web 前端页面
浏览器访问: http://www.zabbix.od.com.od/index.php,下一步 Next
开始检查环境,确认所有选项都为 ok , 下一步Next
#输入用于连接数据库的详细信息。Zabbix 数据库必须已经创建。下一步Next
这里不用改,直接下一步Next
确认信息,下一步Next
创建完成
默认用户名为 Admin,密码为 zabbix
注: 刚安装完下面有一条报警信息,说 zabbix restarted 运行时间小于 10 分钟,这个没有影响,这样的告警信息用于表示某些服务重启。刚刚运行时间肯定小于 10 分钟,所以忽略即可。
修改中文语言 ,如果看习惯英文,可以不用修改
注意:这里可用2 ,是我已经添加1台被监控的主机,刚创建成功时1台或者0台
3 配置监控进程主机
3.1 添加被监控主机
注意:这里新1台服务器做被监控主机
~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm ## 安装zabbix 官网 yum 源
~]# yum -y install zabbix-agent
~]#cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.17.133 #zabbix server 地址
ServerActive=192.168.17.133 #主动检查本主机的数据发送给 Zabbix Server
Hostname=192.168.17.132
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
~]# systemctl start zabbix-agent && systemctl enable zabbix-agent
~]# netstat -ntulp | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 24411/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 24411/zabbix_agentd
3.2 zabbix 添加 Host 主机
添加后状态为已启动,等待可用性也变为绿色就可以正常获取数据了。
查看监控到的数据,可以通过监测下图形查看,这里先查看磁盘使用情况:
注:现在已经成功监控到一台服务器。但显示网页中的一些汉字是乱码。
4 解决 zabbix 中文乱码
在windows找到 simkai.ttf 简体字,上传到 zabbix 服务器。
~]# cd /usr/share/zabbix/assets/fonts/ ##fonts 目录没有就创建
Fonts~]# rz
fonts]# rm -rf /etc/alternatives/zabbix-web-font
fonts]# ln -s /usr/share/zabbix/fonts/msyh.ttf /etc/alternatives/zabbix-web-font
fonts]# vim /usr/share/zabbix/include/locales.inc.php
将 'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false],
修改为 'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => true],
fonts]# systemctl restart zabbix-server
退出并重新登录WEB,查看图形,显示正常。
5 文件系统可用空间小于 20G 自动告警
5.1 创建监控项
创建自定义的监控项以及触发器,在 linux 主机模板中创建即可,以便于使用该模板的所有主机生效。
找到模板中的监控项进行创建
监控磁盘剩余空间,键值:vfs.fs.size[/,free]
注:
1、vfs 该键值用于检测磁盘剩余空间,zabbix 内置了非常多的键值可以选着使用
2、单位B不需要修改,后期图表中单位和G拼接起来就是GB
3、更新时间 10S ,在生产环境中不需要这么频繁,建议1小时检测一次,特殊业务除外
5.2 创建图形
创建图形,便于查看数据。
5.3 创建触发器
模板中创建触发器
添加表达式 ,
注: 结果大于20G 是根据服务器存储空间情况而定
查看告警信息
6 使用 Grafana 展示 zabbix 监控图表
安装 Grafana
Grafana 是一个将数据可视化的工具,是网络架构和应用分析中最流行的数据展示工具,相比于 zabbix 的图形界面而言 Grafana 拥有更美观的界面以及功能更强大的插件。
官网下载地址:https://grafana.com/grafana/download/6.6.2?platform=linux
选着合适的版本下载
~]# wget https://dl.grafana.com/oss/release/grafana-6.6.2-1.x86_64.rpm
~]# yum install grafana-6.6.2-1.x86_64.rpm -y
浏览器访问: http://www.zabbix.od.com.od:3000
注:
1、用户名:admin 密码:admin
2、第一次登陆会提示让你设置一个新的密码,因为默认密码是弱口令密码,存在风险
添加数据源拓展插件
注:
1、Grafana 默认并没有 zabbix 数据源的支持,
2、离线安装插件
下载地址:
https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.10.5/download
上传所需要安装包
~]# rz
~]# unzip alexanderzobnin-grafana-zabbix-v3.10.5-1-g2219691.zip -d /var/lib/grafana/plugins/ ## 解压至grafana 插件目录
~]# systemctl restart grafana-server
启用插件
下拉至最后找到 zabbix
点击启动
现在添加数据源就有 zabbix 的选项
下拉到最后选择 zabbix
zabbix API 地址:http://www.zabbix.od.com.od/api_jsonrpc.php
注:
zabbix4.4.8的接口换了,地址中不要zabbix即可,
填http://IP或 域名/api_jsonrpc.php 就能正常连接Grafana6.6
和设置 zabbix 信息同一界面,导入模板
查看效果
到此部署完成 Zabbix 4.4.8 + grafana 6.6.2 !!