当前位置: 首页 > article >正文

设置 Nginx、MySQL 日志轮询

1. Nginx 设置日志轮询

机器直接安装的:
/etc/logrotate.d/nginx

/var/log/nginx/*.log {
        daily
        missingok
        rotate 30
        compress
        delaycompress
        notifempty
		# 修改成实际的
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

docker 安装的:
/etc/logrotate.d/nginx-docker

# 挂载出来的 nginx 日志路径
/path/to/your/nginx/logs/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 640 root root
    sharedscripts
    postrotate
        # Nginx 容器的名称
        CONTAINER_NAME="your_nginx_container_name"
        # 重新加载 Nginx 配置
        docker exec $CONTAINER_NAME /bin/sh -c 'kill -USR1 $(cat /var/run/nginx.pid)'
    endscript
}

2. MySQL 设置日志轮询

机器直接安装的:
/etc/mysqladmin.cnf

[client]
user=root
password=your_password

修改属主为 mysql 用户

sudo chown mysql:mysql /etc/mysqladmin.cnf
sudo chmod 600 /etc/mysqladmin.cnf

/etc/logrotate.d/mysql

/var/log/mysql/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
	# 修改成实际的
    create 640 mysql adm
    sharedscripts
    postrotate
        # 重新打开 MySQL 日志文件
        if test -x /usr/bin/mysqladmin && \
          /usr/bin/mysqladmin --defaults-extra-file=/etc/mysqladmin.cnf ping &>/dev/null; then
          /usr/bin/mysqladmin --defaults-extra-file=/etc/mysqladmin.cnf flush-logs
        fi
    endscript
}

docker 安装的:
比如 data 目录映射成 /path/to/your/mapped/mysql/data
log 目录映射成 /path/to/your/mapped/mysql/log

/path/to/your/mapped/mysql/logs/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
	# 用 容器里面 mysql 的 uid 和 gid
    create 640 uid gid
    sharedscripts
    postrotate
        # MySQL 容器的名称
        CONTAINER_NAME="your_mysql_container_name"
        # 重新打开 MySQL 日志文件
        docker exec $CONTAINER_NAME /bin/sh -c 'mysqladmin --defaults-extra-file=/var/lib/mysql/mysqladmin.cnf flush-logs'
    endscript
}

3. 测试

  1. 手动测试 logrotate 配置

使用 -d 选项来调试 logrotate 配置,这个选项会显示 logrotate 将执行的操作,但不会实际执行:

logrotate -d /etc/logrotate.d/nginx-docker
  1. 手动执行 logrotate

如果调试通过,可以手动执行 logrotate 以立即轮询日志:

logrotate -f /etc/logrotate.d/nginx-docker
  1. 检查日志文件

执行完 logrotate 后,检查日志文件目录,确认日志文件是否被轮询,并且新的日志文件是否被创建。


http://www.kler.cn/a/284335.html

相关文章:

  • MaxKB
  • 通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
  • Vue计算属性computed
  • 【JAVA基础】JVM是什么?
  • python解析网页上的json数据落地到EXCEL
  • 多进程/线程并发服务器
  • Java-树形图工具类TreeUtil
  • 网通产品硬件设计工程师:百兆超薄网络隔离变压器您知道的有多少呢?
  • 【PyCharm激活码】2024年最新pycharm专业版激活码+安装教程!
  • 【Android】使用 ADB 查看 Android 设备的 CPU 使用率
  • 项目技巧二
  • R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
  • “添加”业务功能开发
  • Qt 杨帆起航
  • 【分布式定时任务】XXL-JOB_2.4.1部署与实战
  • 解决Element-ui中Table表格里的show-overflow-tooltip不兼容safari浏览器问题
  • vue-admin-template pan版使用方法
  • 【秋招笔试】8.24阿里控股秋招(研发岗)-三语言题解
  • 使用极狐GitLab进行K3S集群的维护与控制
  • 进程间通信--IPC机制
  • 【技术解析】Spring Boot异步机制:实现高吞吐量的最佳实践
  • 【零知识证明】构建第一个zk
  • 95.WEB渗透测试-信息收集-Google语法(9)
  • RN开发问题
  • 线性表之数组
  • 数据结构-单链表-详解-2