成功最有效的方法就是向有经验的人学习!

运维规范文档

文章目录

Linux操作系统标准化

系统环境标准化

系统版本

CentOS Linux release 7.4.1708 (Core)
#以测试机为例 
#cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

系统环境标准化-字符集

默认设置系统字符集: en_US.utf8
#以测试机为例     
# echo $LANG
en_US.utf8

系统环境标准化-内核优化

#以测试机为例
#sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
kernel.numa_balancing = 0
kernel.shmmax = 68719476736
kernel.printk = 5
vm.swappiness = 5
kernel.sysrq = 1
vm.overcommit_memory = 1
vm.max_map_count = 655360

系统环境标准化-系统参数

打开文件描述符

#以测试机为例

# cat  /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536
root soft nofile 100001
root hard nofile 100002
*       soft    nproc  65536
*       hard    nproc  65536

系统配置标准化

系统配置标准化-yum源

  1. 内网所有机器指到统一内网yum源(暂无内网机房)
  2. 腾讯云机器使用配置的centos源

系统配置标准化-网卡配置

以腾讯云默认的配置为标准

#以测试机为例
# cat  /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
HWADDR=52:54:00:26:26:e4
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
USERCTL=no

系统配置标准化-dns

以腾讯云默认的配置为标准

#以测试机为例
#cat /etc/resolv.conf 
; generated by /usr/sbin/dhclient-script
nameserver 183.60.83.19
nameserver 183.60.82.98

系统配置标准化-主机名

  1. 主机名格式必须以项目缩写开头,机器作用,系统,内网ip组成
  2. 物理机主机名,如:zyd _主机名
  3. 虚拟机主机名,如:zyd_宿主机_主机名(本地测试机)
#以测试机为例
#腾讯云线上服务器
zyd_www_centos_08

#测试服务器
zyd_online_test_05

#本地测试服务器
zyd_vm45_office_test_98

系统配置标准化-selinux

腾讯云服务器默认关闭selinux

本地测试服务器:

  1. 系统安装完成时,修改为永久关闭disabled
  2. 如果未修改为disabled,则选择临时关闭(重启失效)
#以本地测试机为例
#getenforce
Disabled

系统配置标准化-firewall

腾讯云默认关闭firewall

本地测试服务器:

  1. 默认选择关闭
  2. 如有需求开启,发邮件至相关运维工作人员,进行配置
#以本地测试机为例
#systemctl  status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

系统配置标准化-时间同步

腾讯云默认同步腾讯线上时间服务器

本地测试服务器:

  1. 内网时间服务器:192.168.10.98
  2. 统一配置定时任务,指向内网时间服务器
#以测试机为例
#crontab  -l
#Ansible: sync time by bowen
0 0 * * * /usr/sbin/ntpdate 192.168.10.98 &>/dev/null

系统配置标准化-ssh

  1. 禁止root用户登陆
  2. 优化ssh连接过慢,dns轮询导致的问题
  3. 禁止空密码登陆
  4. 提高ssh连接速度
  5. 修改默认ssh端口为58000
#以测试机为例
Port 58000
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no

系统配置标准化-统一目录环境

目录 存放内容
/opt/bin .sh/.py/.yaml文件等
/opt 编译的应用程序
/tmp 程序输出日志
/root/soft 临时存放未编译的软件包
/etc/zabbix/scripts Zabbix监控脚本存放目录
/etc/zabbix/zabbix_agentd.d Zabbix监控键值配置文件存放目录
/opt/online 运维拉取master代码目录
/opt/logs nginx日志输出目录

软件部署标准化

常用软件均以打包成rpm包,可直接通过yum localinstall 进行安装
下面主要对版本,安装目录,配置文件进行一些标准化的说明

软件标准化-安装必备软件

必备软件:
vim
wget
bash-completion
lrzsz
nmap
nc
tree
htop
iftop
net-tools

软件标准化-java

#以线上环境为例
版本:
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

软件标准化-mysql

以线上环境为例

版本 5.6.38
程序安装目录 /opt/mysql/var
数据库存储目录 /opt/mysql/data
默认端口 3306
默认错误日志目录 /opt/mysql/logs/mysql-error.log
默认慢日志目录 /opt/mysql/logs/mysql-slow.log
默认BIN-LOG /opt/mysql/logs/mysql-bin.log
默认编码 utf-8
默认存储引擎 InnoDB

mysql配置文件

#主库配置文件my.cnf
[client]
socket = /tmp/mysql.sock
port = 3306

[mysqld]
basedir = /opt/mysql/var
datadir = /opt/mysql/data
port = 3306
socket = /tmp/mysql.sock
user = mysql
pid-file=/var/run/mysql/mysql-master.pid

skip-host-cache
skip-external-locking
skip-name-resolve
default-storage-engine=InnoDB
character-set-server=utf8
collation-server=utf8_general_ci

log_error = /opt/mysql/logs/mysql-error.log
long_query_time = 1
slow-query-log = 1
slow_query_log_file = /opt/mysql/logs/mysql-slow.log

expire_logs_days=7

thread_concurrency      = 16
thread_cache_size       = 64
key_buffer_size         = 128M
max_allowed_packet      = 1M
table_open_cache        = 2048
sort_buffer_size        = 2M
read_buffer_size        = 2M
read_rnd_buffer_size    = 8M
query_cache_size        = 16M
max_heap_table_size     = 128M
tmp_table_size          = 128M
join_buffer_size        = 1024K
max_connections         = 512
group_concat_max_len = 200000
low_priority_updates    = 1
concurrent_insert       = 2

innodb_adaptive_hash_index = 1
innodb_additional_mem_pool_size = 8MB
innodb_autoextend_increment = 8
innodb_autoinc_lock_mode = 1
innodb_buffer_pool_size = 2048MB
innodb_checksums = 0
innodb_commit_concurrency = 0
innodb_concurrency_tickets = 500
innodb_doublewrite = 1
innodb_fast_shutdown = 1
innodb_file_io_threads = 4
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0
innodb_force_recovery = 0
innodb_lock_wait_timeout = 50
innodb_locks_unsafe_for_binlog = 0
innodb_log_buffer_size = 4MB
innodb_log_file_size = 512MB
innodb_log_files_in_group = 3
innodb_log_group_home_dir = /opt/mysql/logs/innodblog
innodb_max_dirty_pages_pct = 60
innodb_max_purge_lag = 0
innodb_mirrored_log_groups = 1
innodb_open_files = 300
innodb_rollback_on_timeout = 0
innodb_stats_on_metadata = 1
innodb_support_xa = 0
innodb_sync_spin_loops = 20
innodb_table_locks = 0
innodb_thread_concurrency = 8

log-bin                 = mysql-bin
binlog_format           = mixed
server-id               = 111
log-bin                 = /opt/mysql/logs/mysql-bin.log

binlog-ignore-db        = mysql
binlog-ignore-db        = test
binlog-ignore-db        = information_schema
binlog-ignore-db        = performance_schema
log-slave-updates

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO

软件标准化-memcache

libevent部署

以测试环境为例

版本 2.0.21
安装目录 /usr/local/libevent

memcache部署

以测试环境为例

版本 1.5.8
安装目录 /usr/local/memcache
默认端口 11211
默认监听IP 本机host

软件标准化-redis cluster

ruby

以测试环境为例

版本 2.2.3
安装目录 /root/soft/ruby-2.2.3/

cluser

以测试环境为例

版本 3.2.12
安装目录 /opt/redis
默认端口 6390-6395
默认监听IP 本机host
默认日志目录 /opt/redis/logs
默认配置文件目录 /opt/redis/conf
默认数据目录 /opt/redis/data
默认BIN目录 /opt/redis/bin
默认持久化方式 RDB
禁用透明内存大页 nerver
允许内核分配所有物理内存 vm.overcommit_memory=1

配置文件:

#编辑配置文件,修改对应bind,port,pidfile,cluster等路径
#修改bind(第61行,改为本机ip)
bind 172.21.32.30
#修改port(第84行)
port 6380
#修改pid文件(第150行)
pidfile /var/run/redis_6380.pid
#修改daemonize
daemonize yes
#开启集群cluster
cluster-enabled yes
#集群配置节点配置文件
cluster-config-file nodes-6380.conf
#集群超时连接时间
cluster-node-timeout 15000
#rdb文件路径
dbfilename dump-6380.rdb

软件标准化-Elasticsearch

以测试环境为例

版本 5.4.3
安装目录 /opt/elasticsearch
分词器目录 /opt/elasticsearch/plugins/ik
默认端口 9200
默认启动用户 elasticsearch
开启ES跨域访问 true
默认存储索引片段 true

elasticsearch配置文件

#集群名称,默认为elasticsearch
cluster.name: es-game-test
#节点名称
node.name: node-1
#开启elasticsearch跨域访问, 默认为false
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: "*"
###但是允许访问的域名地址为”*”是高风险的,这说明部署的ES实例允许被任何地方跨域请求。

#是否作为主节点,每个节点都会被配置成主节点,默认为trrue
node.master: true
#是否为存储数据,即存储索引片段,默认为true
node.data: true

软件标准化-nginx

以测试环境为例

版本 1.14.0
安装目录 /etc/nginx
默认允许用户 nginx
默认端口 80
默认ACCESS日志存储目录 /opt/logs/nginx/
默认ERROR日志存储目录 /opt/logs/nginx/error.log
默认SSL模块 http_ssl_module
默认STATUS模块 http_stub_status_module

编译安装模块

./configure \
--user=nginx \
--group=nginx \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio  \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

nginx配置文件-日志输出

默认以json格式:

    log_format  json '{"@timestamp":"$time_iso8601",'
        '"@version":"1",'
        '"client":"$remote_addr",'
        '"remote_user":"$remote_user",'
        '"domain":"$host",'
        '"url":"$uri",'
        '"status":"$status",'
        '"host":"$server_addr",'
        '"request":"$request",'
        '"sent_size":"$body_bytes_sent",'
        '"request_body":"$request_body",'
        '"request_length":"$request_length",'
        '"x_forwarded":"$http_x_forwarded_for",'
        '"http_uid":"$http_uid",'
        '"http_appid":"$http_appid",'
        '"http_bundleid":"$http_bundleID",'
        '"ups_resp_time":"$upstream_response_time",'
        '"responsetime":"$request_time",'
        '"referer":"$http_referer",'
        '"ua":"$http_user_agent",'
        '"deviceName":"$http_deviceName",'
        '"deviceOsVersion":"$http_deviceOsVer",'
        '"deviceNetType":"$http_deviceNetType",'
        '"deviceId":"$http_deviceId",'
        '"carrierType":"$http_carrierType",'
        '"versionName":"$http_versionName",'
        '"http_channel":"$http_chanel($http_channel)",'
        '"upstr_addr":"$upstream_addr",'
        '"upstr_host":"$upstream_http_host"'
        '}';

软件标准化-php

以测试机为例

RE2C版本 0.15.3
BISON版本 3.0.4
LIBMCRYPT版本 2.5.7
PHP版本 7.2.6
默认安装目录 /usr/local/php/
默认端口 9000
默认用户 www

扩展模块

以测试机为例

REDIS.SO 3.1.2
MEMCACHE.SO
MEMCACHED.SO 1.0.18
IMAGICK.SO 3.4.3
RDKAFKA.SO
ZOOKEEPER.SO 0.5.0

默认禁用函数

disable_functions = passthru,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,checkdnsrr,checkdnsrr,getservbyname,getservbyport,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

默认编译参数

#php编译参数
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/conf.d \
--enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-soap --with-openssl --with-openssl-dir --with-pcre-regex --with-zlib --with-iconv \
--with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --with-pcre-dir --enable-ftp --enable-bcmath --with-gd --with-jpeg-dir \
--with-png-dir --with-freetype-dir --with-gettext  --enable-ctype --with-gmp --with-mhash --enable-mbstring --with-libmbfl --with-onig --enable-pdo \
--with-pdo-mysql --with-zlib-dir --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem \
--enable-sysvshm --enable-mbregex --enable-inline-optimization --enable-wddx --with-libxml-dir --with-xsl --enable-libxml --enable-xml --enable-zip \
--enable-mysqlnd --enable-pcntl --with-mysqli --with-xmlrpc --without-pear --enable-opcache

软件标准化-you-get

以测试机为例

PYTHON版本 3.5.0
YOUGET版本 最新版
默认安装目录 /opt/you-get

软件标准化-zabbix监控

以测试机为例

ZABBIX-SERVER版本 3.4.10
ZABBIX-AGENT版本 3.4.10
默认安装目录 /opt/zabbix

zabbix-agent

  1. 安装zabbix监控所需的zabbix-agent
  2. 修改zabbix-agent配置文件做自动注册
  3. 设置开机自启动
#以测试机为例
#cat zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.10.50.27
ServerActive=10.10.50.27
Include=/etc/zabbix/zabbix_agentd.d/*.conf

系统权限标准化(初稿)

系统权限标准化-超级用户

  1. 线上Root权限不下放
  2. 如有需要使用root权限,需发邮件通知相关运维人员

系统权限标准化-普通用户

开发人员

线上环境:

  1. 建立日常开发用户:dev
  2. 不设置sudo权限
  3. 用户设置统一密码

测试环境:

  1. 可以使用root权限
  2. 重要文件可交由运维配置特殊权限

其他人员

  1. 发邮件至运维人员,提交开通用户申请
  2. 邮件内容包含:申请开通用户,权限等

物理机系统分区标准化

分区标准化-数据不重要

目录 作用 大小
/boot 引导系统分区 200MB-1G
swap 交换分区(虚拟内存)内存不够swap临时充当内存 内存小于8G:内存的1.5倍,内存大于8G:8G
/ 根分区 剩余多少给多少

分区标准化-数据重要

目录 作用 大小
/boot 引导系统分区 200MB-1G
swap 交换分区(虚拟内存)内存不够swap临时充当内存 内存小于8G:内存的1.5倍,内存大于8G:8G
/ 根分区 20G-200G
/data 存放数据 剩余多少给多少

分区标准化-数据不知道是否重要

/boot 引导系统分区 200MB-1G
swap 交换分区(虚拟内存)内存不够swap临时充当内存 内存小于8G:内存的1.5倍,内存大于8G:8G
/ 根分区 20G-200G

剩余的空间不分区,谁来使用谁分区

虚拟机配置标准化

测试用虚拟机

同物理机系统分区标准

其他用虚拟机

按照需求发邮件通知相关运维人员进行配置

Linux运维规范

Zabbix监控规范

zabbix目录规范

以测试机为例:

ZABBIX监控脚本目录 /etc/zabbix/scripts
ZABBIX键值配置文件目录 /etc/zabbix/zabbix_agentd.d
ZABBIX告警脚本目录 /opt/zabbix/share/zabbix/alertscripts
ZABBIX配置文件 /etc/zabbix/zabbix_agentd.conf

zabbix的key命名规范

key的命名应简洁明了,避免过多的”. ,”造成输入误操作,获取不到对应值
key的名字组成:

监控项缩写[监控的内容]

以监控ssl为例:
监控的证书到期时间
zabbix_server端获取的key为:

ssl[www.example.com]

Zabbix-告警邮件

  1. 默认添加administrator用户为邮件接收
  2. 根据业务的监控对不同的人员开通账户,接收告警邮件
  3. 默认接收警告~灾难级别的监控告警
  4. 告警邮件内容:
    1. 默认标题: 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
    2. 消息内容:
      1. 告警主机:{HOSTNAME1}
      2. 告警时间:{EVENT.DATE} {EVENT.TIME}
      3. 告警等级:{TRIGGER.SEVERITY}
      4. 告警信息: {TRIGGER.NAME}
      5. 告警项目:{TRIGGER.KEY1}
      6. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
      7. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
      8. 事件ID:{EVENT.ID}

Zabbix-自动注册

禁用自动发现添加主机,采用zabbix自动注册添加主机

  1. Zabbix监控配置-动作-自动注册
  2. 触发条件:主机名称 如:zyd
  3. 操作:
    1. 添加主机
    2. 添加到主机群组:Linux servers
    3. 链接到模板:Template OS Linux

Zabbix-基础模板

Zabbix自动注册添加的主机,默认关联Template OS Linux 模板
模板默认触发告警信息如下

Template OS Linux模板监控项

  1. 默认监控项–cpu
监控项名称 键值 触发器
Context switches per second system.cpu.switches
CPU steal time system.cpu.util[,steal]
CPU softirq time system.cpu.util[,softirq]
CPU interrupt time system.cpu.util[,interrupt]
CPU idle time system.cpu.util[,idle] CPU使用率大于90%
CPU user time system.cpu.util[,user]
CPU nice time system.cpu.util[,nice]
CPU system time system.cpu.util[,system]
CPU iowait time system.cpu.util[,iowait] %iowait
Interrupts per second Interrupts per second
Processor load (1 min average per core) system.cpu.load[all,avg1]
Processor load (5 min average per core) system.cpu.load[all,avg5]
Processor load (15 min average per core) system.cpu.load[all,avg15]
  1. 默认监控项–mem
监控项名称 键值 触发器
Available memory vm.memory.size[available] vm.memory.size[available].last(0)<524284875
Free swap space system.swap.size[,free] system.swap.size[,pfree].last(0)<50 and system.swap.size[,free].last(0)<>0
Free swap space in % system.swap.size[,pfree] system.swap.size[,pfree].last(0)<50 and system.swap.size[,free].last(0)<>0
Total memory vm.memory.size[total]
Total swap space system.swap.size[,total]
  1. 默认监控项–General
监控项名称 键值 触发器
Host boot time system.boottime
Host local time system.localtime
Host name system.hostname system.hostname.diff(0)>0
System information system.uname
System uptime system.uptime
  1. 默认监控项–OS
监控项名称 键值 触发器
Maximum number of opened files kernel.maxfiles
Maximum number of processes kernel.maxproc
Number of logged in users system.users.num
  1. 默认监控项–Security
监控项名称 键值 触发器
Checksum of /etc/passwd vfs.file.cksum[/etc/passwd] /etc/passwd被修改
Number of logged in users system.users.num
  1. 默认监控项–zabbix-agent
监控项名称 键值 触发器
Agent ping agent.ping 5分钟内ping不通agent
Host name of zabbix_agentd running agent.hostname agent名称被更改
Version of zabbix_agent(d) running agent.version agent版本被更改

TCP-status-11

监控项名称 键值 触发器
CLOSE-WAIT tcp_state[CLOSE-WAIT]
CLOSED tcp_state[CLOSED]
CLOSING tcp_state[CLOSING]
ESTABLISHED tcp_state[ESTABLISHED]
FIN-WAIT1 tcp_state[FIN-WAIT1]
FIN-WAIT2 tcp_state[FIN-WAIT2]
LAST-ACK tcp_state[LAST-ACK]
LISTEN tcp_state[LISTEN ]
SYN-RECEIVED tcp_state[SYN-RECEIVED]
SYN-SENT tcp_state[SYN-SENT]
TIME-WAIT tcp_state[TIME-WAIT]

web服务器监控模板

nginx_php_port_status(nginx/php端口模板)

监控项名称 键值 触发器
nginx_port_80 net.tcp.listen[80] nginx 80端口丢失
nginx_port_443 net.tcp.listen[443] nginx 443端口丢失
php_port_9000 net.tcp.listen[9000] php 9000端口丢失

nginx_log_status(nginx日志模板)

监控项名称 键值 触发器
nginx日志状态码403 nginx_log[403]
nginx日志状态码404 nginx_log[404]
nginx日志状态码499 nginx_log[499]
nginx日志状态码500 nginx_log[500]
nginx日志状态码503 nginx_log[503]

Template Nginx Status(nginx状态模板)

监控项名称 键值 触发器
Nginx Accepts per second nginx[accepts]
Nginx Connections Active nginx[active]
Nginx Connections Reading nginx[reading]
Nginx Connections Waiting nginx[waiting]
Nginx Connections Writing nginx[writing]
Nginx Handled per second nginx[handled]
Nginx Requests per second nginx[requests]

ssl_check(证书到期时间模板)

监控项名称 键值 触发器
www.example.com证书 ssl[www.example.com] 小于60天

redis/memcache服务器模板

redis_cluster(redis集群状态模板)

监控项名称 键值 触发器
redis_cluster_6390_node redis_cluster_6390[node] redis_cluster node不等于6
redis_cluster_6490_node redis_cluster_6490[node] redis_cluster node不等于6
redis_cluster_6590_node redis_cluster_6590[node] redis_cluster node不等于6
redis_cluster_6390_size redis_cluster_6390[size] redis cluster size 不等于3
redis_cluster_6490_size redis_cluster_6490[size] redis cluster size 不等于3
redis_cluster_6590_size redis_cluster_6590[size] redis cluster size 不等于3
redis_cluster_6390_slots redis_cluster_6390[slots] redis cluster slots不等于16384
redis_cluster_6490_slots redis_cluster_6490[slots] redis cluster slots不等于16384
redis_cluster_6590_slots redis_cluster_6590[slots] redis cluster slots不等于16384

memcached_stats(memcache状态模板)

监控项名称 键值 触发器
memcache_bytes memcached_stats[11211,bytes]
memcache_connections memcached_stats[11211,curr_connections]
memcache_get memcached_stats[11211,cmd_get]
memcache_set memcached_stats[11211,cmd_set]
memcache_status memcached_stats[11211,accepting_conns]

es服务器模板

es_status(es端口模板)

监控项名称 键值 触发器
es_port_9200 net.tcp.listen[9200] 监控端口9200
es_port_9300 net.tcp.listen[9300] 监控端口9300

9xiu聊天服务器模板

chat_status(端口模板)

监控项名称 键值 触发器
chat_port_843 net.tcp.listen[843] 监控端口843
chat_port_8000 net.tcp.listen[8000] 监控端口8000

zabbix告警方式

  1. 邮箱告警
  2. 企业微信告警

除运维外,各个项目负责人也需接收zabbix告警信息
接收告警信息的触发等级为警告~灾难

相关告警的脚本见附录-zabbix监控告警脚本

Shell使用规范

shell文件命名规范

  1. 命名只能以英文字母,数字和下划线组成
  2. 避免使用linux的保留字,关键字,如true,PWD
  3. Shell文件名以.sh结尾,便于识别

shell风格规范

默认解释器

如:

#!/bin/bash
#!/bin/sh
#!/usr/bin/env bash

注释

脚本文件开头除了默认解释器,应标明:

  1. 脚本创建的时间
  2. 脚本的用途
  3. 脚本的作者
  4. 命令参数/函数的解释
  5. 脚本的注意事项

尽量以英文注释,防止乱码
如:

#!/bin/bash
#backup code every day by cgl at 20190627
        # -v 详细输出模式, -z 对备份文件传输时压缩处理, -r 递归模式, -t 保持文件时间信息, -o 保持文件属主,-p 保持文件权限, -g 保持文件属组
        # -e 使用ssh方式传输 -p 指定端口 
        # --delete 删除远端服务器没有本地端的文件
        # --exclude 排除不需要传输的文件/目录
#       BAK ${SERVER[@]} $i $DATE1 $WWW_DIR
        rsync -vzrtopgl --progress -e 'ssh -p 58000' --exclude ".git" --delete  $DIR/ $k:$WWW_DIR/ | tee -a /opt/bin/rsynclog/$DATE\.log

缩进

以n个空格进行缩进(n通常是2或4)或”\t”字符

代码上线规范(初稿)

环境说明

以为例:
目前分为3套环境

DEV(开发环境) 本地测试虚拟机
ONLINE_TEST(测试环境) 线上测试机
ONLINE(线上环境) 线上正式机器

代码上线

代码上线流程

  1. 开发人员本地测试环境下内部测试
  2. 开发人员合并个人分支代码到dev分支
  3. 通知测试人员对dev分支代码内外网测试
  4. 开发人员合并dev分支到test分支,并拉取到线上测试环境
  5. 开发人员在线上测试环境测试,无问题后,合并test分支代码到master分支,并通知运维人员上线
  6. 运维人员通过脚本上线,蓝绿发布分发代码
  7. 上线完成,检查是否有bug
    1. 有bug,运维切换dns解析,并回滚代码
    2. 无bug,代码上线完成

代码上线通知规范

代码的合并,提交,测试,由开发人员进行操作
运维只负责对代码的分发
项目负责人以邮件的形式通知运维上线,邮件内容主要包含以下几点:

  1. 上线的项目
  2. 实现的功能简介
  3. 注意事项,如:需要备份
  4. 上线的具体时间

上线完成后,运维以邮件回复上线完毕

运维代码上线脚本

见附录-运维上线脚本

代码上线流程图

蓝绿发布流程图

代码回滚

代码蓝绿发布的过程中出现问题:

  1. 停止对新上线版本服务器的解析,切换到老版本服务器解析
  2. 用备份代码进行回滚操作
  3. 检查回滚操作,并还原解析

日志切割规范

日志切割

nginx日志切割

以nginx日志为例:
默认使用系统自带的logrotate进行日志切割
默认使用/etc/logrorate.conf文件,作为全局配置,而不同的应用在/etc/logrotate.d目录下
通常以应用程序的名称命名,如:
nginx
mysql
yum等

配置文件详解:

daily           #日志轮询周期
rotate 60       #保存60天数据,超过则删除
create      #使用create模式创建日志文件
dateext     #日志文件切割时,添加日期后缀
missingok   #如果没有日志也不报错
notifempty  #日志为空的时候不进行切换
compress        #切割后压缩
delaycompress   #切割时对上次文件进行压缩
/var/log/nginx/*.log  /opt/logs/*.log {         #指定日志路径
        su root nginx
        create 640 daemon root
        sharedscripts
        postrotate
            [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
            [ -f /usr/local/php/var/run/php-fpm.pid ] && kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`
        endscript
}

定时任务规范

定时任务书写规范:

  1. 添加注释,标明作用,时间,编写人
  2. 重定向,指向/dev/null 2>&1 &

以crontab编写为例:

#check node process status by cgl at 20190511
*/1 * * * *  /usr/bin/sh /opt/bin/check_node.sh &> /dev/null &

附录

详情查阅文档库:https://docs.gl.sh.cn/web/#/42/397

赞(10) 打赏
未经允许不得转载:陈桂林博客 » 运维规范文档
分享到

大佬们的评论 3

  1. #3

    妙啊

    周三三三3年前 (2021-01-15)回复
  2. #2

    Thanos3年前 (2021-01-15)回复
  3. #1

    秒啊

    周三三三3年前 (2021-01-15)回复

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册