Linux监控平台介绍、zabbix监控介绍、安装zabbix、忘记Admin密码如何做、主动模式和被动模式,添加监控主机、添加自定义模板、处理图形中的乱码、自动发现、添加自定义监控项目、配置邮件告警

1、Linux监控平台介绍

  • 监控存在的原因:站点出了问题,没有人知道,等用户发现了,才提醒供应商;对公司影响很大
  • 常见的开源监控软件有:cacti、nagios、zabbix、smokeping、open-falcon等
  • cacti、smokeping偏向于基础监控,成图非常漂亮,适合监控网络设备
  • cacti、nagios、zabbix服务端监控中心,需要php环境支持(用Apache的php,用nginx的php都可以),其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
  • pen-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究;open-falcon软件适合大企业使用,小企业可以去研究它的思想
  • 因为zabbix配置简单,优势明显,早起使用nagios的企业,慢慢的转向使用zabbix;
  • nagios,需要更改配置文件,并不支持web界面一键执行,nagios和zabbix相比:
  • nagios 更注重的是某一个监控的状态,不关注历史;
  • zabbix,则是把每一次监控的数值反馈出来,数值存到数据库里面,方便后期数据图去分析监控整个状态;
  • nagios不需要mysql的支持,不能成图,若需要画图,得安装插件以后才支持web界面;
  • ccti 也需要mysql的支持,也可以成图,可以记录历史数据
  • zabbix 在web界面下管理得非常彻底,可以增加监控节

2、zabbix监控介绍

  • 主流有3.2版本,最新的是3.4版本;更新快,使用的用户多;
  • C/S架构,基于C++开发,监控中心支持web界面配置和管理
  • zabbix软件,是C/S架构:有一个服务端,去客户端抓数据。在客户端必须要有一个服务启动运行才可以抓取数据;数据可以主动的上报服务端,也可以让服务端去连接客户端获取(通过抓取数据方式,数据获取分两个模式,一个主动模式,一个被动模式),zabbix软件基于C++开发,监控中心需要一个PHP的web环境,因为要开启一个web界面配置和管理
  • 单台server节点(即一台server),理论上 可以支持上万台客户端
  • 瓶颈:在于采集数据的量,虽然支持上万台,但监控的项目过多,还是会导致zabbix效率降低;所以,当服务器大到一定规模的时候,就需要对zabbix进行优化
  • 解决方法:可以增加一些代理点,这些代理点充当server,替代server去采集数据,最终得到分析结果再汇报给主服务端server

zabbix包含有五个组件:

  1. zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
  2. 数据存储 存放数据,比如mysql
  3. web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因(如果没有web界面,就无法在浏览器上配置它)
  4. zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力(当机器量很多的时候,可以使用zabbix-proxy)
  • 有时候,服务器分布在多个机房里,每个机房的服务器之间都是一个单独的内网,这时候就可以在某一个局域网里搭建一个 zabbix-proxy ,用这台 proxy 去监控局域网里的机器
  1. zabbix-agent 客户端软件(每一台客户端都需要安装agent),负责采集各个监控服务或项目的数据,并上报

zabbix监控流程图:

3、安装zabbix

准备工作

[root@aminglinux ~]#wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
  • 下载完之后,安装rpm包:rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
[root@aminglinux ~]#rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
  • 查看/etc/yum.repos.d/目录下面会看到增加了一个zabbix.repo
[root@aminglinux ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo  epel-testing.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  epel.repo          zabbix.repo
[root@aminglinux ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.2/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch 
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

yum安装zabbix

  • yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
  • zabbix-agent //客户端软件
  • zabbix-get //服务端用的一个工具,这个工具可以通过命令行的形式,获得客户端某些监控项目的数据
  • zabbix-server-mysql //这个是服务端跟mysql打交道相关的组件
  • zabbix-web //webUI ,web界面
  • zabbix-web-mysql //web和mysql相关组件
  • 服务端是需要安装这些所有的包,而在客户端仅需要安装 zabbix-agent 包
A机器
[root@aminglinux ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

B机器
[root@localhost ~]# yum install -y zabbix-agent
  • 安装mysql(之前已经安装,没有yum安装)
[root@aminglinux ~]# ps aux|grep mysql
root      1039  0.0  0.1 115428  1716 ?        S    22:17   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/aminglinux.pid
mysql     1254  0.9 44.8 981304 452500 ?       Sl   22:17   0:08 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/aminglinux.err --pid-file=/data/mysql/aminglinux.pid --socket=/tmp/mysql.sock
root      1418  0.0  0.0 112720   984 pts/0    S+   22:33   0:00 grep --color=auto mysql
  • 修改mysql的配置文件,修改/etc/my.cnf文件,设定默认的字符集,使web界面支持中文不会乱码;
[root@aminglinux ~]#vim /etc/my.cnf
在[mysqld]下添加字符集

character_set_server = utf8
  • 重启mysql服务:/etc/init.d/mysqld restart
[root@aminglinux ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL...... SUCCESS!
  • 建立zabbix的mysql库和访问用户:
[root@aminglinux ~]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, 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;    //创建zabbix库,并指定编码为utf8
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456'; //创建用户zabbix,写入123456库
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
  • 导入原始数据到zabbix库:自带库数据在/usr/share/doc/zabbix-server-mysql-3.2.11/ 目录下
[root@aminglinux ~]#  cd /usr/share/doc/zabbix-server-mysql-3.2.11/
[root@aminglinux zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@aminglinux zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz
[root@aminglinux zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@aminglinux zabbix-server-mysql-3.2.11]#  mysql -uroot -p123456 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.
  • 启动zabbix-server服务、httpd服务:停掉nginx服务以免httpd80端口被nginx占用
[root@aminglinux zabbix-server-mysql-3.2.11]# systemctl stop nginx
[root@aminglinux zabbix-server-mysql-3.2.11]# netstat -lntp
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:111             0.0.0.0:*               LISTEN      697/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      928/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1216/master         
tcp6       0      0 :::111                  :::*                    LISTEN      697/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      928/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1216/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1791/mysqld         
[root@aminglinux zabbix-server-mysql-3.2.11]# systemctl start zabbix-server  //启动zabbix-server
[root@aminglinux zabbix-server-mysql-3.2.11]# ps aux|grep zabbix
zabbix    2212  0.0  0.3 254588  3480 ?        S    10:24   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root      2215  0.0  0.0 112676   984 pts/0    S+   10:24   0:00 grep --color=auto zabbix
[root@aminglinux zabbix-server-mysql-3.2.11]# systemctl start httpd  //启动httpd
[root@aminglinux zabbix-server-mysql-3.2.11]# netstat -lntp
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:111             0.0.0.0:*               LISTEN      697/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      928/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1216/master         
tcp6       0      0 :::111                  :::*                    LISTEN      697/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      2222/httpd          
tcp6       0      0 :::22                   :::*                    LISTEN      928/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1216/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1791/mysqld         
[root@aminglinux zabbix-server-mysql-3.2.11]# ps aux|grep httpd
root      2222  2.7  1.5 394388 15484 ?        Ss   10:25   0:01 /usr/sbin/httpd -DFOREGROUND
apache    2224  0.0  0.7 394524  7692 ?        S    10:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    2225  0.0  0.7 394524  7692 ?        S    10:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    2226  0.0  0.7 394524  7692 ?        S    10:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    2227  0.0  0.7 394524  7692 ?        S    10:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    2228  0.0  0.7 394524  7692 ?        S    10:25   0:00 /usr/sbin/httpd -DFOREGROUND
root      2232  0.0  0.0 112676   984 pts/0    S+   10:25   0:00 grep --color=auto httpd
  • 设置开机启动zabbix-server,开机启动httpd,nginx开机不启动
[root@aminglinux zabbix-server-mysql-3.2.11]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@aminglinux zabbix-server-mysql-3.2.11]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@aminglinux zabbix-server-mysql-3.2.11]# chkconfig nginx off
  • 开启zabbix服务后,进程正常,但是没有监听端口:需要查看日志排查错误
[root@aminglinux ~]# ps aux|grep zabbix  //有zabbix进程
zabbix    2212  0.0  0.3 254588  3480 ?        S    10:24   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root      2289  0.0  0.0 112676   984 pts/0    S+   10:32   0:00 grep --color=auto zabbix
[root@aminglinux ~]# netstat -lntp  //但是没有zabbix端口监听
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:111             0.0.0.0:*               LISTEN      697/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      928/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1216/master         
tcp6       0      0 :::111                  :::*                    LISTEN      697/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      2222/httpd          
tcp6       0      0 :::22                   :::*                    LISTEN      928/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1216/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1791/mysqld
  • 查看zabbix并没有监听端口后,首先检查zabbix的错误日志,错误日志路径/var/log/zabbix/zabbix_server.log
[root@aminglinux ~]# tail /var/log/zabbix/zabbix_server.log
  2212:20180726:103621.166 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2212:20180726:103621.166 database is down: reconnecting in 10 seconds
  2212:20180726:103631.167 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2212:20180726:103631.167 database is down: reconnecting in 10 seconds
[root@aminglinux ~]# tail -3 /var/log/zabbix/zabbix_server.log
  2212:20180726:103641.168 database is down: reconnecting in 10 seconds
  2212:20180726:103651.168 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2212:20180726:103651.169 database is down: reconnecting in 10 seconds
  • 虽然zabbix服务有进程,但没有彻底的起来,说明不能够连接mysql,所以还需要更改zabbix的配置文件;配置文件为/etc/zabbix/zabbix_server.conf;
[root@aminglinux ~]# vim /etc/zabbix/zabbix_server.conf

搜索/DBHost
在DBName=zabbix上面增加
DBHost=127.0.0.1

在DBuser下面增加
DBPassword=123456
  • 因为mysql和zabbix装在同一台机器上,这里的 DBHost可以写localhost 或者127.0.0.1;如果是在生产环境上,有时候为了提升zabbix的性能,可能会把MySQL装在其他机器上,这是的DBHost,就需要写上mysql的ip
  • 启动zabbix服务,查看zabbix进程,监听的端口10051
[root@aminglinux ~]# systemctl restart zabbix-server.service
[root@aminglinux ~]# netstat -lntp|grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2174/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      2174/zabbix_server  
[root@aminglinux ~]# systemctl restart zabbix-server
[root@aminglinux ~]# ps aux |grep zabbix |wc -l
29
  • 关闭防火墙:
[root@aminglinux ~]# systemctl stop firewalld
[root@aminglinux ~]# setenforce 0
setenforce: SELinux is disabled
  • 配置web界面:打开浏览器输入 192.168.222.110/zabbix,打开zabbix配置页面
  • 打开zabbix界面后,点击 Next step ,会出现一个提示,出现OK的都不用管,会看到提示需要去设置php的timezone时区
  • 设置php的timezone时区,在php的配置文件中设置,默认php的配置文件在/etc/php.ini 里面
[root@aminglinux ~]# vim /etc/php.ini

搜索 /timezone
将 ;date.timezone 改为如下

date.timezone = Asia/Shanghai
  • 在定义完php的配置文件,还需要重启apache;刷新浏览器,会发现都变成OK了
[root@aminglinux ~]#systemctl restart httpd
  • 再来 Next step ,来配置数据库相关信息

  • host :MySQL所在机器IP

  • port:0为默认端口3306,如果有改动就修改

  • name:库的名字

  • user:库的用户

  • password:用户的密码

  • 然后再选择Next step ,配置站点名字相关

  • host:站点主机名

  • port:端口,如果有改动就改,没改动,默认就是10051

  • name:站点的名字

  • 配置完成后会有一个信息显示,如果配置错误,可以back返回上一步重新修改

  • 登录管理页,默认的账号是Admin,密码为zabbix

  • 在登录进zabbix之后,首先需要去更改密码(因为默认的密码大家都知道的),若是在线上环境不更改密码,很容易被别人拿到后台权限

  • 更改密码,先选择 Administration ,然后选择 Users

  • 然后找到Admin,并点进去,选择 Change password 修改密码和选择语言(支持中文),然后保存退出;刷新浏览器便变成中文版界面;

客户端安装zabbix(B机器)

[root@aming2 ~]# yum install -y zabbix-agent
  • 配置B机器的zabbix-agent的配置文件:指定zabbix服务端的信息等
[root@aming2 ~]# vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.222.110
# 定义服务端的ip(被动模式)

ServerActive=192.168.222.110
#定义服务端的ip(主动模式)
#这个涉及到一个主动和被动模式;如果这里不填写服务中心的IP,那么就只能使用被动模式;这个IP是主动模式时候用的

Hostname=Zabbix server修改为Hostname=test
#这是自定义的主机名,一会还需要在web界面下设置同样的主机名
  • 启动zabbix服务;查看zabbix服务,监听的端口,客户端监听的端口是10050
[root@aming2 ~]# systemctl start zabbix-agent
[root@aming2 ~]# ps aux |grep zabbix
zabbix    1821  0.3  0.1  80736  1264 ?        S    18:24   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix    1822  0.0  0.1  80736  1344 ?        S    18:24   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix    1823  0.2  0.1  80736  1828 ?        S    18:24   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix    1824  0.0  0.2  80736  2036 ?        S    18:24   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix    1825  0.0  0.1  80736  1844 ?        S    18:24   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix    1826  0.0  0.2  80864  2196 ?        S    18:24   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root      1828  0.0  0.0 112676   980 pts/0    S+   18:24   0:00 grep --color=auto zabbix
[root@aming2 ~]# netstat -lntp
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:50091           0.0.0.0:*               LISTEN      1027/rpc.statd      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      650/rpcbind         
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      1030/rpc.mountd     
tcp        0      0 0.0.0.0:45045           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1023/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1270/master         
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1821/zabbix_agentd  
tcp6       0      0 :::38283                :::*                    LISTEN      1027/rpc.statd      
tcp6       0      0 :::111                  :::*                    LISTEN      650/rpcbind         
tcp6       0      0 :::20048                :::*                    LISTEN      1030/rpc.mountd     
tcp6       0      0 :::22                   :::*                    LISTEN      1023/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1270/master         
tcp6       0      0 :::39006                :::*                    LISTEN      -                   
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::10050                :::*                    LISTEN      1821/zabbix_agentd  
tcp6       0      0 :::3306                 :::*                    LISTEN      1201/mysqld
  • 设置开机启动;客户端的zabbix配置完成
[root@aming2 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

4、忘记Admin密码如何做

  1. 进入mysql命令行,选择zabbix库
  2. mysql -uroot -p zabbix
  3. update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
  4. 这样就更改了Admin用户的密码
  • 进去mysql,直接修改zabbix库的users表的密码信息:
[root@aminglinux ~]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 394
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, 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> use zabbix  //使用zabbix库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;  //查看zabbix相关的表,以后服务器监控的主机越多,那么这些表会越来越大,所以需要去指定合适的监控策略

+----------------------------+
127 rows in set (0.00 sec)

mysql> desc users;   //查看users表
+----------------+---------------------+------+-----+---------+-------+
| Field          | Type                | Null | Key | Default | Extra |
+----------------+---------------------+------+-----+---------+-------+
| userid         | bigint(20) unsigned | NO   | PRI | NULL    |       |
| alias          | varchar(100)        | NO   | UNI |         |       |
| name           | varchar(100)        | NO   |     |         |       |
| surname        | varchar(100)        | NO   |     |         |       |
| passwd         | char(32)            | NO   |     |         |       |
| url            | varchar(255)        | NO   |     |         |       |
| autologin      | int(11)             | NO   |     | 0       |       |
| autologout     | int(11)             | NO   |     | 900     |       |
| lang           | varchar(5)          | NO   |     | en_GB   |       |
| refresh        | int(11)             | NO   |     | 30      |       |
| type           | int(11)             | NO   |     | 1       |       |
| theme          | varchar(128)        | NO   |     | default |       |
| attempt_failed | int(11)             | NO   |     | 0       |       |
| attempt_ip     | varchar(39)         | NO   |     |         |       |
| attempt_clock  | int(11)             | NO   |     | 0       |       |
| rows_per_page  | int(11)             | NO   |     | 50      |       |
+----------------+---------------------+------+-----+---------+-------+
16 rows in set (0.00 sec)
  • 需要修改的是passwd的表;修改密码:update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
mysql> update users set passwd=md5('aminglinux') where alias='Admin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users\G;  //查看表的情况
*************************** 1. row ***************************
        userid: 1
         alias: Admin
          name: Zabbix
       surname: Administrator
        passwd: 683cb8e76a8889fdc5161e3fa7e51f2d
           url: 
     autologin: 1
    autologout: 0
          lang: zh_CN
       refresh: 30
          type: 3
         theme: default
attempt_failed: 0
    attempt_ip: 
 attempt_clock: 0
 rows_per_page: 50
*************************** 2. row ***************************

修改后重新用新密码登录。

5、主动模式和被动模式

  • 针对的对象是zabbix-agent:
1、被动模式:agent被动接受server的连接,把监控数据信息递给服务端server,服务端发起连接agent获取监控数据。
2、主动模式:agent主动上报监控数据给server,server端负责接收数据。agent定义监控项目:cpu负载、网卡流量等,在固定时间(例如每隔30秒)上报给server,server存到mysql里
  • 当agent数量很多的时候,可以使用主动模式:降低server端的压力。当agent只有几十台机器的时候用主动被摸模式都可以。
  • 当服务端server有公网ip,agent只有内网ip(但agent可以连接外网),则适合用主动模式上报,因为server端连接不到agent,而agent能够找到server。

6、添加监控主机

1、配置-->主机群组:新建群组test
2、配置-->主机:新建主机test01,绑定群组test,设置要监控agent的ip
3、监控项-->选择主动或被动模式
4、应用集(大项)、监控项(子项):选择需要监控的项目,如cpu负责、内存、网卡等信息
5、触发器:针对定义的监控项,设置告警的规则,级别有:警告、信息、一般严重、严重、灾难等
6、图形:根据监控项的历史数据,形成图示。
7、自动发现规则:默认有文件系统的:例如磁盘使用信息、使用量、分区等;网卡信息:在web场景监控网站状态码等。
  • 在web页面配置添加监控主机,选择 配置 ,在选择 主机群组 ,新建群组test

  • 新建主机test01,绑定群组test,设置要监控agent的ip

  • 监控项--选择主动或被动模式

  • 定义主动和被动模式,在 监控项 里定义

在定义完主机后看到: 应用集、监控项、触发器、自动发现规则、web场景
应用集:应用集就是监控项的集合,应用集的目的是为了更方便的去管理监控项
监控项:监控的项目
触发器:就是针对某一个项目,设置的一个告警规则
图形:相关数据的图表化
自动发现规则:自动抓取机器的两个信息,并生产图片和触发器一个是文件系统,另一个网卡
web场景:用于监控web站点

7、添加自定义模板

  • 以自定义一个常用模板,方便给新增主机添加监控项目
  • 自定义test模板:把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到模板里
  • 自定义模版后,就可以在主机上,链接自定义的模版了

8、处理图形中的乱码

  • 监控主机形成历史监控数据图形,会出现中文字无法显示正常的问题:
  • 编辑配置文件,查找图形字体的配置文件位置:
vim /usr/share/zabbix/include/defines.ini.php
ZBX_FONTPATH  realpath('fonts')   //相对路径是fonts,相对于/usr/share/zabbix/ 目录
define('ZBX_GRAPH_FONT_NAME','graphfont');  //指定了字体文件为graphfont.ttf

fonts目录下的字体文件就是graphfont.ttf,他是软链接文件  --> /etc/alternatives/zabbix-web-font --> /usr/share/fonts/dejavu/DejaVuSans.ttf
2、我么把windows系统上的字体文件,复制
  • windows字体路径为“C:\Windows\Fonts\”,找到“simfang.ttf”(其实就是那个仿宋简体),先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/,把原来的graphfont.ttf改名拷贝起来,并且做软链接ln -s SIMLI.TTF graphfont.ttf
[root@aminglinux ~]# cd /usr/share/zabbix/fonts/
[root@aminglinux fonts]# ls
graphfont.ttf  simfang.ttf
[root@aminglinux fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@aminglinux fonts]# ln -s simfang.ttf graphfont.ttf
[root@aminglinux fonts]# ll
总用量 3904
lrwxrwxrwx 1 root root      11 7月  26 20:52 graphfont.ttf -> simfang.ttf
lrwxrwxrwx 1 root root      33 7月  26 15:43 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 3996872 7月  26 20:51 simfang.ttf
[root@aminglinux fonts]#
  • 刷新一下web页面,图形就能显示中文了

9、自动发现

1、设置发动发现的时间间隔:默认1h,可以设置为10分钟
2、点击自动发现规则的名称,进去配置规则,数据更新间隔为:30秒,基本没有系统压力,重启服务即可生效。
3、配置-->模版-->自动发现-->图形原型-->可以修改图形的颜色形状等。

10、添加自定义监控项目

  • 很多监控项目是在模版里面配置体现出来的,但有时候会有一些个性化的需求,比如就是想知道某一个业务的数据,运营人员想知道网站注册量,和会员活动每天的活跃度,这些数据实际上是可以通过数据库里面的表体现出来的,但是在Zabbix不可以提供这么详细的监控项目,当遇到这种需求怎么办? 当遇到这种需求需要一个在客户端写一个shell脚本,把这个数值展现出来,通过一个监控项目,再去形成图表,给运营人员分析每星期的数值,以及每个月的数值趋势走向. zabbix在这点上还是不错的,可以自定义去监控一个项目.

  • 需求:监控某台web的80端口连接数,并出图

  • 解决方法:两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现

  • 首先需要在客户端(B机器)定义脚本,并赋予zabbix用户 执行权限;
[root@aming2 ~]# vim /usr/local/sbin/estab.sh

#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED  //注:netstat -ant 是可以查看连接数的
[root@aming2 ~]# vim /usr/local/sbin/estab.sh
[root@aming2 ~]# vim /usr/local/sbin/estab.sh
[root@aming2 ~]# chmod 755 /usr/local/sbin/estab.sh
[root@aming2 ~]# ll  /usr/local/sbin/estab.sh
-rwxr-xr-x. 1 root root 91 7月  26 23:30 /usr/local/sbin/estab.sh
  • 第2步:编辑客户端的配置文件
[root@aming2 ~]# vim /etc/zabbix/zabbix_agentd.conf
搜索 /UnsafeUserParameters

将# UnsafeUserParameters=0
改为UnsafeUserParameters=1  
#目的是使用自定义脚本

搜索 /UserParameter
将# UserParameter=
改为UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
#表示自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,如果有参数写入到 [ ] 里面,用逗号分隔,脚本为/usr/local/sbin/estab.sh
  • B机器:重启 zabbix-agent 服务
[root@aming2 ~]# systemctl restart zabbix-agent
  • 在服务端测试客户端写的脚本是否有效
[root@aminglinux ~]# zabbix_get -s 192.168.222.111 -p 10050 -k 'my.estab.count'
0
zabbix_get -s 192.168.222.111 -p 10050 -k 'my.estab.count'
-s 指定客户端的IP地址
-p 指定端口,不加-p,默认就是10050端口
-k 表示 键值
  • 测试不成功则检查防火墙有没有关闭

  • 在zabbix监控中心(浏览器)配置增加监控项目,

在 配置 —— 主机 ——创建监控项
名称 写为:并发链接数
类型 :选择zabbix客户端
键值 写:my.estab.count——>键值可自定义,是不固定的
单位 :保持默认
历史数据保留时长(单位天):默认保持90天
应用集:可以不选择,因为没有定义应用集
  • 在添加该项目后,还需要添加图形,配置——主机——图形——创建图形

  • 做一个触发器,选择触发器——创建触发器

点击触发器 --创建触发器 --名称 :并发连接数 -- 严重性 -- 选择告警 --表达式 --添加  -- 监控项目 --点击选择--选中并发连接数 -- 功能 选择 最新的T值<N --> N 定义为200 (意思是并发数达到200就告警) --添加

11、配置邮件告警

  • 使用第三方邮箱进行告警邮件的发送,这里使用163邮箱进行配置。

  • 登录163邮箱网页版,开启POP3/SMTP/IMAP服务,设置授权码与zabbix进行通信认证

登录163邮箱 -->点击设置 -->选择POP3/SMTP/IMAP -->POP3/IMAP服务 和SMTP/IMAP服务 选中 --> 会提示让我们设置授权码 --> 确定 -->开启 -->提示手机验证 -->输入手机发来的验证码 -->确定 -->设置授权码  -->确定 -->保存
  • 在Zabbix监控中心设置报警媒介类型;
点击管理设置-->告警媒介类型 -->创建报警媒介类型 --> 名称 自定义 --> 类型 选择脚本 -->脚本名称 自定义 -->添加 -->定义脚本参数 --添加
脚本参数含义:

    {ALERT.SENDTO}  -- 发邮件给谁
   {ALERT.SUBJECT}   -- 邮件标题
   {ALERT.MESSAGE}  -- 邮件内容
  • 创建告警脚本
  • 在服务端(A机器)创建报警脚本mail.py ,先查看报警脚本所在位置
[root@aminglinux ~]# vim /etc/zabbix/zabbix_server.conf
搜索/AlertScripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
#报警脚本所在路径
[root@aminglinux ~]# cd /usr/lib/zabbix/alertscripts/
[root@aminglinux alertscripts]# vim mail.py
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.qq.com'
    gport = 25

    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err


def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####脚本使用说明######

#1. 首先定义好脚本中的邮箱账号和密码 #2. 脚本执行命令为:python mail.py  目标邮箱 "邮件主题" "邮件内容"

更改mail.py脚本的权限(很重要!!!),否则就会无法告警

[root@aminglinux ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
  • 测试能否发邮件
[root@aminglinux alertscripts]# python mail.py [email protected] "test" "test"

猜你喜欢

转载自blog.csdn.net/xou6363/article/details/81230129
今日推荐