IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ansible切割日志使用Rsync同步 -> 正文阅读

[系统运维]Ansible切割日志使用Rsync同步

Rsync设置

Rsync服务端

vim /etc/rsyncd.conf
uid = root
gid = root
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
secrets file = /etc/rsyncd.secrets
auth users = root  # 这个授权的用户名,是给rsync指定的用户名,可以和server当前的系统用户名相同,也可以不同。这里测试用的
是和系统用户名相同的。
[log]  # log模块名,可以随意取,但是在做同步指令操作的时候,cms就是目标机器server上的根目录,这里,设定的这个根目录/LogBak 。
path = /LogBak
read only = no

echo "root:rootlogpasswd" && chmod 600 /etc/rsyncd.secrets #写入rsync连接密码,格式为 用户名:密码
/usr/bin/rsync --daemon &&  echo "/usr/bin/rsync --daemon" >> /etc/rc.Local &&  chmod +x /etc/rc.local # 启动并加入开机自启

Rsync客户端

echo "export RSYNC_PASSWORD=rootlogpasswd" >> /etc/profile && source /etc/profile #将密码写入变量
传输文件命令
rsync 文件路径  root@192.168.10.27::log

示例: 传输文件,并生成本机客户端ip地址为文件路径存储
rsync -avz /var/log/*  root@192.168.10.27::log/$(ifconfig $( ip route show | awk '/default/ { print $5 }' ) |sed -n 2p |awk -F ' ' '{print$2}' |sed 's/.*://')/  

Ansible设置

host文件

在host文件里直接设置日志路径等其他变量,待会直接在yaml文件中调用


cat host

[all:vars]
#ansible_ssh_private_key_file=/root/yangshuo
ansible_ssh_port=22
ansible_ssh_user=root

[zzfwzyk]
192.168.1.128  ansible_host=192.168.1.128    nginx_log_dir=/var/web/nginx/logs     nginx_pid=/var/web/nginx/logs   tomcat_log_dir=  tomcat_pid=

Yaml文件

cat log.yaml


---

- hosts: "{{ host }}"
  gather_facts: No
  tasks:
  ########  设置变量 ###################
    - name: add time_log
      blockinfile:
        path: /etc/bashrc
        marker_begin: "start logvariate"
        marker_end: "end logvariate"
        insertafter: "End of file"
        state: present
        block: |
          export RSYNC_PASSWORD=rootlogpasswd
          export TIME_LOG=$(date -d "-1 day"  +%Y-%m-%d)
          export NGINX_LOG_DIR={{ nginx_log_dir }}
          export TOMCAT_LOG_DIR={{ tomcat_log_dir }}
          
  ######## 生效变量   #####################
    - name: source profile
      shell: |
        source /etc/bashrc
      args:
        executable: /bin/bash
  
  ######## 切割nginx规则 #################
    - name: create nginxlog rule
      shell: touch /etc/logrotate.d/nginxlog
      args:
        executable: /bin/bash
    
    - name: nginxlog incise rule
      blockinfile:
        path: /etc/logrotate.d/nginxlog
        marker_begin: "start nginxlog"
        marker_end: "end nginxlog"
        insertafter: "End of file"
        state: present
        block: |
          {{ nginx_log_dir }}/*.log {
              daily
              rotate 10
              missingok
              nocompress
              nodelaycompress
              copytruncate
              dateext
              dateformat -%Y-%m-%d
              dateyesterday
              postrotate
                if [ -f {{ nginx_pid }}/nginx.pid ];then           # 这里要改对应机器nginx 的PID位置
                kill -USR1 `cat {{ nginx_pid }}/nginx.pid`  # 这里要改对应机器nginx 的PID位置
                fi
              endscript
          }

  ######## 切割 Tomcat 日志规则 #################
    - name: create tomcatlog rule
      shell: touch /etc/logrotate.d/tomcatlog
      args:
        executable: /bin/bash

    - name: tomcatlog incise rule
      blockinfile:
        path: /etc/logrotate.d/tomcatlog
        marker_begin: "start tomcatlog"
        marker_end: "end tomcatlog"
        insertafter: "End of file"
        state: present
        block: |
          {{ tomcat_log_dir }}/*.log {
              daily
              rotate 10
              missingok
              nocompress
              nodelaycompress
              copytruncate
              dateext
              dateformat -%Y-%m-%d
              dateyesterday
              postrotate
                if [ -f {{ tomcat_pid }}/tomcat.pid ];then           # 这里要改对应机器 tomcat 的PID位置
                kill -USR1 `cat {{ tomcat_pid }}/tomcat.pid`  # 这里要改对应机器tomcat 的PID位置
                fi
              endscript
          }

  ######## 设置计划任务   #####################

    - name: nginxlog incise rule
      blockinfile:
        path: /var/spool/cron/root
        marker_begin: "start cronloh"
        marker_end: "end cronlog"
        insertafter: "End of file"
        state: present
        block: |
          echo "00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginxlog" >> /var/spool/cron/root
          echo "05 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/tomcatlog" >> /var/spool/cron/root
          echo "10 00 * * * rsync -avz    $NGINX_LOG_DIR/*$TIME_LOG   root@192.168.10.27::log/$(ifconfig $( ip route show | awk '/default/ { print $5 }' ) |sed -n 2p |awk -F ' ' '{print$2}' |sed 's/.*://')/" >> /var/spool/cron/root
          echo "20 00 * * * rsync -avz    $TOMCAT_LOG_DIR/*$TIME_LOG   root@192.168.10.27::log/$(ifconfig $( ip route show | awk '/default/ { print $5 }' ) |sed -n 2p |awk -F ' ' '{print$2}' |sed 's/.*://')/" >> /var/spool/cron/root

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 18:00:11  更:2022-03-12 18:02:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:50:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码