使用Zabbix+Grafana搭建监控平台

    Zabbix是基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,实时关注操作系统、应用程序的各项性能指标对于保障重要生产业务稳定运行是至关重要的。Zabbix主要提供数据采集、数据存储、数据分析、数据展示、监控报警、报警处理功能,Grafana主要提供数据展示功能,两者相结合可以完美地打造界面酷炫的监控平台。

    实验环境

    操作系统主机名称主机地址备注说明
    CentOS 7.9zabbix-server10.0.0.10服务端
    RHEL 7.9zabbix-linux10.0.0.11客户端
    Windows Server 2019zabbix-win10.0.0.12客户端
    Nginx 1.18.0 * MySQL 5.7.32 * PHP 7.4.16 * Zabbix 5.0.10 * Grafana 7.5.3 * OpenSSL 1.1.1k * Pcre 8.44 * Zlib 1.2.11

    服务端篇

    第一步 准备工作

    禁用SElinux

    1. # setenforce 0
    2. # sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config

    禁用防火墙或者开放服务端口

    1. # firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --add-port=3000/tcp --add-port=10051/tcp --permanent
    2. # firewall-cmd --reload

    配置本地yum软件仓库

    参考文章:Linux搭建本地yum软件仓库

    安装相关软件包

    1. # yum -y install gcc gcc-c++ autoconf automake wget vim net-tools lrzsz make cmake unzip openssl-devel openldap-devel bison-devel ncurses-devel libsqlite3x-devel oniguruma-devel curl-devel libxml2-devel libjpeg-devel libpng-devel freetype-devel libicu-devel libsodium-devel

    下载解压源码包

    1. # cd /usr/local/src/
    2. # wget --no-check-certificate http://zlib.net/zlib-1.2.11.tar.gz
    3. # wget --no-check-certificate https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
    4. # wget --no-check-certificate http://nginx.org/download/nginx-1.18.0.tar.gz
    5. # wget --no-check-certificate https://www.php.net/distributions/php-7.4.16.tar.gz
    6. # wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1k.tar.gz
    7. # wget --no-check-certificate https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.32.tar.gz
    8. # tar xzf zlib-1.2.11.tar.gz
    9. # tar xzf pcre-8.44.tar.gz
    10. # tar xzf nginx-1.18.0.tar.gz
    11. # tar xzf php-7.4.16.tar.gz
    12. # tar xzf openssl-1.1.1k.tar.gz
    13. # tar xzf mysql-boost-5.7.32.tar.gz

    第二步 安装Nginx

    创建Nginx用户组、用户

    1. # groupadd -g 10001 nginx
    2. # useradd nginx -u 10001 -g nginx -s /sbin/nologin

    编译安装Nginx

    1. # cd /usr/local/src/nginx-1.18.0
    2. ./configure \
    3. --user=nginx \
    4. --group=nginx \
    5. --prefix=/usr/local/nginx \
    6. --with-pcre=/usr/local/src/pcre-8.44 \
    7. --with-openssl=/usr/local/src/openssl-1.1.1k \
    8. --with-zlib=/usr/local/src/zlib-1.2.11 \
    9. --with-http_gzip_static_module \
    10. --with-http_dav_module \
    11. --with-http_stub_status_module \
    12. --with-http_addition_module \
    13. --with-http_sub_module \
    14. --with-http_flv_module \
    15. --with-http_mp4_module \
    16. --with-http_ssl_module  \
    17. --with-http_v2_module
    18. # make && make install

    创建Nginx主配置文件

    1. # mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak  
    2. # cat >> /usr/local/nginx/conf/nginx.conf << "EOF"
    3. #运行用户  
    4. user nginx nginx;  
    5.   
    6. #工作进程  
    7. worker_processes auto;  
    8.   
    9. #最大文件打开数  
    10. worker_rlimit_nofile 51200;  
    11.   
    12. #进程PID  
    13. pid /usr/local/nginx/logs/nginx.pid;  
    14.   
    15. #错误日志  
    16. error_log /usr/local/nginx/logs/error.log crit;  
    17.   
    18. #工作模式及连接数上限  
    19. events {  
    20. use epoll;  
    21. worker_connections 51200;  
    22. multi_accept on;  
    23. }  
    24.   
    25. http {  
    26. #加载虚拟主机配置文件  
    27. include /usr/local/nginx/vhost/*.conf;  
    28.   
    29. #文件扩展名与类型映射表  
    30. include mime.types;  
    31.   
    32. #默认文件类型  
    33. default_type application/octet-stream;  
    34.   
    35. #请求缓存  
    36. server_names_hash_bucket_size 512;  
    37. client_header_buffer_size 32k;  
    38. large_client_header_buffers 4 32k;  
    39. client_max_body_size 50m;  
    40.   
    41. #高效传输模式  
    42. sendfile on;  
    43. tcp_nopush on;  
    44. tcp_nodelay on;  
    45.   
    46. #连接超时时间  
    47. keepalive_timeout 60;  
    48.   
    49. #FastCGI优化  
    50. fastcgi_connect_timeout 300;  
    51. fastcgi_send_timeout 300;  
    52. fastcgi_read_timeout 300;  
    53. fastcgi_buffer_size 64k;  
    54. fastcgi_buffers 4 64k;  
    55. fastcgi_busy_buffers_size 128k;  
    56. fastcgi_temp_file_write_size 256k;  
    57. fastcgi_intercept_errors on;  
    58.   
    59. #开启GZIP压缩功能  
    60. gzip on;  
    61. gzip_min_length 1k;  
    62. gzip_buffers 4 16k;  
    63. gzip_http_version 1.1;  
    64. gzip_comp_level 2;  
    65. gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;  
    66. gzip_vary on;  
    67. gzip_proxied expired no-cache no-store private auth;  
    68. gzip_disable "MSIE [1-6]\.";  
    69.   
    70. #限制访问频率  
    71. #limit_conn_zone $binary_remote_addr zone=perip:10m;  
    72. #limit_conn_zone $server_name zone=perserver:10m;  
    73.   
    74. #隐藏响应header和错误通知中的版本号  
    75. server_tokens off;  
    76. access_log off;  
    77. }
    78. EOF

    创建子配置目录

    1. # mkdir -p /usr/local/nginx/vhost

    配置Nginx启动服务脚本

    1. # cat >> /etc/init.d/nginx << "EOF"
    2. #!/bin/bash
    3. #chkconfig: 2345 55 25
    4.   
    5. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
    6. NAME=nginx  
    7. NGINX_BIN=/usr/local/nginx/sbin/$NAME  
    8. CONFIGFILE=/usr/local/nginx/conf/$NAME.conf  
    9. PIDFILE=/usr/local/nginx/logs/$NAME.pid  
    10. ulimit -n 8192  
    11.   
    12. case "$1" in  
    13. start)  
    14.     echo -n "Starting $NAME... "  
    15.     if [ -f $PIDFILE ]; then  
    16.         mPID=$(cat $PIDFILE)  
    17.         isStart=$(ps ax | awk '{ print $1 }' | grep -e "^${mPID}$")  
    18.         if [ "$isStart" != '' ]; then  
    19.             echo "$NAME (pid $(pidof $NAME)) already running."  
    20.             exit 1  
    21.         fi  
    22.     fi  
    23.   
    24.     $NGINX_BIN -c $CONFIGFILE  
    25.   
    26.     if [ "$?" != 0 ]; then  
    27.         echo " failed"  
    28.         exit 1  
    29.     else  
    30.         echo " done"  
    31.     fi  
    32.     ;;  
    33.   
    34. stop)  
    35.     echo -n "Stoping $NAME... "  
    36.     if [ -f $PIDFILE ]; then  
    37.         mPID=$(cat $PIDFILE)  
    38.         isStart=$(ps ax | awk '{ print $1 }' | grep -e "^${mPID}$")  
    39.         if [ "$isStart" = '' ]; then  
    40.             echo "$NAME is not running."  
    41.             exit 1  
    42.         fi  
    43.     else  
    44.         echo "$NAME is not running."  
    45.         exit 1  
    46.     fi  
    47.     $NGINX_BIN -s stop  
    48.   
    49.     if [ "$?" != 0 ]; then  
    50.         echo " failed. Use force-quit"  
    51.         exit 1  
    52.     else  
    53.         echo " done"  
    54.     fi  
    55.     ;;  
    56.   
    57. status)  
    58.     if [ -f $PIDFILE ]; then  
    59.         mPID=$(cat $PIDFILE)  
    60.         isStart=$(ps ax | awk '{ print $1 }' | grep -e "^${mPID}$")  
    61.         if [ "$isStart" != '' ]; then  
    62.             echo "$NAME (pid $(pidof $NAME)) already running."  
    63.             exit 1  
    64.         else  
    65.             echo "$NAME is stopped"  
    66.             exit 0  
    67.         fi  
    68.     else  
    69.         echo "$NAME is stopped"  
    70.         exit 0  
    71.     fi  
    72.     ;;  
    73. restart)  
    74.     $0 stop  
    75.     sleep 1  
    76.     $0 start  
    77.     ;;  
    78.   
    79. reload)  
    80.     echo -n "Reload service $NAME... "  
    81.     if [ -f $PIDFILE ]; then  
    82.         mPID=$(cat $PIDFILE)  
    83.         isStart=$(ps ax | awk '{ print $1 }' | grep -e "^${mPID}$")  
    84.         if [ "$isStart" != '' ]; then  
    85.             $NGINX_BIN -s reload  
    86.             echo " done"  
    87.         else  
    88.             echo "$NAME is not running, can't reload."  
    89.             exit 1  
    90.         fi  
    91.     else  
    92.         echo "$NAME is not running, can't reload."  
    93.         exit 1  
    94.     fi  
    95.     ;;  
    96.   
    97. configtest)  
    98.     echo -n "Test $NAME configure files... "  
    99.     $NGINX_BIN -t  
    100.     ;;  
    101.   
    102. *)  
    103.     echo "Usage: $0 {start|stop|restart|reload|status|configtest}"  
    104.     exit 1  
    105.     ;;  
    106. esac
    107. EOF

    配置Nginx开机启动

    1. # chmod +x /etc/init.d/nginx
    2. # chkconfig --add nginx
    3. # chkconfig nginx on

    第三步 安装MySQL

    创建MySQL用户组、用户

    1. # groupadd -g 10002 mysql
    2. # useradd mysql -u 10002 -g mysql -s /sbin/nologin

    创建数据库目录

    1. # mkdir -p /data/mysql

    编译安装MySQL

    1. # cd /usr/local/src/mysql-5.7.32
    2. cmake  \
    3. -DMYSQL_USER=mysql \
    4. -DSYSCONFDIR=/etc \
    5. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    6. -DMYSQL_DATADIR=/data/mysql \
    7. -DMYSQL_TCP_PORT=3306 \
    8. -DEXTRA_CHARSETS=all \
    9. -DDEFAULT_CHARSET=utf8mb4 \
    10. -DDEFAULT_COLLATION=utf8mb4_general_ci \
    11. -DWITH_MYISAM_STORAGE_ENGINE=1 \
    12. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    13. -DWITH_PARTITION_STORAGE_ENGINE=1 \
    14. -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    15. -DWITH_EMBEDDED_SERVER=1 \
    16. -DENABLED_LOCAL_INFILE=1 \
    17. -DWITH_BOOST=./boost/boost_1_59_0
    18. # make && make install

    创建MySQL主配置文件

    1. # mv /etc/my.cnf /etc/my.cnf.bak
    2. # cat >> /etc/my.cnf << "EOF"
    3. [client]
    4. #password=  
    5. port=3306  
    6. socket=/tmp/mysql.sock  
    7.   
    8. [mysqld]  
    9. #bind_address=127.0.0.1  
    10. binlog_cache_size=192K  
    11. thread_stack=384K  
    12. join_buffer_size=4096K  
    13. query_cache_type=1  
    14. max_heap_table_size=1024M  
    15. port=3306  
    16. socket=/tmp/mysql.sock  
    17. datadir=/data/mysql  
    18. default_storage_engine=InnoDB  
    19. performance_schema_max_table_instances=400  
    20. table_definition_cache=400  
    21. skip-external-locking  
    22. key_buffer_size=512M  
    23. max_allowed_packet=100G  
    24. table_open_cache=1024  
    25. sort_buffer_size=2048K  
    26. net_buffer_length=4K  
    27. read_buffer_size=2048K  
    28. read_rnd_buffer_size=1024K  
    29. myisam_sort_buffer_size=32M  
    30. thread_cache_size=192  
    31. query_cache_size=256M  
    32. tmp_table_size=1024M  
    33. sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
    34. explicit_defaults_for_timestamp=true  
    35. #skip-name-resolve  
    36. max_connections=400  
    37. max_connect_errors=100  
    38. open_files_limit=65535  
    39. #log-bin=mysql-bin  
    40. #binlog_format=mixed  
    41. server-id=1  
    42. expire_logs_days=10  
    43. slow_query_log=1  
    44. slow-query-log-file=/data/mysql/mysql-slow.log  
    45. long_query_time=3  
    46. #log_queries_not_using_indexes=on  
    47. early-plugin-load=""  
    48. innodb_data_home_dir=/data/mysql  
    49. innodb_data_file_path=ibdata1:10M:autoextend  
    50. innodb_log_group_home_dir=/data/mysql  
    51. innodb_buffer_pool_size=1024M  
    52. innodb_log_file_size=256M  
    53. innodb_log_buffer_size=64M  
    54. innodb_flush_log_at_trx_commit=1  
    55. innodb_lock_wait_timeout=50  
    56. innodb_max_dirty_pages_pct=90  
    57. innodb_read_io_threads=4  
    58. innodb_write_io_threads=4  
    59.   
    60. [mysqldump]  
    61. user=root  
    62. #password=  
    63. quick  
    64. max_allowed_packet=500M  
    65.   
    66. [mysql]  
    67. no-auto-rehash  
    68.   
    69. [myisamchk]  
    70. key_buffer_size=128M  
    71. sort_buffer_size=2M  
    72. read_buffer=2M  
    73. write_buffer=2M  
    74.   
    75. [mysqlhotcopy]
    76. interactive-timeout
    77. EOF

    配置数据库软件目录、配置文件权限和属组属主

    1. # chmod 600 /etc/my.cnf
    2. # chown mysql:mysql /etc/my.cnf
    3. # chown -R mysql:mysql /usr/local/mysql

    配置MySQL数据库软件环境变量

    1. # echo "export PATH="/usr/local/mysql/bin:$PATH">> /etc/profile
    2. # source /etc/profile  

    配置MySQL开机启动

    1. # cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld  
    2. # chmod +x /etc/init.d/mysqld  
    3. # chkconfig --add mysqld  
    4. # chkconfig mysqld on  

    初始化MySQL数据库、基础安全加固

    1. # mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
    2. # service mysqld start
    3. # mysql
    4. mysql> update mysql.user set authentication_string=password('123456')  where user='root' and host='localhost';
    5. mysql> flush privileges;
    6. mysql> quit

    第四步 安装PHP

    编译安装PHP

    1. # cd /usr/local/src/php-7.4.16
    2. ./configure \
    3. --prefix=/usr/local/php \
    4. --with-config-file-path=/usr/local/php/etc  \
    5. --enable-mysqlnd  \
    6. --enable-xml  \
    7. --enable-bcmath  \
    8. --enable-shmop  \
    9. --enable-sysvsem  \
    10. --enable-inline-optimization  \
    11. --enable-mbregex  \
    12. --enable-mbstring  \
    13. --enable-intl  \
    14. --enable-ftp  \
    15. --enable-pcntl  \
    16. --enable-sockets  \
    17. --enable-soap  \
    18. --enable-opcache  \
    19. --enable-fpm  \
    20. --enable-gd  \
    21. --with-fpm-user=nginx  \
    22. --with-fpm-group=nginx  \
    23. --with-mysqli=mysqlnd  \
    24. --with-pdo-mysql=mysqlnd  \
    25. --with-iconv-dir  \
    26. --with-freetype  \
    27. --with-jpeg  \
    28. --with-zlib  \
    29. --with-libxml  \
    30. --with-curl  \
    31. --with-openssl  \
    32. --with-mhash  \
    33. --with-xmlrpc  \
    34. --with-gettext  \
    35. --with-sodium  \
    36. --disable-fileinfo  \
    37. --disable-rpath  \
    38. --disable-debug
    39. # make && make install

    创建PHP配置文件

    1. # cp /usr/local/src/php-7.4.16/php.ini-production /usr/local/php/etc/php.ini
    2. # cp /usr/local/src/php-7.4.16/sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
    3. # cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

    优化配置PHP

    1. # sed -i 's/post_max_size = 8M/post_max_size = 16M/' /usr/local/php/etc/php.ini
    2. # sed -i 's/max_execution_time = 30/max_execution_time = 300/' /usr/local/php/etc/php.ini
    3. # sed -i 's/max_input_time = 60/max_input_time = 300/' /usr/local/php/etc/php.ini
    4. # sed -i 's/\;date\.timezone =/date\.timezone = \"Asia\/Shanghai\"/' /usr/local/php/etc/php.ini

    添加LDAP模块

    1. # cd /usr/local/src/php-7.4.16/ext/ldap/
    2. # /usr/local/php/bin/phpize
    3. # ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap --with-libdir=lib64
    4. # make && make install
    5. # sed -i 's/;extension=ldap/extension=ldap/' /usr/local/php/etc/php.ini

    启动PHP、配置开机启动

    1. # cp /usr/local/src/php-7.4.16/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    2. # chmod +x /etc/init.d/php-fpm
    3. # service php-fpm start
    4. # chkconfig --add php-fpm
    5. # chkconfig php-fpm on

    第五步 安装Zabbix-Server

    快速安装Zabbix-Server

    1. # yum -y localinstall https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-server-mysql-5.0.10-1.el7.x86_64.rpm

    创建Zabbix服务端配置文件

    1. # mv /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak  
    2. # cat >> /etc/zabbix/zabbix_server.conf << "EOF"
    3. #监听IP地址  
    4. ListenIP=10.0.0.10  
    5.   
    6. #监听服务端口  
    7. ListenPort=10051  
    8.   
    9. #数据库主机  
    10. DBHost=127.0.0.1  
    11.   
    12. #数据库名称  
    13. DBName=zabbix  
    14.   
    15. #数据库用户  
    16. DBUser=zabbix  
    17.   
    18. #数据库密码  
    19. DBPassword=123456  
    20.   
    21. #数据库套接字  
    22. DBSocket=/tmp/mysql.sock  
    23.   
    24. #数据库端口  
    25. DBPort=3306  
    26.   
    27. #日志类型  
    28. LogType=file  
    29.   
    30. #日志文件  
    31. LogFile=/var/log/zabbix/zabbix_server.log  
    32.   
    33. #日志大小  
    34. LogFileSize=0  
    35.   
    36. #日志等级  
    37. DebugLevel=3  
    38.   
    39. #PID文件  
    40. PidFile=/var/run/zabbix/zabbix_server.pid  
    41.   
    42. #套接字目录  
    43. SocketDir=/var/run/zabbix  
    44.   
    45. #监控项检测超时  
    46. Timeout=30  
    47.   
    48. #慢日志查询  
    49. LogSlowQueries=3000  
    50.   
    51. #告警脚本目录  
    52. AlertScriptsPath=/usr/lib/zabbix/alertscripts  
    53.   
    54. #扩展脚本目录  
    55. ExternalScripts=/usr/lib/zabbix/externalscripts  
    56.   
    57. #SNMPTrapperFile  
    58. SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    59. EOF

    启动Zabbix-Server并配置开机启动

    1. # systemctl enable zabbix-server
    2. # systemctl start zabbix-server

    第六步 创建Zabbix网站

    创建Zabbix网站根目录

    1. # mkdir -p /data/zabbix

    下载Zabbix网站前端程序

    1. # cd /tmp  
    2. # wget --no-check-certificate https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.10.tar.gz
    3. # tar xzf zabbix-5.0.10.tar.gz
    4. # mv /tmp/zabbix-5.0.10/ui/* /data/zabbix/
    5. # rm -rf /tmp/zabbix-5.0.10*
    6. # chmod -R 755 /data/zabbix
    7. # chown -R nginx:nginx /data/zabbix

    创建Zabbix网站虚拟主机

    1. # cat >> /usr/local/nginx/vhost/zabbix.conf << "EOF"
    2. server {
    3.   
    4.   #监听端口  
    5.   listen 80;  
    6.   
    7.   #网站根目录  
    8.   root /data/zabbix;  
    9.   
    10.   #虚拟主机名称  
    11.   server_name 10.0.0.10;  
    12.   
    13.   #网站主页排序  
    14.   index index.php index.html index.htm default.php default.htm default.html;  
    15.   
    16.   #网站访问、错误日志  
    17.   access_log /usr/local/nginx/logs/zabbix.access.log;  
    18.   error_log /usr/local/nginx/logs/zabbix.error.log;  
    19.   
    20.   #流量限制(网站最大并发数500|单IP访问最大并发数50|每个请求流量上限1024KB)  
    21.   #limit_conn perserver 500;  
    22.   #limit_conn perip 50;  
    23.   #limit_rate 1024k;  
    24.   
    25.   #配置错误页面  
    26.   #error_page 404 /404.html;  
    27.   #error_page 500 502 503 504 /50x.html;  
    28.   
    29.   #禁止访问文件和目录  
    30.   location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) {  
    31.   return 404;  
    32.   }  
    33.   
    34.   #配置资源防盗链  
    35.   #location ~ .*\.(jpg|jpeg|gif|png|js|css)$ {  
    36.   #expires 30d;  
    37.   #access_log /dev/null;  
    38.   #valid_referers none blocked 10.0.0.10;  
    39.   #if ($invalid_referer) {  
    40.   #return 404;  
    41.   #}  
    42.   #}  
    43.   
    44.   #配置图片资源缓存时间  
    45.   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {  
    46.   expires 30d;  
    47.   error_log off;  
    48.   access_log /dev/null;  
    49.   }  
    50.   
    51.   #设置样式资源缓存时间  
    52.   location ~ .*\.(js|css)?$ {  
    53.   expires 12h;  
    54.   error_log off;  
    55.   access_log /dev/null;  
    56.   }  
    57.   
    58.   #解析PHP  
    59.   location ~* \.php$ {  
    60.   fastcgi_index index.php;  
    61.   fastcgi_pass 127.0.0.1:9000;  
    62.   include fastcgi_params;  
    63.   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
    64.   fastcgi_param SCRIPT_NAME $fastcgi_script_name;  
    65.   }  
    66. }
    67. EOF

    解压Zabbix建库脚本

    1. # gunzip /usr/share/doc/zabbix-server-mysql-5.0.10/create.sql.gz

    创建Zabbix数据库

    1. # mysql -uroot -p123456
    2. mysql> create database zabbix character set utf8 collate utf8_bin;
    3. mysql> create user zabbix@localhost identified by '123456';
    4. mysql> grant all privileges on zabbix.* to zabbix@localhost;
    5. mysql> use zabbix;
    6. mysql> source /usr/share/doc/zabbix-server-mysql-5.0.10/create.sql;
    7. mysql> flush privileges;
    8. mysql> quit

    启动Nginx

    1. # service nginx start

    初始化配置网站

    客户端篇

    第一步 RHEL 7.9安装Zabbix-Agent

    禁用SElinux

    1. # setenforce 0    
    2. # sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config

    禁用防火墙

    1. # systemctl disable firewalld    
    2. # systemctl stop firewalld    

    安装Zabbix-Agent

    1. # rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.10-1.el7.x86_64.rpm

    配置Zabbix-Agent

    1. # mv /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.bak
    2. # cat >> /etc/zabbix/zabbix_agent2.conf << EOF
    3. #PID文件
    4. PidFile=/var/run/zabbix/zabbix_agent2.pid  
    5.   
    6. #日志文件  
    7. LogFile=/var/log/zabbix/zabbix_agent2.log  
    8.   
    9. #日志大小控制  
    10. LogFileSize=1  
    11.   
    12. #服务端地址  
    13. Server=10.0.0.10  
    14.   
    15. #服务端地址
    16. ServerActive=10.0.0.10  
    17.   
    18. #监听端口  
    19. ListenPort=10050  
    20.   
    21. #监听地址  
    22. ListenIP=10.0.0.11  
    23.   
    24. #主机名  
    25. Hostname=zabbix-linux  
    26.   
    27. #配置文件子目录  
    28. Include=/etc/zabbix/zabbix_agent2.d/*.conf  
    29.   
    30. #用户自定义脚本  
    31. UnsafeUserParameters=1  
    32.   
    33. #控制套接字
    34. ControlSocket=/tmp/agent.sock
    35. EOF

    启动Zabbix-Agent并设置开机启动

    1. # systemctl enable zabbix-agent2.service
    2. # systemctl start zabbix-agent2.service

    第二步 Windows Server 2019安装Zabbix-Agent

    禁用防火墙

    1. C:\Users\Administrator> netsh advfirewall set allprofiles state off

    下载Zabbix-Agent

    https://www.zabbix.com/download_agents

    安装Zabbix-Agent

    主机监控篇

    第一步 添加监控主机

    默认用户名Admin,默认密码zabbix,登录Zabbix网站后依次点击Configuration - Hosts - Create Host。 首先在三处红色必填项(Host name、Groups、Interfaces)分别填入客户端主机名、主机组、客户端IP地址,然后点击Templates选项卡加载监控模板,最后点击add添加主机。

    如果未来规划接入大量监控主机,推荐大家选择主动监控模式,实现Zabbix客户端主动推送最新数据到Zabbix服务端,以减轻Zabbix服务端资源消耗。

    Linux监控模板:Template OS Linux by Zabbix agent active
    Windows监控模板:Template OS Windows by Zabbix agent active

    第二步 查看监控数据

    在Zabbix网站依次点击Monitoring - Latest data,选择刚才添加的两台主机(zabbix-linux和ZABBIX-WIN),确认能否收到来自这两台主机的最新相关数据。

    数据展示篇

    第一步 安装Grafana

    在Zabbix服务端上安装Grafana

    1. # yum -y localinstall https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.5.3-1.x86_64.rpm

    创建Grafana数据库

    1. # mysql -uroot -p123456
    2. mysql> create database grafana default character set utf8 collate utf8_general_ci;
    3. mysql> grant all on grafana.* to grafana@'%' identified by '123456' with grant option;
    4. mysql> flush privileges;
    5. mysql> quit

    配置Grafana

    1. # sed -i '/\[database\]/a\password = 123456' /etc/grafana/grafana.ini
    2. # sed -i '/\[database\]/a\user = grafana' /etc/grafana/grafana.ini
    3. # sed -i '/\[database\]/a\name = grafana' /etc/grafana/grafana.ini
    4. # sed -i '/\[database\]/a\host = 127.0.0.1:3306' /etc/grafana/grafana.ini
    5. # sed -i '/\[database\]/a\type = mysql' /etc/grafana/grafana.ini
    6. # chown root:grafana /etc/grafana/grafana.ini

    安装Zabbix插件

    1. # mkdir -p /var/lib/grafana/plugins
    2. # cd /var/lib/grafana/plugins/
    3. # wget --no-check-certificate https://storage.googleapis.com/plugins-community/alexanderzobnin-zabbix-app/release/4.1.4/alexanderzobnin-zabbix-app-4.1.4.zip
    4. # unzip alexanderzobnin-zabbix-app-4.1.4.zip
    5. # rm -f alexanderzobnin-zabbix-app-4.1.4.zip

    启动Grafana并配置开机启动

    1. # systemctl enable grafana-server
    2. # systemctl start grafana-server

    第二步 添加Zabbix数据源

    默认用户名Admin,默认密码zabbix,默认端口3000,登录Grafana网站后立即修改默认密码。首先依次点击Configuration - Plugins - Zabbix - Enable,然后依次点击Configuration - Data Sources - Add data source - Zabbix,在必填项(Name、URL、Access、Username、Password)分别填入数据源名字、数据源获取地址、数据源访问方式、Zabbix网站用户名称、Zabbix网站用户密码,最后点击Save & Test,确保可以正常获取远程Zabbix API version。

    第三步 导入仪表盘

    官方仪表盘:https://grafana.com/grafana/dashboards

    官方仪表盘主要是由网友制作上传,每个仪表盘下载页面都有一个DashBoard ID,在仪表盘安装界面中输入DashBoard ID即可快速安装。本文以我自己制作的仪表盘模板为例,通过上传文件的方式导入仪表盘。登录Grafana网站后依次点击Dashboards - Manage - Import - Upload JSON file,上传模板。

    第四步 查看监控数据

    登录Grafana网站后依次点击Dashboards - Manage - 模板名称,查看监控数据展示效果。另外,导入他人的仪表盘模板,可能会因为大家的仪表盘变量、Zabbix监控项等等有所不同而导致无法正常显示监控数据,需要根据实际情况进行调整。

    匿名

    发表评论

    匿名网友 填写信息