设为首页 收藏本站
查看: 1403|回复: 0

[经验分享] saltstack的深入-配置zabbix所需的mysql-server

[复制链接]

尚未签到

发表于 2018-8-1 07:16:27 | 显示全部楼层 |阅读模式
操作内容:  
一、基础环境
  
1、使用tvm-cobbler安装一个tvm-zabbix虚拟机来做实验。
  
2、网络:
  
eth0:host-only(用于虚拟内网,手动固定IP,这样从宿主机可以直接连接到这个vm)
  
eth1:NAT(用于上外网,动态IP)
  
[root@tvm-zabbix ~]# cd /etc/sysconfig/network-scripts/
  
[root@tvm-zabbix network-scripts]# cat ifcfg-eth0
  
DEVICE=eth0
  
TYPE=Ethernet
  
ONBOOT=yes
  
NM_CONTROLLED=yes
  
BOOTPROTO=none
  
IPADDR=192.168.56.200
  
PREFIX=24
  
GATEWAY=192.168.56.1
  
DNS1=192.168.56.254
  

  
[root@tvm-zabbix network-scripts]# cat ifcfg-eth1
  
DEVICE=eth1
  
TYPE=Ethernet
  
ONBOOT=yes
  
NM_CONTROLLED=yes
  
BOOTPROTO=dhcp
  
DNS1=192.168.56.254
  

  
[root@tvm-zabbix ~]# df -h
  
Filesystem      Size  Used Avail Use% Mounted on
  
/dev/sda3        36G  1.8G   32G   6% /
  
tmpfs           499M   12K  499M   1% /dev/shm
  
/dev/sda1       194M   29M  155M  16% /boot
  
/dev/sdb1        99G  188M   94G   1% /data
  

  

  
使用域名:
  
[root@tvm-yum ~]# cat /etc/dnsmasq.d/office.conf |grep zbx-m
  
address=/zbx-m.office.test/192.168.56.200
  

  
3、repo
  
我们在自己的office这个repo中已经增加了几个rpm包:
  
[root@tvm-zabbix data]# yum search --disablerepo=\* --enablerepo=office percona
  
Loaded plugins: fastestmirror, security
  
Loading mirror speeds from cached hostfile
  
======================================================================================= N/S Matched: percona =======================================================================================
  
Percona-Server-55-debuginfo.x86_64 : Debug information for package Percona-Server-55
  
Percona-Server-client-55.x86_64 : Percona Server - Client
  
Percona-Server-devel-55.x86_64 : Percona Server - Development header files and libraries
  
Percona-Server-server-55.x86_64 : Percona Server: a very fast and reliable SQL database server
  
Percona-Server-shared-55.x86_64 : Percona Server - Shared libraries
  
Percona-Server-test-55.x86_64 : Percona Server - Test suite
  
percona-zabbix-templates.noarch : Percona Monitoring Plugins for Zabbix
  

  
  Name and summary matches only, use "search all" for everything.
  

  
二、配置
  
1、sls文件
  
[root@tvm-saltmaster base]# cat mysql/server.sls
  
## 安装mysql-server,以及对应的zabbix监控相关文件。
  
#
  
# via pc @ 2015/8/13
  

  
Percona-Server:
  
  pkg.installed:
  
## for local-office.repo
  
#
  
    - fromrepo: office,base,repo
  
    - name: zabbix-agent
  
    - skip_verify: True
  
    - refresh: True
  
    - pkgs:
  
## for percona-server
  
#
  
      - Percona-Server-55-debuginfo
  
      - Percona-Server-client-55
  
      - Percona-Server-devel-55
  
      - Percona-Server-server-55
  
      - Percona-Server-shared-55
  
      - Percona-Server-test-55
  
      - percona-zabbix-templates
  
## for zabbix
  
# Scripts are installed to /var/lib/zabbix/percona/scripts
  
# Templates are installed to /var/lib/zabbix/percona/templates
  
#
  
# /var/lib/zabbix/percona/scripts:
  
# total 64
  
# -rwxr-xr-x 1 root root  1251 Jul 21  2014 get_mysql_stats_wrapper.sh
  
# -rwxr-xr-x 1 root root 58226 Jul 21  2014 ss_get_mysql_stats.php
  
#
  
# /var/lib/zabbix/percona/templates:
  
# total 284
  
# -rw-r--r-- 1 root root  18866 Jul 21  2014 userparameter_percona_mysql.conf
  
# -rw-r--r-- 1 root root 269258 Jul 21  2014 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.4.xml
  
#
  
      - php
  
      - php-mysql
  

  
percona-mysql-cnf:
  
  file.managed:
  
    - name: /etc/my.cnf
  
    - source: salt://conf.d/mysql/my.cnf
  
    - mode: 644
  
    - require:
  
      - pkg: Percona-Server
  

  
percona-mysql-data:
  
  file.directory:
  
    - name: /data/mysql
  
    - user: mysql
  
    - group: mysql
  
    - mode: 755
  
    - makedirs: True
  
    - require:
  
      - pkg: Percona-Server
  

  
percona-mysql-init-and-run:
  
## Installing MySQL system tables
  
# PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
  
# /usr/bin/mysqladmin -u root password 'new-password'
  
  cmd.run:
  
    - name: /usr/bin/mysql_install_db
  
    - onlyif:
  
      - d_mysql=$(grep 'datadir' /etc/my.cnf |cut -d'=' -f2);
  
        d_mysql_install="${d_mysql}/mysql";
  
        test ! -d ${d_mysql_install}
  
  service.running:
  
    - name: mysql
  
    - enable: True
  
    - require:
  
      - pkg: Percona-Server
  

  
## for zabbix
  
percona-mysql-zabbix-php:
  
  file.managed:
  
    - name: /etc/php.ini
  
    - source: salt://conf.d/mysql/percona_zabbix_php.ini
  
    - mode: 755
  
    - require:
  
      - pkg: Percona-Server
  

  

  

  

  
2、conf文件
  
[root@tvm-saltmaster base]# tree conf.d/mysql/
  
conf.d/mysql/
  
├── my.cnf
  
├── percona_zabbix_php.ini
  
└── ss_get_mysql_stats.php
  

  
0 directories, 3 files
  

  
[root@tvm-saltmaster base]# cat conf.d/mysql/my.cnf
  
[mysqld]
  
# GENERAL
  
datadir=/data/mysql
  
socket=/data/mysql/mysql.sock
  
pid_file=/data/mysql/mysqld.pid
  
user=mysql
  
port=3306
  
#enforce_storage_engine=InnoDB
  
default-storage-engine=InnoDB
  
character_set_server=utf8
  

  
# InnoDB
  
innodb_buffer_pool_size=2G
  
innodb_flush_method=O_DIRECT
  
innodb_file_per_table=1
  
innodb_open_files=500
  
innodb_log_buffer_size=128M
  
innodb_log_file_size=256M
  
innodb_stats_on_metadata=OFF
  
innodb_support_xa=OFF
  
innodb_thread_concurrency=0
  
innodb_io_capacity=200
  

  
# MyISAM
  
key_buffer_size=128M
  

  
#BINLOG
  
server_id=10
  
log_bin=/data/mysql/mysql-bin
  
binlog_format=mixed
  
#replicate-do-db=cdn
  
#replicate-ignore-db=mysql
  
#replicate-ignore-db=test
  
#relay_log=/data/mysql/relay-log
  

  
# LOGGING
  
log_error=/data/mysql/mysql-error.log
  
slow_query_log=ON
  
long_query_time=2
  
slow_query_log_file=/data/mysql/mysql-slow
  
##These two variables are only for Percona
  
max_slowlog_files=5
  
max_slowlog_size=100M
  
expire_logs_days=14
  

  
# OTHER
  
tmp_table_size=32M
  
max_heap_table_size=32M
  
open_files_limit=600000
  
query_cache_type=0
  
query_cache_size=0
  
thread_cache_size=64
  
table_definition_cache=500
  
table_open_cache=1000
  
max_allowed_packet=16M
  
max_connections=800
  
max_user_connections=400
  
max_connect_errors=99999999
  
skip_name_resolve
  

  
[client]
  
default_character_set=utf8
  
socket=/data/mysql/mysql.sock
  

  
其他2个文件,主要是timezone和mysql相关的配置要调整:
  

  
[root@tvm-saltmaster base]# cat conf.d/mysql/percona_zabbix_php.ini |grep -E 'timezone|mysql.sock' |grep -v ';'
  
date.timezone = Asia/Shanghai
  
mysql.default_socket = /data/mysql/mysql.sock
  
mysqli.default_socket = /data/mysql/mysql.sock
  

  

  
三、执行
  
[root@tvm-saltmaster base]# salt 'tvm-zabbix' state.sls mysql.server --output-file='/tmp/salt.log'
  

  
给mysql实例设置root密码:
  
[root@tvm-zabbix ~]# /usr/bin/mysqladmin -u root password 'toortoor'
  
创建zabbix库备用:
  
[root@tvm-zabbix ~]# mysql -uroot -ptoortoor -e "create database zabbix character set utf8 collate utf8_bin;";
  
[root@tvm-zabbix ~]# mysql -uroot -ptoortoor -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
  
[root@tvm-zabbix ~]# mysql -uroot -ptoortoor -e "show databases;"
  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| mysql              |
  
| performance_schema |
  
| test               |
  
| zabbix             |
  
+--------------------+
  

  
四、注意事项
  
如果我们在另一个shell中,开启了salt-minion的debug日志,而同时,我们的salt-minion服务并未结束,此时有多个salt-minion:
  
[root@tvm-zabbix ~]# salt-minion -l debug
  
[root@tvm-zabbix ~]# ps -ef |grep salt
  
root     31623     1  0 16:45 ?        00:00:01 /usr/bin/python2.6 /usr/bin/salt-minion -d
  
root     31882  1205  0 17:04 pts/0    00:00:00 /usr/bin/python2.6 /usr/bin/salt-minion -l debug
  
root     31885 31882  1 17:04 pts/0    00:00:00 /usr/bin/python2.6 /usr/bin/salt-minion -l debug
  
root     32083 29908  0 17:05 pts/1    00:00:00 grep salt
  

  

  
则,在salt-master上执行salt命令可能会出现如下的异常:
  

  
[root@tvm-saltmaster base]# salt 'tvm-zabbix' state.sls mysql.server --output-file='/tmp/salt.log'
  
[root@tvm-saltmaster base]# cat /tmp/salt.log
  
tvm-zabbix:
  
    Data failed to compile:
  
----------
  
    The function "state.sls" is running as PID 32031 and was started at 2015, Aug 12 17:04:42.900197 with jid 20150812170442900197
  

  
因此,建议的做法是,先关闭monit和salt-minion服务,然后再手动启动debug模式的salt-minion服务:
  
service monit stop
  
service salt-minion stop
  
salt-minion -l debug
  

  

  
五、关于percona-zabbix-templates的使用说明
  
1、创建文件:/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
  
[root@tvm-zabbix ~]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
  
<?php
  
$mysql_user = 'root';
  
$mysql_pass = 'toortoor';
  

  
请注意,这里并没有php的结束标记!
  

  
2、测试
  
[root@tvm-zabbix ~]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
  
12
  

  
符合预期。
  

  
3、配置shell执行mysql免密码登录的问题
  
1)众所周知的.my.cnf文件
  
[root@tvm-zabbix ~]# cat ~zabbix/.my.cnf
  
[client]
  
user = root
  
password = toortoor
  

  
4、测试
  
1)sudo的-H参数,可以改变HOME变量为目标用户:
  
[root@tvm-zabbix ~]# sudo -u zabbix -H mysql
  
Welcome to the MySQL monitor.  Commands end with ; or \g.
  
Your MySQL connection id is 127
  
Server version: 5.5.38-35.2-log Percona Server (GPL), Release 35.2, Revision 674
  

  
Copyright (c) 2009-2014 Percona LLC and/or its affiliates
  
Copyright (c) 2000, 2014, 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>
  

  
符合预期
  

  
2)测试脚本
  
[root@tvm-zabbix ~]# sudo -u zabbix -H /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
  
0
  

  
符合预期
  

  

  
5、测试完后记得要删除CACHEFILE,这个文件是/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php执行时生成的。
  
[root@tvm-zabbix ~]# ll /tmp/localhost-mysql_cacti_stats.txt
  
-rw-r--r-- 1 root root 1433 Aug 18 15:52 /tmp/localhost-mysql_cacti_stats.txt
  

  
因为zabbix执行时,owner是zabbix,如果存在这个owner是root,则无法执行rm操作。
  

  
6、设置文件权限,保护mysql相关的密码。
  
[root@tvm-zabbix ~]# chown zabbix:zabbix /var/lib/zabbix \
  
&& chmod 700 /var/lib/zabbix \
  
&& ls -l /var/lib |grep zabbix
  
drwx------  3 zabbix  zabbix  4096 Aug 18 14:57 zabbix
  

  

  

  
6、导入到zabbix中
  
先下载模版:
  
[root@tvm-zabbix ~]# sz /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.4.xml
  

  
导入到zabbix-web中:
  
Configuration->Templates->Import  选择文件导入。
  

  

  

  

  

  

  

  
ZYXW、参考
  
1、老大提供的saltstack相关资料。
  
2、zabbix doc
  
https://www.zabbix.com/documentation/2.4/manual/appendix/install/db_scripts
  
3、percona doc
  
https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html
  
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/installing-templates.html#cacti-php-config-file

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544392-1-1.html 上篇帖子: saltstack的深入-增加针对系统调优的state配置 下篇帖子: 运维自动化 SaltStack 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表