Monkey

Think! And Think Again


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 公益404

  • 搜索

未命名

发表于 2017-05-23 |

hexo 安装方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1.
sudo dnf install npm
2. 配置 淘宝 npm软件源
#####
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
#####
3.
sudo npm install hexo -g
4.
hexo # 測試 hexo 是否被正確安裝
5.
建置你的 Hexo Blog
hexo init Blog
cd Blog
npm install
6.
npm install hexo-renderer-ejs --save
npm install hexo-renderer-marked --save
npm install hexo-renderer-stylus --save
7.
hexo g # 產生 blog
hexo s # 讓 blog 可以在 local 端檢視

未命名

发表于 2017-05-23 |

注(血的教训):

zabbix server 和 zabbix proxy版本 必须 严格对应
比如
server: 3.0.8 proxy:3.0.8
如下都不兼容:
server: 3.0.7 proxy:3.0.8

yum install zabbix-proxy-sqlite

mkdir -p /opt/fonsview/3RD/zabbix_proxy

cd /opt/fonsview/3RD/zabbix_proxy

zcat /usr/share/doc/zabbix-proxy-pgsql-3.0.X/create.sql.gz | sqlite3 zabbix.db

chown zabbix:zabbix /opt/fonsview/3RD/zabbix

chmod 777 /opt/fonsview/3RD/zabbix_proxy/zabbix.db

[root@ZX-OTT-STSC1 ~]# cat /etc/zabbix/zabbix_proxy.conf |grep -v “#” | grep -v “^$”
ProxyMode=1
Server=1.58.125.132
Hostname=hrb_proxy
ListenPort=30051
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
DebugLevel=3
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=/opt/fonsview/3RD/zabbix_proxy/zabbix.db
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

[root@ZX-OTT-STSC1 ~]# cat /opt/fonsview/3RD/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/fsv-zabbix-agent.pid
LogType=file
LogFile=/var/log/zabbix/fsv-zabbix-agent.log
LogFileSize=1
EnableRemoteCommands=0
LogRemoteCommands=0
Server=1.58.125.129
ListenPort=30050
StartAgents=3
Hostname=ZX-OTT-STSC1
RefreshActiveChecks=120
BufferSend=5
BufferSize=100
MaxLinesPerSecond=20
Timeout=3
AllowRoot=0
User=zabbix
Include=/opt/fonsview/3RD/zabbix/zabbix_agentd.d/
UnsafeUserParameters=1

未命名

发表于 2017-05-23 |

zabbix mysql 数据库调优

zabbix 默认使用的是mysql数据库,当时zabbxi历史数据大的时候,会出现 cpu iowait的报警。
可以使用 mysql的分区表来解决,使用方法如下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
##zabbix
innodb_file_per_table=1
sync_binlog=0
query_cache_size=0
query_cache_type=0
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_old_blocks_time = 1000
innodb_buffer_pool_size=10G
innodb_flush_log_at_trx_commit=0
innodb_log_file_size = 512M
innodb_log_buffer_size = 128M
tmpdir = /dev/shm/mysql
##zabbix -end
## zabbix 清空 所有历史数据
use zabbix;
truncate table history;
optimize table history;
truncate table history_log;
optimize table history_log;
truncate table history_str;
optimize table history_str;
truncate table history_text;
optimize table history_text;
truncate table history_uint;
optimize table history_uint;
truncate table trends;
optimize table trends;
truncate table trends_uint;
optimize table trends_uint;

use zabbix

#关闭housekeeper
ALTER TABLE housekeeper ENGINE = BLACKHOLE;

#删除主键
mysql> Alter table history_text drop primary key, add index (id), drop index history_text_2, add index history_text_2 (itemid, id);
Query OK, 0 rows affected (0.49 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> Alter table history_log drop primary key, add index (id), drop index history_log_2, add index history_log_2 (itemid, id);
Query OK, 0 rows affected (2.71 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql>

使用分区表

  • 创建存储过程
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    DELIMITER $$
    CREATE PROCEDURE `partition_create`(SCHEMANAME varchar(64), TABLENAME varchar(64), PARTITIONNAME varchar(64), CLOCK int)
    BEGIN
    /*
    SCHEMANAME = The DB schema in which to make changes
    TABLENAME = The table with partitions to potentially delete
    PARTITIONNAME = The name of the partition to create
    */
    /*
    Verify that the partition does not already exist
    */
    DECLARE RETROWS INT;
    SELECT COUNT(1) INTO RETROWS
    FROM information_schema.partitions
    WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND partition_description >= CLOCK;
    IF RETROWS = 0 THEN
    /*
    1. Print a message indicating that a partition was created.
    2. Create the SQL to create the partition.
    3. Execute the SQL from #2.
    */
    SELECT CONCAT( "partition_create(", SCHEMANAME, ",", TABLENAME, ",", PARTITIONNAME, ",", CLOCK, ")" ) AS msg;
    SET @sql = CONCAT( 'ALTER TABLE ', SCHEMANAME, '.', TABLENAME, ' ADD PARTITION (PARTITION ', PARTITIONNAME, ' VALUES LESS THAN (', CLOCK, '));' );
    PREPARE STMT FROM @sql;
    EXECUTE STMT;
    DEALLOCATE PREPARE STMT;
    END IF;
    END$$
    DELIMITER ;
    DELIMITER $$
    CREATE PROCEDURE `partition_drop`(SCHEMANAME VARCHAR(64), TABLENAME VARCHAR(64), DELETE_BELOW_PARTITION_DATE BIGINT)
    BEGIN
    /*
    SCHEMANAME = The DB schema in which to make changes
    TABLENAME = The table with partitions to potentially delete
    DELETE_BELOW_PARTITION_DATE = Delete any partitions with names that are dates older than this one (yyyy-mm-dd)
    */
    DECLARE done INT DEFAULT FALSE;
    DECLARE drop_part_name VARCHAR(16);
    /*
    Get a list of all the partitions that are older than the date
    in DELETE_BELOW_PARTITION_DATE. All partitions are prefixed with
    a "p", so use SUBSTRING TO get rid of that character.
    */
    DECLARE myCursor CURSOR FOR
    SELECT partition_name
    FROM information_schema.partitions
    WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND CAST(SUBSTRING(partition_name FROM 2) AS UNSIGNED) < DELETE_BELOW_PARTITION_DATE;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    /*
    Create the basics for when we need to drop the partition. Also, create
    @drop_partitions to hold a comma-delimited list of all partitions that
    should be deleted.
    */
    SET @alter_header = CONCAT("ALTER TABLE ", SCHEMANAME, ".", TABLENAME, " DROP PARTITION ");
    SET @drop_partitions = "";
    /*
    Start looping through all the partitions that are too old.
    */
    OPEN myCursor;
    read_loop: LOOP
    FETCH myCursor INTO drop_part_name;
    IF done THEN
    LEAVE read_loop;
    END IF;
    SET @drop_partitions = IF(@drop_partitions = "", drop_part_name, CONCAT(@drop_partitions, ",", drop_part_name));
    END LOOP;
    IF @drop_partitions != "" THEN
    /*
    1. Build the SQL to drop all the necessary partitions.
    2. Run the SQL to drop the partitions.
    3. Print out the table partitions that were deleted.
    */
    SET @full_sql = CONCAT(@alter_header, @drop_partitions, ";");
    PREPARE STMT FROM @full_sql;
    EXECUTE STMT;
    DEALLOCATE PREPARE STMT;
    SELECT CONCAT(SCHEMANAME, ".", TABLENAME) AS `table`, @drop_partitions AS `partitions_deleted`;
    ELSE
    /*
    No partitions are being deleted, so print out "N/A" (Not applicable) to indicate
    that no changes were made.
    */
    SELECT CONCAT(SCHEMANAME, ".", TABLENAME) AS `table`, "N/A" AS `partitions_deleted`;
    END IF;
    END$$
    DELIMITER ;
    DELIMITER $$
    CREATE PROCEDURE `partition_maintenance`(SCHEMA_NAME VARCHAR(32), TABLE_NAME VARCHAR(32), KEEP_DATA_DAYS INT, HOURLY_INTERVAL INT, CREATE_NEXT_INTERVALS INT)
    BEGIN
    DECLARE OLDER_THAN_PARTITION_DATE VARCHAR(16);
    DECLARE PARTITION_NAME VARCHAR(16);
    DECLARE OLD_PARTITION_NAME VARCHAR(16);
    DECLARE LESS_THAN_TIMESTAMP INT;
    DECLARE CUR_TIME INT;
    CALL partition_verify(SCHEMA_NAME, TABLE_NAME, HOURLY_INTERVAL);
    SET CUR_TIME = UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'));
    SET @__interval = 1;
    create_loop: LOOP
    IF @__interval > CREATE_NEXT_INTERVALS THEN
    LEAVE create_loop;
    END IF;
    SET LESS_THAN_TIMESTAMP = CUR_TIME + (HOURLY_INTERVAL * @__interval * 3600);
    SET PARTITION_NAME = FROM_UNIXTIME(CUR_TIME + HOURLY_INTERVAL * (@__interval - 1) * 3600, 'p%Y%m%d%H00');
    IF(PARTITION_NAME != OLD_PARTITION_NAME) THEN
    CALL partition_create(SCHEMA_NAME, TABLE_NAME, PARTITION_NAME, LESS_THAN_TIMESTAMP);
    END IF;
    SET @__interval=@__interval+1;
    SET OLD_PARTITION_NAME = PARTITION_NAME;
    END LOOP;
    SET OLDER_THAN_PARTITION_DATE=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL KEEP_DATA_DAYS DAY), '%Y%m%d0000');
    CALL partition_drop(SCHEMA_NAME, TABLE_NAME, OLDER_THAN_PARTITION_DATE);
    END$$
    DELIMITER ;
    DELIMITER $$
    CREATE PROCEDURE `partition_verify`(SCHEMANAME VARCHAR(64), TABLENAME VARCHAR(64), HOURLYINTERVAL INT(11))
    BEGIN
    DECLARE PARTITION_NAME VARCHAR(16);
    DECLARE RETROWS INT(11);
    DECLARE FUTURE_TIMESTAMP TIMESTAMP;
    /*
    * Check if any partitions exist for the given SCHEMANAME.TABLENAME.
    */
    SELECT COUNT(1) INTO RETROWS
    FROM information_schema.partitions
    WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND partition_name IS NULL;
    /*
    * If partitions do not exist, go ahead and partition the table
    */
    IF RETROWS = 1 THEN
    /*
    * Take the current date at 00:00:00 and add HOURLYINTERVAL to it. This is the timestamp below which we will store values.
    * We begin partitioning based on the beginning of a day. This is because we don't want to generate a random partition
    * that won't necessarily fall in line with the desired partition naming (ie: if the hour interval is 24 hours, we could
    * end up creating a partition now named "p201403270600" when all other partitions will be like "p201403280000").
    */
    SET FUTURE_TIMESTAMP = TIMESTAMPADD(HOUR, HOURLYINTERVAL, CONCAT(CURDATE(), " ", '00:00:00'));
    SET PARTITION_NAME = DATE_FORMAT(CURDATE(), 'p%Y%m%d%H00');
    -- Create the partitioning query
    SET @__PARTITION_SQL = CONCAT("ALTER TABLE ", SCHEMANAME, ".", TABLENAME, " PARTITION BY RANGE(`clock`)");
    SET @__PARTITION_SQL = CONCAT(@__PARTITION_SQL, "(PARTITION ", PARTITION_NAME, " VALUES LESS THAN (", UNIX_TIMESTAMP(FUTURE_TIMESTAMP), "));");
    -- Run the partitioning query
    PREPARE STMT FROM @__PARTITION_SQL;
    EXECUTE STMT;
    DEALLOCATE PREPARE STMT;
    END IF;
    END$$
    DELIMITER ;

##
设置上面后 存储过程调用方法是
CALL partition_maintenance(‘zabbix’, ‘history’, 28, 24, 14);
CALL partition_maintenance(‘zabbix’, ‘history_log’, 28, 24, 14);
等

优化存储过程调用

DELIMITER $$
CREATE PROCEDURE partition_maintenance_all(SCHEMA_NAME VARCHAR(32))
BEGIN
CALL partition_maintenance(SCHEMA_NAME, ‘history’, 28, 24, 14);
CALL partition_maintenance(SCHEMA_NAME, ‘history_log’, 28, 24, 14);
CALL partition_maintenance(SCHEMA_NAME, ‘history_str’, 28, 24, 14);
CALL partition_maintenance(SCHEMA_NAME, ‘history_text’, 28, 24, 14);
CALL partition_maintenance(SCHEMA_NAME, ‘history_uint’, 28, 24, 14);
CALL partition_maintenance(SCHEMA_NAME, ‘trends’, 730, 24, 14);
CALL partition_maintenance(SCHEMA_NAME, ‘trends_uint’, 730, 24, 14);
END$$
DELIMITER ;

##使用上面这个存储过程之后
mysql> CALL partition_maintenance_all(‘zabbix’);
+—————-+——————–+
| table | partitions_deleted |
+—————-+——————–+
| zabbix.history | N/A |
+—————-+——————–+
1 row in set (0.01 sec)

….
….
….

+——————–+——————–+
| table | partitions_deleted |
+——————–+——————–+
| zabbix.trends_uint | N/A |
+——————–+——————–+
1 row in set (22.85 sec)

Query OK, 0 rows affected, 1 warning (22.85 sec)

mysql>

创建计划任务 每天定时 生成新的分区表

zabbix tunning 分区表

30 04 * mysql zabbix -e “CALL partition_maintenance_all(‘zabbix’);”

end zabbix

在zabbix server上关闭 Housekeeper

登录zabbix server的web管理
在上面菜单栏 –>管理–>一般 右边选管家

历史记录
开启内部管家 去除勾选
覆盖监控项历史期间 勾选
数据存储时间(天)28

趋势
开启内部管家 去除勾选
覆盖监控项趋势期间 勾选
数据存储时间(天) 730

注释:
mysql> CALL partition_maintenance(‘zabbix’, ‘history’, 28, 24, 14);
表明:历史数据保留28天,24小时,14代表一次创建14个表

参考

howto/mysql partition
如何对zabbix mysql做分区表
zabbix进行数据库备份以及表分区

未命名

发表于 2017-05-23 |

zabbix使用教程1:zabbix3Server安装

nginx 版本: 1.10.2-1.el6.ngx
zabbix版本:
zabbix_server: 3.0.7
zabbix_agentd: 3.2.3

一、环境介绍
[root@centos63 ~]# cat /etc/redhat-release
CentOS release 6.3 (Final)
[root@centos63 ~]# uname -a
Linux centos63 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

IP地址 角色
安装软件 操作系统
192.168.122.18 服务器端+被监控端+数据库存储
zabbix-web、zabbix-server、zabbix-agent、mysql,php5.6,httpd centos6.3

二、软件包安装
安装依赖(fsv_zabbix3_nginx.tar.xz 中已提供):
php 版本大于等于 php 5.4.0
PHP gd 大于等于 2.0
PHP libxml 大于等于 2.6.15

php 设置:

注: 推荐 mysql 设置 innodb_file_per_table=1 使用独立表空间
如下为zabbix 调优建议

##zabbix tuning
innodb_file_per_table=1
event_scheduler=ON
wait_timeout=600
sync_binlog=500
query_cache_type=0
query_cache_size=0
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_old_blocks_time = 1000
innodb_buffer_pool_size=10G
innodb_buffer_pool_instances=16
innodb_flush_log_at_trx_commit=0
innodb_log_file_size = 512M
innodb_log_buffer_size = 128M

#tmpdir = /dev/shm/mysql

##zabbix -end

注意: 本教程 默认mysql 密码是Mysql23+ 如果不是,请修改
注意: 本教程 默认mysql 密码是Mysql23+ 如果不是,请修改
注意: 本教程 默认mysql 密码是Mysql23+ 如果不是,请修改

  1. 设置软件仓库
    下载:
    \it-fs\Upload\SS Department\monkey\zabbix\fsv_zabbix3_nginx.tar.xz

mkdir -p /root/install/
tar xf fsv_zabbix3_nginx.tar.xz -C /root/install/

清除 默认无用的仓库

mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

cat << _EOF > /etc/yum.repos.d/fsv_zabbix.repo
[fsv_zabbix]
name=fonsview repo
baseurl=file:///root/install/fsv_zabbix3/6/
enabled=1
gpgcheck=0
_EOF

  1. 创建mysql 登录认证文件
    cat << _EOF > ~/.my.cnf
    [client]
    host= localhost
    user = root
    password = “Mysql23+”
    _EOF

  2. 卸载旧版 php相关
    yum clean all
    yum remove php*

  3. php56 安装

yum –enablerepo=fsv_zabbix install php php-fpm php-mysql php-gd php-bcmath php-common php-mbstring php-xml

  1. 安装zabbix
    yum –enablerepo=fsv_zabbix install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent.x86_64 zabbix-get

  2. 安装nginx
    yum –enablerepo=fsv_zabbix install nginx

  3. 修改文件权限
    sed -i “s/user = apache/user = nginx/g” /etc/php-fpm.d/www.conf
    sed -i “s/group = apache/group = nginx/g” /etc/php-fpm.d/www.conf

  4. 查看当前主机 php版本
    php -v
    PHP 5.6.30 (cli) (built: Jan 19 2017 08:09:42)
    查看软件包 是否已经安装
    rpm -q zabbix-server-mysql

  5. 查看当前nginx版本
    [root@centos63 yum.repos.d]# nginx -V
    nginx version: nginx/1.10.2

  6. 修改PHP的设定
    sed -i -e “s/memory_limit = 128M/memory_limit = 256M/g” /etc/php.ini
    sed -i -e “s/post_max_size = 8M/post_max_size = 16M/g” /etc/php.ini
    sed -i -e “s/max_execution_time = 30/max_execution_time = 300/g” /etc/php.ini
    sed -i -e “s/max_input_time = 60/max_input_time = 300/g” /etc/php.ini
    sed -i -e “s/;date.timezone =/date.timezone = Asia\/Shanghai/g” /etc/php.ini
    sed -i -e “s/;always_populate_raw_post_data = On/always_populate_raw_post_data = -1/g” /etc/php.ini
    sed -i -e “s/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/g” /etc/php.ini

  7. 创建数据库
    shell> mysql -uroot
    mysql> create database zabbix character set utf8 collate utf8_bin;
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘Mysql23+’;
    mysql> flush privileges;
    mysql> quit;

  8. 数据库导入 (注:需要等待三分钟)
    shell> zcat /usr/share/doc/zabbix-server-mysql-3.0.*/create.sql.gz | mysql zabbix

  9. 修改zabbix-server的配置

修改配置:
shell> cat << _EOF > /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBPassword=Mysql23+
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StartPollers=40
StartPollersUnreachable=3
StartTrappers=10
StartPingers=10
StartDiscoverers=10
MaxHousekeeperDelete=20000
CacheSize=256M
StartDBSyncers=4
HistoryCacheSize=256M
ValueCacheSize=256M
TrendCacheSize=16M
HistoryIndexCacheSize=16M
_EOF

  1. 修改客户端的配置
    shell> cat << _EOF > /etc/zabbix/zabbix_agentd.conf
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    Server=127.0.0.1
    ServerActive=127.0.0.1
    Hostname=Zabbix server
    Include=/etc/zabbix/zabbix_agentd.d/
    _EOF

  2. 配置zabbix web
    mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf_bak

vi /etc/nginx/conf.d/zabbix.conf
server {
location /zabbix {
alias /usr/share/zabbix;
index index.php index.php ;
}
location ~ .php$ { include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;

}
}

chown nginx:nginx /usr/share/zabbix/ -R
chown nginx:nginx -R /etc/zabbix/
chown root:nginx /var/lib/php/session/
chown nginx:nginx /var/lib/php/session/*

  1. 启动服务
    chkconfig zabbix-agent on
    service zabbix-agent restart

chkconfig zabbix-server on
service zabbix-server restart

chkconfig php-fpm on
service php-fpm restart

chkconfig nginx on
service nginx restart

  1. 检查
    [root@rhel6 ~]#/etc/init.d/zabbix-server status

1.查看是zabbix_server否启动正常
(1)查看端口是否侦听
[root@rhel6 ~]# netstat -anlp | grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0: LISTEN 5636/zabbix_server
tcp 0 0 :::10051 :::
LISTEN 5636/zabbix_server

####因为默认情况下zabbix_server侦听的是10051端口 如上查看可以zabbix_server已经侦听
(2)查看日志
[root@rhel6 ~]# cat /var/log/zabbix/zabbix_server.log
6006:20170119:214734.849 Starting Zabbix Server. Zabbix 3.0.7 (revision 64609).
6006:20170119:214734.849 ** Enabled features **
6006:20170119:214734.850 SNMP monitoring: YES
6006:20170119:214734.850 IPMI monitoring: YES
6006:20170119:214734.850 Web monitoring: YES
6006:20170119:214734.850 VMware monitoring: YES
6006:20170119:214734.850 SMTP authentication: NO
6006:20170119:214734.850 Jabber notifications: YES
6006:20170119:214734.850 Ez Texting notifications: YES
6006:20170119:214734.850 ODBC: YES
6006:20170119:214734.850 SSH2 support: YES
6006:20170119:214734.850 IPv6 support: YES
6006:20170119:214734.850 TLS support: YES
6006:20170119:214734.850 **
6006:20170119:214734.850 using configuration file: /etc/zabbix/zabbix_server.conf

2.查看zabbix_agentd 是否启动正常
[root@rhel6 ~]#/etc/init.d/zabbix-agent status
(1)查看侦听

###默认情况下 zabbix_agentd侦听10050端口
[root@centos63 httpd]# netstat -anlp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0: LISTEN 5569/zabbix_agentd
(2)查看日志
[root@centos63 httpd]# cat /var/log/zabbix/zabbix_agentd.log
5569:20170119:210723.409 Starting Zabbix Agent [Zabbix server]. Zabbix 3.0.7 (revision 64609).
5569:20170119:210723.409 Enabled features
5569:20170119:210723.409 IPv6 support: YES
5569:20170119:210723.409 TLS support: YES
5569:20170119:210723.409 *

5569:20170119:210723.409 using configuration file: /etc/zabbix/zabbix_agentd.conf

###如上说明zabbix_agetd 启动正常

六、通过web管理
访问http://192.168.122.18/zabbix 进行安装

数据库的 库名:zabbix 用户名:zabbix 密码:Mysql23+

七、登录
通过如上安装后就可以登录了:
zabbix默认
用户名:Admin (第一个A是大写)
密码:zabbix

nginx优化与加固:

  1. 优化
    sed -i -e “s/#tcp_nopush on;/tcp_nopush on;/g” /etc/nginx/nginx.conf
    sed -i -e “s/#gzip on;/gzip on;/g” /etc/nginx/nginx.conf

  2. 加固
    隐藏nginx版本:
    sed -i -e ‘/keepalive_timeout/aserver_tokens off;’ /etc/nginx/nginx.conf
    /etc/init.d/nginx restart

隐藏php版本:
sed -i -e ‘/expose_php = On/expose_php = Off’ /etc/php-fpm.d/www.conf
/etc/init.d/php-fpm restart

检查:
curl -I 127.0.0.1/index.php

有如下输出:
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Fri, 17 Feb 2017 01:51:36 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Location: setup.php

如上 没有显示如下,无法从外部判断 nginx版本号 和 php版本即可
X-Powered-By: PHP/5.6.30
Server: nginx/1.10.3

##############
可能出错 标注:

  1. php 无法解析 (白屏)
    (1)php-fpm 没有启动
    (2)php-fpm权限异常,如下可解决

sed -i “s/user = apache/user = nginx/g” /etc/php-fpm.d/www.conf
sed -i “s/group = apache/group = nginx/g” /etc/php-fpm.d/www.conf
chown nginx:nginx /usr/share/zabbix/ -R
chown nginx:nginx -R /etc/zabbix/
/etc/init.d/php-fpm restart

  1. 一直停留在 setup.php 页面,无法进入下一步
    原因: php 的session无法保存,session目录权限异常

执行如下命令可解决:
chown root:nginx /var/lib/php/session/
chown nginx:nginx /var/lib/php/session/*

  1. zabbix忘记密码,重置密码方法

此方法是通过进入数据库更改密码,操作步骤如下:
mysql> use 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;
查看是否存放用户、密码信息
mysql> select userid,alias,name,passwd from users;
+——–+——-+——–+———————————-+
| userid | alias | name | passwd |
+——–+——-+——–+———————————-+
| 1 | Admin | Zabbix | 5fce1b3e34b520afeffb37ce08c7cd66 |
| 2 | guest | | d41d8cd98f00b204e9800998ecf8427e |
+——–+——-+——–+———————————-+
2 rows in set (0.00 sec)
如上可以默认管理员用户为Admin
更改密码为zabbix
mysql> update users set passwd=md5(“zabbix”) where userid=’1’;
Query OK,0 rows affected (0.01 sec)
Rows matched:1Changed:0Warnings:0
zabbix 的用户密码是使用md5的方式进行的加密 ,上面的mysql语句执行后,admin 管理员用户的密码就会改为zabbix 。

####################

未命名

发表于 2017-05-23 |
  1. 打开yum cache保留
    sed -i ‘s/keepcache=0/keepcache=1/g’ /etc/yum.conf

  2. 软件源 添加
    mkdir -p /etc/yum.repos.d/bak
    mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
    yum clean all

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

vi /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

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

vi /etc/yum.repos.d/remi.repo
[remi-php56]
name=Remi’s PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch

#baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/
mirrorlist=http://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/6/php56/mirror

NOTICE: common dependencies are in “remi-safe”

enabled=0
gpgcheck=0

安装:

  1. yum install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent.x86_64 zabbix-get

yum –nogpgcheck –enablerepo=remi-php56 –disablerepo=base,updates install php php-fpm php-mysql php-common-5.6.30-1.el6.remi.x86_64 php-pdo-5.6.30-1.el6.remi.x86_64

########CentOS7
yum –nogpgcheck –enablerepo=remi-php56 install –disablerepo=base,updates zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent.x86_64 zabbix-get

########
yum install nginx

yum install install zabbix-get

mkdir -p /tmp/cc
cd /var/cache/yum/
find /var/cache/yum/ -name *.rpm -exec cp -rp {} /tmp/cc \;

制作仓库:
fonsview_deploy) monkey ➜ fsv_zabbix3 pwd
/home/monkey/sync/zabbix/fsv_zabbix3

createrepo 6

vi /etc/php-fpm.d/www.conf
; Note: This value is mandatory.
listen = 127.0.0.1:9000

未命名

发表于 2017-05-23 |

5、开启中文支持及更正中文乱码问题
开启中文支持:
vim /usr/share/zabbix/zabbix/include/locales.inc.php
zhCN’ => array(‘name’ => (‘Chinese (zh_CN)’), ‘display’ => true),
将false改为true
更正中文乱码问题:
在Windows中找到所需的字体文件传到/usr/share/zabbix/fonts目录下,修改zabbix的web端/usr/share/zabbix/include/defines.inc.php将原来的字体替换掉.

#define(‘ZBX_GRAPH_FONT_NAME’, ‘graphfont’); // 45行
define(‘ZBX_GRAPH_FONT_NAME’, ‘msyhbd’);

#define(‘ZBX_FONT_NAME’, ‘graphfont’); //93行
define(‘ZBX_FONT_NAME’, ‘msyhbd’);

未命名

发表于 2017-05-23 |

[root@ZX-OTT-ZabbixServer ~]# cd /usr/share/zabbix
[root@ZX-OTT-ZabbixServer zabbix]#
[root@ZX-OTT-ZabbixServer zabbix]# pwd
/usr/share/zabbix
[root@ZX-OTT-ZabbixServer zabbix]# cd ..
[root@ZX-OTT-ZabbixServer share]# cp -rp zabbix zabbix_bak
[root@ZX-OTT-ZabbixServer share]# cd zabbix
[root@ZX-OTT-ZabbixServer zabbix]# cd zabbix
[root@ZX-OTT-ZabbixServer zabbix]# patch -Np0 < /tmp/graphtree3.0.4.patch

[root@ZX-OTT-ZabbixServer zabbix]# chown -R nginx:nginx oneoaas/

  1. 修改这里 ./include/menu.inc.php
    把 Graphtree 改为图形树

vi /usr/share/zabbix/oneoaas/templates/graphtree/graphtree.tpl
删除多余的信息

未命名

发表于 2017-05-23 |
  1. cpu 查看
    Processor load (15 min average per core)
    表示 每核的负载,就是 系统uptim的值/核数=每核的负载
    这个表示 cpu 每秒钟CPU等待运行的进程个数
    注:zabbix 监控 默认值是5 大于5说明这台主机 cpu性能有问题了

CPU user time 在internal时间段里,用户态的CPU时间(%) ,不包含 nice值为负 进程 usr/total100
CPU iowait time 在internal时间段里,硬盘IO等待时间(%) iowait/total
100
CPU idle time 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%) idle/total*100

主要监控 这三个值

  1. user 过高 说明负载高
  2. iowait 过高 说明 磁盘写入有问题
  3. idle 过低 说明 cpu很繁忙 瓶颈在cpu

未命名

发表于 2017-05-23 |
  1. zabbix 每个核 平均5分钟 user占用时间 百分比
    zabbix_get -s 127.0.0.1 -p 10050 -k “system.cpu.discovery” cpu核数自动发现

[root@ZX-OTT-ZabbixServer cron.d]# zabbix_get -s 127.0.0.1 -p 10050 -k “system.cpu.discovery”

未命名

发表于 2017-05-23 |

服务器:
172.16.0.14 22 root 密码:2013$aspire

用户名:Admin 密码zabbix

1…789…21
kikiyou

kikiyou

越努力越幸运

204 日志
20 标签
GitHub Quora 知乎 豆瓣 果壳 Facebook Twitter 新浪微博
Links
  • Awesome
© 2015 - 2017 kikiyou
由 Hexo 强力驱动
主题 - NexT.Mist