Zabbix5.0+Grafana可视化部署教程

一、系统环境配置

1.修改/etc/sysctl.conf

fs.file-max = 655350
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_tw_buckets = 2000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 20000
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535

[root@zabbix ~]# sysctl -p

2.修改limits.conf修改

[root@zabbix~]# vim /etc/security/limits.conf

*               soft    nproc           65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535 #保存退出 [root@zabbix ~]# vim /etc/pam.d/login session required pam_limits.so

3.关闭防火墙和selinux

[root@zabbix ~]#systemctl stop firewalld
[root@zabbix ~]#systemctl disable firewalld
#关闭selinux
[root@zabbix ~]#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@zabbix ~]#setenforce 0

系统调整完成

二、lnmp环境搭建

1.安装nginx

#下载地址:http://nginx.org/download/nginx-1.19.9.tar.gz
#配置本地阿里云yun源
[root@zabbix ~]# cd /etc/yum.repos.d/
[root@zabbix yum.repos.d]# mkdir bk && mv * bk/
[root@zabbix yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装依赖包

[root@zabbix src]# yum install pcre-devel openssl-devel zlib-devel gcc* -y
# pcre 支持正则表达式
# zlib 支持数据压缩
# openssl支持HTTPS

开始安装

[root@zabbix nginx-1.19.9]# goupadd -g 501 nginx
[root@zabbix nginx-1.19.9]# useradd -u 501 -g 501 -s /sbin/nolog nginx
[root@zabbix nginx-1.19.9]# cd /usr/local/src
[root@zabbix nginx-1.19.9]# tar xf nginx-1.19.9.tar.gz
[root@zabbix nginx-1.19.9]# cd nginx-1.19.9
[root@zabbix nginx-1.19.9]# ./configure --prefix=/u01/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-pcre
# --with-http_ssl_module 启用HTTPS加密
# --with-http_stub_status_module 启用nginx状态监控
# --with-http_gzip_static_module  启用静态压缩
# --with-http_realip_module 做代理时获取客户端真实IP
# 这里说下,在编译之前需要安装编译支持环境
[root@zabbix nginx-1.19.9]# make && make install

启动重启

/u01/nginx/sbin/nginx -c /u01/nginx/conf/nginx.conf
/u01/nginx/sbin/nginx -s reload

通过客户端访问正常

 2.安装mysql8.0

下载mysql二进制包,以及安装mysql依赖包

#安装mysql所需依赖包
[root@zabbix src]# yum install libaio* -y
#下载mysql二进制安装包
[root@zabbix src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.14-linux-glibc2.12-x86_64.tar.xz
#卸载系统自带mysql/mariadb
[root@zabbix src]# rpm -qa | grep mysql
[root@zabbix src]# rpm -qa | grep mariadb
[root@zabbix src]# rpm -e --nodeps mysql
[root@zabbix src]# rpm -e --nodeps mariadb

创建mysql用户和组

[root@zabbix src]# groupadd mysql
[root@zabbix src]# useradd -r -g mysql -s /sbin/nologin mysql

解压mysql安装包并移至相关目录

#解压
[root@zabbix src]# tar xf mysql-8.0.14-linux-glibc2.12-x86_64.tar.xz
#移动
[root@zabbix src]# mv /usr/local/src/mysql-8.0.14-linux-glibc2.12-x86_64 /u01/mysql

创建Mysql所需data和log目录

[root@zabbix src]# mkdir -p /u01/mysql/{logs,data}
[root@zabbix src]# chown -R mysql:mysql /u01/mysql/
[root@zabbix src]# chmod -R 755 /u01/mysql/

配置/etc/my.cnf文件

[mysql]
socket=/tmp/mysql.sock
defalut-character-set=utf8
[mysqld]
character-set-server=utf8
port=3306
basedir=/u01/mysql
datadir=/u01/mysql/data
log-error=/u01/mysql/logs/error.log
user=mysql
default_authentication_plugin=mysql_native_password
skip_host_cache
skip-name-resolve=1
#skip-grant-tables
default_storage_engine=InnoDB

初始化数据库,这里生成的密码在后面登陆的时候并没用,所以记不记没什么关系

[root@zabbix mysql]# /u01/mysql/bin/mysqld --initialize --user=mysql --basedir=/u01/mysql/ --datadir=/u01/mysql/data/

制作启动文件

cp -a /ointall/mysql/support-files/mysql.server /etc/init.d/mysqld
#更改启动文件路径
vim /etc/init.d/mysqld
将basedir更改为basedir=/ointall/mysql
将basedir更改为basedir=/ointall/mysql/bin
将datadir更改为datadir=/oradata/data
#授予mysqld执行权限
chmod -R 755 /etc/init.d/mysqld
#启动mysql服务
/etc/init.d/mysqld start
#创建软连接,也就是windows里面的快捷方式
ln -vs /ointall/mysql/bin/mysql /usr/bin

注:如果所有操作,所有配置文件都没有错误的情况启动报如下错误,

Starting MySQL.Logging to '/var/log/mysql/error.log'.
 ERROR! The server quit without updating PID file (/oradata/data/rabbitmq.pid).
尝试用一下方法解决,具体原因不得而知。
/u01/mysql/bin/mysqld_safe  --defaults-file=/etc/my.cnf

到这里,mysql安装已经全部结束。接下来是登陆问题,安装完mysql后无法正常登陆,不管是随机密码。还是空密码都不行

[root@zabbix bin]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@mysql bin]# mysql -uroot -prgVLupUj0W#
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@zabbix bin]# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
#这时候我们修改/etc/my.cnf配置文件,在[mysqld]里面加一条如下参数。上的配置文件我已经给出了,只要去掉注释即可
skip-grant-tables
#重启mysql服务
/etc/init.d/mysqld restart

重新登陆mysql,按照下面的步骤进行修改密码

[root@zabbix bin]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.14 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> alter user 'root'@'localhost' identified by 'Newings@123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

3、安装php7.3

#先去这个网址下载加密包
https://centos.pkgs.org/
libmcrypt-2.5.8-4.el7.art.x86_64.rpm
libmcrypt-devel-2.5.8-4.el7.art.x86_64.rpm
mhash-0.9.9.9-3.el7.art.x86_64.rpm
mhash-devel-0.9.9.9-3.el7.art.x86_64.rpm

[root@zabbix rpm]# chmod u+x *
[root@zabbix rpm]# rpm -ivh *
#安装cmake编译工具
[root@zabbix src]# wget https://cmake.org/files/v3.11/cmake-3.13.2.tar.gz
[root@zabbix src]# tar xzvf cmake-3.13.2.tar.gz
[root@zabbix src]# cd cmake-3.13.2
[root@zabbix cmake-3.13.2]# ./bootstrap
[root@zabbix cmake-3.13.2]# gmake
[root@zabbix cmake-3.13.2]# gmake install
#下载libzip安装包
[root@zabbix src]# curl -O https://libzip.org/download/libzip-1.5.1.tar.gz
[root@zabbix src]# tar xf libzip-1.5.1.tar.gz
[root@zabbix src]# cd libzip-1.5.2/
[root@zabbix libzip-1.5.2]# mkdir build
[root@zabbix libzip-1.5.2]# cd build/
[root@zabbix build]# cmake ..
[root@zabbix build]# make && make install

安装依赖包

[root@zabbix build]# yum install  libmhash-devel libmcrypt-devel libxml2-devel libmhash-devel bzip2-devel libcurl-devel gd libjpeg-turbo-devel libpng-devel freetype-devel -y

编译安装php

[root@zabbix build]# cd /usr/local/src/
[root@zabbix src]# tar xf php-7.3.27.tar.gz
[root@zabbix src]# cd php-7.3.27/
[root@zabbix php-7.3.27]# ./configure --prefix=/usr/local/php --enable-fpm --enable-ftp \
--enable-zip --enable-xml --enable-sockets --enable-bcmath --enable-pcntl --enable-shmop \
--enable-soap --enable-sysvsem --enable-mbstring --enable-mbregex --enable-inline-optimization \
--enable-maintainer-zts --with-fpm-user=www --with-fpm-group=www \
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-freetype-dir \
--with-iconv-dir --with-jpeg-dir --with-png-dir --with-libxml-dir=/usr --with-curl  --with-zlib --with-bz2 \
--with-xmlrpc --with-gd --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-mhash --without-pear --with-gettext --disable-rpath --disable-fileinfo

# 在检查期间,会提示少模块或者文件,缺少什么就安装那个包就好
[root@zabbix php-7.3.27]# make && make install
#时间比较久
[root@zabbix php-7.3.27]# cp -a sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@zabbix php-7.3.27]# chmod +x /etc/init.d/php-fpm
[root@zabbix php-7.3.27]# cp -a php.ini-production /u01/php/etc/php.ini
[root@zabbix php-7.3.27]# cd /u01/php/etc
[root@zabbix php-7.3.27]# cp -a php-fpm.conf.default php-fpm.conf
[root@zabbix php-7.3.27]# cd cd php-fpm.d/
[root@zabbix php-fpm.d]# cp www.conf.default www.conf
#编辑www.conf,将user=www和group=www作如下修改
user=nginx
group=nginx
#启动php,如未正常启动,请看日志
[root@zabbix php-fpm.d]# /etc/init.d/php-fpm start
[root@zabbix php-fpm.d]# netstat -ntplu | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2512/php-fpm: pool

5.修改nginx配置文件

user  nginx nginx;
worker_processes  2;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;
worker_rlimit_nofile 65535;


events {
    use epoll;
    multi_accept on;
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;
    open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 100;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    client_header_timeout 2m;
    client_body_timeout 3m;
    reset_timedout_connection on;
    send_timeout 15s;

    open_file_cache max=65535 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;


    gzip  on;
    gzip_disable "msie6";
    gzip_proxied any;
    gzip_comp_level 4;
    gzip_vary on;
    gzip_min_length 1k;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            root   /u01/nginx/html;
            index  index.html index.htm index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

测试php异界mysql是否正常,注意mysql5和8所用的函数不一样

[root@zabbix html]# vim test.php
<?php
$conn=mysqli_connect('localhost','zabbix','root@123');
if ($conn)
   echo "success.";
else
   echo "fail.";
?>

 php信息

[root@zabbix html]# vim index.php
<?php
phpinfo()
?>

 

 三、安装zabbix

安装jdk

#卸载自带jdk工具
rpm -qa | grep java
rpm -e --nodeps *
#安装1.8以上jdk
[root@zabbix src]# tar xf jdk-8u151-linux-x64.tar.gz
[root@zabbix src]# mv jdk1.8.0_151/ ../
[root@zabbix src]# cd ../jdk1.8.0_151/
[root@zabbix src]# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk1.8.0_151
export JAVA_BIN=$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_BIN
#查看版本
[root@zabbix src]# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

安装依赖包

[root@zabbix src]# yum install mysql-devel net-snmp-devel -y
#libevent-devel需要升级
下载地址:https://centos.pkgs.org/

libevent-2.0.21-4.el7.x86_64.rpm
libevent-devel-2.0.21-4.el7.x86_64.rpm

安装zabbix

[root@zabbix src]# useradd -r zabbix
[root@zabbix src]# id zabbix
[root@zabbix src]# tar xf zabbix-5.2.6.tar.gz
[root@zabbix src]# cd zabbix-5.2.6/
[root@zabbix zabbix-5.2.6]# ./configure --prefix=/u01/zabbix --enable-server --enable-agent --enable-java --with-net-snmp --with-libcurl --with-mysql=/usr/bin/mysql_config
[root@zabbix zabbix-5.2.6]# cp misc/init.d/fedora/core/zabbix_* /etc/init.d/
[root@zabbix zabbix-5.2.6]# mkdir -p /u01/nginx/html/zabbix
[root@zabbix zabbix-5.2.6]# cp -a ui/* /u01/nginx/html/zabbix
[root@zabbix zabbix-5.2.6]# chown -R nginx:nginx /u01/nginx/html/zabbix
#修改启动脚本安装路径
[root@zabbix zabbix-5.2.6]# vim /etc/init.d/zabbix_server
[root@zabbix zabbix-5.2.6]# BASEDIR=/u01/zabbix
[root@zabbix zabbix-5.2.6]# vim /etc/init.d/zabbix_agentd
[root@zabbix zabbix-5.2.6]# BASEDIR=/u01/zabbi
#启动客户端和服务端
[root@zabbix zabbix-5.2.6]# systemctl start zabbix_server
[root@zabbix zabbix-5.2.6]# systemctl start zabbix_agentd

创建zabbix用户和数据库

[root@zabbix src]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5111
Server version: 8.0.14 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create user 'zabbix'@'%' identified by 'root@123';
Query OK, 1 rows affected (0.01 sec)
mysql> grant all on zabbix.* to 'zabbix'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;

创建数据库并导入zabbix数据

[root@zabbix src]# cd zabbix-5.2.6/database/
[root@zabbix database]# mysql -uzabbix -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5351
Server version: 8.0.14 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> show databases;
mysql> use zabbix; mysql
> source /usr/local/src/zabbix-5.2.6/database/mysql/schema.sql
mysql> source /usr/local/src/zabbix-5.2.6/database/mysql/images.sql
mysql> source /usr/local/src/zabbix-5.2.6/database/mysql/data.sql

 

浏览器输出ip/zabbix/setup.php开始配置zabbix

必要条件,如有fail,则去调整php.ini对应参数

配置DB连接

zabbix详细信息

界面设置

安装汇总

完成配置,
用户:Admin
默认密码:zabbix

 至此,zabbix已完成安装

接下来是Grafana的安装及配置,安装Grafana

#下载Grafana
https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Package/grafana-enterprise-10.1.0-1.x86_64.rpm
#安装Grafana
yum localinstall -y grafana-10.1.0-1.x86_64.rpm
#启动Grafana
systemctl start grafana-server.service
#查看Grafana是否正常运行
[root@zabbix ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8885/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      967/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1295/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      8946/zabbix_agentd  
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      8919/zabbix_server  
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      8891/php-fpm: maste 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      710/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      967/sshd            
tcp6       0      0 :::3000                 :::*                    LISTEN      9207/grafana        
tcp6       0      0 ::1:25                  :::*                    LISTEN      1295/master         
tcp6       0      0 :::33060                :::*                    LISTEN      971/mysqld          
tcp6       0      0 :::3306                 :::*                    LISTEN      971/mysqld          
tcp6       0      0 :::111                  :::*                    LISTEN      710/rpcbind  
#Grafana中文显示,修改defaults.in
#default_language = en-US
default_language = zh-Han
#重启服务
systemctl restart grafana-server.service

配置Grafana

#访问地址
http://IP:3000/login

#默认账户密码
用户:admin
密码:admin
#安装插件并配置数据源
1.首页>管理>插件和数据 2.搜索zabbix插件>安装>enable 3.连接>添加新数据源>选择zabbix 4.配置zabbix信息 http://IP/zabbix/api_jsonrpc.php

#添加数据源,首页>连接>数据源

#仪表盘展示

 


 

posted @ 2021-04-02 00:30  小年青。  阅读(1441)  评论(1编辑  收藏  举报