×

微信扫一扫,快捷登录!

标签: 暂无标签
最近一直在看系统监控相关的文章,所以以后的时间里会时不时发一些系统监控相关的文章上来。还是那句话,喜欢就看看,不喜勿喷啦!
随着业务系统的不断升级和庞大,涉及到的服务器会越来越多,我们传统的监控和服务器管理方式将逐渐不能满足日常运维需要
所以我们提了自动化运维,智能运维等很多口号,要做好自动运维,监控就要先做起来
主机、操作系统、中间件、数据库&网络等等...
个人觉得呢,系统监控应该:
一、把所有的主机、数据库、中间件、交换机等资源监控起来,根据业务需求设置各种级别监控伐值,并将告警消息push给运维负责人
二、根据业务场景,配置各种自动化工具,进行业务扩容(业务负载高时)、服务器隔离(硬件故障时)、并做好启动清理和历史数据归档等
三、实现主机的自制管理功能(通过管理口管理),包括操作系统自动安装、硬件一级监控(温度、风扇转速、raid等)、远程桌面等
四、监控应实现服务器自动发现功能,这样新增的服务器就很容易监控起来
好了,不扯这么远了,搞点实际的吧
那么,就从最近很火的zabbix入手吧!
最近这段时间看了很多zabbix的相关文章,也做了很多测试(淌了很多坑)
zabbix可以实现大部分硬件、中间件、数据库资源的监控(大致可以对应到一、二、四点功能;第三点以后有机会再说吧)
包括zabbix agent(实现数据捕获)、zabbix proxy(实现数据分级分区域存储、服务器轻度汇总)、zabbix server实现数据存储和web展现
zabbix proxy不是必须插件,但在多局域网或者服务器比较多时是首选
接下来呢,我将利用我的服务器搭建一套zabbix系统(step-by-step),并做相关配置和简单调优
我本地操作系统是redhat/centos 7.2,可能是版本原因把,搭建zabbix遇到了一些不一致的问题,大家如果有可能,直接装在7.3上会省很多事
1、环境介绍
zabbix01:192.168.150.129(部署zabbix server、zabbix client、mysql),client 直连zabbix server
zabbix02:192.168.150.130(部署zabbix proxy、zabbix client、mysql),client经由proxy,连接到zabbix server
[root@zabbix01 ~]# more /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@zabbix01 ~]#
修改/etc/hosts,将上述对应关系添加进去(两台服务器一样的操作哈)
[root@zabbix01 ~]# echo 192.168.150.129 zabbix01 >> /etc/hosts
[root@zabbix01 ~]# echo 192.168.150.130 zabbix02 >> /etc/hosts

2、部署zabbix01
zabbix01上部署zabbix server、zabbix client
zabbix server需要很多组建:php、httpd、mysql(数据库我用mysql),也就是所谓的LNMP系统
zabbix client很简单,直接rpm安装就行
不多说,下边我们一步一步安装吧
a、安装和配置mysql
mysql的安装见我之前发的《redhat7下安装mysql》,这里不多说了,我mysql的版本是5.7.16
[root@zabbix01 mysql]# mysql -V
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

I、创建zabbix数据库和用户
[root@zabbix01 mysql]# mysql -uroot -pZxt1234!
...
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix identified by 'Zabbix123!';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
[root@zabbix01 mysql]

II、mysql的参数调优
我简单罗列了几个可以调优的mysql参数,但我这里是虚机内存比较小,大家可根据实际情况调整吧,具体见下
[root@zabbix01 mysql]# cat /etc/my.cnf
...
max_allowed_packet = 8M
max_heap_table_size =16M
read_rnd_buffer_size = 512K
sort_buffer_size = 16
join_buffer_size = 16
query_cache_size = 128M
query_cache_limit = 4M
innodb_open_files =1024
innodb_buffer_pool_size = 256M
innodb_thread_concurrency = 16
[mysqldump]
quick
max_allowed_packet = 8M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 2M
write_buffer = 2M
skip-name-resolve
[root@zabbix01 mysql]#
这里skip-name-resolve一定要加上,不然通过-h方式访问数据库会很慢(走dns的原因)

III、重启mysql
[root@zabbix01 mysql]# systemctl daemon-reload  
[root@zabbix01 mysql]# systemctl restart mysqld
[root@zabbix01 mysql]# systemctl enable mysqld
zabbix02上会装zabbix proxy哈,也需要mysql,安装部分跟这里一样,后边就不单独说了
[root@zabbix02 mysql]# systemctl daemon-reload  
[root@zabbix02 mysql]# systemctl restart mysqld
[root@zabbix02 mysql]# systemctl enable mysqld  
[root@zabbix02 mysql]# mysql -V
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

b、安装php依赖包
zabbix server端会严重依赖php环境,这里说一下比较坑的地方
zabbix server的安装要求php-mbstring、php-bcmath,而这俩组建有依赖一堆php的相关包,但是redhat 7.1、7.2是没有这个组件的。
没办法,我从网上(linux/RPM/index.html)下载了所有相关7.3的php相关,这才好使
[root@zabbix01 mysql]# cd /root/Downloads/php/
[root@zabbix01 php]# ls
php-5.4.16-42.el7.x86_64.rpm         php-common-5.4.16-42.el7.x86_64.rpm  php-mbstring-5.4.16-42.el7.x86_64.rpm  php-xml-5.4.16-42.el7.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm  php-gd-5.4.16-42.el7.x86_64.rpm      php-mysql-5.4.16-42.el7.x86_64.rpm
php-cli-5.4.16-42.el7.x86_64.rpm     php-ldap-5.4.16-42.el7.x86_64.rpm    php-pdo-5.4.16-42.el7.x86_64.rpm
[root@zabbix01 php]# yum localinstall *.rpm
...
Complete!
[root@zabbix01 php]#
安装期间还自动安装了一堆其它的依赖包,包括httpd(apache server)等,刚好这也是zabbix需要的,好了我们再把httpd启动起来
[root@zabbix01 php]# systemctl daemon-reload
[root@zabbix01 php]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zabbix01 php]# systemctl restart httpd

c、安装zabbix server
I、安装zabbix yum源
这里通过rpm的方式安装官方zabbix的yum源
[root@zabbix01 php]# rpm -ivh --httpproxy=10.1.57.56 --httpport=8080 zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.TMs2pN: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-release-3.2-1.el7         ################################# [100%]
[root@zabbix01 php]# ls /etc/yum.repos.d/
CentOS-Media.repo  zabbix.repo
安装好之后,会多一个zabbix.repo文件
我这里用到了http的代理哈,如果不需要,请取消
安装好之后,我们将本地缓存的参数加进去,这样所有安装过的rpm都会在本地缓存一份
[root@zabbix01 php]# vi /etc/yum.repos.d/zabbix.repo
[zabbix]
...
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
...

[zabbix-non-supported]
...
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
...

II、安装zabbix server
一堆依赖包,最关键的fping、iksemel等,不过在zabbix的yum源中都有了
[root@zabbix01 php]# yum install zabbix-server-mysql zabbix-web-mysql
...
Complete!
[root@zabbix01 php]#

III、初始化zabbix数据库
此过程会在zabbix数据库中创建127张表
[root@zabbix01 php]# zcat /usr/share/doc/zabbix-server-mysql-3.2.*/create.sql.gz | mysql -uzabbix -pZabbix123! zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix01 php]#

IV、zabbix性能调优
实际环境中需要根据服务器配置和业务负载进行配置,我这里是虚机,只做参考
修改配置文件:/etc/zabbix/zabbix_server.conf,根据实际情况调整如下项内容(我的虚机是这么调的)
StartPollers=10
StartPollersUnreachable=20
StartTrappers=15
StartPingers=10
StartDiscoverers=10
CacheSize=56M
StartDBSyncers=4
HistoryCacheSize=56M
TrendCacheSize=32M
HistoryIndexCacheSize=12M
LogSlowQueries=500
StartIPMIPollers=5
DBHost=192.168.150.129
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix123!
最后4条为数据库的配置,根据实际情况配置即可

V、zabbix前端关于apache的参数调整
修改文件/etc/httpd/conf.d/zabbix.conf,涉及到如下值可以调整(其实我只调整了date.timezone一项)
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 always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
另外linux的selinux配置一下,命令为“setsebool -P httpd_can_connect_zabbix on”,我的selinux没有打开,所以忽略了

VI、启动zabbis server和apache server
[root@zabbix01 php]# systemctl restart httpd
[root@zabbix01 php]# 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@zabbix01 php]# systemctl restart zabbix-server

VI、zabbix server web初始化
ok,server端就装好了,下来通过web端来做一下配置初始化,地址如下:
zabbix/这里是一个step-by-step的操作,见如下的截图
配置界面
环境检查界面,必须都是ok哈
配置数据库,地址、用户、密码什么的
server信息配置,配上地址192.168.150.129
ok配置完成
点完成后,跳转至web登录界面,默认用户名/密码为:Admin/zabbix
登录后主界面
这里界面是英文的,我们改为中文的吧,Administration--》users--》admin 将Language改为Chinese,这里我还将Refresh (in seconds)改为1分钟,毕竟虚拟机性能差了一点
改完点“update”按钮,并重新刷新web界面即可
另外还需要启动Zabbix server,配置--》主机--》选择"Zabbix server"点进去,将ip地址改为192.168.150.129,点“更新”提交
然后再勾选“Zabbix server”,点击"启用按钮"将其启用
ok server端配置完成

d、安装并配置zabbix agent
按照上边规划,zabbix01上要装server和agent
agent很简单,也没有什么依赖包,直接yum install就是了
[root@zabbix01 php]# yum install -y zabbix-agent
Complete!
[root@zabbix01 php]#
I、配置agent参数文件
编辑/etc/zabbix/zabbix_agentd.conf,并修改Server=192.168.150.129、ServerActive=192.168.150.129、Hostname=zabbix01三个参数,这里我想让agent直连server(不经过proxy),所以这里配置server的地址

II、修改mysql模版
后边我想监控zabbix01上的硬件信息以及这台机器上的mysql数据库,所以这里修改一下mysql的模版,后边会用到
编辑/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf,其中2个地方有“mysql -N”,替换为“mysql -h 192.168.150.129 -u zabbix -pZabbix123! -N”即可

III、启动agent
[root@zabbix01 php]# 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.
[root@zabbix01 php]# systemctl start zabbix-agent

IV、通过server的web端添加client
登录server的web地址,配置--》主机--》创建主机--》主机,见下图
主机名称填zabbix01;组群中添加linux server;并新建一个组群mysql(因为我要监控主机和主机上的mysql)
再然后在“模版”界面,点击“选择”按钮,弹出的界面中选择“Template App MySQL”和“Template OS Linux”并提交;并依次点2个“添加”按钮,即可完成

ok,agent端的配置也完成

3、部署zabbix02
zabbix02上准备安装zabbix-proxy,proxy需要mysql数据库
之后安装zabbix-agent,将主机和数据库监控起来
mysql的安装和yum源的配置和zabbix01一样了,这里就不赘述
创建zabbix数据库、zabbix数据库用户、mysql内存调优的步骤也略了见2-a章节

a、安装proxy
proxy不需要php环境,直接yum install就行,有一个特殊的依赖包fping在zabbix的源中有
[root@zabbix02 ~]# yum install -y zabbix-proxy-mysql
...
Complete!
[root@zabbix02 ~]#

b、proxy配置
编辑/etc/zabbix/zabbix_proxy.conf,修改如下值
Server=192.168.150.129
Hostname=zabbix02
DBHost=192.168.150.130
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix123!
也可以根据2-c-IV中的参数适当调整(这里我偷懒了啦)

I、创建数据库元数据
[root@zabbix02 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-3.2.4/schema.sql.gz | mysql -uzabbix -pZabbix123! zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.
这个过程也创建了127张元数据表,但不同于server端的脚本哈

II、启动proxy
[root@zabbix02 ~]# systemctl daemon-reload
[root@zabbix02 ~]# systemctl enable zabbix-proxy
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.
[root@zabbix02 ~]# systemctl start zabbix-proxy

III、在server上配置proxy
server的web界面,管理--》agent代理程序--》创建代理
只要输入“名称”(zabbix02)点添加即可
ok,proxy添加成功

c、agent配置
zabbix02上装了mysql,这里通过agent将主机和mysql监控起来
agent的安装和配置和zabbix01上差不多,不同的是:
1、/etc/zabbix/zabbix_agentd.conf中的Server、ServerActive配置为proxy的地址,这里是192.168.150.130
2、/etc/zabbix/zabbix_agentd.conf中Hostname配置为本地hostname(zabbix02)
3、/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf中mysql -h后边接的地址为192.168.150.130(proxy的数据库),即将2个“mysql -N”改为“mysql -h 192.168.150.130 -u zabbix -pZabbix123! -N”
[root@zabbix02 zabbix]# 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.
[root@zabbix02 zabbix]# systemctl start zabbix-agent
之后通过server端的web管理界面添加agent,唯一不同是,“由agent代理程序检测”中选上“zabbix02”即可,见下图
ok,我们的zabbix server,proxy,agent 就配置成功了,我们看几张监控的图片吧:)


原创:祥云





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x




上一篇:关于漏洞详解Zabbix Server Active Proxy Trappe RCE(CVE-2017-2824)
下一篇:求助:社区的“信息安全意识培训资料.ppt“下不了
monicazhang

写了 2297 篇文章,拥有财富 12859,被 21 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by IT 运维管理
返回顶部